From 33f1cb9a99c8a7ae8176baf145907443927856ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 5 Aug 2026 02:44:50 +0300 Subject: [PATCH] more files added --- .gitignore | 2 + README.md | 164 ++- index.html | 1 + package-lock.json | 2420 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 26 + postcss.config.js | 6 + sim.png | Bin 0 -> 21248 bytes src/style.css | 7 + style.css | 1011 ++++++++++++++++++ tailwind.config.js | 13 + 10 files changed, 3621 insertions(+), 29 deletions(-) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 sim.png create mode 100644 src/style.css create mode 100644 style.css create mode 100644 tailwind.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aacac3b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +des-bundle.js \ No newline at end of file diff --git a/README.md b/README.md index 29c2627..6a8f6ca 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,25 @@ -# Otaman — APDU Helper +# OTAMan — APDU Helper & Secured Packet Builder -Standalone offline HTML/JS tool for building APDU commands for SIM, USIM, and GlobalPlatform RAM, plus encoding conversions. +Standalone offline HTML/JS tool for building APDU commands for SIM, USIM, and GlobalPlatform RAM, assembling secure packets per ETSI TS 102 225, and constructing BER-TLV command scripts per ETSI TS 102 226. Open `index.html` in any modern browser. No server required. +## Build + +Tailwind CSS is used for styling. After cloning, rebuild the CSS: + +```sh +npm install +npm run build +``` + ## Interface -Four tabs, each with a form and a "Сгенерировать" button. The output textarea contains the bare APDU hex string (no SPI/KIC/KID/TAR header). +Six tabs, each with a form and a "Сгенерировать" button. --- -## SIM Tab +## SIM RFM Tab CLA = `A0` (GSM 11.11 / ISO 7816-4). @@ -45,6 +54,10 @@ CLA = `A0` (GSM 11.11 / ISO 7816-4). - **Размер записи** — pad/truncate data to the specified byte count. - **Переопределить P1/P2** — checkbox to enable manual override of P1/P2 bytes. +### Conversion sidebar + +A conversion panel is embedded in the right-hand column, supporting IMSI, MSISDN, ICCID, SPN, PLMN, and Nibble swap conversions. + ### References - ISO/IEC 7816-4: Organization, security and commands for interchange @@ -53,7 +66,7 @@ CLA = `A0` (GSM 11.11 / ISO 7816-4). --- -## USIM Tab +## USIM RFM Tab CLA = `00` (ETSI TS 102 221). Same commands as SIM, but SELECT uses P1=09, P2=0C (by FID from current directory). @@ -64,6 +77,43 @@ CLA = `00` (ETSI TS 102 221). Same commands as SIM, but SELECT uses P1=09, P2=0C --- +## BER-TLV Tab + +Builds Expanded Remote Application data format per ETSI TS 102 226 §5.2.1. + +### Format + +Two encoding variants: +- **Definite (AA)**: `AA` + length + Command TLVs +- **Indefinite (AE)**: `AE` + `80` + Command TLVs + `00 00` + +### Command TLVs + +| Type | Tag | Description | +|---|---|---| +| C-APDU | 22 | Raw APDU hex | +| Immediate Action | 81 | Proactive command or action indicator | +| Error Action | 82 | Proactive command on error | +| Script Chaining | 83 | Chaining data for multi-packet scripts | + +### Immediate Action builder + +When the type is set to Immediate Action, the tool provides a structured builder for: + +- **Action indicator**: `81` (Proactive session indication) / `82` (Early response) +- **Proactive command**: REFRESH, DISPLAY TEXT, or PLAY TONE — with auto-generated COMPREHENSION-TLV data objects (command details, device identities, text string, tone, etc.) +- **Custom hex**: freeform input for manual TLV construction + +Error Action supports the same builder (DISPLAY TEXT, PLAY TONE). + +### References + +- ETSI TS 102 226 V13.0.0 §5.2.1: Expanded Remote Application data format +- ETSI TS 102 223: Card Application Toolkit (CAT) — proactive command structure +- ETSI TS 101 220: BER-TLV tag assignments + +--- + ## RAM Tab CLA = `80` (GlobalPlatform Card Specification v2.3.1). Remote Application Management commands for card content management. @@ -181,9 +231,72 @@ Optional TLV objects appended to the INSTALL data field: --- -## Конвертация Tab +## Secured Packet Tab -Value encoding conversions. +Assembles secured packets per ETSI TS 102 225. + +### Packet structure + +| Field | Size | Description | +|---|---|---| +| CPI | 1 | Command Packet Identifier (`02`) | +| CPL | 1 | Command Packet Length | +| CHI | 1 | Command Header Identifier (`01`) | +| CHL | 1 | Command Header Length | +| SPI | 2 | Security Parameter Indicator | +| KIc | 1 | Key Identifier for ciphering | +| KID | 1 | Key Identifier for MAC | +| TAR | 3 | Toolkit Application Reference | +| CNTR | 5 | Replay counter | +| PCNTR | 1 | Padding counter | +| RC/CC/DS | 8 | Cryptographic Checksum / MAC | +| Secured Data | variable | Padded APDU (encrypted if required) | + +### SPI1 (Security Level) + +| Value | Security | Ciphering | Counter | +|---|---|---|---| +| 00 | None | No | None | +| 01 | RC | No | None | +| 02 | CC/MAC | No | None | +| 06 | CC/MAC | Yes | None | +| 12 | CC/MAC | No | Available | +| 16 | CC/MAC | Yes | Available | +| 22 | CC/MAC | No | Check higher | +| 26 | CC/MAC | Yes | Check higher | +| 32 | CC/MAC | No | Check +1 | +| 36 | CC/MAC | Yes | Check +1 | + +### SPI2 (PoR settings) + +| Value | Mode | Security | Cipher | +|---|---|---|---| +| 00 | No PoR | — | No | +| 01 | PoR required | None | No | +| 05 | PoR required | RC | No | +| 09 | PoR required | CC | No | +| 0D | PoR required | DS | No | +| 11 | PoR required | None | Yes | +| 02 | PoR on error | None | No | +| 06 | PoR on error | RC | No | + +### Crypto + +- **3DES-CBC** encryption (zero ICV), supporting 8, 16, and 24 byte keys +- **Retail MAC** (ISO 9797-1 MAC algorithm 3) for cryptographic checksum +- Padding byte configurable (`00` per TS 102 225 default, or `FF`) + +### References + +- ETSI TS 102 225 V13.0.0: Secured packet structure for UICC based applications +- ETSI TS 102 226: Remote APDU structure for UICC based applications +- ISO 9797-1: MAC algorithms + +--- + +## Conversion (SIM/USIM sidebars) + +Value encoding conversions embedded in the SIM RFM and USIM RFM tabs. ### IMSI → EF.IMSI @@ -212,34 +325,27 @@ Per 3GPP TS 31.102 §4.2.5 (EF_SPN). Three encoding paths: GSM 7-bit alphabet per 3GPP TS 23.038. Full extension table supported. -### PLMN → EF_PLMNsel +### PLMN → EF_PLMNsel / PLMNwAcT -Per TS 31.102 §4.2.3 (EF_PLMNsel). 3-byte BCD encoding: -- Byte 1: MCC digit 2 | MCC digit 1 -- Byte 2: MNC digit 3 | MCC digit 3 -- Byte 3: MNC digit 2 | MNC digit 1 +Per TS 31.102 §4.2.3. 3-byte BCD encoding for PLMN, plus optional 2-byte Access Technology selector. -Input: MCC (3 digits), MNC (2-3 digits). Output: 6 hex characters. +### Nibble swap -### PLMNwAcT → EF_PLMNwAcT - -Per TS 31.102. Same 3-byte PLMN + 2-byte Access Technology selector. - -**AcT values**: -| Value | Technologies | -|---|---| -| 8000 | GSM | -| 4000 | UTRAN | -| 2000 | E-UTRAN | -| 1000 | NGRAN | -| C000 | GSM + UTRAN | -| 6000 | UTRAN + E-UTRAN | -| E000 | GSM + UTRAN + E-UTRAN | -| F000 | All | +Swaps nibble pairs of an even-length hex string. ### References - 3GPP TS 31.102: Characteristics of the USIM Application - 3GPP TS 23.038: Alphabets and language information - ETSI TS 102 225: Secured packet structure for (U)SIM toolkit -- pySim: enc_imsi() implementation \ No newline at end of file +- pySim: enc_imsi() implementation + +--- + +## Theme + +Dark theme is supported. The app follows the OS preference on first visit, and a manual toggle button (🌙/☀️) at the top-right corner persists the choice in `localStorage`. + +## Localisation + +The UI is in Russian. English translations are in progress. Language is detected from the browser's `navigator.language` preference. \ No newline at end of file diff --git a/index.html b/index.html index ee7a4a0..3f0012a 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ OTAMan + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e72dbb9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2420 @@ +{ + "name": "otaman", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "otaman", + "version": "1.0.0", + "dependencies": { + "des.js": "^1.1.0" + }, + "devDependencies": { + "autoprefixer": "^10.5.4", + "cssnano": "^8.0.2", + "postcss": "^8.5.25", + "postcss-cli": "^11.0.1", + "tailwindcss": "^3.4.19" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@colordx/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.5.0.tgz", + "integrity": "sha512-3PxTH8itZzltK0U9jTwVVnjLXvnDYuq3m+QXsHkENxWiPRh4WaoLcs1SQjqgZ55kS+QyirpH5BVwzP2gMVG6EQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz", + "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.6", + "caniuse-lite": "^1.0.30001806", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-4.0.0.tgz", + "integrity": "sha512-B0hQ1OLyJuHTQSOWXvwibWqM6DCoqJdvBA6X1S/53bd4XU7LJ1yurIPlrsouol3mw1jh9pGI4ivubSpmJeIqCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-8.0.2.tgz", + "integrity": "sha512-K+a76gA1v0/CsYgcsE95HGGyIuPKxpQSetwSwz4nHEM8fFXqSkzq2JzEXFL8v5+CCjxzVVVhPcTK3Oo8SaF/xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^8.0.2", + "lilconfig": "^3.1.3" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-8.0.2.tgz", + "integrity": "sha512-+jQAqIKCqMmBjZs7741XkilU93ITZ/EW8gjAkMmujdCzfDkfjrDBv2VqkSu29Fzeig/0rZ3S9IAwfPLlmXEUfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "cssnano-utils": "^6.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^8.0.1", + "postcss-convert-values": "^8.0.1", + "postcss-discard-comments": "^8.0.1", + "postcss-discard-duplicates": "^8.0.1", + "postcss-discard-empty": "^8.0.1", + "postcss-discard-overridden": "^8.0.1", + "postcss-merge-longhand": "^8.0.1", + "postcss-merge-rules": "^8.0.1", + "postcss-minify-font-values": "^8.0.1", + "postcss-minify-gradients": "^8.0.1", + "postcss-minify-params": "^8.0.1", + "postcss-minify-selectors": "^8.0.2", + "postcss-normalize-charset": "^8.0.1", + "postcss-normalize-display-values": "^8.0.1", + "postcss-normalize-positions": "^8.0.1", + "postcss-normalize-repeat-style": "^8.0.1", + "postcss-normalize-string": "^8.0.1", + "postcss-normalize-timing-functions": "^8.0.1", + "postcss-normalize-unicode": "^8.0.1", + "postcss-normalize-url": "^8.0.1", + "postcss-normalize-whitespace": "^8.0.1", + "postcss-ordered-values": "^8.0.1", + "postcss-reduce-initial": "^8.0.1", + "postcss-reduce-transforms": "^8.0.1", + "postcss-svgo": "^8.0.1", + "postcss-unique-selectors": "^8.0.1" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/cssnano-utils": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-6.0.1.tgz", + "integrity": "sha512-zk65GIxA8tCjqVk7nTm1mE+ZKxtnxAvU5JSUaBLXbAr3ZF7IOvz3fbPOnEDvZKhnS7GOIitXTS5BgehLzNoc8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.400", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.400.tgz", + "integrity": "sha512-96EWDNjM59SYflgeV5Ylsf4EMiq1a25YjCnJH7cxn/AF2H3pILRweaUnoLax0yKHWdpOzY6JKEu45e8irqZIHA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.52.tgz", + "integrity": "sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz", + "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-cli/node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-colormin": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-8.0.1.tgz", + "integrity": "sha512-qBY4ABQ6d8/mk5RRZHwMllrZMxeMey3azVY2dZUEk+RgiUC4ARdPR3/AITzNqqKTbvW/3y/MJKinDrzwqn8RDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.4.3", + "browserslist": "^4.28.2", + "caniuse-api": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-8.0.1.tgz", + "integrity": "sha512-IdOSIX3BzfMvCc1TAHIha2gfy17xnb5vfML8e2BIKARnFOghksESfaSAB/3CXgyLfMozZAbTRPVQF5dbuKOidw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-8.0.1.tgz", + "integrity": "sha512-FDvzm3tXlEsQBO2XQgnta5ugsAqwBrgWH+j5QgXpegEIDYA0VPnZg2aP7LtmWtC49POskeIhXesFiU/k3NyFHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.2" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-8.0.1.tgz", + "integrity": "sha512-stTDXkI8YkCUfADurQhp03oq5ynsgSx6Qrw5B1swds6oTHtAeOZ9I0SHGK8cY/VpWUsIYFDWMs3IWf9jIEfFvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-8.0.1.tgz", + "integrity": "sha512-Zv4fM1Yfhk71tbt6gfiptbL6jDHi+7apSnaMeaO9n1uET+1embrXQw5m93Zp5x28UyQSuv+AVkFY193jdwZ33w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-8.0.1.tgz", + "integrity": "sha512-ykt4fvrC7yYGzbxKyqBVjDCbsjF/11JgWK8enrdkobRyqqEtb/uDUCbKOGdvrK8X7BrShW8Lv5cCRNbdkNHGkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-merge-longhand": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-8.0.1.tgz", + "integrity": "sha512-huTfSYgQ13O81SFvAuOi7GWnO48vvybjj3xF+X3qUoPjzvvaLpJH5DcUqqXcwOEulZUcvaV4s0V9WtWs+IAQPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^8.0.1" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-8.0.1.tgz", + "integrity": "sha512-o3rk4UpnPNg469tklYwbR/NtvKc/f/wJiVDTnNQ/EFPw/LeiPOHUCvV1GIBQIZHGrBAYdPjToK6a+ojYprsrxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-api": "^4.0.0", + "cssnano-utils": "^6.0.1", + "postcss-selector-parser": "^7.1.2" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-8.0.1.tgz", + "integrity": "sha512-L8Nzs/PRlBSPrLdY/7rAiU5ZN5800+2J/4LRbfyG8SJnPljmgMaXVmQiCklvRS+yObfVRNtvmk/Ean/eoYcSeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-8.0.1.tgz", + "integrity": "sha512-qf+4s/hZMqTwpWN2teqf6+1yvR/SZK5HgHqXYuACeJXV7ABe7AXtBEomgxagUzcN4bSnmqBh5vnIml0dYqykYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.4.3", + "cssnano-utils": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-8.0.1.tgz", + "integrity": "sha512-L0h3H59deFfFg0wQN1NVaS/8E/LfGvaMuZKGO7siwlG995zo3OshtQyRkqKdVqcBwAORBvZ1nDZrKPLRapYkQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "cssnano-utils": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-8.0.2.tgz", + "integrity": "sha512-3icdxc/zght5UAizdwqZBDE2KOWHf1jMQCxET6iLACeNlRxfTPyXS0/COpGk8CQ2cECyaEKTRUd/i/k8Gxmz4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-api": "^4.0.0", + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.2" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-8.0.1.tgz", + "integrity": "sha512-xzqr36F8UeIZOvOHsf3aul+RVJCADvSwuwpMLgizqKjisHZpBfztgW0XFLBfJvz9pJgaStaOXAtGb0zLqT6B0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-8.0.1.tgz", + "integrity": "sha512-ZDWOijOK1FFMlpgiQCUO9fCNKd7HJ9L7z9HWEq4iyubnUFWzdTSwm/LcrMbNW6iZ1oAtqeLYA0WA3xHszOI08g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-8.0.1.tgz", + "integrity": "sha512-uuivan2poSqbE48ST4do20dGaFUeXey9/H8rhHzoyVHB2I6BmkoVLZ/C9+BRjUlpaAFYVOoDY7epkiidzaYbvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-8.0.1.tgz", + "integrity": "sha512-q2hq5fmKxk29K6DjKA3nZ17Q2dtjhLYFNmFweKALmooUqx6UWAHF1bBoWTu/EqlJ88josb82A/J0Atj9LJUmpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-8.0.1.tgz", + "integrity": "sha512-+Wf+kQJhm1WgSGEAuUaswE9rdpR9QbrKRVemcVHs6rhOoOTVIdAbgaicftfYA6vLM346P8onRzkEVbFN29ktKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-8.0.1.tgz", + "integrity": "sha512-W8/tvwRlm3T+yjGkg0IRTF4bvHj0vILYr/LOogCrJKHz2ey2HFRwfsAA8Bk9N4BGR7z7WmmDu/KzzwhJ6FoGPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-8.0.1.tgz", + "integrity": "sha512-Ad0YHNRBp4WHEOYUM/4wL/8MoL2fimEF8se/0q+Rt/owMzYpbxsypC1P8fN/oluwoRmRKdNVX7X2oycEobPWcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-8.0.1.tgz", + "integrity": "sha512-tkYcip6pCDY806xuxpJYqMW2M3/623jzGFJmz3m5Us47q8P28+gbRZxaea3Rr/CmwwLUiVlh+BTGYwQ6gvaP8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-8.0.1.tgz", + "integrity": "sha512-XzORadNfSrKWDZZpgAEHPKINKx8r9r9RIfE9c70g/HThdpbmPHhDYCodHSVESDxmKeySAYw1p4liuBCf7j6LyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-8.0.1.tgz", + "integrity": "sha512-OLXq5lR1yk3KWQ1FPK6aWjFFdktHE9f9kb8cnt4LmIw7w30DnzgD9+sOVYJc5HenkWCX8i1MJhhFwmqc/GYqLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-8.0.1.tgz", + "integrity": "sha512-+aQsR6+61KRoIfcFNLP3v9RM7+0iYOTtPnjl1wr6JqMW1zx6S+t2ktHRefXwacFdHIDj5+ETG0KY7K3+SGQ4Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-api": "^4.0.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-8.0.1.tgz", + "integrity": "sha512-x71slHVykiFi5RuKEXM0wgYpY2PngC78x6R8TnZhHF3lhqt+u/w3MGwYLX+2t5O87ssRiMfEAhQH+3J4QwVzCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", + "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-8.0.1.tgz", + "integrity": "sha512-HpnvWii7W0/FPrsejJa6ZTi0kNtTJP/Iba7CUMPX0xPV6QpnndOp+SDP74tFtgjA2cYKYNWJPOlmLXMsvi/9yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^4.0.1" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-8.0.1.tgz", + "integrity": "sha512-+xvKI5+/Cl8yYQwxDV39Uhuc4WV951xngFvPPjiPj2NIbIfm6vbbRTXblyw0FioLkIoGlw+7qUcY1h2YhaZYgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.2" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-8.0.1.tgz", + "integrity": "sha512-Gv095oTD0N+BdJALNFDsxZpETHZLTxbOl5RyIO7y6VAE6sR3z0MnV3Nix7N0IATNldNTrkvSASp2KR1Yt526HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-selector-parser": "^7.1.2" + }, + "engines": { + "node": "^22.11.0 || ^24.11.0 || >=26.0" + }, + "peerDependencies": { + "postcss": "^8.5.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.2.tgz", + "integrity": "sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/thenby": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.4.1.tgz", + "integrity": "sha512-D5a/bO0KdalOE3q8MlrRmSxjbKZHT3MQmXkJP+r97Vw8MMwOZKOwUSEyTtK7eSMj2y0kyAjpYMRMZmmLw1FtNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1d23a7b --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "otaman", + "version": "1.0.0", + "description": "Standalone offline HTML/JS tool for building APDU commands for SIM, USIM, and GlobalPlatform RAM, plus encoding conversions.", + "main": "index.js", + "scripts": { + "build": "npx tailwindcss -i src/style.css -o style.css --config tailwind.config.js", + "build:prod": "NODE_ENV=production npx tailwindcss -i src/style.css -o style.css --config tailwind.config.js --minify" + }, + "repository": { + "type": "git", + "url": "https://gitea.atroshin.ru/catarrh/otaman.git" + }, + "keywords": [], + "type": "commonjs", + "devDependencies": { + "autoprefixer": "^10.5.4", + "cssnano": "^8.0.2", + "postcss": "^8.5.25", + "postcss-cli": "^11.0.1", + "tailwindcss": "^3.4.19" + }, + "dependencies": { + "des.js": "^1.1.0" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..96bb01e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/sim.png b/sim.png new file mode 100644 index 0000000000000000000000000000000000000000..73ce29cdb2c8de0f25ef29abc42869f23eaa6568 GIT binary patch literal 21248 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

opNyt%9owGyPcz zcEbCx!Q)5xDSgsMkD++t4rCn*nBp7@uISxV{^8MtZ*fDMy~Sc+#*F4>^3Tgsmu((oR>Mog2i(I$(F*$qQDx2 z_XB?h_#Gfa$i@XQIA9h%D?D|x1CiJI46v_H549hYq^?Etjl&GBqY0X%ZSF_11&1KO zam>*P4=s(hL-5NTUI6qsf^h1nP(?cb5R{HWPz$6xDnB_|h;K7L?irHAkh3ZbG<07z zUlX7ENOqXi|05jME~N`_$3;Ke#L$DL|ZuJvE74dpWyv^)}(63 z!*gy@>f2n--=dj7*VS4(?8hOyZd~zXc<~3`UrpNaSxd?h)Z_aMk>hXXT`Y$_f&REC zlT;n}He*99rX?R+w1MzBv?zIkonSXd<;r`^-xcV-cmWlgZhUqfT4NDV> zXad`_Tci`Vu+5$)Nbk*n|(m%_60GW+W#hEC#;kcvl!tA8geJ&^W&il6;c%*Y+Fz z8i_ecO~W~9JVV~yQXFWwNc|y{al3b$o#zPym(LYLjpKK@=akoziaT}) z9asuG+(*5MlBt{c*FB>GAds2?HaKX zWZP^HSP)5rRf4{T)7`PqT+F)G54fbd2}_-`cec`nSwYDnP`S9Y&dJ=>?s-PYJ4m*~ zcV~vxtFmRQN9c5y<(N-Tnq2u$Zqpz&1K_TLFTA43@uM_EWdB{a;LaYo=eqaqR)p#U z5Q8_uw(E3G`zeVWfZSm6Qwz2zEMNSIJ>{yCzP8O3wvTQ}iv6O~KVSb&6PL7?G|KY= zc8UoSQz>7(c!lBuve20lTpS{aCoPZCxWhr<`S(&@fEn+xRL4^K3jhC3H0~}=exh3P zzHJ6f6$2D$XFdD!nmIOmvsE1i3@wsn7EKGUm)GKR3;lRu4Gt(vA-6!`zoZ(KV-oOH z6A9j#x0!u9yQ|uV#ygyi4;RpMC-X>BvWwdcQby&vCcllS5 znw*7MVH%-${~)-vWU}!dy$RPFhqY6LEt_T4J<|PPtwl%Yozizv`Y5sTcSa%O#$XetLv#k~E=N;wMGVrluW;{=Oqk^YIv$~*F*Ct~JTX6%f375jK4m7?L+uRj4h z&WPS-v|KZ7*gOJD325_4H*V;I9$a?(v W=Zm@0>Mp=UdBoVz3|pb^8vS2T>(