egatari 0.0.0-stage → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1071 -0
- package/LICENSE +21 -0
- package/NOTICE +73 -0
- package/README.ja.md +340 -0
- package/README.md +339 -2
- package/SECURITY.md +74 -0
- package/bin/egatari.mjs +162 -0
- package/components.lock.json +2972 -0
- package/components2.lock.json +1411 -0
- package/fonts/@fontsource/andika/400-italic.css +49 -0
- package/fonts/@fontsource/andika/400.css +49 -0
- package/fonts/@fontsource/andika/700-italic.css +49 -0
- package/fonts/@fontsource/andika/700.css +49 -0
- package/fonts/@fontsource/andika/LICENSE +93 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-400-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-700-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-cyrillic-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-400-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-700-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-vietnamese-400-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-vietnamese-400-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-vietnamese-700-italic.woff2 +0 -0
- package/fonts/@fontsource/andika/files/andika-vietnamese-700-normal.woff2 +0 -0
- package/fonts/@fontsource/andika/package.json +6 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/400-italic.css +19 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/400.css +19 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/700-italic.css +19 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/700.css +19 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/LICENSE +93 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-italic.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-700-italic.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/atkinson-hyperlegible-next/package.json +6 -0
- package/fonts/@fontsource/biz-udpgothic/400.css +1239 -0
- package/fonts/@fontsource/biz-udpgothic/700.css +1239 -0
- package/fonts/@fontsource/biz-udpgothic/LICENSE +93 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-0-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-0-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-1-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-1-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-10-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-10-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-100-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-100-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-101-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-101-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-102-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-102-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-103-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-103-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-104-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-104-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-105-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-105-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-106-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-106-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-107-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-107-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-108-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-108-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-109-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-109-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-11-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-11-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-110-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-110-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-111-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-111-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-112-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-112-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-113-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-113-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-114-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-114-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-115-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-115-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-116-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-116-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-117-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-117-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-118-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-118-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-119-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-119-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-12-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-12-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-13-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-13-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-14-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-14-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-15-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-15-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-16-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-16-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-17-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-17-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-18-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-18-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-19-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-19-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-2-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-2-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-20-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-20-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-21-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-21-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-22-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-22-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-23-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-23-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-24-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-24-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-25-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-25-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-26-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-26-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-27-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-27-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-28-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-28-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-29-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-29-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-3-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-3-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-30-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-30-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-31-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-31-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-32-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-32-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-33-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-33-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-34-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-34-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-35-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-35-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-36-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-36-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-37-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-37-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-38-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-38-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-39-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-39-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-4-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-4-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-40-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-40-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-41-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-41-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-42-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-42-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-43-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-43-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-44-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-44-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-45-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-45-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-46-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-46-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-47-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-47-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-48-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-48-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-49-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-49-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-5-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-5-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-50-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-50-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-51-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-51-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-52-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-52-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-53-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-53-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-54-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-54-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-55-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-55-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-56-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-56-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-57-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-57-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-58-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-58-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-59-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-59-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-6-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-6-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-60-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-60-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-61-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-61-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-62-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-62-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-63-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-63-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-64-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-64-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-65-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-65-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-66-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-66-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-67-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-67-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-68-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-68-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-69-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-69-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-7-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-7-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-70-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-70-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-71-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-71-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-72-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-72-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-73-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-73-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-74-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-74-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-75-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-75-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-76-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-76-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-77-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-77-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-78-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-78-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-79-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-79-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-8-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-8-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-80-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-80-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-81-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-81-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-82-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-82-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-83-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-83-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-84-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-84-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-85-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-85-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-86-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-86-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-87-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-87-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-88-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-88-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-89-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-89-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-9-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-9-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-90-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-90-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-91-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-91-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-92-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-92-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-93-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-93-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-94-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-94-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-95-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-95-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-96-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-96-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-97-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-97-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-98-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-98-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-99-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-99-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-greek-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-greek-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/files/biz-udpgothic-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpgothic/package.json +6 -0
- package/fonts/@fontsource/biz-udpmincho/400.css +1239 -0
- package/fonts/@fontsource/biz-udpmincho/700.css +1239 -0
- package/fonts/@fontsource/biz-udpmincho/LICENSE +93 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-0-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-0-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-1-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-1-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-10-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-10-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-100-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-100-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-101-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-101-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-102-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-102-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-103-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-103-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-104-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-104-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-105-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-105-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-106-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-106-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-107-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-107-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-108-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-108-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-109-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-109-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-11-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-11-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-110-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-110-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-111-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-111-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-112-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-112-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-113-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-113-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-114-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-114-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-115-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-115-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-116-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-116-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-117-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-117-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-118-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-118-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-119-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-119-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-12-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-12-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-13-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-13-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-14-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-14-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-15-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-15-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-16-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-16-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-17-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-17-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-18-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-18-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-19-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-19-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-2-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-2-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-20-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-20-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-21-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-21-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-22-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-22-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-23-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-23-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-24-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-24-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-25-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-25-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-26-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-26-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-27-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-27-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-28-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-28-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-29-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-29-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-3-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-3-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-30-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-30-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-31-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-31-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-32-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-32-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-33-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-33-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-34-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-34-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-35-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-35-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-36-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-36-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-37-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-37-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-38-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-38-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-39-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-39-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-4-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-4-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-40-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-40-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-41-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-41-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-42-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-42-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-43-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-43-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-44-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-44-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-45-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-45-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-46-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-46-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-47-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-47-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-48-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-48-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-49-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-49-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-5-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-5-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-50-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-50-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-51-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-51-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-52-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-52-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-53-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-53-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-54-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-54-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-55-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-55-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-56-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-56-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-57-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-57-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-58-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-58-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-59-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-59-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-6-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-6-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-60-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-60-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-61-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-61-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-62-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-62-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-63-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-63-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-64-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-64-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-65-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-65-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-66-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-66-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-67-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-67-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-68-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-68-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-69-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-69-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-7-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-7-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-70-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-70-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-71-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-71-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-72-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-72-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-73-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-73-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-74-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-74-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-75-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-75-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-76-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-76-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-77-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-77-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-78-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-78-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-79-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-79-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-8-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-8-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-80-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-80-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-81-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-81-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-82-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-82-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-83-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-83-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-84-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-84-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-85-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-85-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-86-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-86-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-87-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-87-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-88-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-88-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-89-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-89-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-9-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-9-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-90-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-90-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-91-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-91-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-92-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-92-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-93-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-93-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-94-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-94-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-95-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-95-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-96-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-96-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-97-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-97-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-98-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-98-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-99-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-99-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-greek-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-greek-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/files/biz-udpmincho-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/biz-udpmincho/package.json +6 -0
- package/fonts/@fontsource/klee-one/400.css +1239 -0
- package/fonts/@fontsource/klee-one/600.css +1239 -0
- package/fonts/@fontsource/klee-one/LICENSE +93 -0
- package/fonts/@fontsource/klee-one/files/klee-one-0-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-0-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-1-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-1-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-10-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-10-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-100-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-100-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-101-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-101-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-102-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-102-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-103-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-103-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-104-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-104-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-105-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-105-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-106-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-106-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-107-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-107-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-108-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-108-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-109-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-109-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-11-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-11-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-110-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-110-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-111-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-111-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-112-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-112-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-113-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-113-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-114-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-114-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-115-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-115-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-116-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-116-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-117-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-117-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-118-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-118-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-119-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-119-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-12-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-12-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-13-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-13-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-14-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-14-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-15-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-15-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-16-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-16-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-17-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-17-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-18-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-18-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-19-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-19-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-2-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-2-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-20-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-20-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-21-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-21-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-22-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-22-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-23-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-23-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-24-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-24-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-25-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-25-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-26-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-26-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-27-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-27-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-28-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-28-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-29-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-29-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-3-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-3-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-30-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-30-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-31-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-31-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-32-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-32-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-33-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-33-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-34-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-34-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-35-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-35-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-36-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-36-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-37-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-37-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-38-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-38-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-39-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-39-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-4-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-4-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-40-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-40-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-41-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-41-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-42-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-42-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-43-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-43-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-44-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-44-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-45-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-45-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-46-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-46-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-47-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-47-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-48-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-48-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-49-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-49-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-5-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-5-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-50-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-50-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-51-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-51-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-52-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-52-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-53-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-53-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-54-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-54-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-55-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-55-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-56-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-56-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-57-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-57-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-58-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-58-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-59-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-59-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-6-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-6-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-60-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-60-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-61-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-61-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-62-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-62-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-63-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-63-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-64-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-64-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-65-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-65-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-66-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-66-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-67-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-67-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-68-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-68-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-69-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-69-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-7-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-7-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-70-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-70-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-71-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-71-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-72-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-72-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-73-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-73-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-74-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-74-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-75-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-75-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-76-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-76-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-77-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-77-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-78-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-78-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-79-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-79-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-8-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-8-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-80-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-80-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-81-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-81-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-82-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-82-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-83-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-83-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-84-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-84-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-85-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-85-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-86-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-86-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-87-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-87-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-88-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-88-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-89-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-89-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-9-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-9-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-90-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-90-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-91-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-91-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-92-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-92-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-93-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-93-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-94-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-94-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-95-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-95-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-96-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-96-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-97-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-97-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-98-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-98-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-99-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-99-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-cyrillic-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-greek-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-greek-ext-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-latin-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/files/klee-one-latin-ext-600-normal.woff2 +0 -0
- package/fonts/@fontsource/klee-one/package.json +6 -0
- package/fonts/@fontsource/shippori-mincho/400.css +1219 -0
- package/fonts/@fontsource/shippori-mincho/700.css +1219 -0
- package/fonts/@fontsource/shippori-mincho/LICENSE +93 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-0-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-0-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-1-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-1-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-10-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-10-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-100-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-100-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-101-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-101-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-102-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-102-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-103-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-103-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-104-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-104-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-105-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-105-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-106-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-106-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-107-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-107-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-108-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-108-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-109-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-109-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-11-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-11-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-110-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-110-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-111-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-111-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-112-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-112-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-113-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-113-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-114-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-114-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-115-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-115-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-116-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-116-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-117-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-117-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-118-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-118-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-119-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-119-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-12-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-12-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-13-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-13-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-14-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-14-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-15-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-15-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-16-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-16-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-17-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-17-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-18-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-18-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-19-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-19-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-2-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-2-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-20-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-20-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-21-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-21-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-22-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-22-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-23-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-23-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-24-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-24-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-25-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-25-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-26-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-26-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-27-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-27-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-28-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-28-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-29-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-29-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-3-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-3-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-30-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-30-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-31-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-31-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-32-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-32-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-33-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-33-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-34-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-34-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-35-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-35-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-36-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-36-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-37-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-37-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-38-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-38-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-39-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-39-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-4-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-4-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-40-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-40-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-41-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-41-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-42-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-42-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-43-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-43-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-44-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-44-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-45-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-45-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-46-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-46-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-47-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-47-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-48-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-48-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-49-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-49-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-5-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-5-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-50-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-50-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-51-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-51-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-52-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-52-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-53-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-53-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-54-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-54-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-55-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-55-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-56-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-56-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-57-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-57-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-58-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-58-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-59-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-59-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-6-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-6-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-60-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-60-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-61-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-61-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-62-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-62-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-63-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-63-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-64-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-64-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-65-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-65-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-66-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-66-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-67-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-67-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-68-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-68-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-69-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-69-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-7-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-7-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-70-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-70-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-71-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-71-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-72-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-72-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-73-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-73-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-74-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-74-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-75-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-75-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-76-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-76-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-77-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-77-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-78-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-78-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-79-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-79-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-8-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-8-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-80-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-80-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-81-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-81-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-82-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-82-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-83-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-83-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-84-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-84-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-85-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-85-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-86-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-86-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-87-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-87-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-88-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-88-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-89-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-89-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-9-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-9-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-90-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-90-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-91-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-91-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-92-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-92-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-93-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-93-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-94-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-94-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-95-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-95-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-96-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-96-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-97-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-97-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-98-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-98-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-99-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-99-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/files/shippori-mincho-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/shippori-mincho/package.json +6 -0
- package/fonts/@fontsource/source-code-pro/400.css +69 -0
- package/fonts/@fontsource/source-code-pro/700.css +69 -0
- package/fonts/@fontsource/source-code-pro/LICENSE +93 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-cyrillic-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-cyrillic-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-greek-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-greek-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-greek-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-greek-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-vietnamese-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/files/source-code-pro-vietnamese-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-code-pro/package.json +6 -0
- package/fonts/@fontsource/source-sans-3/400-italic.css +69 -0
- package/fonts/@fontsource/source-sans-3/400.css +69 -0
- package/fonts/@fontsource/source-sans-3/700-italic.css +69 -0
- package/fonts/@fontsource/source-sans-3/700.css +69 -0
- package/fonts/@fontsource/source-sans-3/LICENSE +93 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-cyrillic-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-greek-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-vietnamese-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-vietnamese-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-vietnamese-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/files/source-sans-3-vietnamese-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-sans-3/package.json +6 -0
- package/fonts/@fontsource/source-serif-4/400-italic.css +59 -0
- package/fonts/@fontsource/source-serif-4/400.css +59 -0
- package/fonts/@fontsource/source-serif-4/700-italic.css +59 -0
- package/fonts/@fontsource/source-serif-4/700.css +59 -0
- package/fonts/@fontsource/source-serif-4/LICENSE +93 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-cyrillic-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-greek-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-greek-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-greek-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-greek-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-ext-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-ext-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-vietnamese-400-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-vietnamese-400-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-vietnamese-700-italic.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/files/source-serif-4-vietnamese-700-normal.woff2 +0 -0
- package/fonts/@fontsource/source-serif-4/package.json +6 -0
- package/fonts/@fontsource/zen-maru-gothic/400.css +1219 -0
- package/fonts/@fontsource/zen-maru-gothic/700.css +1219 -0
- package/fonts/@fontsource/zen-maru-gothic/LICENSE +93 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-10-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-10-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-100-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-100-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-101-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-101-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-102-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-102-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-103-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-103-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-104-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-104-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-105-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-105-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-106-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-106-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-107-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-107-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-108-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-108-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-109-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-109-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-11-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-11-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-110-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-110-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-111-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-111-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-112-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-112-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-113-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-113-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-114-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-114-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-115-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-115-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-116-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-116-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-117-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-117-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-118-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-118-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-119-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-119-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-12-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-12-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-13-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-13-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-14-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-14-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-15-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-15-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-16-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-16-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-17-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-17-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-18-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-18-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-19-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-19-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-2-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-2-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-20-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-20-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-21-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-21-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-22-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-22-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-23-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-23-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-24-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-24-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-25-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-25-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-26-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-26-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-27-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-27-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-28-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-28-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-29-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-29-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-3-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-3-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-30-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-30-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-31-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-31-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-32-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-32-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-33-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-33-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-34-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-34-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-35-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-35-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-36-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-36-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-37-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-37-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-38-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-38-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-39-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-39-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-4-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-4-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-40-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-40-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-41-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-41-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-42-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-42-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-43-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-43-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-44-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-44-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-45-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-45-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-46-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-46-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-47-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-47-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-48-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-48-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-49-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-49-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-5-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-5-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-50-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-50-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-51-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-51-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-52-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-52-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-53-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-53-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-54-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-54-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-55-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-55-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-56-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-56-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-57-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-57-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-58-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-58-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-59-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-59-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-6-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-6-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-60-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-60-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-61-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-61-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-62-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-62-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-63-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-63-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-64-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-64-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-65-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-65-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-66-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-66-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-67-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-67-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-68-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-68-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-69-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-69-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-7-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-7-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-70-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-70-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-71-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-71-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-72-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-72-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-73-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-73-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-74-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-74-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-75-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-75-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-76-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-76-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-77-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-77-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-78-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-78-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-79-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-79-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-8-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-8-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-80-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-80-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-81-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-81-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-82-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-82-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-83-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-83-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-84-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-84-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-85-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-85-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-86-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-86-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-87-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-87-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-88-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-88-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-89-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-89-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-9-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-9-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-90-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-90-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-91-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-91-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-92-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-92-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-93-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-93-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-94-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-94-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-95-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-95-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-96-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-96-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-97-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-97-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-98-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-98-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-99-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-99-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-cyrillic-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-cyrillic-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-greek-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-greek-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-latin-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-latin-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-latin-ext-400-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/files/zen-maru-gothic-latin-ext-700-normal.woff2 +0 -0
- package/fonts/@fontsource/zen-maru-gothic/package.json +6 -0
- package/fonts/OFL-BIZUDPMincho.txt +93 -0
- package/fonts/OFL.txt +93 -0
- package/kit/abcjs-node.mjs +38 -0
- package/kit/base.css +98 -0
- package/kit/bounded-read.mjs +59 -0
- package/kit/browser.mjs +98 -0
- package/kit/build.mjs +336 -0
- package/kit/check-messages.mjs +343 -0
- package/kit/check.mjs +729 -0
- package/kit/core/abcjs.mjs +150 -0
- package/kit/core/attach-content.mjs +818 -0
- package/kit/core/attachments.mjs +255 -0
- package/kit/core/audio-core.mjs +263 -0
- package/kit/core/backup-name.mjs +8 -0
- package/kit/core/bounded-html.mjs +57 -0
- package/kit/core/bounded-read-core.mjs +55 -0
- package/kit/core/build-core.mjs +1249 -0
- package/kit/core/check-result.mjs +14 -0
- package/kit/core/code-scan.mjs +202 -0
- package/kit/core/colab-core.mjs +197 -0
- package/kit/core/color-check.mjs +49 -0
- package/kit/core/comment-core.mjs +93 -0
- package/kit/core/components-lock.mjs +169 -0
- package/kit/core/config-file.mjs +140 -0
- package/kit/core/error-text.mjs +26 -0
- package/kit/core/export-name.mjs +44 -0
- package/kit/core/favicon.mjs +33 -0
- package/kit/core/file-policy.mjs +165 -0
- package/kit/core/format.mjs +38 -0
- package/kit/core/identity-hash.mjs +31 -0
- package/kit/core/katex-ranges.mjs +26 -0
- package/kit/core/layout-scan.mjs +635 -0
- package/kit/core/legacy-vocab.mjs +36 -0
- package/kit/core/link-policy.mjs +76 -0
- package/kit/core/live-policy.mjs +274 -0
- package/kit/core/live-results.mjs +239 -0
- package/kit/core/live.mjs +262 -0
- package/kit/core/llm-fix.mjs +162 -0
- package/kit/core/llm-import.mjs +269 -0
- package/kit/core/llm-insert.mjs +95 -0
- package/kit/core/llm-outline.mjs +167 -0
- package/kit/core/llm-pack-assemble.mjs +145 -0
- package/kit/core/llm-pack-data.mjs +1614 -0
- package/kit/core/llm-pack.mjs +96 -0
- package/kit/core/llm-request.mjs +55 -0
- package/kit/core/mp3.mjs +28 -0
- package/kit/core/narration-core.mjs +141 -0
- package/kit/core/narration-lint.mjs +146 -0
- package/kit/core/narration-parse.mjs +225 -0
- package/kit/core/new-deck.mjs +247 -0
- package/kit/core/part-labels.mjs +61 -0
- package/kit/core/parts2.mjs +460 -0
- package/kit/core/path-posix.mjs +47 -0
- package/kit/core/player.mjs +89 -0
- package/kit/core/portable.mjs +1721 -0
- package/kit/core/position.mjs +46 -0
- package/kit/core/purposes.mjs +183 -0
- package/kit/core/read-aloud.mjs +166 -0
- package/kit/core/ref-voice.mjs +75 -0
- package/kit/core/sha1.mjs +34 -0
- package/kit/core/slide-ids.mjs +214 -0
- package/kit/core/slide-ops.mjs +293 -0
- package/kit/core/sound-preferences.mjs +17 -0
- package/kit/core/sounds.mjs +149 -0
- package/kit/core/template-text.mjs +88 -0
- package/kit/core/theme-metrics.mjs +112 -0
- package/kit/core/theme-shapes.mjs +78 -0
- package/kit/core/themes-list.mjs +23 -0
- package/kit/core/themes-lock.mjs +150 -0
- package/kit/core/tier-a.mjs +625 -0
- package/kit/core/tts-normalize.mjs +20 -0
- package/kit/core/wav-core.mjs +78 -0
- package/kit/core/yomi.mjs +64 -0
- package/kit/core/zip-read.mjs +125 -0
- package/kit/deck.js +2333 -0
- package/kit/latin.css +3 -0
- package/kit/layouts.css +98 -0
- package/kit/live.js +670 -0
- package/kit/llm-pack.mjs +102 -0
- package/kit/narration.mjs +23 -0
- package/kit/parts-registry.js +87 -0
- package/kit/player.json +5 -0
- package/kit/player.lock.json +4 -0
- package/kit/presenter.js +234 -0
- package/kit/render-compare.mjs +219 -0
- package/kit/safe-fs.mjs +163 -0
- package/kit/shape.js +172 -0
- package/kit/templates/new-deck.mjs +188 -0
- package/kit/theme-dirs.mjs +24 -0
- package/kit/tools.js +1120 -0
- package/package.json +109 -4
- package/render/render.mjs +333 -0
- package/render/sounds.mjs +49 -0
- package/server/dev.mjs +476 -0
- package/server/editor-ui.js +969 -0
- package/server/hints.js +251 -0
- package/server/shell.js +71 -0
- package/themes/asagi/theme.json +14 -0
- package/themes/asagi/tokens.css +17 -0
- package/themes/business/theme.json +5 -0
- package/themes/business/tokens.css +28 -0
- package/themes/default/README.ja.md +31 -0
- package/themes/default/README.md +31 -0
- package/themes/default/theme.json +4 -0
- package/themes/default/tokens.css +73 -0
- package/themes/kogecha/theme.json +10 -0
- package/themes/kogecha/tokens.css +16 -0
- package/themes/kokugo/theme.json +4 -0
- package/themes/kokugo/tokens.css +12 -0
- package/themes/murasaki/theme.json +10 -0
- package/themes/murasaki/tokens.css +12 -0
- package/themes/sumi/theme.json +10 -0
- package/themes/sumi/tokens.css +36 -0
- package/themes/tokiwa/theme.json +10 -0
- package/themes/tokiwa/tokens.css +14 -0
- package/themes.lock.json +124 -0
- package/tools/comment-shots.mjs +155 -0
- package/tools/ids.mjs +155 -0
- package/tools/new.mjs +78 -0
- package/tools/portable.mjs +281 -0
- package/tools/sheet.mjs +135 -0
- package/tools/video.mjs +42 -0
- package/tts/.python-version +1 -0
- package/tts/core.py +237 -0
- package/tts/pyproject.toml +12 -0
- package/tts/synth.py +401 -0
- package/tts/uv.lock +211 -0
- package/tts/voices/README.md +34 -0
- package/tts/voices/alice.wav +0 -0
- package/tts/voices/alice_en.wav +0 -0
- package/tts/voices/bob.wav +0 -0
- package/tts/voices/bob_en.wav +0 -0
- package/tts/yomi.py +162 -0
- package/tts/yomi.yaml +127 -0
- package/vendor/components/CATALOG.md +55 -0
- package/vendor/components/LICENSE +21 -0
- package/vendor/components/manifest.json +1131 -0
- package/vendor/components/sha256/024d2fcefd31ed33ee5c9274e3eafa248a86a773ad592210e766e19d58b28782/README.md +33 -0
- package/vendor/components/sha256/024d2fcefd31ed33ee5c9274e3eafa248a86a773ad592210e766e19d58b28782/demo.html +69 -0
- package/vendor/components/sha256/024d2fcefd31ed33ee5c9274e3eafa248a86a773ad592210e766e19d58b28782/index.js +261 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/CHANGELOG.md +41 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/LICENSE-strokesvg.txt +115 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/OFL.txt +93 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/README.md +33 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/demo.html +40 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/index.js +749 -0
- package/vendor/components/sha256/029f5c406491c39d23f1a35befc702bde2eb882a51fdd2d2bbd9cefb9aaff5d5/strokes-CHANGES.md +20 -0
- package/vendor/components/sha256/03ad8f02fe39c4adc55aae617b79763bd7880af6786126e358f8c02ad7fb7dd8/CHANGELOG.md +25 -0
- package/vendor/components/sha256/03ad8f02fe39c4adc55aae617b79763bd7880af6786126e358f8c02ad7fb7dd8/README.md +46 -0
- package/vendor/components/sha256/03ad8f02fe39c4adc55aae617b79763bd7880af6786126e358f8c02ad7fb7dd8/demo.html +112 -0
- package/vendor/components/sha256/03ad8f02fe39c4adc55aae617b79763bd7880af6786126e358f8c02ad7fb7dd8/index.js +467 -0
- package/vendor/components/sha256/04e95936600124c9542c4013710cd2b524da75fe551239afa471fed5c5b8d17b/README.md +14 -0
- package/vendor/components/sha256/04e95936600124c9542c4013710cd2b524da75fe551239afa471fed5c5b8d17b/demo.html +236 -0
- package/vendor/components/sha256/04e95936600124c9542c4013710cd2b524da75fe551239afa471fed5c5b8d17b/index.js +631 -0
- package/vendor/components/sha256/09ac1c4db96cdee05ea4857b63b643c15d87b13f4df025cc3b96c0b6bbfe7b5d/README.md +38 -0
- package/vendor/components/sha256/09ac1c4db96cdee05ea4857b63b643c15d87b13f4df025cc3b96c0b6bbfe7b5d/demo.html +92 -0
- package/vendor/components/sha256/09ac1c4db96cdee05ea4857b63b643c15d87b13f4df025cc3b96c0b6bbfe7b5d/index.js +402 -0
- package/vendor/components/sha256/0aef0b1aaa430f2f4cb3a3bc09e23f5cb00f280d9b524f692b0ddce99e267c3b/CHANGELOG.md +35 -0
- package/vendor/components/sha256/0aef0b1aaa430f2f4cb3a3bc09e23f5cb00f280d9b524f692b0ddce99e267c3b/README.md +36 -0
- package/vendor/components/sha256/0aef0b1aaa430f2f4cb3a3bc09e23f5cb00f280d9b524f692b0ddce99e267c3b/demo.html +52 -0
- package/vendor/components/sha256/0aef0b1aaa430f2f4cb3a3bc09e23f5cb00f280d9b524f692b0ddce99e267c3b/index.js +267 -0
- package/vendor/components/sha256/0b3db4a02b369f58fc10aef5f4c26b95b7f1fbc18f9fcd073484e1f33cdafd82/CHANGELOG.md +24 -0
- package/vendor/components/sha256/0b3db4a02b369f58fc10aef5f4c26b95b7f1fbc18f9fcd073484e1f33cdafd82/README.md +35 -0
- package/vendor/components/sha256/0b3db4a02b369f58fc10aef5f4c26b95b7f1fbc18f9fcd073484e1f33cdafd82/demo.html +53 -0
- package/vendor/components/sha256/0b3db4a02b369f58fc10aef5f4c26b95b7f1fbc18f9fcd073484e1f33cdafd82/index.js +481 -0
- package/vendor/components/sha256/0b97f68e55cdba5b9953775a5e79b4005f3f745b41756e4103556ef33a93d614/README.md +48 -0
- package/vendor/components/sha256/0b97f68e55cdba5b9953775a5e79b4005f3f745b41756e4103556ef33a93d614/demo.html +61 -0
- package/vendor/components/sha256/0b97f68e55cdba5b9953775a5e79b4005f3f745b41756e4103556ef33a93d614/index.js +114 -0
- package/vendor/components/sha256/0c02494c234498ef3a20d9e605f886425223639dbf94e20a27b97c82d9ada188/README.md +69 -0
- package/vendor/components/sha256/0c02494c234498ef3a20d9e605f886425223639dbf94e20a27b97c82d9ada188/demo.html +50 -0
- package/vendor/components/sha256/0c02494c234498ef3a20d9e605f886425223639dbf94e20a27b97c82d9ada188/index.js +487 -0
- package/vendor/components/sha256/0eb60fac91603d3f3c26cf1ae329ad539365590339d82415c172ee924c25e1d5/CHANGELOG.md +29 -0
- package/vendor/components/sha256/0eb60fac91603d3f3c26cf1ae329ad539365590339d82415c172ee924c25e1d5/README.md +44 -0
- package/vendor/components/sha256/0eb60fac91603d3f3c26cf1ae329ad539365590339d82415c172ee924c25e1d5/demo.html +43 -0
- package/vendor/components/sha256/0eb60fac91603d3f3c26cf1ae329ad539365590339d82415c172ee924c25e1d5/index.js +278 -0
- package/vendor/components/sha256/0ed29166621d8a7095e712b641079560668241671157578fd76c57d0767d6c6d/README.md +47 -0
- package/vendor/components/sha256/0ed29166621d8a7095e712b641079560668241671157578fd76c57d0767d6c6d/demo.html +60 -0
- package/vendor/components/sha256/0ed29166621d8a7095e712b641079560668241671157578fd76c57d0767d6c6d/index.js +113 -0
- package/vendor/components/sha256/0f85ecc000a5665e85229d05a36c0c14e1ddc4bb6b4a4fbedb0fb836b36ea0c2/CHANGELOG.md +30 -0
- package/vendor/components/sha256/0f85ecc000a5665e85229d05a36c0c14e1ddc4bb6b4a4fbedb0fb836b36ea0c2/README.md +32 -0
- package/vendor/components/sha256/0f85ecc000a5665e85229d05a36c0c14e1ddc4bb6b4a4fbedb0fb836b36ea0c2/demo.html +51 -0
- package/vendor/components/sha256/0f85ecc000a5665e85229d05a36c0c14e1ddc4bb6b4a4fbedb0fb836b36ea0c2/index.js +302 -0
- package/vendor/components/sha256/10598b84d3e070ece84905f83ce55eaac9d2df7fc4746e129fe8196bb23d8200/CHANGELOG.md +24 -0
- package/vendor/components/sha256/10598b84d3e070ece84905f83ce55eaac9d2df7fc4746e129fe8196bb23d8200/README.md +43 -0
- package/vendor/components/sha256/10598b84d3e070ece84905f83ce55eaac9d2df7fc4746e129fe8196bb23d8200/demo.html +89 -0
- package/vendor/components/sha256/10598b84d3e070ece84905f83ce55eaac9d2df7fc4746e129fe8196bb23d8200/index.js +298 -0
- package/vendor/components/sha256/106b3dfdf04ae0de25eaf75a0069cde3d2167f69140fe255ef0cdbb485cf5a35/README.md +72 -0
- package/vendor/components/sha256/106b3dfdf04ae0de25eaf75a0069cde3d2167f69140fe255ef0cdbb485cf5a35/demo.html +50 -0
- package/vendor/components/sha256/106b3dfdf04ae0de25eaf75a0069cde3d2167f69140fe255ef0cdbb485cf5a35/index.js +487 -0
- package/vendor/components/sha256/11249486d5823b28ccdcd69cb713c3a99c66de8a42637cb8ab04bc4bce84cb8c/CHANGELOG.md +15 -0
- package/vendor/components/sha256/11249486d5823b28ccdcd69cb713c3a99c66de8a42637cb8ab04bc4bce84cb8c/README.md +25 -0
- package/vendor/components/sha256/11249486d5823b28ccdcd69cb713c3a99c66de8a42637cb8ab04bc4bce84cb8c/demo.html +48 -0
- package/vendor/components/sha256/11249486d5823b28ccdcd69cb713c3a99c66de8a42637cb8ab04bc4bce84cb8c/index.js +88 -0
- package/vendor/components/sha256/1255f8c72c443ec07f74973e6292b8b2a5bf179fd6daed52a40c84cd4813f5b6/CHANGELOG.md +10 -0
- package/vendor/components/sha256/1255f8c72c443ec07f74973e6292b8b2a5bf179fd6daed52a40c84cd4813f5b6/README.md +50 -0
- package/vendor/components/sha256/1255f8c72c443ec07f74973e6292b8b2a5bf179fd6daed52a40c84cd4813f5b6/demo.html +63 -0
- package/vendor/components/sha256/1255f8c72c443ec07f74973e6292b8b2a5bf179fd6daed52a40c84cd4813f5b6/index.js +205 -0
- package/vendor/components/sha256/128a9110ebb4e49be79c099aa7d742914e0fcf937bb15256f1352aa42cfb9b0d/CHANGELOG.md +29 -0
- package/vendor/components/sha256/128a9110ebb4e49be79c099aa7d742914e0fcf937bb15256f1352aa42cfb9b0d/README.md +43 -0
- package/vendor/components/sha256/128a9110ebb4e49be79c099aa7d742914e0fcf937bb15256f1352aa42cfb9b0d/demo.html +89 -0
- package/vendor/components/sha256/128a9110ebb4e49be79c099aa7d742914e0fcf937bb15256f1352aa42cfb9b0d/index.js +309 -0
- package/vendor/components/sha256/131b8d6502cfa409f05cf72b674741128275073ab83a200abbd942767f75ca7c/README.md +41 -0
- package/vendor/components/sha256/131b8d6502cfa409f05cf72b674741128275073ab83a200abbd942767f75ca7c/demo.html +56 -0
- package/vendor/components/sha256/131b8d6502cfa409f05cf72b674741128275073ab83a200abbd942767f75ca7c/index.js +481 -0
- package/vendor/components/sha256/13ecbbf1ccfe59b5ddaddfc96d0c5e8c453dff731b7d39bd0aba4630b666d9c5/CHANGELOG.md +23 -0
- package/vendor/components/sha256/13ecbbf1ccfe59b5ddaddfc96d0c5e8c453dff731b7d39bd0aba4630b666d9c5/README.md +44 -0
- package/vendor/components/sha256/13ecbbf1ccfe59b5ddaddfc96d0c5e8c453dff731b7d39bd0aba4630b666d9c5/demo.html +56 -0
- package/vendor/components/sha256/13ecbbf1ccfe59b5ddaddfc96d0c5e8c453dff731b7d39bd0aba4630b666d9c5/index.js +402 -0
- package/vendor/components/sha256/15f8ebbe2b0e9dcaeacc52d2a47f1aff673d42b0334f028b0a763a4c094bfcb1/README.md +41 -0
- package/vendor/components/sha256/15f8ebbe2b0e9dcaeacc52d2a47f1aff673d42b0334f028b0a763a4c094bfcb1/demo.html +75 -0
- package/vendor/components/sha256/15f8ebbe2b0e9dcaeacc52d2a47f1aff673d42b0334f028b0a763a4c094bfcb1/index.js +349 -0
- package/vendor/components/sha256/1640a5c2b577a321f97e0ff8a2ecc856e51415a9a9e25f8d2423ffbf6b32a896/README.md +41 -0
- package/vendor/components/sha256/1640a5c2b577a321f97e0ff8a2ecc856e51415a9a9e25f8d2423ffbf6b32a896/demo.html +89 -0
- package/vendor/components/sha256/1640a5c2b577a321f97e0ff8a2ecc856e51415a9a9e25f8d2423ffbf6b32a896/index.js +240 -0
- package/vendor/components/sha256/1783baf0a5eb04bb570ce4f2cffd09ab28c458f74286851fa90cfa0a4ff99fa9/CHANGELOG.md +20 -0
- package/vendor/components/sha256/1783baf0a5eb04bb570ce4f2cffd09ab28c458f74286851fa90cfa0a4ff99fa9/README.md +39 -0
- package/vendor/components/sha256/1783baf0a5eb04bb570ce4f2cffd09ab28c458f74286851fa90cfa0a4ff99fa9/demo.html +66 -0
- package/vendor/components/sha256/1783baf0a5eb04bb570ce4f2cffd09ab28c458f74286851fa90cfa0a4ff99fa9/index.js +258 -0
- package/vendor/components/sha256/17e0e42b8e72b34ff4acf5ac64dbcdf4173949d41015ea6003f0f0a378f268bd/README.md +33 -0
- package/vendor/components/sha256/17e0e42b8e72b34ff4acf5ac64dbcdf4173949d41015ea6003f0f0a378f268bd/demo.html +50 -0
- package/vendor/components/sha256/17e0e42b8e72b34ff4acf5ac64dbcdf4173949d41015ea6003f0f0a378f268bd/index.js +231 -0
- package/vendor/components/sha256/195331193a9d0a5677400f354cafb77ed1f7543b6996f07c0ccd934432c92463/README.md +41 -0
- package/vendor/components/sha256/195331193a9d0a5677400f354cafb77ed1f7543b6996f07c0ccd934432c92463/demo.html +44 -0
- package/vendor/components/sha256/195331193a9d0a5677400f354cafb77ed1f7543b6996f07c0ccd934432c92463/index.js +320 -0
- package/vendor/components/sha256/1cda844f00dc1d4a8986812c3419564b2d0604ce0d0d6811a71824d3e98db692/README.md +49 -0
- package/vendor/components/sha256/1cda844f00dc1d4a8986812c3419564b2d0604ce0d0d6811a71824d3e98db692/demo.html +79 -0
- package/vendor/components/sha256/1cda844f00dc1d4a8986812c3419564b2d0604ce0d0d6811a71824d3e98db692/index.js +647 -0
- package/vendor/components/sha256/1da54082b0049fd4e39d12b99a4fbb6bc03317b838940d64e3f87931ce05a950/CHANGELOG.md +20 -0
- package/vendor/components/sha256/1da54082b0049fd4e39d12b99a4fbb6bc03317b838940d64e3f87931ce05a950/README.md +38 -0
- package/vendor/components/sha256/1da54082b0049fd4e39d12b99a4fbb6bc03317b838940d64e3f87931ce05a950/demo.html +115 -0
- package/vendor/components/sha256/1da54082b0049fd4e39d12b99a4fbb6bc03317b838940d64e3f87931ce05a950/index.js +385 -0
- package/vendor/components/sha256/1e83fd0d0006c197ed09155b4230c2a45aabadb8c051b01d19e4bb0655b622d8/CHANGELOG.md +32 -0
- package/vendor/components/sha256/1e83fd0d0006c197ed09155b4230c2a45aabadb8c051b01d19e4bb0655b622d8/README.md +57 -0
- package/vendor/components/sha256/1e83fd0d0006c197ed09155b4230c2a45aabadb8c051b01d19e4bb0655b622d8/demo.html +121 -0
- package/vendor/components/sha256/1e83fd0d0006c197ed09155b4230c2a45aabadb8c051b01d19e4bb0655b622d8/index.js +895 -0
- package/vendor/components/sha256/20caf64d7740669ef99b86d3ab603312c0fe037c4beca3d32288626d9671717d/README.md +36 -0
- package/vendor/components/sha256/20caf64d7740669ef99b86d3ab603312c0fe037c4beca3d32288626d9671717d/demo.html +72 -0
- package/vendor/components/sha256/20caf64d7740669ef99b86d3ab603312c0fe037c4beca3d32288626d9671717d/index.js +260 -0
- package/vendor/components/sha256/219cfeabef4dff696e948c8eeb129570247b6ff903ee795ec7f631c9ee242562/README.md +32 -0
- package/vendor/components/sha256/219cfeabef4dff696e948c8eeb129570247b6ff903ee795ec7f631c9ee242562/demo.html +53 -0
- package/vendor/components/sha256/219cfeabef4dff696e948c8eeb129570247b6ff903ee795ec7f631c9ee242562/index.js +565 -0
- package/vendor/components/sha256/26920d2b4baebfadae00f393d60dab2dafd34066ac4760ec26020f75c8f05c73/README.md +12 -0
- package/vendor/components/sha256/26920d2b4baebfadae00f393d60dab2dafd34066ac4760ec26020f75c8f05c73/index.js +39 -0
- package/vendor/components/sha256/26d5493ac7b78c9fbf01fe19359b027240c61b61a7c8c495d1ca57f18ba1c468/CHANGELOG.md +31 -0
- package/vendor/components/sha256/26d5493ac7b78c9fbf01fe19359b027240c61b61a7c8c495d1ca57f18ba1c468/README.md +32 -0
- package/vendor/components/sha256/26d5493ac7b78c9fbf01fe19359b027240c61b61a7c8c495d1ca57f18ba1c468/demo.html +54 -0
- package/vendor/components/sha256/26d5493ac7b78c9fbf01fe19359b027240c61b61a7c8c495d1ca57f18ba1c468/index.js +268 -0
- package/vendor/components/sha256/2764f03a826a75e3690a7eb8f117ed19f7c7451683b22a1793532f6e69d070f9/README.md +38 -0
- package/vendor/components/sha256/2764f03a826a75e3690a7eb8f117ed19f7c7451683b22a1793532f6e69d070f9/demo.html +43 -0
- package/vendor/components/sha256/2764f03a826a75e3690a7eb8f117ed19f7c7451683b22a1793532f6e69d070f9/index.js +255 -0
- package/vendor/components/sha256/286d6f3d2281ccd5b2f3cee91e1eb6357905cc7846b3c2032230bdde97b5bd77/README.md +40 -0
- package/vendor/components/sha256/286d6f3d2281ccd5b2f3cee91e1eb6357905cc7846b3c2032230bdde97b5bd77/demo.html +44 -0
- package/vendor/components/sha256/286d6f3d2281ccd5b2f3cee91e1eb6357905cc7846b3c2032230bdde97b5bd77/index.js +320 -0
- package/vendor/components/sha256/2a9b96174fbdfbe284dd3a5a6f748e867284d582a6fdf49965fc5ac2931e87d2/CHANGELOG.md +23 -0
- package/vendor/components/sha256/2a9b96174fbdfbe284dd3a5a6f748e867284d582a6fdf49965fc5ac2931e87d2/README.md +34 -0
- package/vendor/components/sha256/2a9b96174fbdfbe284dd3a5a6f748e867284d582a6fdf49965fc5ac2931e87d2/demo.html +73 -0
- package/vendor/components/sha256/2a9b96174fbdfbe284dd3a5a6f748e867284d582a6fdf49965fc5ac2931e87d2/index.js +227 -0
- package/vendor/components/sha256/2ccc1568bb08ca19ef5073551626d4395bd44b1b5337876a36d4e365d4232506/README.md +36 -0
- package/vendor/components/sha256/2ccc1568bb08ca19ef5073551626d4395bd44b1b5337876a36d4e365d4232506/demo.html +72 -0
- package/vendor/components/sha256/2ccc1568bb08ca19ef5073551626d4395bd44b1b5337876a36d4e365d4232506/index.js +301 -0
- package/vendor/components/sha256/2e765ec34159ac8a2887f2826341dfaac7e54699829b1f15521ed7389afddef9/README.md +19 -0
- package/vendor/components/sha256/2e765ec34159ac8a2887f2826341dfaac7e54699829b1f15521ed7389afddef9/demo.html +40 -0
- package/vendor/components/sha256/2e765ec34159ac8a2887f2826341dfaac7e54699829b1f15521ed7389afddef9/index.js +91 -0
- package/vendor/components/sha256/2ec05263e6fe8c9cfd7919e4e8031202997d40dceaa93b962fb47c29c3aa972d/CHANGELOG.md +27 -0
- package/vendor/components/sha256/2ec05263e6fe8c9cfd7919e4e8031202997d40dceaa93b962fb47c29c3aa972d/README.md +35 -0
- package/vendor/components/sha256/2ec05263e6fe8c9cfd7919e4e8031202997d40dceaa93b962fb47c29c3aa972d/demo.html +66 -0
- package/vendor/components/sha256/2ec05263e6fe8c9cfd7919e4e8031202997d40dceaa93b962fb47c29c3aa972d/index.js +313 -0
- package/vendor/components/sha256/2ec8a9acdf58b641dbda9a31643e1c9f77d4e386ce654a58971e3ba6e5530455/CHANGELOG.md +32 -0
- package/vendor/components/sha256/2ec8a9acdf58b641dbda9a31643e1c9f77d4e386ce654a58971e3ba6e5530455/README.md +43 -0
- package/vendor/components/sha256/2ec8a9acdf58b641dbda9a31643e1c9f77d4e386ce654a58971e3ba6e5530455/demo.html +75 -0
- package/vendor/components/sha256/2ec8a9acdf58b641dbda9a31643e1c9f77d4e386ce654a58971e3ba6e5530455/index.js +352 -0
- package/vendor/components/sha256/301bd0fc3d9a7e43b555e571de221a1374cee99d5d9dafaf1904135894ca4e3d/CHANGELOG.md +19 -0
- package/vendor/components/sha256/301bd0fc3d9a7e43b555e571de221a1374cee99d5d9dafaf1904135894ca4e3d/README.md +21 -0
- package/vendor/components/sha256/301bd0fc3d9a7e43b555e571de221a1374cee99d5d9dafaf1904135894ca4e3d/demo.html +33 -0
- package/vendor/components/sha256/301bd0fc3d9a7e43b555e571de221a1374cee99d5d9dafaf1904135894ca4e3d/index.js +106 -0
- package/vendor/components/sha256/3148735986450083484a145f9399e146b3f27efc0efd75ea1c02e1fa8ef01d36/README.md +49 -0
- package/vendor/components/sha256/3148735986450083484a145f9399e146b3f27efc0efd75ea1c02e1fa8ef01d36/demo.html +79 -0
- package/vendor/components/sha256/3148735986450083484a145f9399e146b3f27efc0efd75ea1c02e1fa8ef01d36/index.js +647 -0
- package/vendor/components/sha256/32aa0052bbb1f20f0d97fc8dde7413b49d51c342c7ac2f38f88377d4c5100d88/CHANGELOG.md +23 -0
- package/vendor/components/sha256/32aa0052bbb1f20f0d97fc8dde7413b49d51c342c7ac2f38f88377d4c5100d88/README.md +36 -0
- package/vendor/components/sha256/32aa0052bbb1f20f0d97fc8dde7413b49d51c342c7ac2f38f88377d4c5100d88/demo.html +70 -0
- package/vendor/components/sha256/32aa0052bbb1f20f0d97fc8dde7413b49d51c342c7ac2f38f88377d4c5100d88/index.js +178 -0
- package/vendor/components/sha256/33202e1f661b9c3409e2de59e91dee17b2de8b5837d6b1407fe3d97f22bd92ea/CHANGELOG.md +26 -0
- package/vendor/components/sha256/33202e1f661b9c3409e2de59e91dee17b2de8b5837d6b1407fe3d97f22bd92ea/README.md +39 -0
- package/vendor/components/sha256/33202e1f661b9c3409e2de59e91dee17b2de8b5837d6b1407fe3d97f22bd92ea/demo.html +66 -0
- package/vendor/components/sha256/33202e1f661b9c3409e2de59e91dee17b2de8b5837d6b1407fe3d97f22bd92ea/index.js +303 -0
- package/vendor/components/sha256/34676923713694c396c9f1f406c5a6551c69b617ff5df2b71f3e36a1ce7b7b95/README.md +40 -0
- package/vendor/components/sha256/34676923713694c396c9f1f406c5a6551c69b617ff5df2b71f3e36a1ce7b7b95/demo.html +90 -0
- package/vendor/components/sha256/34676923713694c396c9f1f406c5a6551c69b617ff5df2b71f3e36a1ce7b7b95/index.js +409 -0
- package/vendor/components/sha256/34970c3ad1133fefb3ea2c8bc77431885fa8d8fb157c2e2ee892d243f83bd3f1/CHANGELOG.md +36 -0
- package/vendor/components/sha256/34970c3ad1133fefb3ea2c8bc77431885fa8d8fb157c2e2ee892d243f83bd3f1/README.md +35 -0
- package/vendor/components/sha256/34970c3ad1133fefb3ea2c8bc77431885fa8d8fb157c2e2ee892d243f83bd3f1/demo.html +66 -0
- package/vendor/components/sha256/34970c3ad1133fefb3ea2c8bc77431885fa8d8fb157c2e2ee892d243f83bd3f1/index.js +351 -0
- package/vendor/components/sha256/35341b8bce2f049cc0835f363dcea82f40e31a6dbb5cc056a3d7282ab7838ea4/README.md +22 -0
- package/vendor/components/sha256/35341b8bce2f049cc0835f363dcea82f40e31a6dbb5cc056a3d7282ab7838ea4/index.js +59 -0
- package/vendor/components/sha256/35419611eee5251361ce8d5dc710b9d797af90eae58837a671d7f558aadb7f63/CHANGELOG.md +25 -0
- package/vendor/components/sha256/35419611eee5251361ce8d5dc710b9d797af90eae58837a671d7f558aadb7f63/README.md +32 -0
- package/vendor/components/sha256/35419611eee5251361ce8d5dc710b9d797af90eae58837a671d7f558aadb7f63/demo.html +51 -0
- package/vendor/components/sha256/35419611eee5251361ce8d5dc710b9d797af90eae58837a671d7f558aadb7f63/index.js +270 -0
- package/vendor/components/sha256/35d5835015707b78c29a38d27c89487afae84909328cafccaf40962d377788b8/CHANGELOG.md +20 -0
- package/vendor/components/sha256/35d5835015707b78c29a38d27c89487afae84909328cafccaf40962d377788b8/README.md +40 -0
- package/vendor/components/sha256/35d5835015707b78c29a38d27c89487afae84909328cafccaf40962d377788b8/demo.html +92 -0
- package/vendor/components/sha256/35d5835015707b78c29a38d27c89487afae84909328cafccaf40962d377788b8/index.js +399 -0
- package/vendor/components/sha256/39f28bd9009d9d31a6bf06f31d917b85ea42026e8ecadce0102fff87b4689420/CHANGELOG.md +20 -0
- package/vendor/components/sha256/39f28bd9009d9d31a6bf06f31d917b85ea42026e8ecadce0102fff87b4689420/README.md +50 -0
- package/vendor/components/sha256/39f28bd9009d9d31a6bf06f31d917b85ea42026e8ecadce0102fff87b4689420/demo.html +61 -0
- package/vendor/components/sha256/39f28bd9009d9d31a6bf06f31d917b85ea42026e8ecadce0102fff87b4689420/index.js +141 -0
- package/vendor/components/sha256/3ab111cf496fba19dc5be611265f5f5dab32c812519790dcc23038fa93d64198/README.md +43 -0
- package/vendor/components/sha256/3ab111cf496fba19dc5be611265f5f5dab32c812519790dcc23038fa93d64198/demo.html +101 -0
- package/vendor/components/sha256/3ab111cf496fba19dc5be611265f5f5dab32c812519790dcc23038fa93d64198/index.js +798 -0
- package/vendor/components/sha256/3b5e593560325c6fdc133640384bf82aff652d565483592b64f318db5bae13c8/README.md +23 -0
- package/vendor/components/sha256/3b5e593560325c6fdc133640384bf82aff652d565483592b64f318db5bae13c8/index.js +180 -0
- package/vendor/components/sha256/3f8fbe9132d44899f4ee663239185cc92336751b358497bf668d694702a82041/CHANGELOG.md +26 -0
- package/vendor/components/sha256/3f8fbe9132d44899f4ee663239185cc92336751b358497bf668d694702a82041/README.md +50 -0
- package/vendor/components/sha256/3f8fbe9132d44899f4ee663239185cc92336751b358497bf668d694702a82041/demo.html +61 -0
- package/vendor/components/sha256/3f8fbe9132d44899f4ee663239185cc92336751b358497bf668d694702a82041/index.js +171 -0
- package/vendor/components/sha256/4127774c52f510948f6337bdb63b4d9c586f97fbac8fa551f9259e373a2eb09b/README.md +22 -0
- package/vendor/components/sha256/4127774c52f510948f6337bdb63b4d9c586f97fbac8fa551f9259e373a2eb09b/index.js +41 -0
- package/vendor/components/sha256/41fb94497e0230488b8eb37688bd07109cdd5a03948b892ba621345a1a6314dd/CHANGELOG.md +10 -0
- package/vendor/components/sha256/41fb94497e0230488b8eb37688bd07109cdd5a03948b892ba621345a1a6314dd/README.md +48 -0
- package/vendor/components/sha256/41fb94497e0230488b8eb37688bd07109cdd5a03948b892ba621345a1a6314dd/demo.html +44 -0
- package/vendor/components/sha256/41fb94497e0230488b8eb37688bd07109cdd5a03948b892ba621345a1a6314dd/index.js +425 -0
- package/vendor/components/sha256/4250fe80f8cfbf4126efc1d4d6dc18b6b10ec19e7290433ef5ff7dcc4d24d74f/CHANGELOG.md +24 -0
- package/vendor/components/sha256/4250fe80f8cfbf4126efc1d4d6dc18b6b10ec19e7290433ef5ff7dcc4d24d74f/README.md +31 -0
- package/vendor/components/sha256/4250fe80f8cfbf4126efc1d4d6dc18b6b10ec19e7290433ef5ff7dcc4d24d74f/demo.html +56 -0
- package/vendor/components/sha256/4250fe80f8cfbf4126efc1d4d6dc18b6b10ec19e7290433ef5ff7dcc4d24d74f/index.js +232 -0
- package/vendor/components/sha256/43963c9100c0509889e2c4f0528ba4f2d24076d009be83f5a205f014a168554d/README.md +31 -0
- package/vendor/components/sha256/43963c9100c0509889e2c4f0528ba4f2d24076d009be83f5a205f014a168554d/demo.html +49 -0
- package/vendor/components/sha256/43963c9100c0509889e2c4f0528ba4f2d24076d009be83f5a205f014a168554d/index.js +108 -0
- package/vendor/components/sha256/44e432f8b34c8ef1b20f4eed5c6f2d9199094abcf0540f54718efba887a2ef0f/README.md +29 -0
- package/vendor/components/sha256/44e432f8b34c8ef1b20f4eed5c6f2d9199094abcf0540f54718efba887a2ef0f/demo.html +56 -0
- package/vendor/components/sha256/44e432f8b34c8ef1b20f4eed5c6f2d9199094abcf0540f54718efba887a2ef0f/index.js +156 -0
- package/vendor/components/sha256/473f62b1f3b5219c273072ffbde6c9e420e7a762e65c6f307435eaaedcbf1e9c/CHANGELOG.md +27 -0
- package/vendor/components/sha256/473f62b1f3b5219c273072ffbde6c9e420e7a762e65c6f307435eaaedcbf1e9c/README.md +43 -0
- package/vendor/components/sha256/473f62b1f3b5219c273072ffbde6c9e420e7a762e65c6f307435eaaedcbf1e9c/demo.html +47 -0
- package/vendor/components/sha256/473f62b1f3b5219c273072ffbde6c9e420e7a762e65c6f307435eaaedcbf1e9c/index.js +484 -0
- package/vendor/components/sha256/4915abd3c1a66505a5946edb190491af9eb472810a06662d477d62df44c455ee/README.md +41 -0
- package/vendor/components/sha256/4915abd3c1a66505a5946edb190491af9eb472810a06662d477d62df44c455ee/demo.html +44 -0
- package/vendor/components/sha256/4915abd3c1a66505a5946edb190491af9eb472810a06662d477d62df44c455ee/index.js +331 -0
- package/vendor/components/sha256/4aae85edd2f39e3802527cb176348cf273cb50f4bcf05e5e7e951dd73df65b92/README.md +31 -0
- package/vendor/components/sha256/4aae85edd2f39e3802527cb176348cf273cb50f4bcf05e5e7e951dd73df65b92/demo.html +60 -0
- package/vendor/components/sha256/4aae85edd2f39e3802527cb176348cf273cb50f4bcf05e5e7e951dd73df65b92/index.js +262 -0
- package/vendor/components/sha256/4af4e5f892497f735df2900382b1b1612ac7e545564736d83decf89693d03b84/README.md +22 -0
- package/vendor/components/sha256/4af4e5f892497f735df2900382b1b1612ac7e545564736d83decf89693d03b84/demo.html +48 -0
- package/vendor/components/sha256/4af4e5f892497f735df2900382b1b1612ac7e545564736d83decf89693d03b84/index.js +83 -0
- package/vendor/components/sha256/4be439a3b448b60f965428748ae852c1b9c2f94470e7ba7397a0c63be81f896c/README.md +33 -0
- package/vendor/components/sha256/4be439a3b448b60f965428748ae852c1b9c2f94470e7ba7397a0c63be81f896c/demo.html +50 -0
- package/vendor/components/sha256/4be439a3b448b60f965428748ae852c1b9c2f94470e7ba7397a0c63be81f896c/index.js +240 -0
- package/vendor/components/sha256/4d341f31f827ba6459b8a8b26f8805f87fbf487aa06d1eda76ba2fa02f9d15b0/CHANGELOG.md +18 -0
- package/vendor/components/sha256/4d341f31f827ba6459b8a8b26f8805f87fbf487aa06d1eda76ba2fa02f9d15b0/README.md +21 -0
- package/vendor/components/sha256/4d341f31f827ba6459b8a8b26f8805f87fbf487aa06d1eda76ba2fa02f9d15b0/demo.html +32 -0
- package/vendor/components/sha256/4d341f31f827ba6459b8a8b26f8805f87fbf487aa06d1eda76ba2fa02f9d15b0/index.js +53 -0
- package/vendor/components/sha256/4f6bde3385e59407ddadb42a8701a631399af33ab40d6c6b3899b23254ebd3c7/README.md +33 -0
- package/vendor/components/sha256/4f6bde3385e59407ddadb42a8701a631399af33ab40d6c6b3899b23254ebd3c7/demo.html +66 -0
- package/vendor/components/sha256/4f6bde3385e59407ddadb42a8701a631399af33ab40d6c6b3899b23254ebd3c7/index.js +317 -0
- package/vendor/components/sha256/50569e0f1624094801ea3827d381233fa844acfbebbfb953428dbb600e45ab3d/CHANGELOG.md +23 -0
- package/vendor/components/sha256/50569e0f1624094801ea3827d381233fa844acfbebbfb953428dbb600e45ab3d/README.md +44 -0
- package/vendor/components/sha256/50569e0f1624094801ea3827d381233fa844acfbebbfb953428dbb600e45ab3d/demo.html +44 -0
- package/vendor/components/sha256/50569e0f1624094801ea3827d381233fa844acfbebbfb953428dbb600e45ab3d/index.js +354 -0
- package/vendor/components/sha256/511a7c5daab9ae15ef41675b16927a246ad4d7ed50edb2c0f4ce7940d9f1e159/CHANGELOG.md +30 -0
- package/vendor/components/sha256/511a7c5daab9ae15ef41675b16927a246ad4d7ed50edb2c0f4ce7940d9f1e159/README.md +35 -0
- package/vendor/components/sha256/511a7c5daab9ae15ef41675b16927a246ad4d7ed50edb2c0f4ce7940d9f1e159/demo.html +40 -0
- package/vendor/components/sha256/511a7c5daab9ae15ef41675b16927a246ad4d7ed50edb2c0f4ce7940d9f1e159/index.js +747 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/CHANGELOG.md +48 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/README.md +32 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/demo.html +57 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/ABCJS-ADAPTER.md +101 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/LICENSE-abcjs.txt +21 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/chords.json +89 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/doremi.json +261 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/extras.json +192 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/kaeru.json +521 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/rhythm.json +248 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/fixtures/ties.json +360 -0
- package/vendor/components/sha256/513ffe334833d2f6c32627089f5f77e40d9a37b8e17e237106c1c78a4a8f7ee5/index.js +476 -0
- package/vendor/components/sha256/516aa29e4892520193314be4685f82cbbdd5e4de5132e41bc8179615c0e9149e/README.md +41 -0
- package/vendor/components/sha256/516aa29e4892520193314be4685f82cbbdd5e4de5132e41bc8179615c0e9149e/demo.html +56 -0
- package/vendor/components/sha256/516aa29e4892520193314be4685f82cbbdd5e4de5132e41bc8179615c0e9149e/index.js +440 -0
- package/vendor/components/sha256/51f10f02cbd018b136176773dff5576d66cce4872cf41ca6f17f483bd41350fd/CHANGELOG.md +29 -0
- package/vendor/components/sha256/51f10f02cbd018b136176773dff5576d66cce4872cf41ca6f17f483bd41350fd/README.md +44 -0
- package/vendor/components/sha256/51f10f02cbd018b136176773dff5576d66cce4872cf41ca6f17f483bd41350fd/demo.html +56 -0
- package/vendor/components/sha256/51f10f02cbd018b136176773dff5576d66cce4872cf41ca6f17f483bd41350fd/index.js +428 -0
- package/vendor/components/sha256/53497ca286d48dad0cd5e4379f89d22701e8aff7402c4549522ab7051bca3e0f/CHANGELOG.md +24 -0
- package/vendor/components/sha256/53497ca286d48dad0cd5e4379f89d22701e8aff7402c4549522ab7051bca3e0f/README.md +40 -0
- package/vendor/components/sha256/53497ca286d48dad0cd5e4379f89d22701e8aff7402c4549522ab7051bca3e0f/demo.html +70 -0
- package/vendor/components/sha256/53497ca286d48dad0cd5e4379f89d22701e8aff7402c4549522ab7051bca3e0f/index.js +561 -0
- package/vendor/components/sha256/534ab1ba54189ac27790e117aad9d6e247611356b352504e6b8ce5a52b242968/README.md +29 -0
- package/vendor/components/sha256/534ab1ba54189ac27790e117aad9d6e247611356b352504e6b8ce5a52b242968/demo.html +51 -0
- package/vendor/components/sha256/534ab1ba54189ac27790e117aad9d6e247611356b352504e6b8ce5a52b242968/index.js +394 -0
- package/vendor/components/sha256/539e669f52485201558d17a6655d490c80527be80e9a7807aa74253c4dfaab95/CHANGELOG.md +15 -0
- package/vendor/components/sha256/539e669f52485201558d17a6655d490c80527be80e9a7807aa74253c4dfaab95/README.md +31 -0
- package/vendor/components/sha256/539e669f52485201558d17a6655d490c80527be80e9a7807aa74253c4dfaab95/demo.html +56 -0
- package/vendor/components/sha256/539e669f52485201558d17a6655d490c80527be80e9a7807aa74253c4dfaab95/index.js +161 -0
- package/vendor/components/sha256/53a61be488566e8442c4a54cc46b883ae10586f9469433b5e9e3c7c222955439/README.md +32 -0
- package/vendor/components/sha256/53a61be488566e8442c4a54cc46b883ae10586f9469433b5e9e3c7c222955439/demo.html +40 -0
- package/vendor/components/sha256/53a61be488566e8442c4a54cc46b883ae10586f9469433b5e9e3c7c222955439/index.js +781 -0
- package/vendor/components/sha256/53a870236b442412741595c4d5ea0527d3de0bb8a57694dce0f92d6bf4597eda/README.md +38 -0
- package/vendor/components/sha256/53a870236b442412741595c4d5ea0527d3de0bb8a57694dce0f92d6bf4597eda/demo.html +92 -0
- package/vendor/components/sha256/53a870236b442412741595c4d5ea0527d3de0bb8a57694dce0f92d6bf4597eda/index.js +443 -0
- package/vendor/components/sha256/53b1444a08ae15e397f41c7b88b32b2085bdef447bdcb5bcc0030490203b938c/README.md +52 -0
- package/vendor/components/sha256/53b1444a08ae15e397f41c7b88b32b2085bdef447bdcb5bcc0030490203b938c/index.js +282 -0
- package/vendor/components/sha256/5527ee1f708c8ef7d071c273c68fd4f3a014784391a44c7aa650335721bfe25c/README.md +48 -0
- package/vendor/components/sha256/5527ee1f708c8ef7d071c273c68fd4f3a014784391a44c7aa650335721bfe25c/demo.html +60 -0
- package/vendor/components/sha256/5527ee1f708c8ef7d071c273c68fd4f3a014784391a44c7aa650335721bfe25c/index.js +113 -0
- package/vendor/components/sha256/5781a99da9e199697d25fe4a80b62a003362ae23f91130afa10e436bbf69f56b/README.md +32 -0
- package/vendor/components/sha256/5781a99da9e199697d25fe4a80b62a003362ae23f91130afa10e436bbf69f56b/demo.html +53 -0
- package/vendor/components/sha256/5781a99da9e199697d25fe4a80b62a003362ae23f91130afa10e436bbf69f56b/index.js +565 -0
- package/vendor/components/sha256/59f84aafd847f96c232d996cd14ec98b6d91df50d2cad50dde07094272017d56/CHANGELOG.md +29 -0
- package/vendor/components/sha256/59f84aafd847f96c232d996cd14ec98b6d91df50d2cad50dde07094272017d56/README.md +64 -0
- package/vendor/components/sha256/59f84aafd847f96c232d996cd14ec98b6d91df50d2cad50dde07094272017d56/demo.html +97 -0
- package/vendor/components/sha256/59f84aafd847f96c232d996cd14ec98b6d91df50d2cad50dde07094272017d56/index.js +924 -0
- package/vendor/components/sha256/5a0fcbb736862df7d590f7e6d242c8353cac39a0c72a307c68198d64a8108d93/README.md +48 -0
- package/vendor/components/sha256/5a0fcbb736862df7d590f7e6d242c8353cac39a0c72a307c68198d64a8108d93/demo.html +61 -0
- package/vendor/components/sha256/5a0fcbb736862df7d590f7e6d242c8353cac39a0c72a307c68198d64a8108d93/index.js +114 -0
- package/vendor/components/sha256/5e20d50d58c521cd2f603cfbd69f6d99d53af5508b714b3637f51d7ac7fd394a/README.md +33 -0
- package/vendor/components/sha256/5e20d50d58c521cd2f603cfbd69f6d99d53af5508b714b3637f51d7ac7fd394a/demo.html +86 -0
- package/vendor/components/sha256/5e20d50d58c521cd2f603cfbd69f6d99d53af5508b714b3637f51d7ac7fd394a/index.js +300 -0
- package/vendor/components/sha256/5e23306675b7b1e9154e395cf9930f5a46f959f3b36ab49b089973035c222d58/README.md +49 -0
- package/vendor/components/sha256/5e23306675b7b1e9154e395cf9930f5a46f959f3b36ab49b089973035c222d58/demo.html +79 -0
- package/vendor/components/sha256/5e23306675b7b1e9154e395cf9930f5a46f959f3b36ab49b089973035c222d58/index.js +647 -0
- package/vendor/components/sha256/5f58c1f51bd0482dd233893a6b94d044f6844db63abe7adc1b46ae4b79b54bc6/README.md +21 -0
- package/vendor/components/sha256/5f58c1f51bd0482dd233893a6b94d044f6844db63abe7adc1b46ae4b79b54bc6/demo.html +48 -0
- package/vendor/components/sha256/5f58c1f51bd0482dd233893a6b94d044f6844db63abe7adc1b46ae4b79b54bc6/index.js +80 -0
- package/vendor/components/sha256/5fb8cc2131402bdd2d6278d315dc06aa2b55789ba0fa3a6c2a8d172fe6305904/README.md +41 -0
- package/vendor/components/sha256/5fb8cc2131402bdd2d6278d315dc06aa2b55789ba0fa3a6c2a8d172fe6305904/demo.html +75 -0
- package/vendor/components/sha256/5fb8cc2131402bdd2d6278d315dc06aa2b55789ba0fa3a6c2a8d172fe6305904/index.js +349 -0
- package/vendor/components/sha256/6177d9adeb09f8c72c4105e521f723202623d8887ee9e03e53aec51073d33123/CHANGELOG.md +22 -0
- package/vendor/components/sha256/6177d9adeb09f8c72c4105e521f723202623d8887ee9e03e53aec51073d33123/README.md +49 -0
- package/vendor/components/sha256/6177d9adeb09f8c72c4105e521f723202623d8887ee9e03e53aec51073d33123/demo.html +44 -0
- package/vendor/components/sha256/6177d9adeb09f8c72c4105e521f723202623d8887ee9e03e53aec51073d33123/index.js +468 -0
- package/vendor/components/sha256/61b213729212566f0273b09b277d23f2cf4fd2b6640f5a6e9ad97292e1c0cf0b/README.md +31 -0
- package/vendor/components/sha256/61b213729212566f0273b09b277d23f2cf4fd2b6640f5a6e9ad97292e1c0cf0b/demo.html +64 -0
- package/vendor/components/sha256/61b213729212566f0273b09b277d23f2cf4fd2b6640f5a6e9ad97292e1c0cf0b/index.js +175 -0
- package/vendor/components/sha256/633ebcf297efa4dc4c5106c38f9c9734ed7357d0ad597dbfb729eb024d61fc4a/README.md +32 -0
- package/vendor/components/sha256/633ebcf297efa4dc4c5106c38f9c9734ed7357d0ad597dbfb729eb024d61fc4a/demo.html +77 -0
- package/vendor/components/sha256/633ebcf297efa4dc4c5106c38f9c9734ed7357d0ad597dbfb729eb024d61fc4a/index.js +251 -0
- package/vendor/components/sha256/64947d36ee857847ecbc3cd23f2ac9f76f591159945080660c68604c0d4894a0/README.md +72 -0
- package/vendor/components/sha256/64947d36ee857847ecbc3cd23f2ac9f76f591159945080660c68604c0d4894a0/demo.html +50 -0
- package/vendor/components/sha256/64947d36ee857847ecbc3cd23f2ac9f76f591159945080660c68604c0d4894a0/index.js +498 -0
- package/vendor/components/sha256/6622a44274a678bf10393c109d2b9cc6f2a20fffa2b7c13ebaeb3f1141159700/README.md +68 -0
- package/vendor/components/sha256/6622a44274a678bf10393c109d2b9cc6f2a20fffa2b7c13ebaeb3f1141159700/demo.html +50 -0
- package/vendor/components/sha256/6622a44274a678bf10393c109d2b9cc6f2a20fffa2b7c13ebaeb3f1141159700/index.js +451 -0
- package/vendor/components/sha256/66c64a0cb10671a968ed7deb302c5e292ca172b0a7a96f16c83e9dd1208daed9/README.md +37 -0
- package/vendor/components/sha256/66c64a0cb10671a968ed7deb302c5e292ca172b0a7a96f16c83e9dd1208daed9/demo.html +70 -0
- package/vendor/components/sha256/66c64a0cb10671a968ed7deb302c5e292ca172b0a7a96f16c83e9dd1208daed9/index.js +573 -0
- package/vendor/components/sha256/6997f1b54b095a2306b581fbf9e67ad67a7642c35051e34fa39c317d5802b9de/README.md +37 -0
- package/vendor/components/sha256/6997f1b54b095a2306b581fbf9e67ad67a7642c35051e34fa39c317d5802b9de/demo.html +70 -0
- package/vendor/components/sha256/6997f1b54b095a2306b581fbf9e67ad67a7642c35051e34fa39c317d5802b9de/index.js +308 -0
- package/vendor/components/sha256/6c1626dc4c691d7ee4abdef37c21d42dd6d981674ac885a3d2bdc1a884b4e2ab/CHANGELOG.md +27 -0
- package/vendor/components/sha256/6c1626dc4c691d7ee4abdef37c21d42dd6d981674ac885a3d2bdc1a884b4e2ab/README.md +23 -0
- package/vendor/components/sha256/6c1626dc4c691d7ee4abdef37c21d42dd6d981674ac885a3d2bdc1a884b4e2ab/demo.html +236 -0
- package/vendor/components/sha256/6c1626dc4c691d7ee4abdef37c21d42dd6d981674ac885a3d2bdc1a884b4e2ab/index.js +599 -0
- package/vendor/components/sha256/6c6ad697b116d994cf70b23afb2dc0812e90b181097a954ac5cadec747eacacb/CHANGELOG.md +37 -0
- package/vendor/components/sha256/6c6ad697b116d994cf70b23afb2dc0812e90b181097a954ac5cadec747eacacb/README.md +32 -0
- package/vendor/components/sha256/6c6ad697b116d994cf70b23afb2dc0812e90b181097a954ac5cadec747eacacb/demo.html +54 -0
- package/vendor/components/sha256/6c6ad697b116d994cf70b23afb2dc0812e90b181097a954ac5cadec747eacacb/index.js +314 -0
- package/vendor/components/sha256/6cb62a0b47c73ba2d729a2e69e895d91bc2442cc4a87ae48a0119aad6427420f/README.md +33 -0
- package/vendor/components/sha256/6cb62a0b47c73ba2d729a2e69e895d91bc2442cc4a87ae48a0119aad6427420f/demo.html +50 -0
- package/vendor/components/sha256/6cb62a0b47c73ba2d729a2e69e895d91bc2442cc4a87ae48a0119aad6427420f/index.js +232 -0
- package/vendor/components/sha256/6df10ef43ecfc6c7e611a198c2d7fc92215664eb23b6d49d22e69a49445a0d20/README.md +18 -0
- package/vendor/components/sha256/6df10ef43ecfc6c7e611a198c2d7fc92215664eb23b6d49d22e69a49445a0d20/demo.html +40 -0
- package/vendor/components/sha256/6df10ef43ecfc6c7e611a198c2d7fc92215664eb23b6d49d22e69a49445a0d20/index.js +91 -0
- package/vendor/components/sha256/713ba44102ab7fb2390f4524b90faa9deff5569c8903d99c319e8de56b157297/README.md +15 -0
- package/vendor/components/sha256/713ba44102ab7fb2390f4524b90faa9deff5569c8903d99c319e8de56b157297/demo.html +236 -0
- package/vendor/components/sha256/713ba44102ab7fb2390f4524b90faa9deff5569c8903d99c319e8de56b157297/index.js +631 -0
- package/vendor/components/sha256/71f67dfb37263e74d826b9b85bda2be9199b70b0b1d0d415791054e6079cdabf/README.md +37 -0
- package/vendor/components/sha256/71f67dfb37263e74d826b9b85bda2be9199b70b0b1d0d415791054e6079cdabf/demo.html +70 -0
- package/vendor/components/sha256/71f67dfb37263e74d826b9b85bda2be9199b70b0b1d0d415791054e6079cdabf/index.js +316 -0
- package/vendor/components/sha256/728f0777d7cdb6b78aa75123dac89831a21ecbe8dfbee49fea3a864538253ffe/CHANGELOG.md +22 -0
- package/vendor/components/sha256/728f0777d7cdb6b78aa75123dac89831a21ecbe8dfbee49fea3a864538253ffe/README.md +27 -0
- package/vendor/components/sha256/728f0777d7cdb6b78aa75123dac89831a21ecbe8dfbee49fea3a864538253ffe/demo.html +42 -0
- package/vendor/components/sha256/728f0777d7cdb6b78aa75123dac89831a21ecbe8dfbee49fea3a864538253ffe/index.js +233 -0
- package/vendor/components/sha256/7324349691c265ff4cd5f9219bb9326bf966dbf0feb93dbe893edadd2c0595bc/CHANGELOG.md +31 -0
- package/vendor/components/sha256/7324349691c265ff4cd5f9219bb9326bf966dbf0feb93dbe893edadd2c0595bc/README.md +35 -0
- package/vendor/components/sha256/7324349691c265ff4cd5f9219bb9326bf966dbf0feb93dbe893edadd2c0595bc/demo.html +66 -0
- package/vendor/components/sha256/7324349691c265ff4cd5f9219bb9326bf966dbf0feb93dbe893edadd2c0595bc/index.js +342 -0
- package/vendor/components/sha256/7421226f6cbbee73ccf20e2300d4da918a7202536a4a3b861e80dfa3f815a982/CHANGELOG.md +25 -0
- package/vendor/components/sha256/7421226f6cbbee73ccf20e2300d4da918a7202536a4a3b861e80dfa3f815a982/README.md +35 -0
- package/vendor/components/sha256/7421226f6cbbee73ccf20e2300d4da918a7202536a4a3b861e80dfa3f815a982/demo.html +40 -0
- package/vendor/components/sha256/7421226f6cbbee73ccf20e2300d4da918a7202536a4a3b861e80dfa3f815a982/index.js +731 -0
- package/vendor/components/sha256/74d0b4b53effd6d93ecaeb15f2e9692b94795d48ea9ea32b7380713db6b13c1d/README.md +38 -0
- package/vendor/components/sha256/74d0b4b53effd6d93ecaeb15f2e9692b94795d48ea9ea32b7380713db6b13c1d/demo.html +92 -0
- package/vendor/components/sha256/74d0b4b53effd6d93ecaeb15f2e9692b94795d48ea9ea32b7380713db6b13c1d/index.js +443 -0
- package/vendor/components/sha256/764087c214d3c4916f47dcce1e0bda08ad0bc727f5b64016de5e6b5947ebf698/CHANGELOG.md +27 -0
- package/vendor/components/sha256/764087c214d3c4916f47dcce1e0bda08ad0bc727f5b64016de5e6b5947ebf698/README.md +36 -0
- package/vendor/components/sha256/764087c214d3c4916f47dcce1e0bda08ad0bc727f5b64016de5e6b5947ebf698/demo.html +50 -0
- package/vendor/components/sha256/764087c214d3c4916f47dcce1e0bda08ad0bc727f5b64016de5e6b5947ebf698/index.js +247 -0
- package/vendor/components/sha256/7768a559a6b001f1b98508984f691a579d6f401e3fe795a3ecefd79888c24a6f/README.md +40 -0
- package/vendor/components/sha256/7768a559a6b001f1b98508984f691a579d6f401e3fe795a3ecefd79888c24a6f/demo.html +90 -0
- package/vendor/components/sha256/7768a559a6b001f1b98508984f691a579d6f401e3fe795a3ecefd79888c24a6f/index.js +409 -0
- package/vendor/components/sha256/79ee5836338d1c06252af2bef5ec700839e75c1ec7710c05b3781d1b0ca11a56/README.md +41 -0
- package/vendor/components/sha256/79ee5836338d1c06252af2bef5ec700839e75c1ec7710c05b3781d1b0ca11a56/demo.html +75 -0
- package/vendor/components/sha256/79ee5836338d1c06252af2bef5ec700839e75c1ec7710c05b3781d1b0ca11a56/index.js +349 -0
- package/vendor/components/sha256/7df0500847a59041f21bce9f1c28bf8d4e8f67be0bd634715fdbc4a5b90c5302/README.md +62 -0
- package/vendor/components/sha256/7df0500847a59041f21bce9f1c28bf8d4e8f67be0bd634715fdbc4a5b90c5302/demo.html +97 -0
- package/vendor/components/sha256/7df0500847a59041f21bce9f1c28bf8d4e8f67be0bd634715fdbc4a5b90c5302/index.js +874 -0
- package/vendor/components/sha256/7e3022710f90149790b91a12ae1c09cdad6d451651ca97745d09ca62cf1dd73c/README.md +41 -0
- package/vendor/components/sha256/7e3022710f90149790b91a12ae1c09cdad6d451651ca97745d09ca62cf1dd73c/demo.html +75 -0
- package/vendor/components/sha256/7e3022710f90149790b91a12ae1c09cdad6d451651ca97745d09ca62cf1dd73c/index.js +309 -0
- package/vendor/components/sha256/80ffe9b9ff6a59cff510e575dcabab161fb5d8b35263763903c972355926ff0c/README.md +37 -0
- package/vendor/components/sha256/80ffe9b9ff6a59cff510e575dcabab161fb5d8b35263763903c972355926ff0c/demo.html +66 -0
- package/vendor/components/sha256/80ffe9b9ff6a59cff510e575dcabab161fb5d8b35263763903c972355926ff0c/index.js +309 -0
- package/vendor/components/sha256/82b2dbc925a4ae4511bb48ccb1777a3932313ac7e18cb91572371d272a930980/README.md +33 -0
- package/vendor/components/sha256/82b2dbc925a4ae4511bb48ccb1777a3932313ac7e18cb91572371d272a930980/demo.html +69 -0
- package/vendor/components/sha256/82b2dbc925a4ae4511bb48ccb1777a3932313ac7e18cb91572371d272a930980/index.js +228 -0
- package/vendor/components/sha256/8306e5a03dfbea480b69ed24675b580a180c4692644dcc22db5ba4192357a17c/CHANGELOG.md +23 -0
- package/vendor/components/sha256/8306e5a03dfbea480b69ed24675b580a180c4692644dcc22db5ba4192357a17c/README.md +21 -0
- package/vendor/components/sha256/8306e5a03dfbea480b69ed24675b580a180c4692644dcc22db5ba4192357a17c/demo.html +32 -0
- package/vendor/components/sha256/8306e5a03dfbea480b69ed24675b580a180c4692644dcc22db5ba4192357a17c/index.js +139 -0
- package/vendor/components/sha256/83595322b87a803914cd8010b2cf371c7cbbab111629befab9d51b4faffd3cc6/README.md +54 -0
- package/vendor/components/sha256/83595322b87a803914cd8010b2cf371c7cbbab111629befab9d51b4faffd3cc6/demo.html +121 -0
- package/vendor/components/sha256/83595322b87a803914cd8010b2cf371c7cbbab111629befab9d51b4faffd3cc6/index.js +912 -0
- package/vendor/components/sha256/84401a62ecc7140bc23b49e81cfd15e1b41b9447f6911ec572f1691bc798bbf6/README.md +15 -0
- package/vendor/components/sha256/84401a62ecc7140bc23b49e81cfd15e1b41b9447f6911ec572f1691bc798bbf6/demo.html +32 -0
- package/vendor/components/sha256/84401a62ecc7140bc23b49e81cfd15e1b41b9447f6911ec572f1691bc798bbf6/index.js +231 -0
- package/vendor/components/sha256/8460885d7f21bc4834bf4a5268d588797a5e73f3dad58e2bcdbd1c7710535082/CHANGELOG.md +23 -0
- package/vendor/components/sha256/8460885d7f21bc4834bf4a5268d588797a5e73f3dad58e2bcdbd1c7710535082/README.md +43 -0
- package/vendor/components/sha256/8460885d7f21bc4834bf4a5268d588797a5e73f3dad58e2bcdbd1c7710535082/demo.html +47 -0
- package/vendor/components/sha256/8460885d7f21bc4834bf4a5268d588797a5e73f3dad58e2bcdbd1c7710535082/index.js +483 -0
- package/vendor/components/sha256/84fb356907714d291da54098ad7f3f8a0b471df1396b5df153b59d71ed35fa2c/README.md +14 -0
- package/vendor/components/sha256/84fb356907714d291da54098ad7f3f8a0b471df1396b5df153b59d71ed35fa2c/demo.html +236 -0
- package/vendor/components/sha256/84fb356907714d291da54098ad7f3f8a0b471df1396b5df153b59d71ed35fa2c/index.js +620 -0
- package/vendor/components/sha256/855ebfb90d4c784c35c372d52e2576776ce55dbe6e4500618e5da847d1d74559/CHANGELOG.md +20 -0
- package/vendor/components/sha256/855ebfb90d4c784c35c372d52e2576776ce55dbe6e4500618e5da847d1d74559/README.md +75 -0
- package/vendor/components/sha256/855ebfb90d4c784c35c372d52e2576776ce55dbe6e4500618e5da847d1d74559/demo.html +50 -0
- package/vendor/components/sha256/855ebfb90d4c784c35c372d52e2576776ce55dbe6e4500618e5da847d1d74559/index.js +342 -0
- package/vendor/components/sha256/85c96721a33dfe87e2c4db9e1745ebfbb0f2edfdb3dfca83f69ad92b67fe9ea2/README.md +32 -0
- package/vendor/components/sha256/85c96721a33dfe87e2c4db9e1745ebfbb0f2edfdb3dfca83f69ad92b67fe9ea2/demo.html +49 -0
- package/vendor/components/sha256/85c96721a33dfe87e2c4db9e1745ebfbb0f2edfdb3dfca83f69ad92b67fe9ea2/index.js +216 -0
- package/vendor/components/sha256/8623f58cf4a415090f06bedbaa5e1a74c1bb0eb3862d7bfb2232e6c1ee0c25aa/README.md +25 -0
- package/vendor/components/sha256/8623f58cf4a415090f06bedbaa5e1a74c1bb0eb3862d7bfb2232e6c1ee0c25aa/demo.html +54 -0
- package/vendor/components/sha256/8623f58cf4a415090f06bedbaa5e1a74c1bb0eb3862d7bfb2232e6c1ee0c25aa/index.js +294 -0
- package/vendor/components/sha256/868b052174a7e030c07894ff38d2eef21cbd64973fbf6001cfff567607811223/README.md +14 -0
- package/vendor/components/sha256/868b052174a7e030c07894ff38d2eef21cbd64973fbf6001cfff567607811223/demo.html +32 -0
- package/vendor/components/sha256/868b052174a7e030c07894ff38d2eef21cbd64973fbf6001cfff567607811223/index.js +231 -0
- package/vendor/components/sha256/86d7e20631c2ff8f708115726bd09d8ee66c1816c5413c5efe1e1eca006d71af/README.md +54 -0
- package/vendor/components/sha256/86d7e20631c2ff8f708115726bd09d8ee66c1816c5413c5efe1e1eca006d71af/demo.html +121 -0
- package/vendor/components/sha256/86d7e20631c2ff8f708115726bd09d8ee66c1816c5413c5efe1e1eca006d71af/index.js +912 -0
- package/vendor/components/sha256/8833002d016a617a3494b16d19f06d78a96bf6e811a5c0e7e5743d4fcffe2ccd/README.md +32 -0
- package/vendor/components/sha256/8833002d016a617a3494b16d19f06d78a96bf6e811a5c0e7e5743d4fcffe2ccd/demo.html +40 -0
- package/vendor/components/sha256/8833002d016a617a3494b16d19f06d78a96bf6e811a5c0e7e5743d4fcffe2ccd/index.js +741 -0
- package/vendor/components/sha256/8b521cf7751231c01877c49ff777786e773de6de26378f390008ae471aaaeffc/CHANGELOG.md +31 -0
- package/vendor/components/sha256/8b521cf7751231c01877c49ff777786e773de6de26378f390008ae471aaaeffc/README.md +36 -0
- package/vendor/components/sha256/8b521cf7751231c01877c49ff777786e773de6de26378f390008ae471aaaeffc/demo.html +52 -0
- package/vendor/components/sha256/8b521cf7751231c01877c49ff777786e773de6de26378f390008ae471aaaeffc/index.js +263 -0
- package/vendor/components/sha256/8da7e596d0371c29c90fd86ddea20d0f1586aa20661b16377d92ddf5a3a19f8b/README.md +33 -0
- package/vendor/components/sha256/8da7e596d0371c29c90fd86ddea20d0f1586aa20661b16377d92ddf5a3a19f8b/demo.html +69 -0
- package/vendor/components/sha256/8da7e596d0371c29c90fd86ddea20d0f1586aa20661b16377d92ddf5a3a19f8b/index.js +261 -0
- package/vendor/components/sha256/8ed3a0ee313218ff5a6aa8d891e790a4dbbf23a2384e154284d4f2cbd3faa4b4/CHANGELOG.md +26 -0
- package/vendor/components/sha256/8ed3a0ee313218ff5a6aa8d891e790a4dbbf23a2384e154284d4f2cbd3faa4b4/README.md +57 -0
- package/vendor/components/sha256/8ed3a0ee313218ff5a6aa8d891e790a4dbbf23a2384e154284d4f2cbd3faa4b4/demo.html +121 -0
- package/vendor/components/sha256/8ed3a0ee313218ff5a6aa8d891e790a4dbbf23a2384e154284d4f2cbd3faa4b4/index.js +875 -0
- package/vendor/components/sha256/90ffa5b594074f9c86ffc2b3e5a024624c74cd631b18dfacf0a7377da878e229/README.md +37 -0
- package/vendor/components/sha256/90ffa5b594074f9c86ffc2b3e5a024624c74cd631b18dfacf0a7377da878e229/demo.html +70 -0
- package/vendor/components/sha256/90ffa5b594074f9c86ffc2b3e5a024624c74cd631b18dfacf0a7377da878e229/index.js +307 -0
- package/vendor/components/sha256/915c107b3cd1f2657911c539409923572deb0f68607cc6955f8be61fa6034622/README.md +20 -0
- package/vendor/components/sha256/915c107b3cd1f2657911c539409923572deb0f68607cc6955f8be61fa6034622/demo.html +42 -0
- package/vendor/components/sha256/915c107b3cd1f2657911c539409923572deb0f68607cc6955f8be61fa6034622/index.js +102 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/CHANGELOG.md +44 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/README.md +32 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/demo.html +57 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/ABCJS-ADAPTER.md +101 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/LICENSE-abcjs.txt +21 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/chords.json +89 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/doremi.json +261 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/extras.json +192 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/kaeru.json +521 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/rhythm.json +248 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/fixtures/ties.json +360 -0
- package/vendor/components/sha256/92111d5968d74b63bc43c559c35498507bd654aa76d87dcc1462e276863c7457/index.js +474 -0
- package/vendor/components/sha256/922ba3c715943639a851540fc516dfce737dc371406bdc68f7c5081819fc472a/README.md +28 -0
- package/vendor/components/sha256/922ba3c715943639a851540fc516dfce737dc371406bdc68f7c5081819fc472a/demo.html +56 -0
- package/vendor/components/sha256/922ba3c715943639a851540fc516dfce737dc371406bdc68f7c5081819fc472a/index.js +150 -0
- package/vendor/components/sha256/92be6dffad7fed271018717930766d8f52138db5babdc9129b1d99bc51e67154/README.md +33 -0
- package/vendor/components/sha256/92be6dffad7fed271018717930766d8f52138db5babdc9129b1d99bc51e67154/demo.html +50 -0
- package/vendor/components/sha256/92be6dffad7fed271018717930766d8f52138db5babdc9129b1d99bc51e67154/index.js +231 -0
- package/vendor/components/sha256/947dca6d3695e6ff38b25e1e00995609fbcfbe7f2774cfb17ab55df3e4b945c8/README.md +33 -0
- package/vendor/components/sha256/947dca6d3695e6ff38b25e1e00995609fbcfbe7f2774cfb17ab55df3e4b945c8/demo.html +66 -0
- package/vendor/components/sha256/947dca6d3695e6ff38b25e1e00995609fbcfbe7f2774cfb17ab55df3e4b945c8/index.js +325 -0
- package/vendor/components/sha256/968710c7592a805d57ffd11171f79ee23f962923b13351ff0ae0b12279208714/README.md +19 -0
- package/vendor/components/sha256/968710c7592a805d57ffd11171f79ee23f962923b13351ff0ae0b12279208714/index.js +200 -0
- package/vendor/components/sha256/98f5463e811fa3f39a46b704959256537f46d3e7da8d45cb17957ab77dd1f548/README.md +38 -0
- package/vendor/components/sha256/98f5463e811fa3f39a46b704959256537f46d3e7da8d45cb17957ab77dd1f548/demo.html +92 -0
- package/vendor/components/sha256/98f5463e811fa3f39a46b704959256537f46d3e7da8d45cb17957ab77dd1f548/index.js +443 -0
- package/vendor/components/sha256/9fe6ac64226e96a8cda10a3d3205ca9f09782a5a88e2d02e57e73d8bafac8e2d/README.md +23 -0
- package/vendor/components/sha256/9fe6ac64226e96a8cda10a3d3205ca9f09782a5a88e2d02e57e73d8bafac8e2d/demo.html +54 -0
- package/vendor/components/sha256/9fe6ac64226e96a8cda10a3d3205ca9f09782a5a88e2d02e57e73d8bafac8e2d/index.js +102 -0
- package/vendor/components/sha256/a0353fe9c7aa0a739d0138babc9c75ff393ad1968e3b7ed3674ac9bb05f9ea23/README.md +40 -0
- package/vendor/components/sha256/a0353fe9c7aa0a739d0138babc9c75ff393ad1968e3b7ed3674ac9bb05f9ea23/demo.html +43 -0
- package/vendor/components/sha256/a0353fe9c7aa0a739d0138babc9c75ff393ad1968e3b7ed3674ac9bb05f9ea23/index.js +255 -0
- package/vendor/components/sha256/a11f1ceefd99057623a4a692e89c2d96490fb67d1567598ed5f26c7d392d4d4c/README.md +43 -0
- package/vendor/components/sha256/a11f1ceefd99057623a4a692e89c2d96490fb67d1567598ed5f26c7d392d4d4c/demo.html +101 -0
- package/vendor/components/sha256/a11f1ceefd99057623a4a692e89c2d96490fb67d1567598ed5f26c7d392d4d4c/index.js +840 -0
- package/vendor/components/sha256/a3b3d927c0b16fe8376b7cf3885f4b89c5da78b03c0e7b066d55c7592b39dfb8/README.md +34 -0
- package/vendor/components/sha256/a3b3d927c0b16fe8376b7cf3885f4b89c5da78b03c0e7b066d55c7592b39dfb8/demo.html +70 -0
- package/vendor/components/sha256/a3b3d927c0b16fe8376b7cf3885f4b89c5da78b03c0e7b066d55c7592b39dfb8/index.js +218 -0
- package/vendor/components/sha256/a44e72e1e6aed89240ab7e0576424898e2ad9f1c53713ec9a7648031aa14a389/README.md +32 -0
- package/vendor/components/sha256/a44e72e1e6aed89240ab7e0576424898e2ad9f1c53713ec9a7648031aa14a389/demo.html +77 -0
- package/vendor/components/sha256/a44e72e1e6aed89240ab7e0576424898e2ad9f1c53713ec9a7648031aa14a389/index.js +210 -0
- package/vendor/components/sha256/a492a8608b51e275735b83e6467e693f2773984a572cedbd610efd2d2a084fbf/README.md +26 -0
- package/vendor/components/sha256/a492a8608b51e275735b83e6467e693f2773984a572cedbd610efd2d2a084fbf/demo.html +54 -0
- package/vendor/components/sha256/a492a8608b51e275735b83e6467e693f2773984a572cedbd610efd2d2a084fbf/index.js +294 -0
- package/vendor/components/sha256/a4baeda47410cc2ded554725c2612766df3a7bbdba8c8cbb6d841f2ea4008023/README.md +18 -0
- package/vendor/components/sha256/a4baeda47410cc2ded554725c2612766df3a7bbdba8c8cbb6d841f2ea4008023/demo.html +236 -0
- package/vendor/components/sha256/a4baeda47410cc2ded554725c2612766df3a7bbdba8c8cbb6d841f2ea4008023/index.js +643 -0
- package/vendor/components/sha256/a622caae26ad2f068f579949fe1fe2acca37e98748358acc2d8da90de1c93b09/README.md +29 -0
- package/vendor/components/sha256/a622caae26ad2f068f579949fe1fe2acca37e98748358acc2d8da90de1c93b09/demo.html +64 -0
- package/vendor/components/sha256/a622caae26ad2f068f579949fe1fe2acca37e98748358acc2d8da90de1c93b09/index.js +175 -0
- package/vendor/components/sha256/a9e1790404966e62f2e2c49f3b2febb02bc108faf7b30fa86113559b3a7fb84c/README.md +68 -0
- package/vendor/components/sha256/a9e1790404966e62f2e2c49f3b2febb02bc108faf7b30fa86113559b3a7fb84c/demo.html +76 -0
- package/vendor/components/sha256/a9e1790404966e62f2e2c49f3b2febb02bc108faf7b30fa86113559b3a7fb84c/index.js +786 -0
- package/vendor/components/sha256/aa06b370a24cd9be0cd6815204b26b1d5ba7be077a5885d087e14858b2793f00/README.md +40 -0
- package/vendor/components/sha256/aa06b370a24cd9be0cd6815204b26b1d5ba7be077a5885d087e14858b2793f00/demo.html +90 -0
- package/vendor/components/sha256/aa06b370a24cd9be0cd6815204b26b1d5ba7be077a5885d087e14858b2793f00/index.js +409 -0
- package/vendor/components/sha256/ac3be86eeff290db6eb8fff19c32a6790539b2281bbc044051cb525a2146ba75/README.md +37 -0
- package/vendor/components/sha256/ac3be86eeff290db6eb8fff19c32a6790539b2281bbc044051cb525a2146ba75/demo.html +66 -0
- package/vendor/components/sha256/ac3be86eeff290db6eb8fff19c32a6790539b2281bbc044051cb525a2146ba75/index.js +269 -0
- package/vendor/components/sha256/ac9148961116fd3da1b67ebabdd22b4de624af7e38144134b40dbe693d55e344/CHANGELOG.md +16 -0
- package/vendor/components/sha256/ac9148961116fd3da1b67ebabdd22b4de624af7e38144134b40dbe693d55e344/README.md +38 -0
- package/vendor/components/sha256/ac9148961116fd3da1b67ebabdd22b4de624af7e38144134b40dbe693d55e344/demo.html +115 -0
- package/vendor/components/sha256/ac9148961116fd3da1b67ebabdd22b4de624af7e38144134b40dbe693d55e344/index.js +361 -0
- package/vendor/components/sha256/ad9e9c2ca0299d221f22fd657ea64c1318a0cda7d4fe98a8c98459e67b81422c/CHANGELOG.md +19 -0
- package/vendor/components/sha256/ad9e9c2ca0299d221f22fd657ea64c1318a0cda7d4fe98a8c98459e67b81422c/README.md +31 -0
- package/vendor/components/sha256/ad9e9c2ca0299d221f22fd657ea64c1318a0cda7d4fe98a8c98459e67b81422c/demo.html +56 -0
- package/vendor/components/sha256/ad9e9c2ca0299d221f22fd657ea64c1318a0cda7d4fe98a8c98459e67b81422c/index.js +196 -0
- package/vendor/components/sha256/af3cada466eb1deb15fd4681498e6a1564bf7a97f7606694a885b31b4ec22da5/README.md +25 -0
- package/vendor/components/sha256/af3cada466eb1deb15fd4681498e6a1564bf7a97f7606694a885b31b4ec22da5/index.js +122 -0
- package/vendor/components/sha256/afcc0d2ca964536fb7a4a0997bede6b16a2049fd2a6ff298e1b8592f236257f7/CHANGELOG.md +26 -0
- package/vendor/components/sha256/afcc0d2ca964536fb7a4a0997bede6b16a2049fd2a6ff298e1b8592f236257f7/README.md +39 -0
- package/vendor/components/sha256/afcc0d2ca964536fb7a4a0997bede6b16a2049fd2a6ff298e1b8592f236257f7/demo.html +70 -0
- package/vendor/components/sha256/afcc0d2ca964536fb7a4a0997bede6b16a2049fd2a6ff298e1b8592f236257f7/index.js +158 -0
- package/vendor/components/sha256/b08c7fea7916f5a77c0a29e69fe13b7f5267ddb7387ee6ebfcd9d2b1d0a7ac79/CHANGELOG.md +31 -0
- package/vendor/components/sha256/b08c7fea7916f5a77c0a29e69fe13b7f5267ddb7387ee6ebfcd9d2b1d0a7ac79/README.md +71 -0
- package/vendor/components/sha256/b08c7fea7916f5a77c0a29e69fe13b7f5267ddb7387ee6ebfcd9d2b1d0a7ac79/demo.html +76 -0
- package/vendor/components/sha256/b08c7fea7916f5a77c0a29e69fe13b7f5267ddb7387ee6ebfcd9d2b1d0a7ac79/index.js +806 -0
- package/vendor/components/sha256/b0c9c5abbd15ef3f73f50a0a927065e6599536879c9ac31eeaea1144d3365b77/README.md +32 -0
- package/vendor/components/sha256/b0c9c5abbd15ef3f73f50a0a927065e6599536879c9ac31eeaea1144d3365b77/demo.html +53 -0
- package/vendor/components/sha256/b0c9c5abbd15ef3f73f50a0a927065e6599536879c9ac31eeaea1144d3365b77/index.js +524 -0
- package/vendor/components/sha256/b3d313b1deba2bf61d715ba889479edbd90d333f126091445483dfe5a2121280/CHANGELOG.md +16 -0
- package/vendor/components/sha256/b3d313b1deba2bf61d715ba889479edbd90d333f126091445483dfe5a2121280/README.md +27 -0
- package/vendor/components/sha256/b3d313b1deba2bf61d715ba889479edbd90d333f126091445483dfe5a2121280/demo.html +42 -0
- package/vendor/components/sha256/b3d313b1deba2bf61d715ba889479edbd90d333f126091445483dfe5a2121280/index.js +121 -0
- package/vendor/components/sha256/b3da6df3b42feb15fb29dc943cea5df028600d0d113fd6e8e32b150b74400908/CHANGELOG.md +22 -0
- package/vendor/components/sha256/b3da6df3b42feb15fb29dc943cea5df028600d0d113fd6e8e32b150b74400908/README.md +64 -0
- package/vendor/components/sha256/b3da6df3b42feb15fb29dc943cea5df028600d0d113fd6e8e32b150b74400908/demo.html +97 -0
- package/vendor/components/sha256/b3da6df3b42feb15fb29dc943cea5df028600d0d113fd6e8e32b150b74400908/index.js +875 -0
- package/vendor/components/sha256/b3ebd4ffde8bc39c7f9100642307cd83b9d32e072f1f894e7c4d6996a6cc0d21/CHANGELOG.md +16 -0
- package/vendor/components/sha256/b3ebd4ffde8bc39c7f9100642307cd83b9d32e072f1f894e7c4d6996a6cc0d21/README.md +49 -0
- package/vendor/components/sha256/b3ebd4ffde8bc39c7f9100642307cd83b9d32e072f1f894e7c4d6996a6cc0d21/demo.html +44 -0
- package/vendor/components/sha256/b3ebd4ffde8bc39c7f9100642307cd83b9d32e072f1f894e7c4d6996a6cc0d21/index.js +426 -0
- package/vendor/components/sha256/b463b215338973d7f05ba9fe14187ded5069d74d68dd50eaee445d8ba9d5cd16/CHANGELOG.md +26 -0
- package/vendor/components/sha256/b463b215338973d7f05ba9fe14187ded5069d74d68dd50eaee445d8ba9d5cd16/README.md +40 -0
- package/vendor/components/sha256/b463b215338973d7f05ba9fe14187ded5069d74d68dd50eaee445d8ba9d5cd16/demo.html +92 -0
- package/vendor/components/sha256/b463b215338973d7f05ba9fe14187ded5069d74d68dd50eaee445d8ba9d5cd16/index.js +424 -0
- package/vendor/components/sha256/b707dec1072d9c75092d29f02725b5811964531bba3183814035a0f59bf6dab9/README.md +38 -0
- package/vendor/components/sha256/b707dec1072d9c75092d29f02725b5811964531bba3183814035a0f59bf6dab9/demo.html +42 -0
- package/vendor/components/sha256/b707dec1072d9c75092d29f02725b5811964531bba3183814035a0f59bf6dab9/index.js +252 -0
- package/vendor/components/sha256/b757b0ef249e171d810a2a0e17e345d65683c0ec4fbf6cc14093ff3374423691/README.md +37 -0
- package/vendor/components/sha256/b757b0ef249e171d810a2a0e17e345d65683c0ec4fbf6cc14093ff3374423691/demo.html +70 -0
- package/vendor/components/sha256/b757b0ef249e171d810a2a0e17e345d65683c0ec4fbf6cc14093ff3374423691/index.js +606 -0
- package/vendor/components/sha256/b889dfb55f0bdef70778833b62aa6819a7222ccebf4ab0613ba938d827370b61/README.md +31 -0
- package/vendor/components/sha256/b889dfb55f0bdef70778833b62aa6819a7222ccebf4ab0613ba938d827370b61/demo.html +64 -0
- package/vendor/components/sha256/b889dfb55f0bdef70778833b62aa6819a7222ccebf4ab0613ba938d827370b61/index.js +179 -0
- package/vendor/components/sha256/b8eebe877599e04dca013ca0e758d6d7079e96cbc419eb2db3961886dccfc8b6/CHANGELOG.md +26 -0
- package/vendor/components/sha256/b8eebe877599e04dca013ca0e758d6d7079e96cbc419eb2db3961886dccfc8b6/README.md +34 -0
- package/vendor/components/sha256/b8eebe877599e04dca013ca0e758d6d7079e96cbc419eb2db3961886dccfc8b6/demo.html +77 -0
- package/vendor/components/sha256/b8eebe877599e04dca013ca0e758d6d7079e96cbc419eb2db3961886dccfc8b6/index.js +221 -0
- package/vendor/components/sha256/b95b45d601e264a27686349bc0ab2a3cf921f92fd3f4231b1ccf6b6ae6c33b27/README.md +31 -0
- package/vendor/components/sha256/b95b45d601e264a27686349bc0ab2a3cf921f92fd3f4231b1ccf6b6ae6c33b27/demo.html +60 -0
- package/vendor/components/sha256/b95b45d601e264a27686349bc0ab2a3cf921f92fd3f4231b1ccf6b6ae6c33b27/index.js +221 -0
- package/vendor/components/sha256/b9efb83daf603dfe7ceb97749082ec102e06601b70cf556b03819ca2796970f4/README.md +29 -0
- package/vendor/components/sha256/b9efb83daf603dfe7ceb97749082ec102e06601b70cf556b03819ca2796970f4/demo.html +56 -0
- package/vendor/components/sha256/b9efb83daf603dfe7ceb97749082ec102e06601b70cf556b03819ca2796970f4/index.js +150 -0
- package/vendor/components/sha256/bbcdfe01c39566e166126d3fffd2f0473ca6a31c8d4221cb33d9c8531a5dad28/README.md +36 -0
- package/vendor/components/sha256/bbcdfe01c39566e166126d3fffd2f0473ca6a31c8d4221cb33d9c8531a5dad28/demo.html +72 -0
- package/vendor/components/sha256/bbcdfe01c39566e166126d3fffd2f0473ca6a31c8d4221cb33d9c8531a5dad28/index.js +301 -0
- package/vendor/components/sha256/bfd7c7e025202b9e05365785661eb8388e1174d4f29648f83b73d8ea9822abd9/README.md +22 -0
- package/vendor/components/sha256/bfd7c7e025202b9e05365785661eb8388e1174d4f29648f83b73d8ea9822abd9/index.js +37 -0
- package/vendor/components/sha256/bfe594a10d6f8c15fbacfba6319de5ac44f0035d6f971a1c85e8d5e62b8235d6/README.md +22 -0
- package/vendor/components/sha256/bfe594a10d6f8c15fbacfba6319de5ac44f0035d6f971a1c85e8d5e62b8235d6/demo.html +48 -0
- package/vendor/components/sha256/bfe594a10d6f8c15fbacfba6319de5ac44f0035d6f971a1c85e8d5e62b8235d6/index.js +80 -0
- package/vendor/components/sha256/c0f33f67a17bb7bbdd723204d4097ce7bf99bad7812d883250d0cc46dd954d42/CHANGELOG.md +20 -0
- package/vendor/components/sha256/c0f33f67a17bb7bbdd723204d4097ce7bf99bad7812d883250d0cc46dd954d42/README.md +46 -0
- package/vendor/components/sha256/c0f33f67a17bb7bbdd723204d4097ce7bf99bad7812d883250d0cc46dd954d42/demo.html +112 -0
- package/vendor/components/sha256/c0f33f67a17bb7bbdd723204d4097ce7bf99bad7812d883250d0cc46dd954d42/index.js +443 -0
- package/vendor/components/sha256/c19d7b38009197b42a2b6a6aa87cdf069594beb1137a1ab7d5448025406d85ee/CHANGELOG.md +30 -0
- package/vendor/components/sha256/c19d7b38009197b42a2b6a6aa87cdf069594beb1137a1ab7d5448025406d85ee/README.md +35 -0
- package/vendor/components/sha256/c19d7b38009197b42a2b6a6aa87cdf069594beb1137a1ab7d5448025406d85ee/demo.html +53 -0
- package/vendor/components/sha256/c19d7b38009197b42a2b6a6aa87cdf069594beb1137a1ab7d5448025406d85ee/index.js +520 -0
- package/vendor/components/sha256/c2c426c8df5553688475d440c2d951c21a2de70ef2d0cf340d1199377c23c986/README.md +37 -0
- package/vendor/components/sha256/c2c426c8df5553688475d440c2d951c21a2de70ef2d0cf340d1199377c23c986/demo.html +42 -0
- package/vendor/components/sha256/c2c426c8df5553688475d440c2d951c21a2de70ef2d0cf340d1199377c23c986/index.js +252 -0
- package/vendor/components/sha256/c3319feef72f50bf834222362a02c27078b0ae9855a90954ca61fd41f16cd03b/README.md +42 -0
- package/vendor/components/sha256/c3319feef72f50bf834222362a02c27078b0ae9855a90954ca61fd41f16cd03b/index.js +250 -0
- package/vendor/components/sha256/c3aaa6dccaefe1e372d0758a67ea8e95242629bb9fb55294f1d43633ae60f293/README.md +37 -0
- package/vendor/components/sha256/c3aaa6dccaefe1e372d0758a67ea8e95242629bb9fb55294f1d43633ae60f293/demo.html +42 -0
- package/vendor/components/sha256/c3aaa6dccaefe1e372d0758a67ea8e95242629bb9fb55294f1d43633ae60f293/index.js +251 -0
- package/vendor/components/sha256/c44ad77f4cf1a9d16d4c3750c85aa5ddb7a2f046ceef59fbab58153ab1ffad77/CHANGELOG.md +21 -0
- package/vendor/components/sha256/c44ad77f4cf1a9d16d4c3750c85aa5ddb7a2f046ceef59fbab58153ab1ffad77/README.md +34 -0
- package/vendor/components/sha256/c44ad77f4cf1a9d16d4c3750c85aa5ddb7a2f046ceef59fbab58153ab1ffad77/demo.html +77 -0
- package/vendor/components/sha256/c44ad77f4cf1a9d16d4c3750c85aa5ddb7a2f046ceef59fbab58153ab1ffad77/index.js +200 -0
- package/vendor/components/sha256/c485dc4947caba8a302df7e0d65cf0f3ec963983b734e13a0ad0cdf464c49bea/CHANGELOG.md +19 -0
- package/vendor/components/sha256/c485dc4947caba8a302df7e0d65cf0f3ec963983b734e13a0ad0cdf464c49bea/README.md +36 -0
- package/vendor/components/sha256/c485dc4947caba8a302df7e0d65cf0f3ec963983b734e13a0ad0cdf464c49bea/demo.html +70 -0
- package/vendor/components/sha256/c485dc4947caba8a302df7e0d65cf0f3ec963983b734e13a0ad0cdf464c49bea/index.js +167 -0
- package/vendor/components/sha256/c5bf4965efeae90df60b41230286c02e214e79aac64ebaf191e0b6719133a5d4/README.md +12 -0
- package/vendor/components/sha256/c5bf4965efeae90df60b41230286c02e214e79aac64ebaf191e0b6719133a5d4/demo.html +32 -0
- package/vendor/components/sha256/c5bf4965efeae90df60b41230286c02e214e79aac64ebaf191e0b6719133a5d4/index.js +39 -0
- package/vendor/components/sha256/c9f12f9f17f4fa48edce7faee3b7bad421228fb91706b0bbc71a355f84c28f65/README.md +21 -0
- package/vendor/components/sha256/c9f12f9f17f4fa48edce7faee3b7bad421228fb91706b0bbc71a355f84c28f65/index.js +93 -0
- package/vendor/components/sha256/cbb73fab4890bd711f727b871bd3a93c76c4e38db68ac5eeeb2feacd62289a87/CHANGELOG.md +25 -0
- package/vendor/components/sha256/cbb73fab4890bd711f727b871bd3a93c76c4e38db68ac5eeeb2feacd62289a87/README.md +21 -0
- package/vendor/components/sha256/cbb73fab4890bd711f727b871bd3a93c76c4e38db68ac5eeeb2feacd62289a87/demo.html +33 -0
- package/vendor/components/sha256/cbb73fab4890bd711f727b871bd3a93c76c4e38db68ac5eeeb2feacd62289a87/index.js +121 -0
- package/vendor/components/sha256/cbf9ffaca099ee9ed0d079c1cfecb1c5222e5f7e6d3c8a0f3f4f64626defe08a/CHANGELOG.md +20 -0
- package/vendor/components/sha256/cbf9ffaca099ee9ed0d079c1cfecb1c5222e5f7e6d3c8a0f3f4f64626defe08a/README.md +43 -0
- package/vendor/components/sha256/cbf9ffaca099ee9ed0d079c1cfecb1c5222e5f7e6d3c8a0f3f4f64626defe08a/demo.html +89 -0
- package/vendor/components/sha256/cbf9ffaca099ee9ed0d079c1cfecb1c5222e5f7e6d3c8a0f3f4f64626defe08a/index.js +253 -0
- package/vendor/components/sha256/ced0e95915f4abb411941078306811771a687aa056a955a7aca28a798a0ecedc/README.md +38 -0
- package/vendor/components/sha256/ced0e95915f4abb411941078306811771a687aa056a955a7aca28a798a0ecedc/demo.html +42 -0
- package/vendor/components/sha256/ced0e95915f4abb411941078306811771a687aa056a955a7aca28a798a0ecedc/index.js +254 -0
- package/vendor/components/sha256/d0941d711b56714b766f470eb9fbc82e0b5d69a0ad35876b215730fd92f0dcc7/CHANGELOG.md +16 -0
- package/vendor/components/sha256/d0941d711b56714b766f470eb9fbc82e0b5d69a0ad35876b215730fd92f0dcc7/README.md +50 -0
- package/vendor/components/sha256/d0941d711b56714b766f470eb9fbc82e0b5d69a0ad35876b215730fd92f0dcc7/demo.html +63 -0
- package/vendor/components/sha256/d0941d711b56714b766f470eb9fbc82e0b5d69a0ad35876b215730fd92f0dcc7/index.js +219 -0
- package/vendor/components/sha256/d0e526069df47909525ed6abff7464d72bf902c44186e0a414798d55602df49f/CHANGELOG.md +19 -0
- package/vendor/components/sha256/d0e526069df47909525ed6abff7464d72bf902c44186e0a414798d55602df49f/README.md +34 -0
- package/vendor/components/sha256/d0e526069df47909525ed6abff7464d72bf902c44186e0a414798d55602df49f/demo.html +73 -0
- package/vendor/components/sha256/d0e526069df47909525ed6abff7464d72bf902c44186e0a414798d55602df49f/index.js +209 -0
- package/vendor/components/sha256/d1563fe9fc78196a33f6ff2f6b87bc2e87467dae267cdd7b68abd3bfa5a93759/README.md +33 -0
- package/vendor/components/sha256/d1563fe9fc78196a33f6ff2f6b87bc2e87467dae267cdd7b68abd3bfa5a93759/demo.html +66 -0
- package/vendor/components/sha256/d1563fe9fc78196a33f6ff2f6b87bc2e87467dae267cdd7b68abd3bfa5a93759/index.js +357 -0
- package/vendor/components/sha256/d15c449222f631811b0d2f24cb69beffd708fe8104cb1b8e5eedfaeace291808/README.md +48 -0
- package/vendor/components/sha256/d15c449222f631811b0d2f24cb69beffd708fe8104cb1b8e5eedfaeace291808/demo.html +61 -0
- package/vendor/components/sha256/d15c449222f631811b0d2f24cb69beffd708fe8104cb1b8e5eedfaeace291808/index.js +120 -0
- package/vendor/components/sha256/d176d6ad8b9761c98a0f21c3af79d938d32615b26e4c694c77c77141b9db9e8d/README.md +21 -0
- package/vendor/components/sha256/d176d6ad8b9761c98a0f21c3af79d938d32615b26e4c694c77c77141b9db9e8d/demo.html +42 -0
- package/vendor/components/sha256/d176d6ad8b9761c98a0f21c3af79d938d32615b26e4c694c77c77141b9db9e8d/index.js +102 -0
- package/vendor/components/sha256/d24a8e8cc98ace21732cd99d4199f320914b4a0750457afab0c00699198c15bc/CHANGELOG.md +25 -0
- package/vendor/components/sha256/d24a8e8cc98ace21732cd99d4199f320914b4a0750457afab0c00699198c15bc/README.md +43 -0
- package/vendor/components/sha256/d24a8e8cc98ace21732cd99d4199f320914b4a0750457afab0c00699198c15bc/demo.html +75 -0
- package/vendor/components/sha256/d24a8e8cc98ace21732cd99d4199f320914b4a0750457afab0c00699198c15bc/index.js +310 -0
- package/vendor/components/sha256/d27dfd1746b1e116e695de1ea9c86a71cb8e6f6406f20806c5e90d425f8f96d7/README.md +32 -0
- package/vendor/components/sha256/d27dfd1746b1e116e695de1ea9c86a71cb8e6f6406f20806c5e90d425f8f96d7/demo.html +77 -0
- package/vendor/components/sha256/d27dfd1746b1e116e695de1ea9c86a71cb8e6f6406f20806c5e90d425f8f96d7/index.js +251 -0
- package/vendor/components/sha256/d3b79b06cb9b317ea9690a2b069d0571e240ea45f50b9aee00bc562d3c500a43/CHANGELOG.md +20 -0
- package/vendor/components/sha256/d3b79b06cb9b317ea9690a2b069d0571e240ea45f50b9aee00bc562d3c500a43/README.md +23 -0
- package/vendor/components/sha256/d3b79b06cb9b317ea9690a2b069d0571e240ea45f50b9aee00bc562d3c500a43/demo.html +236 -0
- package/vendor/components/sha256/d3b79b06cb9b317ea9690a2b069d0571e240ea45f50b9aee00bc562d3c500a43/index.js +572 -0
- package/vendor/components/sha256/d944ffe0b14a557d0d898b60e572fc598633e4c7552fc37d77728a2c9e4297c7/CHANGELOG.md +23 -0
- package/vendor/components/sha256/d944ffe0b14a557d0d898b60e572fc598633e4c7552fc37d77728a2c9e4297c7/README.md +44 -0
- package/vendor/components/sha256/d944ffe0b14a557d0d898b60e572fc598633e4c7552fc37d77728a2c9e4297c7/demo.html +43 -0
- package/vendor/components/sha256/d944ffe0b14a557d0d898b60e572fc598633e4c7552fc37d77728a2c9e4297c7/index.js +266 -0
- package/vendor/components/sha256/d9fc15e829cc75e15fbf34c56e27a48f697e9b987a6d7340c955cd92bf69f6f6/README.md +41 -0
- package/vendor/components/sha256/d9fc15e829cc75e15fbf34c56e27a48f697e9b987a6d7340c955cd92bf69f6f6/demo.html +75 -0
- package/vendor/components/sha256/d9fc15e829cc75e15fbf34c56e27a48f697e9b987a6d7340c955cd92bf69f6f6/index.js +311 -0
- package/vendor/components/sha256/da021f5480c007b620eff0b9a9bb00d1c19ce2fde19f48f093386eec538c80e4/README.md +36 -0
- package/vendor/components/sha256/da021f5480c007b620eff0b9a9bb00d1c19ce2fde19f48f093386eec538c80e4/demo.html +72 -0
- package/vendor/components/sha256/da021f5480c007b620eff0b9a9bb00d1c19ce2fde19f48f093386eec538c80e4/index.js +301 -0
- package/vendor/components/sha256/da3812937f8937dc61bed434374bb80342d3d4f78b33602d5574d515b7444dec/CHANGELOG.md +22 -0
- package/vendor/components/sha256/da3812937f8937dc61bed434374bb80342d3d4f78b33602d5574d515b7444dec/README.md +35 -0
- package/vendor/components/sha256/da3812937f8937dc61bed434374bb80342d3d4f78b33602d5574d515b7444dec/demo.html +69 -0
- package/vendor/components/sha256/da3812937f8937dc61bed434374bb80342d3d4f78b33602d5574d515b7444dec/index.js +217 -0
- package/vendor/components/sha256/db50cdaca9acb73c96d9159ed99fafa7b8a03592d26a7e38d2aabf9a5043cfe2/README.md +19 -0
- package/vendor/components/sha256/db50cdaca9acb73c96d9159ed99fafa7b8a03592d26a7e38d2aabf9a5043cfe2/demo.html +40 -0
- package/vendor/components/sha256/db50cdaca9acb73c96d9159ed99fafa7b8a03592d26a7e38d2aabf9a5043cfe2/index.js +95 -0
- package/vendor/components/sha256/dbad89b7d46a01b29d05713b825a6aa4e7057df40bba3f9673cb5ae1292630d2/README.md +41 -0
- package/vendor/components/sha256/dbad89b7d46a01b29d05713b825a6aa4e7057df40bba3f9673cb5ae1292630d2/demo.html +43 -0
- package/vendor/components/sha256/dbad89b7d46a01b29d05713b825a6aa4e7057df40bba3f9673cb5ae1292630d2/index.js +260 -0
- package/vendor/components/sha256/dbd48046660a931346992b3645e08fc7cad092fb5391f4af38b8f3953bf28e3a/CHANGELOG.md +19 -0
- package/vendor/components/sha256/dbd48046660a931346992b3645e08fc7cad092fb5391f4af38b8f3953bf28e3a/README.md +38 -0
- package/vendor/components/sha256/dbd48046660a931346992b3645e08fc7cad092fb5391f4af38b8f3953bf28e3a/demo.html +72 -0
- package/vendor/components/sha256/dbd48046660a931346992b3645e08fc7cad092fb5391f4af38b8f3953bf28e3a/index.js +248 -0
- package/vendor/components/sha256/dd18d987873f495031426d3542411da74951003d624ea491672f85ea0f5dd943/README.md +32 -0
- package/vendor/components/sha256/dd18d987873f495031426d3542411da74951003d624ea491672f85ea0f5dd943/demo.html +77 -0
- package/vendor/components/sha256/dd18d987873f495031426d3542411da74951003d624ea491672f85ea0f5dd943/index.js +251 -0
- package/vendor/components/sha256/def638a16ed94bbd079bc8e6ef0b63d65c4319e571f89d2745eddf596851da69/CHANGELOG.md +28 -0
- package/vendor/components/sha256/def638a16ed94bbd079bc8e6ef0b63d65c4319e571f89d2745eddf596851da69/README.md +40 -0
- package/vendor/components/sha256/def638a16ed94bbd079bc8e6ef0b63d65c4319e571f89d2745eddf596851da69/demo.html +70 -0
- package/vendor/components/sha256/def638a16ed94bbd079bc8e6ef0b63d65c4319e571f89d2745eddf596851da69/index.js +594 -0
- package/vendor/components/sha256/df17b0c9aa191c1fcd4d89cb4ec6a0d2cb24dac320ad2133ba918eeee88ec489/CHANGELOG.md +29 -0
- package/vendor/components/sha256/df17b0c9aa191c1fcd4d89cb4ec6a0d2cb24dac320ad2133ba918eeee88ec489/README.md +35 -0
- package/vendor/components/sha256/df17b0c9aa191c1fcd4d89cb4ec6a0d2cb24dac320ad2133ba918eeee88ec489/demo.html +69 -0
- package/vendor/components/sha256/df17b0c9aa191c1fcd4d89cb4ec6a0d2cb24dac320ad2133ba918eeee88ec489/index.js +244 -0
- package/vendor/components/sha256/dfcb56b144b6cdb58eeca0dfef74a7e2be4d4d977cd93715b3239cac5a4a35e6/CHANGELOG.md +26 -0
- package/vendor/components/sha256/dfcb56b144b6cdb58eeca0dfef74a7e2be4d4d977cd93715b3239cac5a4a35e6/README.md +75 -0
- package/vendor/components/sha256/dfcb56b144b6cdb58eeca0dfef74a7e2be4d4d977cd93715b3239cac5a4a35e6/demo.html +50 -0
- package/vendor/components/sha256/dfcb56b144b6cdb58eeca0dfef74a7e2be4d4d977cd93715b3239cac5a4a35e6/index.js +351 -0
- package/vendor/components/sha256/e0daed8338f51de7e86b5980a098394298455972218370ee65331ca48f7f9696/README.md +44 -0
- package/vendor/components/sha256/e0daed8338f51de7e86b5980a098394298455972218370ee65331ca48f7f9696/demo.html +112 -0
- package/vendor/components/sha256/e0daed8338f51de7e86b5980a098394298455972218370ee65331ca48f7f9696/index.js +447 -0
- package/vendor/components/sha256/e13dee9bce784ccf07c3137da426b8bdbb2478fc710bc559d0c6e91605c5fde3/CHANGELOG.md +25 -0
- package/vendor/components/sha256/e13dee9bce784ccf07c3137da426b8bdbb2478fc710bc559d0c6e91605c5fde3/README.md +71 -0
- package/vendor/components/sha256/e13dee9bce784ccf07c3137da426b8bdbb2478fc710bc559d0c6e91605c5fde3/demo.html +76 -0
- package/vendor/components/sha256/e13dee9bce784ccf07c3137da426b8bdbb2478fc710bc559d0c6e91605c5fde3/index.js +777 -0
- package/vendor/components/sha256/e14c9f31a758a73e22cbf8837535bfc7dabdb47bd1446b34c2e353dae41ba1b6/CHANGELOG.md +25 -0
- package/vendor/components/sha256/e14c9f31a758a73e22cbf8837535bfc7dabdb47bd1446b34c2e353dae41ba1b6/README.md +38 -0
- package/vendor/components/sha256/e14c9f31a758a73e22cbf8837535bfc7dabdb47bd1446b34c2e353dae41ba1b6/demo.html +72 -0
- package/vendor/components/sha256/e14c9f31a758a73e22cbf8837535bfc7dabdb47bd1446b34c2e353dae41ba1b6/index.js +266 -0
- package/vendor/components/sha256/e1ac9ec283b7dd59722409f10a60a1cad0a4db654b78e8865ea762f23a69fff3/README.md +63 -0
- package/vendor/components/sha256/e1ac9ec283b7dd59722409f10a60a1cad0a4db654b78e8865ea762f23a69fff3/demo.html +50 -0
- package/vendor/components/sha256/e1ac9ec283b7dd59722409f10a60a1cad0a4db654b78e8865ea762f23a69fff3/index.js +416 -0
- package/vendor/components/sha256/e22a8f43ec3e58ae6bd7a7547a5f08496aa3312d9ab8a57a0048b43007c347e7/README.md +40 -0
- package/vendor/components/sha256/e22a8f43ec3e58ae6bd7a7547a5f08496aa3312d9ab8a57a0048b43007c347e7/demo.html +90 -0
- package/vendor/components/sha256/e22a8f43ec3e58ae6bd7a7547a5f08496aa3312d9ab8a57a0048b43007c347e7/index.js +376 -0
- package/vendor/components/sha256/e284c2ad93e11239c15ab5ca069652b1d30602e3098ef854cc5ba7e1be4fb09d/README.md +31 -0
- package/vendor/components/sha256/e284c2ad93e11239c15ab5ca069652b1d30602e3098ef854cc5ba7e1be4fb09d/demo.html +68 -0
- package/vendor/components/sha256/e284c2ad93e11239c15ab5ca069652b1d30602e3098ef854cc5ba7e1be4fb09d/index.js +209 -0
- package/vendor/components/sha256/e39a91406f3953d00501f04240ed67ee048376c3368f1716f185594a1a9ac026/README.md +54 -0
- package/vendor/components/sha256/e39a91406f3953d00501f04240ed67ee048376c3368f1716f185594a1a9ac026/demo.html +121 -0
- package/vendor/components/sha256/e39a91406f3953d00501f04240ed67ee048376c3368f1716f185594a1a9ac026/index.js +886 -0
- package/vendor/components/sha256/e412eeadaea294d59703c3dcfacc37506fbd360398ac0609ff405bd9e949edcd/README.md +43 -0
- package/vendor/components/sha256/e412eeadaea294d59703c3dcfacc37506fbd360398ac0609ff405bd9e949edcd/demo.html +101 -0
- package/vendor/components/sha256/e412eeadaea294d59703c3dcfacc37506fbd360398ac0609ff405bd9e949edcd/index.js +798 -0
- package/vendor/components/sha256/e4c3831784c03c174fc2edf507a2a3d22d1f234863817afc2020099b9ec6a5e3/README.md +24 -0
- package/vendor/components/sha256/e4c3831784c03c174fc2edf507a2a3d22d1f234863817afc2020099b9ec6a5e3/demo.html +42 -0
- package/vendor/components/sha256/e4c3831784c03c174fc2edf507a2a3d22d1f234863817afc2020099b9ec6a5e3/index.js +116 -0
- package/vendor/components/sha256/e6fbdf9015a07418baed8905f2ce36f649b7172bc1603e74082643cdeb8b3922/CHANGELOG.md +19 -0
- package/vendor/components/sha256/e6fbdf9015a07418baed8905f2ce36f649b7172bc1603e74082643cdeb8b3922/README.md +44 -0
- package/vendor/components/sha256/e6fbdf9015a07418baed8905f2ce36f649b7172bc1603e74082643cdeb8b3922/demo.html +44 -0
- package/vendor/components/sha256/e6fbdf9015a07418baed8905f2ce36f649b7172bc1603e74082643cdeb8b3922/index.js +334 -0
- package/vendor/components/sha256/e72d50db405995de41e12e29ccc4e911e54f77385327fb9bebc9034d9afd497e/README.md +33 -0
- package/vendor/components/sha256/e72d50db405995de41e12e29ccc4e911e54f77385327fb9bebc9034d9afd497e/demo.html +69 -0
- package/vendor/components/sha256/e72d50db405995de41e12e29ccc4e911e54f77385327fb9bebc9034d9afd497e/index.js +261 -0
- package/vendor/components/sha256/e9db08ecaca1485175dc201e23bf87d52d1847c2bff0a57cfdac90b3c944c988/README.md +37 -0
- package/vendor/components/sha256/e9db08ecaca1485175dc201e23bf87d52d1847c2bff0a57cfdac90b3c944c988/demo.html +66 -0
- package/vendor/components/sha256/e9db08ecaca1485175dc201e23bf87d52d1847c2bff0a57cfdac90b3c944c988/index.js +310 -0
- package/vendor/components/sha256/ea3069499016f752ca9a3484e1a6a41f04030edb284115a086c343c17c23ea50/README.md +18 -0
- package/vendor/components/sha256/ea3069499016f752ca9a3484e1a6a41f04030edb284115a086c343c17c23ea50/demo.html +32 -0
- package/vendor/components/sha256/ea3069499016f752ca9a3484e1a6a41f04030edb284115a086c343c17c23ea50/index.js +238 -0
- package/vendor/components/sha256/ebd224f4d564c25a9cd010210f18afa5676fb71523b17443956eae62a69ab44c/README.md +41 -0
- package/vendor/components/sha256/ebd224f4d564c25a9cd010210f18afa5676fb71523b17443956eae62a69ab44c/demo.html +56 -0
- package/vendor/components/sha256/ebd224f4d564c25a9cd010210f18afa5676fb71523b17443956eae62a69ab44c/index.js +481 -0
- package/vendor/components/sha256/ed452016b8a7c5fe8ea0ff3b907c07c4030c26d349aa4adfe429e596e5293870/README.md +34 -0
- package/vendor/components/sha256/ed452016b8a7c5fe8ea0ff3b907c07c4030c26d349aa4adfe429e596e5293870/demo.html +86 -0
- package/vendor/components/sha256/ed452016b8a7c5fe8ea0ff3b907c07c4030c26d349aa4adfe429e596e5293870/index.js +305 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/LICENSE-strokesvg.txt +115 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/OFL.txt +93 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/README.md +30 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/demo.html +40 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/index.js +756 -0
- package/vendor/components/sha256/ef21455ed117db364e40be629b74fa6507481bcd964ce46c2df30d24cbfa5f1c/strokes-CHANGES.md +20 -0
- package/vendor/components/sha256/f0d56d0b64615c21fa744e9c4c7625d60bc56e315053c582c9026f80e37d2847/README.md +33 -0
- package/vendor/components/sha256/f0d56d0b64615c21fa744e9c4c7625d60bc56e315053c582c9026f80e37d2847/demo.html +66 -0
- package/vendor/components/sha256/f0d56d0b64615c21fa744e9c4c7625d60bc56e315053c582c9026f80e37d2847/index.js +357 -0
- package/vendor/components/sha256/f28de133b15d0eb022779ab7937aeafd49772f75e192f33559ef100c7e0ba222/README.md +62 -0
- package/vendor/components/sha256/f28de133b15d0eb022779ab7937aeafd49772f75e192f33559ef100c7e0ba222/demo.html +50 -0
- package/vendor/components/sha256/f28de133b15d0eb022779ab7937aeafd49772f75e192f33559ef100c7e0ba222/index.js +416 -0
- package/vendor/components/sha256/f2e8f2c00414594a97f974c4b2032a736ec27b94520cb3323895adf156d86900/README.md +33 -0
- package/vendor/components/sha256/f2e8f2c00414594a97f974c4b2032a736ec27b94520cb3323895adf156d86900/demo.html +86 -0
- package/vendor/components/sha256/f2e8f2c00414594a97f974c4b2032a736ec27b94520cb3323895adf156d86900/index.js +295 -0
- package/vendor/components/sha256/f35a43be40f2a1a1c0ea94f20b1e3ad89e493159b2356c61956c9ac75eeef4bb/README.md +62 -0
- package/vendor/components/sha256/f35a43be40f2a1a1c0ea94f20b1e3ad89e493159b2356c61956c9ac75eeef4bb/demo.html +50 -0
- package/vendor/components/sha256/f35a43be40f2a1a1c0ea94f20b1e3ad89e493159b2356c61956c9ac75eeef4bb/index.js +412 -0
- package/vendor/components/sha256/f36182d5a8f1dfb6a66973a980143627fe53eb75ad0fa92636754408c59da815/README.md +34 -0
- package/vendor/components/sha256/f36182d5a8f1dfb6a66973a980143627fe53eb75ad0fa92636754408c59da815/demo.html +70 -0
- package/vendor/components/sha256/f36182d5a8f1dfb6a66973a980143627fe53eb75ad0fa92636754408c59da815/index.js +179 -0
- package/vendor/components/sha256/f7cb365d9e57aa2adf599a7f9c251a6c11b0447071458f9bfbd188517db177e9/README.md +40 -0
- package/vendor/components/sha256/f7cb365d9e57aa2adf599a7f9c251a6c11b0447071458f9bfbd188517db177e9/demo.html +47 -0
- package/vendor/components/sha256/f7cb365d9e57aa2adf599a7f9c251a6c11b0447071458f9bfbd188517db177e9/index.js +495 -0
- package/vendor/components/sha256/f80cc2e090583eb7cde47c1b45f185491c67b54e0a4efd832371ea1af5a7bbb6/README.md +37 -0
- package/vendor/components/sha256/f80cc2e090583eb7cde47c1b45f185491c67b54e0a4efd832371ea1af5a7bbb6/demo.html +66 -0
- package/vendor/components/sha256/f80cc2e090583eb7cde47c1b45f185491c67b54e0a4efd832371ea1af5a7bbb6/index.js +310 -0
- package/vendor/components/sha256/f85ec22b27e3a233dbdd2e0b21dd2e900506b7b42c5ba82a4c2368cf4ce6fbac/README.md +20 -0
- package/vendor/components/sha256/f85ec22b27e3a233dbdd2e0b21dd2e900506b7b42c5ba82a4c2368cf4ce6fbac/index.js +162 -0
- package/vendor/components/sha256/f8c3eb67c51e4e5051d5b73e767964c8931a78218f293da60bad6efe762867e1/CHANGELOG.md +21 -0
- package/vendor/components/sha256/f8c3eb67c51e4e5051d5b73e767964c8931a78218f293da60bad6efe762867e1/README.md +43 -0
- package/vendor/components/sha256/f8c3eb67c51e4e5051d5b73e767964c8931a78218f293da60bad6efe762867e1/demo.html +75 -0
- package/vendor/components/sha256/f8c3eb67c51e4e5051d5b73e767964c8931a78218f293da60bad6efe762867e1/index.js +308 -0
- package/vendor/components/sha256/f8ef891b6dca551936c23879b91abe4bcd9a0ba6e209dff7c184e280f73023f5/CHANGELOG.md +25 -0
- package/vendor/components/sha256/f8ef891b6dca551936c23879b91abe4bcd9a0ba6e209dff7c184e280f73023f5/README.md +32 -0
- package/vendor/components/sha256/f8ef891b6dca551936c23879b91abe4bcd9a0ba6e209dff7c184e280f73023f5/demo.html +54 -0
- package/vendor/components/sha256/f8ef891b6dca551936c23879b91abe4bcd9a0ba6e209dff7c184e280f73023f5/index.js +251 -0
- package/vendor/components/sha256/f90f75950a6bb7cbf89ab4cfbce576dbebc251d0180ee163c5540194b14c0651/README.md +62 -0
- package/vendor/components/sha256/f90f75950a6bb7cbf89ab4cfbce576dbebc251d0180ee163c5540194b14c0651/demo.html +50 -0
- package/vendor/components/sha256/f90f75950a6bb7cbf89ab4cfbce576dbebc251d0180ee163c5540194b14c0651/index.js +412 -0
- package/vendor/components/sha256/fa5a8b2ada18d18fd8165096d4153a145319caba152811eab39d93bedb4fde5b/README.md +37 -0
- package/vendor/components/sha256/fa5a8b2ada18d18fd8165096d4153a145319caba152811eab39d93bedb4fde5b/demo.html +66 -0
- package/vendor/components/sha256/fa5a8b2ada18d18fd8165096d4153a145319caba152811eab39d93bedb4fde5b/index.js +309 -0
- package/vendor/components/sha256/fb231a6aa91e7dcf84fa8e766c7b57a19e6d8bd09c6fd2130c403144a2c7992c/README.md +29 -0
- package/vendor/components/sha256/fb231a6aa91e7dcf84fa8e766c7b57a19e6d8bd09c6fd2130c403144a2c7992c/demo.html +54 -0
- package/vendor/components/sha256/fb231a6aa91e7dcf84fa8e766c7b57a19e6d8bd09c6fd2130c403144a2c7992c/index.js +262 -0
- package/vendor/components/sha256/fb8cde16b63fbbff26b87594994dd4eb2872523d1cb2dc385c85a17824266f08/CHANGELOG.md +20 -0
- package/vendor/components/sha256/fb8cde16b63fbbff26b87594994dd4eb2872523d1cb2dc385c85a17824266f08/README.md +39 -0
- package/vendor/components/sha256/fb8cde16b63fbbff26b87594994dd4eb2872523d1cb2dc385c85a17824266f08/demo.html +70 -0
- package/vendor/components/sha256/fb8cde16b63fbbff26b87594994dd4eb2872523d1cb2dc385c85a17824266f08/index.js +134 -0
- package/vendor/components/sha256/fc74310c1964554e53b0cf2f0c58bdd87fc997cec8201f23eaef487e310059a3/LICENSE-tabler.txt +21 -0
- package/vendor/components/sha256/fc74310c1964554e53b0cf2f0c58bdd87fc997cec8201f23eaef487e310059a3/README.md +31 -0
- package/vendor/components/sha256/fc74310c1964554e53b0cf2f0c58bdd87fc997cec8201f23eaef487e310059a3/index.js +4868 -0
- package/vendor/components/sha256/fc74310c1964554e53b0cf2f0c58bdd87fc997cec8201f23eaef487e310059a3/names.txt +4808 -0
- package/vendor/components/sha256/fca5c2365da32c69cb35241a8c86c1c027c064cce07d009f5f43fc125cef1a94/README.md +36 -0
- package/vendor/components/sha256/fca5c2365da32c69cb35241a8c86c1c027c064cce07d009f5f43fc125cef1a94/demo.html +115 -0
- package/vendor/components/sha256/fca5c2365da32c69cb35241a8c86c1c027c064cce07d009f5f43fc125cef1a94/index.js +355 -0
- package/vendor/components/sha256/fcad8e02fd577a13904ecd0566259150580cdd6ada066167c996fc46c03e8a04/CHANGELOG.md +20 -0
- package/vendor/components/sha256/fcad8e02fd577a13904ecd0566259150580cdd6ada066167c996fc46c03e8a04/README.md +25 -0
- package/vendor/components/sha256/fcad8e02fd577a13904ecd0566259150580cdd6ada066167c996fc46c03e8a04/demo.html +48 -0
- package/vendor/components/sha256/fcad8e02fd577a13904ecd0566259150580cdd6ada066167c996fc46c03e8a04/index.js +97 -0
- package/vendor/components/sha256/fdf2b573b8c6a0ad74e4e4d69a45ee12acdd625aaf411c17a5f9e1d816f4a245/README.md +37 -0
- package/vendor/components/sha256/fdf2b573b8c6a0ad74e4e4d69a45ee12acdd625aaf411c17a5f9e1d816f4a245/demo.html +66 -0
- package/vendor/components/sha256/fdf2b573b8c6a0ad74e4e4d69a45ee12acdd625aaf411c17a5f9e1d816f4a245/index.js +309 -0
- package/vendor/components-2/LICENSE +21 -0
- package/vendor/components-2/manifest-2.0.0-rc.1.json +1700 -0
- package/vendor/components-2/manifest-2.0.0.json +1745 -0
- package/vendor/components-2/manifest-2.1.0.json +1843 -0
- package/vendor/components-2/manifest-2.1.1.json +1843 -0
- package/vendor/components-2/manifest-2.1.2.json +1843 -0
- package/vendor/egatari-spec/LICENSE +21 -0
- package/vendor/egatari-spec/SOURCE.json +7 -0
- package/vendor/egatari-spec/schema/deck-audio.schema.json +76 -0
- package/vendor/egatari-spec/schema/deck-meta.schema.json +131 -0
- package/vendor/egatari-spec/schema/egatari-audio.schema.json +204 -0
- package/vendor/egatari-spec/schema/egatari-index.schema.json +529 -0
- package/vendor/egatari-spec/schema/egatari-metadata.schema.json +297 -0
- package/vendor/egatari-spec/schema/rendered-markup-1.json +374 -0
- package/vendor/themes/business/1.0.0/theme.json +4 -0
- package/vendor/themes/business/1.0.0/tokens.css +28 -0
- package/vendor/themes/default/1.0.0/tokens.css +64 -0
- package/vendor/themes/default/1.1.0/theme.json +4 -0
- package/vendor/themes/default/1.1.0/tokens.css +66 -0
|
@@ -0,0 +1,1721 @@
|
|
|
1
|
+
// 持ち運べるデッキの形式(format spec 1.0。名前と場所は kit/core/format.mjs)の入れ物:書き出し・読み取り・検査・再生専用の派生。
|
|
2
|
+
// Node にもブラウザにも依存しない(node: の読み込みなし。SHA-256 は Web Crypto の crypto.subtle、Node 22 以上とブラウザで動く)
|
|
3
|
+
//
|
|
4
|
+
// exportPortable(env, deck.html, opts) 組み立て(build-core)の読み込みを記録して依存の閉包を取り、持ち運べる 1 ファイルの文字列を作る
|
|
5
|
+
// readPortable(text | bytes, opts) 文字列として読む(何も実行しない)。索引・ハッシュ・塊・上限・パスを検査し、メモリ上のフォルダを返す
|
|
6
|
+
// playOnly(text) 再生専用の派生(§3.7):索引と、実行系が参照しない塊を除く
|
|
7
|
+
// exportedState(index, folderSha, {sourceMatches}) 書き出しの印(exportedFrom、§3.1)から、書き出しの後に写し・フォルダのどちらを直したか
|
|
8
|
+
// validateIndex(index) 索引の形(仕様の写し(FORMAT.VENDOR_DIR)の schema と同じ規則。依存なし)→ エラーの配列
|
|
9
|
+
// checkArchivePaths(paths) パスの規則(§3.3)→ エラーの配列
|
|
10
|
+
// parseJsonStrict(text, opts) 同じ名前の重複を断る JSON の解析(原型のない object を作る)
|
|
11
|
+
//
|
|
12
|
+
// 鍵で引く表はすべて原型のない object か Map(__proto__ などの鍵で取り違えない)
|
|
13
|
+
import { boundedParse, PARSE_LIMITS } from './bounded-html.mjs';
|
|
14
|
+
import { codeReasons } from './code-scan.mjs';
|
|
15
|
+
import { build as coreBuild, jsonScript, MIME, buildBudget, chargedEnv, BuildLimitError } from './build-core.mjs';
|
|
16
|
+
import { parseNarration } from './narration-core.mjs';
|
|
17
|
+
import { FORMAT } from './format.mjs';
|
|
18
|
+
import { readLock, vendorDir, resolveComponent, pinsForIndex, versionForSha, VERSION_RE } from './components-lock.mjs';
|
|
19
|
+
import { SUBSET_NAME_RE } from './parts2.mjs';
|
|
20
|
+
import { readThemesLock, themesVendorDir, themePinsForIndex, excludedFromThemeHash, excludedFromThemeCopy, isThemeLicense } from './themes-lock.mjs';
|
|
21
|
+
import { identityBytes, normalizeEol } from './identity-hash.mjs';
|
|
22
|
+
import { utf8Length } from './bounded-read-core.mjs';
|
|
23
|
+
import { referenceVoices, matchReference, REFERENCE_VOICE_RULE } from './ref-voice.mjs';
|
|
24
|
+
import { planAttachments, problemText, attachmentIndexWarnings, isAttachPath, attachMediaProblem, inspectAttachment, blocking, attachmentMime } from './attachments.mjs';
|
|
25
|
+
import { isLiveResults } from './live-results.mjs';
|
|
26
|
+
import { updateConfig, merge as configMerge } from './config-file.mjs';
|
|
27
|
+
import { resolvePlayer, PLAYER } from './player.mjs';
|
|
28
|
+
import { policyMeta, policyText, checkFilePolicy, extensionSources } from './file-policy.mjs';
|
|
29
|
+
import { exportIds } from './slide-ids.mjs';
|
|
30
|
+
import { analyzeSlideIds } from './build-core.mjs';
|
|
31
|
+
import { READ_LIMITS } from './bounded-read-core.mjs';
|
|
32
|
+
|
|
33
|
+
// 形式の名前から作る識別子(kit/core/format.mjs だけに名前を書く)
|
|
34
|
+
const FID = FORMAT.FORMAT_ID, IX_ID = FORMAT.INDEX_ID, BP = FORMAT.BLOB_PREFIX, SCHEME = FORMAT.URI_SCHEME, CFG = FORMAT.CONFIG_FILE, RD_ID = FORMAT.READABLE_ID;
|
|
35
|
+
const reEsc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
36
|
+
const SRC_RE = new RegExp(`^${reEsc(SCHEME)}([A-Za-z0-9_]{1,32})$`);
|
|
37
|
+
const LOG = 'portable'; // 知らせの前置
|
|
38
|
+
const RUNTIME_EXT_ID = 'deck-extensions'; // 実行系の拡張のブロック(spec §4。kit/core/live.mjs の LIVE_BLOCK_ID と同じ)
|
|
39
|
+
|
|
40
|
+
export const FORMAT_VERSION = Object.freeze({ major: 1, minor: 0 });
|
|
41
|
+
// contracts は {source} だけ(format spec §7.1。実行系の約束の版 runtime は 1.0 の形で外した:再生器は player が名指す)
|
|
42
|
+
export const CONTRACTS = Object.freeze({ source: 1 });
|
|
43
|
+
export const FEATURES = Object.freeze(['sources-v1', 'audio-v1']);
|
|
44
|
+
// generator:ファイルを書いたソフト(Egatari Studio と、その版 = package.json の version)。同梱の再生器は player(kit/core/player.mjs)
|
|
45
|
+
export const GENERATOR = 'egatari-studio';
|
|
46
|
+
export const GENERATOR_TITLE = 'Egatari Studio'; // 人に見せる名前(generator.title。spec §3.1)
|
|
47
|
+
export { PLAYER };
|
|
48
|
+
const MiB = 1024 * 1024;
|
|
49
|
+
// §11 の推奨の上限(読み手が断ってよい値)と §3.2 の塊の大きさ
|
|
50
|
+
export const LIMITS = Object.freeze({
|
|
51
|
+
fileBytes: 100 * MiB, archiveBytes: 128 * MiB, files: 3000, depth: 10, indexBytes: 4 * MiB, fileMax: 32 * MiB,
|
|
52
|
+
chunkChars: 262144, chunkBytes: 196608, chunkMax: 9999, members: 200000, jsonDepth: 64, pathBytes: 1024,
|
|
53
|
+
// 解析の上限(このエディタの決め。§11 の「上限を超えれば断ってよい」):外側の文書の要素・属性・入れ子(kit/core/bounded-html.mjs)と、
|
|
54
|
+
// 取り出した原稿のファイルに書かれたタグの数(拡張子によらず「<」と英字の並びを数える。編集器が後で組み・調べる原稿の大きさの上限)
|
|
55
|
+
elements: PARSE_LIMITS.elements, attributes: PARSE_LIMITS.attributes, nesting: PARSE_LIMITS.nesting, sourceTags: 500000,
|
|
56
|
+
});
|
|
57
|
+
// 書き出しで「大きい」と知らせる大きさ(章ごとに分けることを勧める)
|
|
58
|
+
export const WARN_BYTES = 30 * MiB;
|
|
59
|
+
|
|
60
|
+
export class FormatError extends Error {
|
|
61
|
+
constructor(code, message, details) { super(message); this.name = 'FormatError'; this.code = code; if (details) this.details = details; }
|
|
62
|
+
}
|
|
63
|
+
const fail = (code, msg, details) => { throw new FormatError(code, msg, details); };
|
|
64
|
+
const dict = () => Object.create(null);
|
|
65
|
+
const own = (o, k) => o != null && Object.prototype.hasOwnProperty.call(o, k);
|
|
66
|
+
const isObj = (v) => v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
67
|
+
|
|
68
|
+
// ---------------------------------------------------------------- 文字・バイト・ハッシュ
|
|
69
|
+
const enc = new TextEncoder();
|
|
70
|
+
export const utf8 = (s) => enc.encode(s);
|
|
71
|
+
export { utf8Length }; // UTF-8 のバイト数(kit/core/bounded-read-core.mjs)
|
|
72
|
+
const HEX = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));
|
|
73
|
+
export async function sha256Hex(data) {
|
|
74
|
+
const bytes = typeof data === 'string' ? utf8(data) : data;
|
|
75
|
+
const d = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', bytes));
|
|
76
|
+
let s = ''; for (const b of d) s += HEX[b]; return s;
|
|
77
|
+
}
|
|
78
|
+
export function toBase64(bytes) {
|
|
79
|
+
if (typeof bytes.toBase64 === 'function') return bytes.toBase64();
|
|
80
|
+
let s = '';
|
|
81
|
+
for (let i = 0; i < bytes.length; i += 0x8000) s += String.fromCharCode.apply(null, bytes.subarray(i, i + 0x8000));
|
|
82
|
+
return btoa(s);
|
|
83
|
+
}
|
|
84
|
+
const B64 = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
85
|
+
// RFC 4648 §4、改行なし。正しくなければ null
|
|
86
|
+
export function fromBase64(s) {
|
|
87
|
+
if (!B64.test(s)) return null;
|
|
88
|
+
if (typeof Uint8Array.fromBase64 === 'function') return Uint8Array.fromBase64(s);
|
|
89
|
+
const bin = atob(s), u = new Uint8Array(bin.length);
|
|
90
|
+
for (let i = 0; i < bin.length; i++) u[i] = bin.charCodeAt(i);
|
|
91
|
+
return u;
|
|
92
|
+
}
|
|
93
|
+
// JSON を HTML に入れる形(§2):< をすべて < に、改行は LF だけ(JSON.stringify は生の改行を出さない)
|
|
94
|
+
export const htmlSafeJson = (text) => text.replace(/</g, '\\u003c');
|
|
95
|
+
// 文字の位置(code point)の順で比べる(§3.4。JS の既定の並びは UTF-16 の単位なので、サロゲートの位置で順が変わる)
|
|
96
|
+
export function cmpCodePoint(a, b) {
|
|
97
|
+
const x = [...a], y = [...b];
|
|
98
|
+
for (let i = 0; i < Math.min(x.length, y.length); i++) {
|
|
99
|
+
const d = x[i].codePointAt(0) - y[i].codePointAt(0);
|
|
100
|
+
if (d) return d;
|
|
101
|
+
}
|
|
102
|
+
return x.length - y.length;
|
|
103
|
+
}
|
|
104
|
+
// UUID(版 4)。crypto.randomUUID は安全な文脈でしか使えないので、乱数から作る
|
|
105
|
+
export function newDocId(rand = (n) => globalThis.crypto.getRandomValues(new Uint8Array(n))) {
|
|
106
|
+
const b = rand(16);
|
|
107
|
+
b[6] = (b[6] & 0x0f) | 0x40; b[8] = (b[8] & 0x3f) | 0x80;
|
|
108
|
+
const h = [...b].map((x) => HEX[x]).join('');
|
|
109
|
+
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;
|
|
110
|
+
}
|
|
111
|
+
const nonce = () => [...globalThis.crypto.getRandomValues(new Uint8Array(9))].map((x) => HEX[x]).join('');
|
|
112
|
+
|
|
113
|
+
// ---------------------------------------------------------------- 規則
|
|
114
|
+
export const RE = Object.freeze({
|
|
115
|
+
sha256: /^[0-9a-f]{64}$/,
|
|
116
|
+
blobId: /^[A-Za-z0-9_]{1,32}$/,
|
|
117
|
+
chunkId: new RegExp(`^${reEsc(BP)}([A-Za-z0-9_]{1,32})-(0|[1-9][0-9]{0,3})$`),
|
|
118
|
+
stepKey: /^.+:(0|[1-9][0-9]{0,2}|concl)$/s,
|
|
119
|
+
docId: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,
|
|
120
|
+
feature: /^[a-z0-9-]+$/,
|
|
121
|
+
mime: /^[a-z0-9.+-]+\/[a-z0-9.+-]+$/,
|
|
122
|
+
voice: /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,
|
|
123
|
+
tag: /^[a-z][a-z0-9]*-[a-z0-9-]+$/,
|
|
124
|
+
extName: /^[a-z][a-z0-9]{0,31}$/,
|
|
125
|
+
// 部品庫・テーマ庫の名前(source: registry):1 つの識別子。読み手が vendor/components/<名前>/<版>/・themes/<名前>/ に結ぶので、パスを書かせない
|
|
126
|
+
registryName: /^[a-z][a-z0-9-]{0,63}$/,
|
|
127
|
+
// 仕様の写しの schema の metadata の lang と同じ(BCP 47 の近似)
|
|
128
|
+
lang: /^(?:(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8})(?:-[A-Za-z]{4})?(?:-(?:[A-Za-z]{2}|[0-9]{3}))?(?:-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(?:-[0-9A-WY-Za-wy-z](?:-[A-Za-z0-9]{2,8})+)*(?:-[Xx](?:-[A-Za-z0-9]{1,8})+)?|[Xx](?:-[A-Za-z0-9]{1,8})+|[Ii]-[A-Za-z]+)$/,
|
|
129
|
+
});
|
|
130
|
+
// 音声の塊に許す MIME(§5.1 と、残すだけのもの)
|
|
131
|
+
export const AUDIO_MIME = new Set(['audio/mpeg', 'audio/mp4', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/ogg', 'audio/webm', 'audio/aac', 'audio/flac']);
|
|
132
|
+
// 原稿のファイルの MIME(build-core の MIME に、文字のファイルを足したもの)
|
|
133
|
+
const TEXT_MIME = { html: 'text/html', htm: 'text/html', md: 'text/markdown', tex: 'text/x-tex', txt: 'text/plain', csv: 'text/csv', tsv: 'text/tab-separated-values', yaml: 'text/yaml', yml: 'text/yaml', mjs: 'text/javascript', xml: 'application/xml' };
|
|
134
|
+
export function mimeOf(path) {
|
|
135
|
+
const ext = (path.match(/\.([^./]+)$/)?.[1] || '').toLowerCase();
|
|
136
|
+
return TEXT_MIME[ext] || MIME[ext] || 'application/octet-stream';
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// ---------------------------------------------------------------- パス(§3.3)
|
|
140
|
+
const RESERVED = /^(?:CON|PRN|AUX|NUL|COM[1-9¹²³]|LPT[1-9¹²³])$/i;
|
|
141
|
+
const PROTO = new Set(['__proto__', 'constructor', 'prototype']);
|
|
142
|
+
// 既定の大文字小文字の畳み込みの近似:NFC → 大文字 → 小文字 → NFC(ß→ss、fi→fi などの完全な畳み込みを含む)
|
|
143
|
+
export const foldPath = (p) => p.normalize('NFC').toUpperCase().toLowerCase().normalize('NFC');
|
|
144
|
+
// 1 つのパスの問題(なければ null)
|
|
145
|
+
export function pathProblem(p, limits = LIMITS) {
|
|
146
|
+
if (typeof p !== 'string' || !p) return 'empty path';
|
|
147
|
+
if (/[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/.test(p)) return 'not valid UTF-8 (lone surrogate)';
|
|
148
|
+
if (p.normalize('NFC') !== p) return 'not NFC';
|
|
149
|
+
if (utf8Length(p) > limits.pathBytes) return `longer than ${limits.pathBytes} bytes`;
|
|
150
|
+
if (p.startsWith('/')) return 'absolute path';
|
|
151
|
+
if (p.includes('\\')) return 'backslash';
|
|
152
|
+
if (/^[A-Za-z]:/.test(p)) return 'drive letter';
|
|
153
|
+
if (/[\u0000-\u001f\u007f-\u009f]/.test(p)) return 'control character';
|
|
154
|
+
if (/[<>:"|?*]/.test(p)) return 'forbidden character (< > : " | ? *)';
|
|
155
|
+
if (p.endsWith('/')) return 'ends with /';
|
|
156
|
+
const segs = p.split('/');
|
|
157
|
+
if (segs.length > limits.depth) return `more than ${limits.depth} segments`;
|
|
158
|
+
for (const s of segs) {
|
|
159
|
+
if (s === '') return 'empty segment';
|
|
160
|
+
if (s === '.' || s === '..') return `segment "${s}"`;
|
|
161
|
+
if (/[. ]$/.test(s)) return 'segment ends in a dot or space';
|
|
162
|
+
if (RESERVED.test(s.split('.')[0].trimEnd())) return `Windows reserved name "${s}"`;
|
|
163
|
+
if (PROTO.has(s)) return `reserved segment "${s}"`;
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
// パスの集合の問題:1 つずつの規則、大文字小文字を畳んだ重なり、ファイルとフォルダの重なり
|
|
168
|
+
export function checkArchivePaths(paths, limits = LIMITS) {
|
|
169
|
+
const errors = [];
|
|
170
|
+
const folded = new Map();
|
|
171
|
+
for (const p of paths) {
|
|
172
|
+
const why = pathProblem(p, limits);
|
|
173
|
+
if (why) { errors.push(`path "${p}": ${why}`); continue; }
|
|
174
|
+
const f = foldPath(p);
|
|
175
|
+
if (folded.has(f)) errors.push(`path "${p}" collides with "${folded.get(f)}" (case-insensitive)`);
|
|
176
|
+
else folded.set(f, p);
|
|
177
|
+
}
|
|
178
|
+
for (const [f, p] of folded) {
|
|
179
|
+
const segs = f.split('/');
|
|
180
|
+
for (let i = 1; i < segs.length; i++) {
|
|
181
|
+
const dir = segs.slice(0, i).join('/');
|
|
182
|
+
if (folded.has(dir)) errors.push(`path "${folded.get(dir)}" is a file and also a directory of "${p}"`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return errors;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ---------------------------------------------------------------- JSON(同じ名前の重複を断る・上限つき)
|
|
189
|
+
// 原型のない object を作る。maxMembers は object の名前と配列の要素の合計、maxDepth は入れ子の深さ
|
|
190
|
+
export function parseJsonStrict(text, { maxMembers = LIMITS.members, maxDepth = LIMITS.jsonDepth } = {}) {
|
|
191
|
+
let i = 0, members = 0;
|
|
192
|
+
const err = (msg) => fail('bad-json', `JSON: ${msg} at ${i}`);
|
|
193
|
+
const ws = () => { while (i < text.length) { const c = text.charCodeAt(i); if (c === 32 || c === 10 || c === 13 || c === 9) i++; else break; } };
|
|
194
|
+
const count = () => { if (++members > maxMembers) fail('too-many-members', `JSON: more than ${maxMembers} members`); };
|
|
195
|
+
function str() {
|
|
196
|
+
i++; let out = '', start = i;
|
|
197
|
+
for (;;) {
|
|
198
|
+
if (i >= text.length) err('unterminated string');
|
|
199
|
+
const c = text.charCodeAt(i);
|
|
200
|
+
if (c === 34) { out += text.slice(start, i); i++; return out; }
|
|
201
|
+
if (c < 0x20) err('control character in string');
|
|
202
|
+
if (c === 92) {
|
|
203
|
+
out += text.slice(start, i);
|
|
204
|
+
const e = text[i + 1];
|
|
205
|
+
const m = { '"': '"', '\\': '\\', '/': '/', b: '\b', f: '\f', n: '\n', r: '\r', t: '\t' }[e];
|
|
206
|
+
if (m !== undefined) { out += m; i += 2; } else if (e === 'u') {
|
|
207
|
+
const h = text.slice(i + 2, i + 6);
|
|
208
|
+
if (!/^[0-9a-fA-F]{4}$/.test(h)) err('bad \\u escape');
|
|
209
|
+
out += String.fromCharCode(parseInt(h, 16)); i += 6;
|
|
210
|
+
} else err('bad escape');
|
|
211
|
+
start = i;
|
|
212
|
+
} else i++;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const NUM = /-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
|
|
216
|
+
function value(depth) {
|
|
217
|
+
if (depth > maxDepth) fail('too-deep', `JSON: deeper than ${maxDepth}`);
|
|
218
|
+
ws();
|
|
219
|
+
const c = text[i];
|
|
220
|
+
if (c === '{') {
|
|
221
|
+
i++; const o = dict(); ws();
|
|
222
|
+
if (text[i] === '}') { i++; return o; }
|
|
223
|
+
for (;;) {
|
|
224
|
+
ws(); if (text[i] !== '"') err('expected member name');
|
|
225
|
+
const k = str(); count();
|
|
226
|
+
if (own(o, k)) fail('duplicate-member', `JSON: duplicate member name "${k}"`);
|
|
227
|
+
ws(); if (text[i] !== ':') err('expected :'); i++;
|
|
228
|
+
Object.defineProperty(o, k, { value: value(depth + 1), enumerable: true, writable: true, configurable: true });
|
|
229
|
+
ws();
|
|
230
|
+
if (text[i] === ',') { i++; continue; }
|
|
231
|
+
if (text[i] === '}') { i++; return o; }
|
|
232
|
+
err('expected , or }');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (c === '[') {
|
|
236
|
+
i++; const a = []; ws();
|
|
237
|
+
if (text[i] === ']') { i++; return a; }
|
|
238
|
+
for (;;) {
|
|
239
|
+
count(); a.push(value(depth + 1)); ws();
|
|
240
|
+
if (text[i] === ',') { i++; continue; }
|
|
241
|
+
if (text[i] === ']') { i++; return a; }
|
|
242
|
+
err('expected , or ]');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (c === '"') return str();
|
|
246
|
+
if (text.startsWith('true', i)) { i += 4; return true; }
|
|
247
|
+
if (text.startsWith('false', i)) { i += 5; return false; }
|
|
248
|
+
if (text.startsWith('null', i)) { i += 4; return null; }
|
|
249
|
+
NUM.lastIndex = i;
|
|
250
|
+
const m = NUM.exec(text);
|
|
251
|
+
if (m) { i += m[0].length; return Number(m[0]); }
|
|
252
|
+
err('unexpected character');
|
|
253
|
+
}
|
|
254
|
+
const v = value(0); ws();
|
|
255
|
+
if (i !== text.length) err('trailing characters');
|
|
256
|
+
return v;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// ---------------------------------------------------------------- 索引の検査(仕様の写し(FORMAT.VENDOR_DIR)の schema と同じ規則、依存なし)
|
|
260
|
+
export function validateIndex(ix) {
|
|
261
|
+
const e = [];
|
|
262
|
+
const need = (o, keys, where) => { for (const k of keys) if (!own(o, k)) e.push(`${where}: missing "${k}"`); };
|
|
263
|
+
const str = (v, where, re, min = 0) => { if (typeof v !== 'string') { e.push(`${where}: not a string`); return false; } if (v.length < min) e.push(`${where}: empty`); if (re && !re.test(v)) e.push(`${where}: "${v.slice(0, 80)}" does not match ${re}`); return true; };
|
|
264
|
+
const int = (v, where, min) => { if (!Number.isInteger(v) || v < min) e.push(`${where}: not an integer >= ${min}`); };
|
|
265
|
+
const path = (v, where) => { if (str(v, where)) { const p = pathProblem(v); if (p) e.push(`${where}: ${p}`); } };
|
|
266
|
+
if (!isObj(ix)) return ['index: not an object'];
|
|
267
|
+
// entry と article(§9C.1):少なくともどちらか(記事だけの教材は entry なし。§4「Lessons without slides」)
|
|
268
|
+
need(ix, ['format', 'version', 'profile', 'requires', 'contracts', 'player', 'generator', 'docId', 'sourceSha256', 'files', 'blobs', 'metadata'], 'index');
|
|
269
|
+
if (!own(ix, 'entry') && !own(ix, 'article')) e.push('index: missing "entry" (or "article": a lesson has slides, an article, or both)');
|
|
270
|
+
if (own(ix, 'format') && ix.format !== FID) e.push(`format: not "${FID}"`);
|
|
271
|
+
if (own(ix, 'version')) versionCheck(ix.version, 'version', e);
|
|
272
|
+
if (own(ix, 'profile') && !['core', 'extended'].includes(ix.profile)) e.push('profile: not core or extended');
|
|
273
|
+
if (own(ix, 'requires')) {
|
|
274
|
+
if (!Array.isArray(ix.requires)) e.push('requires: not an array');
|
|
275
|
+
else { ix.requires.forEach((f, j) => str(f, `requires[${j}]`, RE.feature)); if (new Set(ix.requires).size !== ix.requires.length) e.push('requires: duplicate items'); }
|
|
276
|
+
}
|
|
277
|
+
if (own(ix, 'contracts')) contractsCheck(ix.contracts, 'contracts', e);
|
|
278
|
+
if (own(ix, 'player')) generatorCheck(ix.player, 'player', e);
|
|
279
|
+
if (own(ix, 'generator')) generatorCheck(ix.generator, 'generator', e);
|
|
280
|
+
if (own(ix, 'docId')) str(ix.docId, 'docId', RE.docId);
|
|
281
|
+
if (own(ix, 'entry')) path(ix.entry, 'entry');
|
|
282
|
+
if (own(ix, 'article')) {
|
|
283
|
+
const a = ix.article;
|
|
284
|
+
if (!isObj(a)) e.push('article: not an object');
|
|
285
|
+
else {
|
|
286
|
+
if (!own(a, 'path')) e.push('article: missing "path"');
|
|
287
|
+
for (const k of ['path', 'references']) if (own(a, k)) str(a[k], `article.${k}`, null, 1);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (own(ix, 'sourceSha256')) str(ix.sourceSha256, 'sourceSha256', RE.sha256);
|
|
291
|
+
if (own(ix, 'files')) {
|
|
292
|
+
if (!isObj(ix.files)) e.push('files: not an object');
|
|
293
|
+
else {
|
|
294
|
+
const keys = Object.keys(ix.files);
|
|
295
|
+
if (!keys.length) e.push('files: empty');
|
|
296
|
+
for (const k of keys) { path(k, `files["${k}"] (path)`); str(ix.files[k], `files["${k}"]`, RE.blobId); }
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (own(ix, 'blobs')) {
|
|
300
|
+
if (!isObj(ix.blobs)) e.push('blobs: not an object');
|
|
301
|
+
else {
|
|
302
|
+
const keys = Object.keys(ix.blobs);
|
|
303
|
+
if (!keys.length) e.push('blobs: empty');
|
|
304
|
+
for (const k of keys) {
|
|
305
|
+
const w = `blobs["${k}"]`, b = ix.blobs[k];
|
|
306
|
+
if (!RE.blobId.test(k)) e.push(`${w}: bad blob id`);
|
|
307
|
+
if (!isObj(b)) { e.push(`${w}: not an object`); continue; }
|
|
308
|
+
need(b, ['mime', 'bytes', 'sha256', 'chunks'], w);
|
|
309
|
+
if (own(b, 'mime')) str(b.mime, `${w}.mime`, RE.mime);
|
|
310
|
+
if (own(b, 'bytes')) int(b.bytes, `${w}.bytes`, 0);
|
|
311
|
+
if (own(b, 'sha256')) str(b.sha256, `${w}.sha256`, RE.sha256);
|
|
312
|
+
if (own(b, 'chunks')) {
|
|
313
|
+
if (!Array.isArray(b.chunks) || !b.chunks.length) e.push(`${w}.chunks: not a non-empty array`);
|
|
314
|
+
else b.chunks.forEach((c, j) => str(c, `${w}.chunks[${j}]`, RE.chunkId));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (own(ix, 'audio')) {
|
|
320
|
+
if (!isObj(ix.audio)) e.push('audio: not an object');
|
|
321
|
+
else for (const k of Object.keys(ix.audio)) {
|
|
322
|
+
if (!RE.stepKey.test(k) || k.length > 200) e.push(`audio["${k}"]: bad step key`);
|
|
323
|
+
audioRecordCheck(ix.audio[k], `audio["${k}"]`, e);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (own(ix, 'components')) {
|
|
327
|
+
if (!Array.isArray(ix.components)) e.push('components: not an array');
|
|
328
|
+
else ix.components.forEach((c, j) => {
|
|
329
|
+
const w = `components[${j}]`;
|
|
330
|
+
if (!isObj(c)) { e.push(`${w}: not an object`); return; }
|
|
331
|
+
need(c, ['name', 'version', 'sha256', 'source'], w);
|
|
332
|
+
if (own(c, 'tag')) str(c.tag, `${w}.tag`, RE.tag);
|
|
333
|
+
if (own(c, 'name')) str(c.name, `${w}.name`, c.source === 'registry' ? RE.registryName : null, 1);
|
|
334
|
+
if (own(c, 'version')) str(c.version, `${w}.version`, null, 1);
|
|
335
|
+
if (own(c, 'sha256')) str(c.sha256, `${w}.sha256`, RE.sha256);
|
|
336
|
+
if (own(c, 'source') && !['registry', 'embedded'].includes(c.source)) e.push(`${w}.source: not registry or embedded`);
|
|
337
|
+
if (c.source === 'embedded' && !own(c, 'path')) e.push(`${w}: embedded without path`);
|
|
338
|
+
if (own(c, 'path')) path(c.path, `${w}.path`);
|
|
339
|
+
if (own(c, 'requires')) {
|
|
340
|
+
if (!isObj(c.requires)) e.push(`${w}.requires: not an object`);
|
|
341
|
+
else for (const [n, v] of Object.entries(c.requires)) { str(n, `${w}.requires name`, RE.registryName); str(v, `${w}.requires.${n}`, null, 1); }
|
|
342
|
+
}
|
|
343
|
+
if (own(c, 'license')) str(c.license, `${w}.license`, null, 1);
|
|
344
|
+
if (own(c, 'subset')) {
|
|
345
|
+
if (!isObj(c.subset)) e.push(`${w}.subset: not an object`);
|
|
346
|
+
else {
|
|
347
|
+
need(c.subset, ['keys', 'sha256'], `${w}.subset`); str(c.subset.keys, `${w}.subset.keys`); str(c.subset.sha256, `${w}.subset.sha256`, RE.sha256);
|
|
348
|
+
// names(§6.2 Subset by name):match: "name" の宣言で残した名前。1 回ずつ(index schema の uniqueItems)
|
|
349
|
+
if (own(c.subset, 'names')) {
|
|
350
|
+
if (!Array.isArray(c.subset.names)) e.push(`${w}.subset.names: not an array`);
|
|
351
|
+
else {
|
|
352
|
+
c.subset.names.forEach((n, k) => str(n, `${w}.subset.names[${k}]`, SUBSET_NAME_RE));
|
|
353
|
+
if (new Set(c.subset.names).size !== c.subset.names.length) e.push(`${w}.subset.names: duplicates`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// renderers(format spec §6.2 Render・index schema):組み立てのときに描いた描き手 {名前: {version, options?}}。パーツのデータの renderers と同じ
|
|
359
|
+
if (own(c, 'renderers')) {
|
|
360
|
+
if (!isObj(c.renderers)) e.push(`${w}.renderers: not an object`);
|
|
361
|
+
else for (const [n, rr] of Object.entries(c.renderers)) {
|
|
362
|
+
if (!isObj(rr)) { e.push(`${w}.renderers.${n.slice(0, 40)}: not an object`); continue; }
|
|
363
|
+
str(rr.version, `${w}.renderers.${n.slice(0, 40)}.version`, null, 1);
|
|
364
|
+
if (own(rr, 'options') && !isObj(rr.options)) e.push(`${w}.renderers.${n.slice(0, 40)}.options: not an object`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
if (own(ix, 'themes')) {
|
|
370
|
+
if (!Array.isArray(ix.themes)) e.push('themes: not an array');
|
|
371
|
+
else ix.themes.forEach((c, j) => {
|
|
372
|
+
const w = `themes[${j}]`;
|
|
373
|
+
if (!isObj(c)) { e.push(`${w}: not an object`); return; }
|
|
374
|
+
need(c, ['name', 'version', 'sha256', 'source'], w);
|
|
375
|
+
if (own(c, 'name')) str(c.name, `${w}.name`, c.source === 'registry' ? RE.registryName : null, 1);
|
|
376
|
+
if (own(c, 'version')) str(c.version, `${w}.version`, null, 1);
|
|
377
|
+
if (own(c, 'sha256')) str(c.sha256, `${w}.sha256`, RE.sha256);
|
|
378
|
+
if (own(c, 'source') && !['registry', 'embedded'].includes(c.source)) e.push(`${w}.source: not registry or embedded`);
|
|
379
|
+
if (own(c, 'path')) path(c.path, `${w}.path`);
|
|
380
|
+
if (own(c, 'extends')) str(c.extends, `${w}.extends`, null, 1);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
if (own(ix, 'metadata')) metadataCheck(ix.metadata, 'metadata', e);
|
|
384
|
+
if (own(ix, 'exportedFrom')) {
|
|
385
|
+
const x = ix.exportedFrom;
|
|
386
|
+
if (!isObj(x)) e.push('exportedFrom: not an object');
|
|
387
|
+
else {
|
|
388
|
+
need(x, ['kind', 'sourceSha256'], 'exportedFrom');
|
|
389
|
+
for (const k of Object.keys(x)) if (k !== 'kind' && k !== 'sourceSha256') e.push(`exportedFrom: unknown member "${k}"`);
|
|
390
|
+
if (own(x, 'kind') && x.kind !== 'folder') e.push('exportedFrom.kind: not "folder"');
|
|
391
|
+
if (own(x, 'sourceSha256')) str(x.sourceSha256, 'exportedFrom.sourceSha256', RE.sha256);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
if (own(ix, 'excluded') && !(Array.isArray(ix.excluded) && ix.excluded.every((x) => typeof x === 'string'))) e.push('excluded: not an array of strings');
|
|
395
|
+
if (own(ix, 'extensions')) {
|
|
396
|
+
if (!isObj(ix.extensions)) e.push('extensions: not an object');
|
|
397
|
+
else for (const k of Object.keys(ix.extensions)) {
|
|
398
|
+
if (!RE.extName.test(k)) e.push(`extensions["${k}"]: bad extension name`);
|
|
399
|
+
const x = ix.extensions[k];
|
|
400
|
+
if (!isObj(x)) e.push(`extensions["${k}"]: not an object`);
|
|
401
|
+
else if (!own(x, 'v')) e.push(`extensions["${k}"]: missing "v"`);
|
|
402
|
+
else int(x.v, `extensions["${k}"].v`, 1);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return e;
|
|
406
|
+
}
|
|
407
|
+
function versionCheck(v, w, e) {
|
|
408
|
+
if (!isObj(v)) { e.push(`${w}: not an object`); return; }
|
|
409
|
+
if (!own(v, 'major') || !own(v, 'minor')) e.push(`${w}: needs major and minor`);
|
|
410
|
+
if (own(v, 'major') && v.major !== 1) e.push(`${w}.major: not 1`);
|
|
411
|
+
if (own(v, 'minor') && !(Number.isInteger(v.minor) && v.minor >= 0)) e.push(`${w}.minor: not an integer >= 0`);
|
|
412
|
+
}
|
|
413
|
+
function contractsCheck(c, w, e) {
|
|
414
|
+
if (!isObj(c)) { e.push(`${w}: not an object`); return; }
|
|
415
|
+
if (!(Number.isInteger(c.source) && c.source >= 1)) e.push(`${w}.source: not an integer >= 1`);
|
|
416
|
+
}
|
|
417
|
+
function generatorCheck(g, w, e) {
|
|
418
|
+
if (!isObj(g)) { e.push(`${w}: not an object`); return; }
|
|
419
|
+
for (const k of ['name', 'version']) if (!(typeof g[k] === 'string' && g[k].length)) e.push(`${w}.${k}: not a non-empty string`);
|
|
420
|
+
if (own(g, 'title') && !(typeof g.title === 'string' && g.title.length)) e.push(`${w}.title: not a non-empty string`);
|
|
421
|
+
}
|
|
422
|
+
const numArr = (a) => Array.isArray(a) && a.every((x) => typeof x === 'number' && Number.isFinite(x) && x >= 0);
|
|
423
|
+
// 符号化の遅れ(§5.2 startOffset:秒、0〜1)
|
|
424
|
+
export const isOffset = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0 && v <= 1;
|
|
425
|
+
function audioRecordCheck(r, w, e) {
|
|
426
|
+
if (!isObj(r)) { e.push(`${w}: not an object`); return; }
|
|
427
|
+
for (const k of ['file', 'dur', 'cues', 'kind', 'inputHash']) if (!own(r, k)) e.push(`${w}: missing "${k}"`);
|
|
428
|
+
if (own(r, 'file')) { const p = typeof r.file === 'string' ? pathProblem(r.file) : 'not a string'; if (p) e.push(`${w}.file: ${p}`); else if (!r.file.startsWith('audio/')) e.push(`${w}.file: not under audio/`); }
|
|
429
|
+
if (own(r, 'dur') && !(typeof r.dur === 'number' && r.dur > 0)) e.push(`${w}.dur: not a number > 0`);
|
|
430
|
+
if (own(r, 'cues')) {
|
|
431
|
+
if (!numArr(r.cues)) e.push(`${w}.cues: not an array of numbers >= 0`);
|
|
432
|
+
else if (r.cues.some((x, j) => j && x < r.cues[j - 1])) e.push(`${w}.cues: not in order`);
|
|
433
|
+
}
|
|
434
|
+
if (own(r, 'sync') && !['auto', 'manual', 'none'].includes(r.sync)) e.push(`${w}.sync: not auto, manual or none`);
|
|
435
|
+
if (r.sync === 'none' && Array.isArray(r.cues) && r.cues.length) e.push(`${w}: sync "none" with cues`);
|
|
436
|
+
if (own(r, 'kind') && !['tts', 'recorded', 'imported'].includes(r.kind)) e.push(`${w}.kind: not tts, recorded or imported`);
|
|
437
|
+
// null は「分からない」(古い組み立てから持ち込んだ音声など)。読み手は古い(作り直しが要る)とみなす(§5.2)
|
|
438
|
+
if (own(r, 'inputHash') && !(r.inputHash === null || (typeof r.inputHash === 'string' && RE.sha256.test(r.inputHash)))) e.push(`${w}.inputHash: not a sha256 or null`);
|
|
439
|
+
if (r.kind === 'tts' && !own(r, 'recipe')) e.push(`${w}: tts without recipe`);
|
|
440
|
+
if (own(r, 'recipe')) {
|
|
441
|
+
const c = r.recipe, x = `${w}.recipe`;
|
|
442
|
+
if (!isObj(c)) e.push(`${x}: not an object`);
|
|
443
|
+
else {
|
|
444
|
+
for (const k of ['engine', 'model', 'voice', 'processing']) if (!own(c, k)) e.push(`${x}: missing "${k}"`);
|
|
445
|
+
for (const k of ['engine', 'model', 'processing']) if (own(c, k) && typeof c[k] !== 'string') e.push(`${x}.${k}: not a string`);
|
|
446
|
+
if (own(c, 'voice')) {
|
|
447
|
+
if (!isObj(c.voice)) e.push(`${x}.voice: not an object`);
|
|
448
|
+
else for (const k of Object.keys(c.voice)) {
|
|
449
|
+
if (k !== 'expert' && k !== 'novice') e.push(`${x}.voice: unknown role "${k}"`);
|
|
450
|
+
if (!(typeof c.voice[k] === 'string' && RE.voice.test(c.voice[k]))) e.push(`${x}.voice.${k}: not a public voice identifier`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (own(c, 'seed') && !(c.seed === null || Number.isInteger(c.seed))) e.push(`${x}.seed: not an integer or null`);
|
|
454
|
+
if (own(c, 'dictionary') && !(c.dictionary === null || typeof c.dictionary === 'string')) e.push(`${x}.dictionary: not a string or null`);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
if (own(r, 'recipeDigest') && typeof r.recipeDigest !== 'string') e.push(`${w}.recipeDigest: not a string`);
|
|
458
|
+
if (own(r, 'processing') && typeof r.processing !== 'string') e.push(`${w}.processing: not a string`);
|
|
459
|
+
if (own(r, 'startOffset') && !isOffset(r.startOffset)) e.push(`${w}.startOffset: not a number from 0 to 1`);
|
|
460
|
+
if (own(r, 'alternatives')) {
|
|
461
|
+
if (!Array.isArray(r.alternatives)) e.push(`${w}.alternatives: not an array`);
|
|
462
|
+
else r.alternatives.forEach((a, j) => {
|
|
463
|
+
const x = `${w}.alternatives[${j}]`;
|
|
464
|
+
if (!isObj(a)) { e.push(`${x}: not an object`); return; }
|
|
465
|
+
const p = typeof a.file === 'string' ? pathProblem(a.file) : 'not a string';
|
|
466
|
+
if (p) e.push(`${x}.file: ${p}`); else if (!a.file.startsWith('audio/')) e.push(`${x}.file: not under audio/`);
|
|
467
|
+
if (typeof a.mime !== 'string') e.push(`${x}.mime: not a string`);
|
|
468
|
+
if (!(typeof a.startOffset === 'number' && a.startOffset >= 0)) e.push(`${x}.startOffset: not a number >= 0`);
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
const strArr = (a) => Array.isArray(a) && a.every((x) => typeof x === 'string');
|
|
473
|
+
function metadataCheck(m, w, e) {
|
|
474
|
+
if (!isObj(m)) { e.push(`${w}: not an object`); return; }
|
|
475
|
+
if (!(typeof m.title === 'string' && m.title.length)) e.push(`${w}.title: not a non-empty string`);
|
|
476
|
+
if (!(typeof m.lang === 'string' && m.lang.length <= 64 && RE.lang.test(m.lang))) e.push(`${w}.lang: not a BCP 47 tag`);
|
|
477
|
+
for (const k of ['description', 'license', 'copyright', 'attribution']) if (own(m, k) && typeof m[k] !== 'string') e.push(`${w}.${k}: not a string`);
|
|
478
|
+
for (const k of ['creators', 'curriculum']) if (own(m, k) && !strArr(m[k])) e.push(`${w}.${k}: not an array of strings`);
|
|
479
|
+
for (const k of ['created', 'modified', 'email']) if (own(m, k)) e.push(`${w}: must not contain "${k}"`);
|
|
480
|
+
if (own(m, 'accessibility')) {
|
|
481
|
+
const a = m.accessibility;
|
|
482
|
+
if (!isObj(a)) e.push(`${w}.accessibility: not an object`);
|
|
483
|
+
else {
|
|
484
|
+
for (const k of ['accessMode', 'accessModeSufficient', 'accessibilityFeature', 'accessibilityHazard']) if (own(a, k) && !strArr(a[k])) e.push(`${w}.accessibility.${k}: not an array of strings`);
|
|
485
|
+
if (own(a, 'accessibilitySummary') && typeof a.accessibilitySummary !== 'string') e.push(`${w}.accessibility.accessibilitySummary: not a string`);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
if (own(m, 'completion')) completionCheck(m.completion, `${w}.completion`, e);
|
|
489
|
+
if (own(m, 'derivedFrom')) {
|
|
490
|
+
const d = m.derivedFrom;
|
|
491
|
+
if (!isObj(d)) e.push(`${w}.derivedFrom: not an object`);
|
|
492
|
+
else {
|
|
493
|
+
if (!(typeof d.docId === 'string' && RE.docId.test(d.docId))) e.push(`${w}.derivedFrom.docId: not a UUID`);
|
|
494
|
+
if (!(typeof d.sourceSha256 === 'string' && RE.sha256.test(d.sourceSha256))) e.push(`${w}.derivedFrom.sourceSha256: not a sha256`);
|
|
495
|
+
if (own(d, 'anchor') && !(typeof d.anchor === 'string' && RE.stepKey.test(d.anchor))) e.push(`${w}.derivedFrom.anchor: not a step key`);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (own(m, 'authorship')) {
|
|
499
|
+
if (!isObj(m.authorship)) e.push(`${w}.authorship: not an object`);
|
|
500
|
+
else for (const k of Object.keys(m.authorship)) {
|
|
501
|
+
const a = m.authorship[k];
|
|
502
|
+
if (!isObj(a) || !['human', 'ai', 'mixed'].includes(a.by)) e.push(`${w}.authorship["${k}"].by: not human, ai or mixed`);
|
|
503
|
+
else if (own(a, 'reviewed') && typeof a.reviewed !== 'boolean') e.push(`${w}.authorship["${k}"].reviewed: not a boolean`);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
if (own(m, 'audience') && !['public', 'individual'].includes(m.audience)) e.push(`${w}.audience: not public or individual`);
|
|
507
|
+
}
|
|
508
|
+
function completionCheck(c, w, e) {
|
|
509
|
+
if (!isObj(c)) { e.push(`${w}: not an object`); return; }
|
|
510
|
+
const n = Object.keys(c).length;
|
|
511
|
+
if (n !== 1) e.push(`${w}: needs exactly one rule`);
|
|
512
|
+
if (own(c, 'visitedFraction') && !(typeof c.visitedFraction === 'number' && c.visitedFraction > 0 && c.visitedFraction <= 1)) e.push(`${w}.visitedFraction: not in (0, 1]`);
|
|
513
|
+
if (own(c, 'reachedEnd') && c.reachedEnd !== true) e.push(`${w}.reachedEnd: not true`);
|
|
514
|
+
}
|
|
515
|
+
// 実行系の deck-meta(仕様の写し(FORMAT.VENDOR_DIR)の schema/deck-meta.schema.json)
|
|
516
|
+
// opts.preDraft:1.0 の形より前の草案の文書(player がない。§7.1)を読むとき、player がないことは問わない(読むのは今までどおり。書くものは必ず持つ)
|
|
517
|
+
export function validateDeckMeta(m, opts = {}) {
|
|
518
|
+
const e = [];
|
|
519
|
+
if (!isObj(m)) return ['deck-meta: not an object'];
|
|
520
|
+
for (const k of ['format', 'version', 'contracts', 'player', 'generator', 'docId', 'title', 'lang', 'portable', 'tracking']) if (!own(m, k) && !(k === 'player' && opts.preDraft)) e.push(`deck-meta: missing "${k}"`);
|
|
521
|
+
if (own(m, 'format') && m.format !== FID) e.push(`deck-meta.format: not "${FID}"`);
|
|
522
|
+
if (own(m, 'version')) versionCheck(m.version, 'deck-meta.version', e);
|
|
523
|
+
if (own(m, 'contracts')) contractsCheck(m.contracts, 'deck-meta.contracts', e);
|
|
524
|
+
if (own(m, 'player')) generatorCheck(m.player, 'deck-meta.player', e);
|
|
525
|
+
if (own(m, 'generator')) generatorCheck(m.generator, 'deck-meta.generator', e);
|
|
526
|
+
if (own(m, 'docId') && !(typeof m.docId === 'string' && RE.docId.test(m.docId))) e.push('deck-meta.docId: not a UUID');
|
|
527
|
+
if (own(m, 'title') && !(typeof m.title === 'string' && m.title.length)) e.push('deck-meta.title: not a non-empty string');
|
|
528
|
+
if (own(m, 'lang') && !(typeof m.lang === 'string' && m.lang.length <= 64 && RE.lang.test(m.lang))) e.push('deck-meta.lang: not a BCP 47 tag');
|
|
529
|
+
if (own(m, 'portable') && typeof m.portable !== 'boolean') e.push('deck-meta.portable: not a boolean');
|
|
530
|
+
if (m.portable === true && !own(m, 'sourceSha256')) e.push('deck-meta: portable without sourceSha256');
|
|
531
|
+
if (own(m, 'sourceSha256') && !(typeof m.sourceSha256 === 'string' && RE.sha256.test(m.sourceSha256))) e.push('deck-meta.sourceSha256: not a sha256');
|
|
532
|
+
if (own(m, 'tracking') && !(Array.isArray(m.tracking) && m.tracking.every((x) => typeof x === 'string' && RE.feature.test(x)) && new Set(m.tracking).size === m.tracking.length)) e.push('deck-meta.tracking: not a list of unique adapter names');
|
|
533
|
+
if (own(m, 'completion')) completionCheck(m.completion, 'deck-meta.completion', e);
|
|
534
|
+
for (const k of ['license', 'copyright', 'attribution']) if (own(m, k) && typeof m[k] !== 'string') e.push(`deck-meta.${k}: not a string`);
|
|
535
|
+
return e;
|
|
536
|
+
}
|
|
537
|
+
// 実行系の deck-audio(仕様の写し(FORMAT.VENDOR_DIR)の schema/deck-audio.schema.json)
|
|
538
|
+
export function validateDeckAudio(a) {
|
|
539
|
+
const e = [];
|
|
540
|
+
if (!isObj(a)) return ['deck-audio: not an object'];
|
|
541
|
+
for (const k of Object.keys(a)) {
|
|
542
|
+
const w = `deck-audio["${k}"]`, r = a[k];
|
|
543
|
+
if (!RE.stepKey.test(k) || k.length > 200) e.push(`${w}: bad step key`);
|
|
544
|
+
if (!isObj(r)) { e.push(`${w}: not an object`); continue; }
|
|
545
|
+
if (!(typeof r.src === 'string' && (/^data:audio\/[a-z0-9.+-]+;base64,/.test(r.src) || SRC_RE.test(r.src)))) e.push(`${w}.src: not a data:audio URI or ${SCHEME}<blobId>`);
|
|
546
|
+
if (!(typeof r.dur === 'number' && r.dur > 0)) e.push(`${w}.dur: not a number > 0`);
|
|
547
|
+
if (!numArr(r.cues)) e.push(`${w}.cues: not an array of numbers >= 0`);
|
|
548
|
+
if (own(r, 'sync') && !['auto', 'manual', 'none'].includes(r.sync)) e.push(`${w}.sync: not auto, manual or none`);
|
|
549
|
+
if (r.sync === 'none' && Array.isArray(r.cues) && r.cues.length) e.push(`${w}: sync "none" with cues`);
|
|
550
|
+
if (own(r, 'mime') && !(typeof r.mime === 'string' && /^audio\/[a-z0-9.+-]+$/.test(r.mime))) e.push(`${w}.mime: not an audio media type`);
|
|
551
|
+
if (own(r, 'startOffset') && !isOffset(r.startOffset)) e.push(`${w}.startOffset: not a number from 0 to 1`);
|
|
552
|
+
if (own(r, 'kind') && !['tts', 'recorded', 'imported'].includes(r.kind)) e.push(`${w}.kind: not tts, recorded or imported`);
|
|
553
|
+
}
|
|
554
|
+
return e;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// ---------------------------------------------------------------- §5.4 inputHash と §3.4 sourceSha256
|
|
558
|
+
const token = (b) => b.type === 'cue' ? 'cue' : b.type === 'clear' ? 'mark:clear' : `mark:${b.id}|${b.effect}` + (b.hold === null || b.hold === undefined ? '' : `|hold=${b.hold}`);
|
|
559
|
+
// seg:parseNarration の段階(turns に role・ttsParts・bounds)
|
|
560
|
+
export const inputCanonical = (seg) => JSON.stringify(seg.turns.map((t) => [t.role, t.ttsParts, t.bounds.map(token)]));
|
|
561
|
+
export const inputHash = (seg) => sha256Hex(inputCanonical(seg));
|
|
562
|
+
// 音声が古いか(§5.4):記録の inputHash が null(分からない)か、今の口述原稿の段階(seg。なければ古い)の hash と違う
|
|
563
|
+
export async function isStale(record, seg) {
|
|
564
|
+
if (!record || record.inputHash == null || !seg) return true;
|
|
565
|
+
return record.inputHash !== await inputHash(seg);
|
|
566
|
+
}
|
|
567
|
+
// fileShas:{path: sha256}(audio/ の下は入れない)
|
|
568
|
+
export function sourceSha256(fileShas) {
|
|
569
|
+
const paths = Object.keys(fileShas).filter((p) => !p.startsWith('audio/')).sort(cmpCodePoint);
|
|
570
|
+
return sha256Hex(paths.map((p) => `${p}\t${fileShas[p]}\n`).join(''));
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
// 書き出しの印(index.exportedFrom、§3.1)から、写しとフォルダのどちらが書き出しの後に直されたか。印がなければ null。
|
|
574
|
+
// 比べるのは hash だけ(時刻は持たない):写しの今の sourceSha256 と印の値が違えば写しを直した。folderSha(同じ docId の作業フォルダの
|
|
575
|
+
// 今の sourceSha256。写しとフォルダの両方があるときだけ分かる)が印の値と違えばフォルダを直した。分からなければ folderEdited は null。
|
|
576
|
+
// sourceMatches(readPortable の答え)が false なら、索引の sourceSha256 は写しの中身の hash ではない(手で書き換えた・壊れた)ので、印の値と
|
|
577
|
+
// 同じでも写しを直したことにする(印は信じられる中身の hash とだけ比べる)。形の合わない印(kind・sourceSha256 がない・型が違う)は無いものとして null
|
|
578
|
+
export function exportedState(index, folderSha = null, { sourceMatches = true } = {}) {
|
|
579
|
+
const x = isObj(index) ? index.exportedFrom : null;
|
|
580
|
+
if (!isObj(x) || x.kind !== 'folder' || typeof x.sourceSha256 !== 'string' || !RE.sha256.test(x.sourceSha256)) return null;
|
|
581
|
+
const copyEdited = sourceMatches === false || index.sourceSha256 !== x.sourceSha256;
|
|
582
|
+
const folderEdited = typeof folderSha === 'string' ? folderSha !== x.sourceSha256 : null;
|
|
583
|
+
return { exportedSha256: x.sourceSha256, copyEdited, folderEdited, both: copyEdited && folderEdited === true };
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// ---------------------------------------------------------------- 書き出しから外すもの(§3.3)
|
|
587
|
+
// [正規表現, 分類]。分類は index.excluded に入る(決まった一覧。原稿から何が外れたかには依らない)
|
|
588
|
+
const EXCLUDE = [
|
|
589
|
+
[/(^|\/)\./, 'hidden files (.cache, .git, .env, ...)'],
|
|
590
|
+
[/^(?:out|video|bundle|node_modules|__pycache__)(\/|$)/, 'build output and dependencies (out/, video/, bundle/, node_modules/)'],
|
|
591
|
+
[/(^|\/)comments\.json$/, 'review notes (comments.json)'],
|
|
592
|
+
[/(?:\.(?:bak|orig|swp|tmp)|~)$/i, 'backups'],
|
|
593
|
+
[/\.local\.json$/i, 'local settings (*.local.json)'],
|
|
594
|
+
[/(?:\.(?:pem|key|p12|pfx)$|(^|\/)(?:credentials|secrets?)(\.[^/]*)?$)/i, 'credentials'],
|
|
595
|
+
];
|
|
596
|
+
export const EXCLUDED_CATEGORIES = Object.freeze([...EXCLUDE.map((x) => x[1]), 'audio not referenced by a narration step', 'personal reference voices', 'device-specific paths in voice.json']);
|
|
597
|
+
export const excludedReason = (rel) => (EXCLUDE.find(([re]) => re.test(rel)) || [])[1] || null;
|
|
598
|
+
|
|
599
|
+
// voice.json:声の指定がパスなら、ファイル名(拡張子なし)だけにする。そのほかの場所らしい値は消す
|
|
600
|
+
export function redactVoiceJson(text) {
|
|
601
|
+
let v;
|
|
602
|
+
try { v = JSON.parse(text); } catch { return { text, redacted: [] }; }
|
|
603
|
+
if (!isObj(v)) return { text, redacted: [] };
|
|
604
|
+
const redacted = [];
|
|
605
|
+
const isPath = (s) => typeof s === 'string' && (/[\\/]/.test(s) || /^~/.test(s) || /^[A-Za-z]:/.test(s));
|
|
606
|
+
const out = {};
|
|
607
|
+
for (const [k, x] of Object.entries(v)) {
|
|
608
|
+
if (isPath(x)) {
|
|
609
|
+
const stem = x.split(/[\\/]/).pop().replace(/\.[^.]*$/, '');
|
|
610
|
+
if ((k === 'expert' || k === 'novice') && RE.voice.test(stem)) out[k] = stem;
|
|
611
|
+
redacted.push(k);
|
|
612
|
+
} else out[k] = x;
|
|
613
|
+
}
|
|
614
|
+
if (!redacted.length) return { text, redacted };
|
|
615
|
+
return { text: JSON.stringify(out, null, 2) + '\n', redacted };
|
|
616
|
+
}
|
|
617
|
+
// 音声の recipe の声:公開の名前(パスならファイル名、拡張子なし)
|
|
618
|
+
export function voiceName(v) {
|
|
619
|
+
if (typeof v !== 'string' || !v) return null;
|
|
620
|
+
const stem = v.split(/[\\/]/).pop().replace(/\.wav$/i, '');
|
|
621
|
+
return RE.voice.test(stem) ? stem : null;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// ---------------------------------------------------------------- 書き出し
|
|
625
|
+
const readBytesVia = (env, p) => (env.readBytes ? env.readBytes(p) : fromBase64(env.readBase64(p)));
|
|
626
|
+
const escText = (s) => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
627
|
+
const escAttr = (s) => escText(s).replace(/"/g, '"');
|
|
628
|
+
const plain = (s) => String(s).replace(/<br\s*\/?>/gi, ' ').replace(/<[^>]*>/g, '').replace(/\\\(|\\\)/g, '').replace(/ /g, ' ').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'|'/g, "'").replace(/&/g, '&').replace(/\s+/g, ' ').trim();
|
|
629
|
+
const stepOrder = (k) => (k === 'concl' ? Infinity : +k);
|
|
630
|
+
// 書き出す metadata:設定のファイル(FORMAT.CONFIG_FILE)の metadata のうち仕様の項目だけ(時刻・メールなどは入れない)
|
|
631
|
+
const META_KEYS = ['description', 'license', 'copyright', 'attribution', 'creators', 'accessibility', 'curriculum', 'completion', 'derivedFrom', 'authorship', 'audience'];
|
|
632
|
+
|
|
633
|
+
// この書き手が意味を知っている索引の項目(ほかは知らない項目として、作り直しても残す)
|
|
634
|
+
const KNOWN_INDEX = new Set(['format', 'version', 'profile', 'requires', 'contracts', 'player', 'generator', 'docId', 'entry', 'sourceSha256', 'files', 'blobs', 'audio', 'components', 'themes', 'metadata', 'excluded', 'extensions', FORMAT.ATTACH_KEY, 'exportedFrom']);
|
|
635
|
+
const ATTACH_KNOWN = new Set(['path', 'role', 'title', 'description']);
|
|
636
|
+
// JSON の値が同じか(object の項目の順は問わない)
|
|
637
|
+
export function sameJson(a, b) {
|
|
638
|
+
if (a === b) return true;
|
|
639
|
+
if (typeof a !== typeof b || a === null || b === null || typeof a !== 'object' || Array.isArray(a) !== Array.isArray(b)) return false;
|
|
640
|
+
if (Array.isArray(a)) return a.length === b.length && a.every((x, i) => sameJson(x, b[i]));
|
|
641
|
+
const ka = Object.keys(a), kb = Object.keys(b);
|
|
642
|
+
return ka.length === kb.length && ka.every((k) => own(b, k) && sameJson(a[k], b[k]));
|
|
643
|
+
}
|
|
644
|
+
// 作業フォルダの設定のファイル(FORMAT.CONFIG_FILE)の添付の一覧が、索引の index.attachments と同じか(§3.3:ないときは比べない。索引にないのは [])
|
|
645
|
+
export function configAttachmentsMatch(conf, index) {
|
|
646
|
+
if (!isObj(conf) || !own(conf, FORMAT.ATTACH_KEY)) return true;
|
|
647
|
+
const want = isObj(index) && Array.isArray(index[FORMAT.ATTACH_KEY]) ? index[FORMAT.ATTACH_KEY] : [];
|
|
648
|
+
return sameJson(conf[FORMAT.ATTACH_KEY], want);
|
|
649
|
+
}
|
|
650
|
+
// 1 ファイルを作業フォルダに出すときの設定のファイル(§3.3・§3.8):docId を残し、索引の権利の表示を写し、index.attachments を書く
|
|
651
|
+
// (書き直す要がなければ null)。text:今の設定のファイルの文字列(なければ null)。ほかの項目はバイトのまま(kit/core/config-file.mjs)
|
|
652
|
+
const RIGHTS = ['license', 'copyright', 'attribution', 'creators'];
|
|
653
|
+
export function folderConfig(index, text) {
|
|
654
|
+
const meta = isObj(index.metadata) ? index.metadata : {};
|
|
655
|
+
const list = Array.isArray(index[FORMAT.ATTACH_KEY]) ? index[FORMAT.ATTACH_KEY] : null;
|
|
656
|
+
const c = text === null || text === undefined ? null : parseJsonStrict(text);
|
|
657
|
+
const patch = {};
|
|
658
|
+
if (!isObj(c)) { patch.docId = index.docId; patch.metadata = { ...meta }; }
|
|
659
|
+
else {
|
|
660
|
+
const cm = isObj(c.metadata) ? c.metadata : {};
|
|
661
|
+
const add = Object.fromEntries(RIGHTS.filter((k) => own(meta, k) && !own(cm, k)).map((k) => [k, meta[k]]));
|
|
662
|
+
if (Object.keys(add).length) patch.metadata = isObj(c.metadata) ? configMerge(add) : add;
|
|
663
|
+
}
|
|
664
|
+
if (isObj(index.extensions)) {
|
|
665
|
+
const have = isObj(c) && isObj(c.extensions) ? c.extensions : {};
|
|
666
|
+
const add = Object.fromEntries(Object.entries(index.extensions).filter(([k]) => ['live', 'embed'].includes(k) && !own(have, k)));
|
|
667
|
+
if (Object.keys(add).length) patch.extensions = configMerge(add);
|
|
668
|
+
}
|
|
669
|
+
if (list && list.length && !(isObj(c) && own(c, FORMAT.ATTACH_KEY))) patch[FORMAT.ATTACH_KEY] = list;
|
|
670
|
+
if (!Object.keys(patch).length) return null;
|
|
671
|
+
return updateConfig(isObj(c) ? text : null, patch);
|
|
672
|
+
}
|
|
673
|
+
// 書き出しの前の id(§8.1。kit/core/slide-ids.mjs の exportIds):作業フォルダの原稿・口述原稿・音声の記録・timeline.json・comments.json を
|
|
674
|
+
// 上限つきで読み、付け替えたものを {writes: {作業フォルダの中のパス: 字}} で返す。付けられない原稿(id の書式の誤り・鍵の重なり)は断る
|
|
675
|
+
function exportIdsFor(env, deckDir, srcPath, inDeck, opts) {
|
|
676
|
+
const P = env.path;
|
|
677
|
+
// 上限を超えるもの(読み取りの read-over)は組み立てと同じ build-too-large で、読む前に断る
|
|
678
|
+
const bounded = (p, max, what) => { try { return env.readText(p, max); } catch (e) { if (e && e.code === 'read-over') throw new BuildLimitError(`files read (${what})`, e.n, max); throw e; } };
|
|
679
|
+
const read = (rel, max) => { const p = P.join(deckDir, ...rel.split('/')); return env.exists(p) && inDeck(p) ? bounded(p, max, rel) : null; };
|
|
680
|
+
const entryRel = P.relative(deckDir, P.resolve(srcPath)).split(P.sep).join('/');
|
|
681
|
+
const NAMES = { deck: entryRel, narration: 'narration.md', manifest: 'audio/manifest.json', timeline: 'timeline.json', comments: 'comments.json' };
|
|
682
|
+
const L = READ_LIMITS;
|
|
683
|
+
const files = { deck: bounded(P.resolve(srcPath), L.source, 'source'), narration: read('narration.md', L.narration), manifest: read('audio/manifest.json', L.json), timeline: read('timeline.json', L.json), comments: read('comments.json', L.comments) };
|
|
684
|
+
const x = exportIds(files, opts.idRand ? { rand: opts.idRand } : {});
|
|
685
|
+
if (x.problems.length) fail('slide-ids', 'slides cannot be given ids (§8.1); fix these first: ' + x.problems.map((q) => q.msg).join('; '), x.problems);
|
|
686
|
+
const writes = {}, warnings = [];
|
|
687
|
+
for (const [k, text] of Object.entries(x.changed)) writes[NAMES[k]] = text;
|
|
688
|
+
// 設定のファイルの中の段階・スライドの鍵(授業の部屋の活動 extensions.live.activities・metadata.authorship・articleLinks)も付け替える。ほかのバイトはそのまま
|
|
689
|
+
const cfgText = x.aliases.size ? read(CFG, L.json) : null;
|
|
690
|
+
if (cfgText !== null) {
|
|
691
|
+
let c = null; try { c = parseJsonStrict(cfgText); } catch { c = null; }
|
|
692
|
+
const rk = (k) => { const i = String(k).lastIndexOf(':'); const sk = i < 0 ? k : k.slice(0, i); return x.aliases.has(sk) && !x.ids.has(sk) ? x.aliases.get(sk) + (i < 0 ? '' : k.slice(i)) : k; };
|
|
693
|
+
const remap = (o) => { let n = 0; const out = {}; for (const k of Object.keys(o)) { const nk = k === '*' ? k : rk(k); if (nk !== k) n++; if (!own(out, nk)) out[nk] = o[k]; } return n ? out : null; };
|
|
694
|
+
const patch = {};
|
|
695
|
+
if (isObj(c) && isObj(c.extensions) && isObj(c.extensions.live) && c.extensions.live.v === 1 && isObj(c.extensions.live.activities)) { const a = remap(c.extensions.live.activities); if (a) patch.extensions = configMerge({ live: configMerge({ activities: a }) }); }
|
|
696
|
+
if (isObj(c) && isObj(c.metadata) && isObj(c.metadata.authorship)) { const a = remap(c.metadata.authorship); if (a) patch.metadata = configMerge({ authorship: a }); }
|
|
697
|
+
if (isObj(c) && isObj(c.articleLinks)) { const a = remap(c.articleLinks); if (a) patch.articleLinks = a; }
|
|
698
|
+
if (Object.keys(patch).length) writes[CFG] = updateConfig(cfgText, patch);
|
|
699
|
+
}
|
|
700
|
+
if (x.added.length) warnings.push(`${LOG}: gave ${x.added.length} slide(s) an id (§8.1) and wrote them back to the working folder: ${x.added.map((a) => `${a.key} → ${a.id}`).join(', ')}`);
|
|
701
|
+
for (const o of x.orphans) warnings.push(`${LOG}: narration section "## ${o.key}" matches no slide; it was given the id ${o.id}`);
|
|
702
|
+
// 確かめ:付けた後の原稿はどのスライドも id で、口述原稿のどの見出しも {#id}
|
|
703
|
+
const deck = x.changed.deck ?? files.deck, narr = x.changed.narration ?? files.narration;
|
|
704
|
+
const a = analyzeSlideIds(deck);
|
|
705
|
+
if (a.slides.some((s) => s.rule !== 'id') || /\sdata-key\s*=/.test(sectionTags(deck))) fail('slide-ids', 'internal: a slide is still without an id after assigning ids');
|
|
706
|
+
if (narr !== null && parseNarration(narr).sections?.some((s) => !s.id)) fail('slide-ids', 'internal: a narration heading is still without {#id}');
|
|
707
|
+
return { writes, warnings, added: x.added, orphans: x.orphans };
|
|
708
|
+
}
|
|
709
|
+
// <section class="slide"> の開始タグだけをつないだもの(手で書いた data-key が残っていないかを見る)
|
|
710
|
+
function sectionTags(html) { return (html.match(/<section\b[^>]*>/gi) || []).filter((t) => /\bclass\s*=\s*["']?[^"'>]*\bslide\b/i.test(t)).join(''); }
|
|
711
|
+
|
|
712
|
+
// env:build-core の env。必須でないもの:env.readBytes(p)(なければ readBase64)、env.compressAudio、env.audioFailed
|
|
713
|
+
// opts:build-core の opts(theme など)に加えて
|
|
714
|
+
// build(env, src, opts) 組み立ての関数(既定は build-core の build。編集アプリは自分の組み立てを渡せる)
|
|
715
|
+
// carry 読み取った文書の索引(編集アプリが作り直すとき)。知らない項目(どの深さでも)と、作られなかった拡張を残す。
|
|
716
|
+
// identity がなければ derivedFrom は carry のまま(docId を変えない保存は derivedFrom を付けも変えもしない。§7.3)
|
|
717
|
+
// originalNarration carry の文書の narration.md(あれば。行から作られた拡張を、行を消したら残さないため)
|
|
718
|
+
// identity {docId, derivedFrom}:新しい教材として保存する(新しい docId・derivedFrom。§3.6.1・§7.3)。FORMAT.CONFIG_FILE を書き直し writes に
|
|
719
|
+
// fromFolder 作業フォルダからの書き出し(CLI の --portable・編集アプリの「1 ファイルを書き出す」):index.exportedFrom(§3.1)に
|
|
720
|
+
// {kind: "folder", sourceSha256: この書き出しの sourceSha256} を書く(前の値は置き換える)。時刻・パス・名前は入れない。
|
|
721
|
+
// ないとき(1 ファイルの保存・貼り付け・deck.html だけ)は書かず、carry に exportedFrom があればそのまま残す
|
|
722
|
+
// (identity:新しい docId の教材として保存するときは外す。§3.1)
|
|
723
|
+
// attachLimits 添付の上限(kit/core/attachments.mjs の ATTACH_LIMITS を変える。試験用)
|
|
724
|
+
// legacyNoThemePins 1 ファイルの egatari.json に themes を書かない(v0.4.6 までの Studio が書いた 1 ファイルを作る。試験用)
|
|
725
|
+
// idRand id のないスライドに付ける id の乱数(rand(n) → n バイト。見本を組むたびに同じ文書にする。kit/core/narration-core.mjs の newSlideId)
|
|
726
|
+
// withoutLiveResults 授業の部屋の結果(kit/core/live-results.mjs。学ぶ人の質問と答え)の添付を入れない(人に渡す 1 ファイル)。
|
|
727
|
+
// 入れたものは stats.liveResults(パスの配列。1 ファイルを書き出す呼び手が知らせる)
|
|
728
|
+
// 添付(§3.8):作業フォルダの attachments/ の下のファイル(env.listFiles(dir) → 絶対パスの配列。なければ設定のファイルに書いたものだけ)を
|
|
729
|
+
// 上限の内で files に入れ、設定のファイルの役割と題から index.attachments を作る(kit/core/attachments.mjs)。読むのは組み立てと同じ数え方(chargedEnv)
|
|
730
|
+
// 返すもの:{html, index, deckMeta, files: {path: Uint8Array}, audio, writes: {path: 文字列}(原稿に残すもの:FORMAT.CONFIG_FILE と、id を付けたときの
|
|
731
|
+
// 原稿・口述原稿・記録の JSON), warnings, stats, playerChange(carry の再生器の名前が違うとき {from, to}、ほかは null), ids: {added, orphans}}
|
|
732
|
+
export async function exportPortable(env0, srcPath, opts = {}) {
|
|
733
|
+
const P = env0.path;
|
|
734
|
+
// 記事(§9C)のある教材は作り直さない(この書き手は article-v1 を持たない。作り直すと記事が落ちる:§7.2)
|
|
735
|
+
if (isObj(opts.carry) && own(opts.carry, 'article')) fail('article-unsupported', 'the lesson has an article (§9C), which this editor does not implement: only tier A edits are possible');
|
|
736
|
+
const deckDir = P.dirname(P.resolve(srcPath));
|
|
737
|
+
const rel = (p) => P.relative(deckDir, p).split(P.sep).join('/');
|
|
738
|
+
const warnings = [], writes = dict();
|
|
739
|
+
const inDeck = (p) => env0.within(p, deckDir);
|
|
740
|
+
|
|
741
|
+
// スライドの id(format spec §8.1):ファイルに書く原稿は、どのスライドにも id、narration.md のどの見出しにも {#id} がある。
|
|
742
|
+
// ないもの(AI が書いたばかりの原稿・旧来の鍵)にはここで付け、作業フォルダにも書き戻す(writes。docId と同じ。次の書き出しも同じ id)
|
|
743
|
+
const idFix = exportIdsFor(env0, deckDir, srcPath, inDeck, opts);
|
|
744
|
+
for (const w of idFix.warnings) warnings.push(w);
|
|
745
|
+
const overlay = new Map(); // 絶対パス → 付け替えた字(組み立ても書き出しもこれを読む)
|
|
746
|
+
for (const [rp, text] of Object.entries(idFix.writes)) { overlay.set(P.resolve(deckDir, ...rp.split('/')), text); writes[rp] = text; }
|
|
747
|
+
// 組み立てが読んだファイルを記録する
|
|
748
|
+
const reads = new Set();
|
|
749
|
+
const over = (p) => overlay.get(P.resolve(p));
|
|
750
|
+
const rec = { ...env0,
|
|
751
|
+
readText(p, max) { reads.add(P.resolve(p)); const o = over(p); return o !== undefined ? o : env0.readText(p, max); },
|
|
752
|
+
...(typeof env0.readTextBytes === 'function' ? { readTextBytes(p, max) { reads.add(P.resolve(p)); const o = over(p); return o !== undefined ? { text: o, bytes: utf8Length(o) } : env0.readTextBytes(p, max); } } : {}),
|
|
753
|
+
readBase64(p, max) { reads.add(P.resolve(p)); const o = over(p); return o !== undefined ? toBase64(utf8(o)) : env0.readBase64(p, max); },
|
|
754
|
+
...(typeof env0.readBytes === 'function' ? { readBytes(p, max) { const o = over(p); return o !== undefined ? utf8(o) : env0.readBytes(p, max); } } : {}),
|
|
755
|
+
...(typeof env0.size === 'function' ? { size(p) { const o = over(p); return o !== undefined ? utf8Length(o) : env0.size(p); } } : {}),
|
|
756
|
+
};
|
|
757
|
+
// 組み立てと書き出しで 1 つの数え方(kit/core/build-core.mjs の buildBudget・chargedEnv):書き出しが読むもの(口述原稿・原稿のファイルの写し・
|
|
758
|
+
// voice.json・設定のファイル・音声と、その圧縮の前の元のファイル・控えの JSON)も、組み立てが読むものと同じ回数と大きさの合計に、読む前に数える
|
|
759
|
+
const budget = buildBudget(opts.limits, 0), LIM = budget.L;
|
|
760
|
+
const env = chargedEnv(rec, budget);
|
|
761
|
+
// 参照音声(AI 音声が声をまねる元の録音。voice.json が指す、作業フォルダの中のもの):教材に入れない(format spec §5 の recipe。kit/core/ref-voice.mjs)。
|
|
762
|
+
// voice.json は env0 で読む(組み立てが読んだものとして記録すると、伏せる前の voice.json が入ってしまう)。opts.voiceRefDir:名前の声のフォルダ(IRODORI_REF_DIR)
|
|
763
|
+
const refVoices = referenceVoices(env0, deckDir, { refDir: opts.voiceRefDir });
|
|
764
|
+
const refOf = (abs, bytes) => {
|
|
765
|
+
if (!refVoices.length) return null;
|
|
766
|
+
if (!bytes) {
|
|
767
|
+
try {
|
|
768
|
+
const n = typeof env0.size === 'function' ? env0.size(abs) : null;
|
|
769
|
+
if (refVoices.some((x) => x.size === null || n === null || x.size === n)) bytes = readBytesVia(env0, abs);
|
|
770
|
+
} catch { bytes = null; }
|
|
771
|
+
}
|
|
772
|
+
return matchReference(refVoices, rel(abs), bytes);
|
|
773
|
+
};
|
|
774
|
+
// 口述原稿:音声を段階に結び付け、inputHash と拡張の行に使う(build と同じ規則で読む)
|
|
775
|
+
const narrPath = P.join(deckDir, 'narration.md');
|
|
776
|
+
const segs = env.exists(narrPath) && inDeck(narrPath) ? parseNarration(env.readText(narrPath)) : [];
|
|
777
|
+
const segByKey = new Map(segs.map((s) => [`${s.slideKey}:${s.stepKey}`, s]));
|
|
778
|
+
const tag = nonce();
|
|
779
|
+
const pend = [];
|
|
780
|
+
const audioRef = (key, file, v) => {
|
|
781
|
+
const ref = refOf(file);
|
|
782
|
+
if (ref) { warnings.push(`${LOG}: audio for "${key}" is the reference voice "${ref.rel}" (voice.json); not included: ${REFERENCE_VOICE_RULE}`); return null; }
|
|
783
|
+
if (!segByKey.has(key)) { warnings.push(`${LOG}: audio for "${key}" has no narration step; not included`); return null; }
|
|
784
|
+
if (!(typeof v.dur === 'number' && v.dur > 0)) { warnings.push(`${LOG}: audio for "${key}" has no duration; not included`); return null; }
|
|
785
|
+
pend.push({ key, file, v });
|
|
786
|
+
return `${SCHEME}P${tag}_${pend.length - 1}`;
|
|
787
|
+
};
|
|
788
|
+
const metaPh = { format: FID, placeholder: tag };
|
|
789
|
+
const prefixPh = `<!--archive-${tag}-->`;
|
|
790
|
+
// 組み直す文書(carry)が記録した部品庫の部品は、index.js の sha256 が合う版で組む(format spec §6。kit/core/components-lock.mjs)
|
|
791
|
+
let componentVersions = opts.componentVersions;
|
|
792
|
+
const carryLock = isObj(opts.carry) && Array.isArray(opts.carry.components) && opts.carry.components.length ? readLock(env0, env0.ROOT) : null;
|
|
793
|
+
if (!componentVersions && carryLock) componentVersions = pinsForIndex(carryLock, opts.carry.components).pins;
|
|
794
|
+
// 記録したテーマも、sha256 の合う版で組む(同梱のテーマの版の固定 themes.lock.json。kit/core/themes-lock.mjs。黙って新しい色にしない)。
|
|
795
|
+
// opts.updateThemes(編集アプリの「テーマを更新」)なら今の版
|
|
796
|
+
let themeVersions = opts.themeVersions;
|
|
797
|
+
if (!themeVersions && !opts.updateThemes && isObj(opts.carry) && Array.isArray(opts.carry.themes) && opts.carry.themes.length) {
|
|
798
|
+
let tl = null;
|
|
799
|
+
try { tl = readThemesLock(env0, env0.ROOT); } catch { tl = null; }
|
|
800
|
+
if (tl) themeVersions = themePinsForIndex(tl, opts.carry.themes).pins;
|
|
801
|
+
}
|
|
802
|
+
// ファイルの決まり(§4.2):基準のまま(外へは繋がらない)。授業の部屋の派生だけが行き先を足す(kit/core/live.mjs の addLive)
|
|
803
|
+
const r = (opts.build || coreBuild)(env, srcPath, { ...opts, ...(componentVersions ? { componentVersions } : {}), ...(themeVersions ? { themeVersions } : {}), budget, embedAudio: false, audioRef, deckMeta: metaPh, runtimePrefix: prefixPh, policyMeta: policyMeta(policyText()) });
|
|
804
|
+
for (const w of r.stats.warn) warnings.push(w);
|
|
805
|
+
let html = r.html;
|
|
806
|
+
if (new RegExp(`\\bid\\s*=\\s*["']?(?:${[IX_ID, RD_ID, BP, FORMAT.SIGNATURES_ID].map(reEsc).join('|')})`, 'i').test(html)) fail('reserved-id', `the deck uses a reserved id (${IX_ID}, ${RD_ID}, ${BP}…)`);
|
|
807
|
+
|
|
808
|
+
// 原稿のファイル(依存の閉包)と、部品庫・テーマ庫の参照
|
|
809
|
+
const files = dict();
|
|
810
|
+
const compDir = vendorDir(P, env.ROOT), themeDir = P.join(env.ROOT, 'themes'), vThemeDir = themesVendorDir(P, env.ROOT);
|
|
811
|
+
const regComp = new Map(), regTheme = new Map(), regThemeVer = new Map();
|
|
812
|
+
const componentLock = readLock(env0, env0.ROOT);
|
|
813
|
+
const componentDirs = Object.entries(r.stats.componentVersions || {}).map(([name, version]) => ({ name, version, dir: resolveComponent(P, env.ROOT, componentLock, name, version) }));
|
|
814
|
+
const userThemeRoots = new Map(); // 1 ファイルに入れる利用者のテーマのフォルダ → その利用者のテーマのフォルダ(LICENSE* を足すため)
|
|
815
|
+
for (const p of [...reads].sort()) {
|
|
816
|
+
if (inDeck(p)) {
|
|
817
|
+
const rp = rel(p);
|
|
818
|
+
if (rp.startsWith('audio/')) continue; // 音声は下で(manifest と控えの JSON は入れない)
|
|
819
|
+
const why = excludedReason(rp);
|
|
820
|
+
if (why) { warnings.push(`${LOG}: "${rp}" was read by the build but is excluded (${why}); the archive cannot rebuild it`); continue; }
|
|
821
|
+
files[rp] = readBytesVia(env, p);
|
|
822
|
+
} else if (env.within(p, compDir)) {
|
|
823
|
+
// 場所から版を推測しない。同じ写しを指す版でも、組み立てが選んだ版を記録する。
|
|
824
|
+
for (const { name, version, dir } of componentDirs) {
|
|
825
|
+
if (!dir || !env.within(p, dir)) continue;
|
|
826
|
+
if (!regComp.has(name)) regComp.set(name, { version, files: new Map() });
|
|
827
|
+
regComp.get(name).files.set(P.relative(dir, p).split(P.sep).join('/'), readBytesVia(env, p));
|
|
828
|
+
}
|
|
829
|
+
} else if (env.within(p, vThemeDir)) {
|
|
830
|
+
// vendor/themes/<名前>/<版>/…:同梱のテーマの前の版の写し(教材が記録した版で組んだ。kit/core/themes-lock.mjs)。今の版と同じ名前で記録する
|
|
831
|
+
const [name, version] = P.relative(vThemeDir, p).split(P.sep);
|
|
832
|
+
const k = P.relative(P.join(vThemeDir, name, version), p).split(P.sep).join('/');
|
|
833
|
+
if (excludedFromThemeHash(k)) continue; // README*・LICENSE*・*.md はテーマの hash に入れない(format spec §6)
|
|
834
|
+
if (!regTheme.has(name)) regTheme.set(name, new Map());
|
|
835
|
+
regThemeVer.set(name, version);
|
|
836
|
+
regTheme.get(name).set(k, readBytesVia(env, p));
|
|
837
|
+
} else if (env.within(p, themeDir)) {
|
|
838
|
+
const name = P.relative(themeDir, p).split(P.sep)[0];
|
|
839
|
+
const k = P.relative(P.join(themeDir, name), p).split(P.sep).join('/');
|
|
840
|
+
if (excludedFromThemeHash(k)) continue; // README*・LICENSE*・*.md はテーマの hash に入れない(format spec §6)
|
|
841
|
+
if (!regTheme.has(name)) regTheme.set(name, new Map());
|
|
842
|
+
regTheme.get(name).set(k, readBytesVia(env, p));
|
|
843
|
+
} else {
|
|
844
|
+
// 利用者のテーマのフォルダ(EGATARI_THEMES・~/.egatari/themes)のテーマ:原稿の themes/<名前>/ として入れる(ほかの端末・編集アプリでも同じテーマで組み直せる)
|
|
845
|
+
const u = (Array.isArray(rec.themeDirs) ? rec.themeDirs : []).find((d) => env.within(p, d));
|
|
846
|
+
if (!u) continue;
|
|
847
|
+
const rp = 'themes/' + P.relative(u, p).split(P.sep).join('/');
|
|
848
|
+
if (excludedFromThemeCopy(rp.split('/').slice(2).join('/'))) continue; // 利用者のテーマの README*・*.md は写さない
|
|
849
|
+
userThemeRoots.set(P.join(u, P.relative(u, p).split(P.sep)[0]), u);
|
|
850
|
+
if (files[rp] || env.exists(P.join(deckDir, ...rp.split('/')))) { warnings.push(`${LOG}: "${rp}" from a user theme folder clashes with the deck's own file; not included`); continue; }
|
|
851
|
+
files[rp] = readBytesVia(env, p);
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
// 利用者のテーマの LICENSE*(最上位):組み立ては読まないが、テーマの資源を配り直す 1 ファイルには付けて入れる(書体・ロゴの使用条件。§3.3 の閉包)。
|
|
855
|
+
// テーマの hash には入れない。一覧の口(env.listFiles)があればそれで、なければよくある名前を探す
|
|
856
|
+
for (const [root, u] of userThemeRoots) {
|
|
857
|
+
const cands = new Set(['LICENSE', 'LICENSE.txt', 'LICENSE.md', 'LICENCE', 'LICENCE.txt'].map((f) => P.join(root, f)));
|
|
858
|
+
if (typeof env.listFiles === 'function') { try { for (const f of env.listFiles(root) || []) if (P.dirname(f) === root) cands.add(f); } catch { /* 一覧できない */ } }
|
|
859
|
+
for (const f of [...cands].sort()) {
|
|
860
|
+
const base = P.basename(f);
|
|
861
|
+
if (!isThemeLicense(base) || !env.exists(f) || !env.within(f, root) || !env.within(f, u)) continue;
|
|
862
|
+
const rp = 'themes/' + P.relative(u, f).split(P.sep).join('/');
|
|
863
|
+
if (files[rp]) continue;
|
|
864
|
+
if (env.exists(P.join(deckDir, ...rp.split('/')))) { warnings.push(`${LOG}: "${rp}" from a user theme folder clashes with the deck's own file; not included`); continue; }
|
|
865
|
+
files[rp] = readBytesVia(env, f);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
// 原稿のフォルダのテーマ(<作業フォルダ>/themes/<名前>/ など、組み立てが使ったテーマのフォルダのうち作業フォルダの中のもの)の LICENSE*(最上位)も
|
|
869
|
+
// 同じく 1 ファイルに入れる(hash には入れない。利用者のテーマと同じ決まり)。作業フォルダそのものはテーマのフォルダとして扱わない
|
|
870
|
+
for (const d of Array.isArray(r.stats.themeDirs) ? r.stats.themeDirs : []) {
|
|
871
|
+
const root = P.resolve(d);
|
|
872
|
+
if (!inDeck(root) || root === P.resolve(deckDir)) continue;
|
|
873
|
+
const cands = new Set(['LICENSE', 'LICENSE.txt', 'LICENSE.md', 'LICENCE', 'LICENCE.txt'].map((f) => P.join(root, f)));
|
|
874
|
+
if (typeof env.listFiles === 'function') { try { for (const f of env.listFiles(root) || []) if (P.dirname(f) === root) cands.add(f); } catch { /* 一覧できない */ } }
|
|
875
|
+
for (const f of [...cands].sort()) {
|
|
876
|
+
if (!isThemeLicense(P.basename(f)) || !env.exists(f) || !inDeck(f) || !env.within(f, root)) continue;
|
|
877
|
+
const rp = rel(f);
|
|
878
|
+
if (files[rp]) continue;
|
|
879
|
+
const why = excludedReason(rp);
|
|
880
|
+
if (why) { warnings.push(`${LOG}: "${rp}" (theme licence) is excluded (${why}); not included`); continue; }
|
|
881
|
+
files[rp] = readBytesVia(env, f);
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
// 原稿が参照音声を使っている(<audio src> など。組み立てが HTML に埋め込んだ):外すと HTML に残るので、書き出しを断る
|
|
885
|
+
for (const [rp, b] of Object.entries(files)) {
|
|
886
|
+
const ref = matchReference(refVoices, rp, b);
|
|
887
|
+
if (ref) fail('reference-voice', `"${rp}" is the reference voice "${ref.rel}" (voice.json) and the slides use it; remove it from the slides or move the recording out of the working folder: ${REFERENCE_VOICE_RULE}`, { path: rp, reference: ref.rel });
|
|
888
|
+
}
|
|
889
|
+
const entry = rel(P.resolve(srcPath));
|
|
890
|
+
if (!files[entry]) files[entry] = readBytesVia(env, P.resolve(srcPath));
|
|
891
|
+
// voice.json(TTS の設定。build は読まない):個人のパスを伏せる
|
|
892
|
+
const vPath = P.join(deckDir, 'voice.json');
|
|
893
|
+
if (env.exists(vPath) && inDeck(vPath)) {
|
|
894
|
+
const red = redactVoiceJson(env.readText(vPath));
|
|
895
|
+
if (red.redacted.length) warnings.push(`${LOG}: voice.json: local paths redacted (${red.redacted.join(', ')})`);
|
|
896
|
+
files['voice.json'] = utf8(red.text);
|
|
897
|
+
}
|
|
898
|
+
// 設定のファイル(FORMAT.CONFIG_FILE):docId(一度だけ作り、原稿に残して書き出しのたびに同じものを使う)と metadata
|
|
899
|
+
const ePath = P.join(deckDir, CFG);
|
|
900
|
+
let econf = {}, etext = null;
|
|
901
|
+
if (env.exists(ePath) && inDeck(ePath)) {
|
|
902
|
+
const text = etext = env.readText(ePath); // 上限で断るもの(build-too-large)は設定の誤りにしない
|
|
903
|
+
try { econf = parseJsonStrict(text); } catch (e) { fail('bad-config', `${CFG}: ${e.message}`); }
|
|
904
|
+
if (!isObj(econf)) fail('bad-config', `${CFG}: not an object`);
|
|
905
|
+
}
|
|
906
|
+
if (own(econf, 'docId') && !(typeof econf.docId === 'string' && RE.docId.test(econf.docId))) fail('bad-config', `${CFG}: docId "${econf.docId}" is not a lowercase UUID`);
|
|
907
|
+
// 授業の部屋の設定(extensions.live。format spec の extensions/live.md):教材には鍵を残さない(鍵は書き出す再生専用の派生にだけ入る。kit/core/live.mjs)
|
|
908
|
+
if (isObj(econf.extensions) && own(econf.extensions, 'live')) {
|
|
909
|
+
if (!isObj(econf.extensions.live)) fail('bad-config', `${CFG}: extensions.live is not an object`);
|
|
910
|
+
if (econf.extensions.live.v === 1 && own(econf.extensions.live, 'key')) fail('bad-config', `${CFG}: extensions.live.key must not be stored in the lesson (the key goes only into the exported play-only file); remove it`);
|
|
911
|
+
}
|
|
912
|
+
// 新しい教材として保存(§7.3):新しい docId と derivedFrom(§3.6.1)。原稿のフォルダの設定のファイルも書き換える(writes)
|
|
913
|
+
if (opts.identity) {
|
|
914
|
+
const id = opts.identity;
|
|
915
|
+
if (!(typeof id.docId === 'string' && RE.docId.test(id.docId))) fail('bad-config', `identity: docId "${id.docId}" is not a lowercase UUID`);
|
|
916
|
+
// ほかの項目(ほかの作り手の項目も)はバイトのまま(§3.3。kit/core/config-file.mjs)
|
|
917
|
+
const text = updateConfig(etext, { docId: id.docId, metadata: isObj(econf.metadata) ? configMerge({ derivedFrom: id.derivedFrom || undefined }) : (id.derivedFrom ? { derivedFrom: id.derivedFrom } : {}) });
|
|
918
|
+
econf = parseJsonStrict(text);
|
|
919
|
+
writes[CFG] = text;
|
|
920
|
+
} else if (!own(econf, 'docId')) {
|
|
921
|
+
const text = updateConfig(etext, { docId: newDocId() });
|
|
922
|
+
econf = parseJsonStrict(text);
|
|
923
|
+
writes[CFG] = text;
|
|
924
|
+
}
|
|
925
|
+
files[CFG] = writes[CFG] ? utf8(writes[CFG]) : readBytesVia(env, ePath);
|
|
926
|
+
const docId = econf.docId;
|
|
927
|
+
|
|
928
|
+
// 添付(§3.8):attachments/ の下の通常のファイル(リンクはたどらない)。上限(ATTACH_LIMITS)を超えるものは読まずに外して知らせる
|
|
929
|
+
const attachList = [], liveResults = [], liveLeft = [];
|
|
930
|
+
{
|
|
931
|
+
const aDir = P.join(deckDir, FORMAT.ATTACH_DIR);
|
|
932
|
+
const found = [];
|
|
933
|
+
const sizeOf = (p) => { if (typeof env.size !== 'function') return null; try { const n = env.size(p); return Number.isFinite(n) ? n : null; } catch (e) { if (e && e.code === 'build-not-a-file') return -1; return null; } };
|
|
934
|
+
const consider = (abs) => {
|
|
935
|
+
if (!inDeck(abs)) { warnings.push(`${LOG}: attachment "${rel(abs)}" is outside the working folder; not included`); return; }
|
|
936
|
+
const n = sizeOf(abs);
|
|
937
|
+
if (n === -1) { warnings.push(`${LOG}: attachment "${rel(abs)}" is not a regular file; not included`); return; }
|
|
938
|
+
found.push({ path: rel(abs), size: n });
|
|
939
|
+
};
|
|
940
|
+
if (env.exists(aDir) && inDeck(aDir)) {
|
|
941
|
+
if (typeof env.listFiles === 'function') for (const abs of env.listFiles(aDir)) consider(abs);
|
|
942
|
+
else {
|
|
943
|
+
// 一覧の口がない env:設定のファイルに書いたものだけ
|
|
944
|
+
const list = Array.isArray(econf[FORMAT.ATTACH_KEY]) ? econf[FORMAT.ATTACH_KEY] : [];
|
|
945
|
+
for (const e of list) if (isObj(e) && isAttachPath(e.path) && !pathProblem(e.path)) { const abs = P.join(deckDir, ...e.path.split('/')); if (env.exists(abs) && env.isFile(abs)) consider(abs); }
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
const carryList = isObj(opts.carry) && Array.isArray(opts.carry[FORMAT.ATTACH_KEY]) ? opts.carry[FORMAT.ATTACH_KEY] : null;
|
|
949
|
+
// 参照音声は添付にしない(音声はもともと添付にならないが、決まりの名前を添えて知らせる)
|
|
950
|
+
for (let i = found.length - 1; i >= 0; i--) {
|
|
951
|
+
const pr = matchReference(refVoices, found[i].path);
|
|
952
|
+
if (pr) { warnings.push(`${LOG}: attachment "${found[i].path}" is the reference voice "${pr.rel}" (voice.json); not included: ${REFERENCE_VOICE_RULE}`); found.splice(i, 1); }
|
|
953
|
+
}
|
|
954
|
+
const plan = planAttachments(found, econf, { carry: carryList, limits: opts.attachLimits });
|
|
955
|
+
for (const x of plan.problems) warnings.push(`${LOG}: ${problemText(x)}`);
|
|
956
|
+
const L = plan.limits;
|
|
957
|
+
let total = 0;
|
|
958
|
+
const got = new Set();
|
|
959
|
+
for (const p of plan.include) {
|
|
960
|
+
const b = files[p] || readBytesVia(env, P.join(deckDir, ...p.split('/')));
|
|
961
|
+
// 名前を変えた参照音声の写し(中身が同じ)も外す
|
|
962
|
+
const pc = matchReference(refVoices, p, b);
|
|
963
|
+
if (pc) { warnings.push(`${LOG}: attachment "${p}" is the reference voice "${pc.rel}" (voice.json); not included: ${REFERENCE_VOICE_RULE}`); continue; }
|
|
964
|
+
// 中身が音声・動画(名前では分からないもの):入れない
|
|
965
|
+
const media = attachMediaProblem(p, b.subarray(0, 64));
|
|
966
|
+
if (media) { warnings.push(`${LOG}: ${problemText(media)}`); continue; }
|
|
967
|
+
// 一覧の後で大きくなったもの:読んだ大きさで確かめ直す
|
|
968
|
+
if (b.length > L.fileBytes) { warnings.push(`${LOG}: ${problemText({ code: 'attachTooLarge', path: p, n: b.length, max: L.fileBytes })}`); continue; }
|
|
969
|
+
if (total + b.length > L.totalBytes) { warnings.push(`${LOG}: ${problemText({ code: 'attachTotal', path: p, n: total + b.length, max: L.totalBytes })}`); continue; }
|
|
970
|
+
// 中身(§3.8 の役割ごとの型と条件。kit/core/attach-content.mjs):入れない問題(must・should)があれば外して知らせる。気をつけるだけのものは知らせて入れる
|
|
971
|
+
const insp = await inspectAttachment(p, b);
|
|
972
|
+
for (const x of insp.problems) warnings.push(`${LOG}: ${problemText(x)}`);
|
|
973
|
+
if (insp.problems.some(blocking)) continue;
|
|
974
|
+
// 授業の部屋の結果(拡張 live §3):学ぶ人の字が入っている。外す指定なら入れない。入れるときは知らせる(人に渡すなら外す)
|
|
975
|
+
if (isLiveResults(b)) {
|
|
976
|
+
if (opts.withoutLiveResults) { liveLeft.push(p); continue; }
|
|
977
|
+
liveResults.push(p);
|
|
978
|
+
}
|
|
979
|
+
total += b.length;
|
|
980
|
+
files[p] = b; got.add(p);
|
|
981
|
+
}
|
|
982
|
+
if (liveLeft.length) warnings.push(`${LOG}: live session results left out (${liveLeft.map((x) => `"${x}"`).join(', ')}); the working folder keeps them`);
|
|
983
|
+
// 入れたときの知らせは呼び手が出す(再生専用の派生には入らないので。kit/core/live-results.mjs の liveResultsWarning)
|
|
984
|
+
const carryBy = new Map((carryList || []).filter((c) => isObj(c) && typeof c.path === 'string').map((c) => [c.path, c]));
|
|
985
|
+
for (const e of plan.list) if (got.has(e.path)) attachList.push(copyUnknown(e, carryBy.get(e.path), ATTACH_KNOWN));
|
|
986
|
+
// §3.3:1 ファイルの設定のファイルの attachments は index.attachments と同じにする(展開したフォルダから組み直しても同じ一覧)。
|
|
987
|
+
// 作業フォルダの設定のファイルは書き換えない(一覧に出ないものの項目も残す)
|
|
988
|
+
const have = own(econf, FORMAT.ATTACH_KEY) ? econf[FORMAT.ATTACH_KEY] : undefined;
|
|
989
|
+
if (!(have === undefined && !attachList.length) && !sameJson(have, attachList)) {
|
|
990
|
+
files[CFG] = utf8(updateConfig(new TextDecoder().decode(files[CFG]), { [FORMAT.ATTACH_KEY]: attachList.length ? attachList : undefined }));
|
|
991
|
+
if (have !== undefined) warnings.push(`${LOG}: ${CFG}: the copy in the single file lists only the attachments listed for readers (${attachList.length} of ${Array.isArray(have) ? have.length : 0}); the working folder's ${CFG} is unchanged`);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
// 1 ファイルの中の設定のファイルには、使った部品庫の部品の版(components)を書く(format spec §3.3:展開したフォルダを組み直しても版が変わらない。
|
|
995
|
+
// 展開して、もう一度まとめても同じバイト)。作業フォルダの設定のファイルは変えない(作業フォルダは固定がなければ既定の版に付いていく)。
|
|
996
|
+
// 作業フォルダに components があれば、それをそのまま使う(組み立てもそれで版を選んだ)
|
|
997
|
+
if (r.stats.componentsCatalogue) {
|
|
998
|
+
const pins = { ...(isObj(econf.components) ? econf.components : {}) };
|
|
999
|
+
for (const p of r.stats.parts) if (p.source === 'registry') pins[p.name] = p.version;
|
|
1000
|
+
files[CFG] = utf8(updateConfig(new TextDecoder().decode(files[CFG]), { componentsCatalogue: r.stats.componentsCatalogue, components: pins }));
|
|
1001
|
+
}
|
|
1002
|
+
if (!own(econf, 'components') && !r.stats.componentsCatalogue) {
|
|
1003
|
+
const used = {};
|
|
1004
|
+
for (const t of r.stats.components) {
|
|
1005
|
+
const name = t.slice(2);
|
|
1006
|
+
if (!files[`components/${name}/index.js`] && regComp.has(name) && regComp.get(name).files.has('index.js') && RE.registryName.test(name)) used[name] = regComp.get(name).version;
|
|
1007
|
+
}
|
|
1008
|
+
if (Object.keys(used).length) {
|
|
1009
|
+
files[CFG] = utf8(updateConfig(new TextDecoder().decode(files[CFG]), { components: Object.fromEntries(Object.keys(used).sort().map((k) => [k, used[k]])) }));
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
// 使ったテーマ(index.themes。format spec §6):{name, version, sha256, source, extends?}。親も別の項目に記録する。version はテーマ自身の版(§3.8。Studio の版ではない):
|
|
1013
|
+
// 同梱のテーマ(registry)は固定のファイル(themes.lock.json)の版(組み立てが使った版。stats.themeVersions。同梱のテーマはどれも固定のファイルにある:
|
|
1014
|
+
// npm run themes:check)。原稿のフォルダのテーマ・利用者のテーマ(embedded:1 ファイルの themes/<名前>/ に入る)は theme.json の version、
|
|
1015
|
+
// なければ "local"(§6。組み直しでは sha256 で見分ける)。sha256 は組み立てが読んだファイル(文書 README*・LICENSE*・*.md を除く)の行から
|
|
1016
|
+
const themeHash = async (m) => { const lines = []; for (const k of [...m.keys()].sort(cmpCodePoint)) lines.push(`${k}\t${await sha256Hex(identityBytes(k, m.get(k)))}\n`); return sha256Hex(lines.join('')); };
|
|
1017
|
+
const ownVersion = (m) => { try { const v = m.has('theme.json') ? JSON.parse(new TextDecoder().decode(m.get('theme.json'))).version : null; return typeof v === 'string' && VERSION_RE.test(v) ? v : null; } catch { return null; } };
|
|
1018
|
+
const ownParent = (m) => { try { const p = m.has('theme.json') ? JSON.parse(new TextDecoder().decode(m.get('theme.json'))).extends : null; return typeof p === 'string' && p ? { extends: p } : {}; } catch { return {}; } };
|
|
1019
|
+
const themes = [];
|
|
1020
|
+
// 名前の順(前の版の写し vendor/themes/ は themes/ より後に読まれるが、記録の並びは変えない)
|
|
1021
|
+
for (const [name, m] of [...regTheme].sort((a, b) => cmpCodePoint(a[0], b[0]))) {
|
|
1022
|
+
if (!RE.registryName.test(name)) { warnings.push(`${LOG}: theme "${name}" is not a registry name (${RE.registryName}); not recorded`); continue; }
|
|
1023
|
+
const tv = regThemeVer.get(name) || (r.stats.themeVersions && r.stats.themeVersions[name]) || ownVersion(m) || 'local';
|
|
1024
|
+
themes.push({ name, version: tv, sha256: await themeHash(m), source: 'registry', ...ownParent(m) });
|
|
1025
|
+
}
|
|
1026
|
+
{
|
|
1027
|
+
// 原稿のフォルダの中のテーマのフォルダと、利用者のテーマのフォルダのテーマ(組み立てが使ったもの。r.stats.themeDirs)
|
|
1028
|
+
const userRoots = Array.isArray(rec.themeDirs) ? rec.themeDirs : [];
|
|
1029
|
+
const emb = [];
|
|
1030
|
+
for (const d of Array.isArray(r.stats.themeDirs) ? r.stats.themeDirs : []) {
|
|
1031
|
+
const dir = P.resolve(d);
|
|
1032
|
+
if (dir === P.resolve(deckDir) || env.within(dir, themeDir) || env.within(dir, vThemeDir)) continue;
|
|
1033
|
+
if (!inDeck(dir) && !userRoots.some((u) => env.within(dir, u))) continue;
|
|
1034
|
+
const name = P.basename(dir);
|
|
1035
|
+
if (regTheme.has(name) || emb.some((e) => e.name === name)) continue;
|
|
1036
|
+
const m = new Map();
|
|
1037
|
+
for (const p of [...reads].sort()) {
|
|
1038
|
+
if (!env.within(p, dir)) continue;
|
|
1039
|
+
const k = P.relative(dir, p).split(P.sep).join('/');
|
|
1040
|
+
if (!excludedFromThemeHash(k)) m.set(k, readBytesVia(env, p));
|
|
1041
|
+
}
|
|
1042
|
+
if (m.size) emb.push({ name, version: ownVersion(m) || 'local', sha256: await themeHash(m), source: 'embedded', ...ownParent(m) });
|
|
1043
|
+
}
|
|
1044
|
+
themes.push(...emb.sort((a, b) => cmpCodePoint(a.name, b.name)));
|
|
1045
|
+
}
|
|
1046
|
+
// 1 ファイルの中の設定のファイルの themes(§3.8):index.themes のどの項目もその版で、ちょうどそれだけを書く(親のテーマ extends も、"local" も)。
|
|
1047
|
+
// 展開したフォルダを組み直してもテーマの色が黙って変わらない(部品の components と同じ。作業フォルダの設定のファイルは変えない)
|
|
1048
|
+
if (themes.length && !opts.legacyNoThemePins) {
|
|
1049
|
+
const pins = Object.fromEntries([...themes].sort((a, b) => cmpCodePoint(a.name, b.name)).map((t) => [t.name, t.version]));
|
|
1050
|
+
if (!sameJson(econf.themes, pins)) files[CFG] = utf8(updateConfig(new TextDecoder().decode(files[CFG]), { themes: pins }));
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
// 外したもの・パスの規則
|
|
1054
|
+
const pathErr = checkArchivePaths(Object.keys(files));
|
|
1055
|
+
if (pathErr.length) fail('bad-path', 'archive paths break §3.3: ' + pathErr.join('; '), pathErr);
|
|
1056
|
+
for (const p of Object.keys(files)) {
|
|
1057
|
+
if (!/^(?:text|application\/(?:json|xml))|svg/.test(mimeOf(p))) continue;
|
|
1058
|
+
const t = new TextDecoder().decode(files[p]);
|
|
1059
|
+
if (/(?:\/Users\/|\/home\/)[^\s"'<>/]+|[A-Za-z]:\\(?:Users|Documents and Settings)\\/.test(t)) warnings.push(`${LOG}: "${p}" seems to contain a device-specific path (check before sharing)`);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
// 音声:埋め込みと同じく AAC に圧縮(ffmpeg がなければ WAV のまま)。同じ中身は 1 つの塊に
|
|
1063
|
+
const audioFiles = dict(), audio = dict(), fileOfSrc = new Map();
|
|
1064
|
+
const segJson = (v) => {
|
|
1065
|
+
const p = P.join(deckDir, 'audio', `seg_${v.digest}.json`);
|
|
1066
|
+
if (!v.digest || !/^[0-9a-f]+$/.test(v.digest) || !env.exists(p) || !inDeck(p)) return null;
|
|
1067
|
+
const text = env.readText(p); // 上限で断るもの(build-too-large)は飲み込まない
|
|
1068
|
+
try { return JSON.parse(text); } catch { return null; }
|
|
1069
|
+
};
|
|
1070
|
+
for (const { key, file, v } of pend) {
|
|
1071
|
+
let apath = fileOfSrc.get(file);
|
|
1072
|
+
if (!apath) {
|
|
1073
|
+
// 圧縮は env の外で元のファイルを読む:chargedEnv の compressAudio が読む前に数え、数えた大きさまでだけ読ませる(通常のファイルでなければ断る)。
|
|
1074
|
+
// 圧縮したものは env を通して読む(数える)
|
|
1075
|
+
const packed = env.compressAudio ? env.compressAudio(file) : file;
|
|
1076
|
+
const bytes = readBytesVia(env, packed);
|
|
1077
|
+
const ext = P.extname(packed).toLowerCase();
|
|
1078
|
+
let ar = P.relative(P.join(deckDir, 'audio'), file).split(P.sep).join('/');
|
|
1079
|
+
if (ar.startsWith('..')) ar = P.basename(file);
|
|
1080
|
+
apath = 'audio/' + ar.replace(/\.[^./]*$/, '') + ext;
|
|
1081
|
+
if (audioFiles[apath]) fail('audio-collision', `two audio files map to ${apath}`);
|
|
1082
|
+
audioFiles[apath] = bytes;
|
|
1083
|
+
fileOfSrc.set(file, apath);
|
|
1084
|
+
}
|
|
1085
|
+
const seg = segByKey.get(key);
|
|
1086
|
+
const rcd = { file: apath, dur: v.dur, cues: v.sync === 'none' ? [] : (v.cues || []), sync: v.sync || 'auto', kind: v.kind || 'tts' };
|
|
1087
|
+
// inputHash:manifest にあればそれ(展開したフォルダ)。なければ今の口述原稿から。ただし控えの JSON の声と文で作り直した digest が
|
|
1088
|
+
// manifest の digest と違う(原稿を直した後に合成していない)なら、今の原稿の hash は使えないので「古い」印の値にする
|
|
1089
|
+
const sj = segJson(v);
|
|
1090
|
+
if (typeof v.inputHash === 'string' && RE.sha256.test(v.inputHash)) rcd.inputHash = v.inputHash;
|
|
1091
|
+
else if (own(v, 'inputHash') && v.inputHash === null) rcd.inputHash = null; // 展開したフォルダ:分からないまま(古い)
|
|
1092
|
+
else {
|
|
1093
|
+
rcd.inputHash = await inputHash(seg);
|
|
1094
|
+
if (sj && sj.voice && v.digest) {
|
|
1095
|
+
const d = (await sha256Hex(JSON.stringify({ turns: seg.turns.map((t) => [t.role, t.ttsParts]), voice: sj.voice }))).slice(0, 12);
|
|
1096
|
+
// 原稿を直した後に合成していない:どの原稿から作ったか分からないので null(§5.2。読み手は古いとみなす)
|
|
1097
|
+
if (d !== v.digest) { rcd.inputHash = null; warnings.push(`${LOG}: audio for "${key}" was made from older narration (stale)`); }
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
if (rcd.kind === 'tts') rcd.recipe = isObj(v.recipe) ? v.recipe : recipeOf(sj, v);
|
|
1101
|
+
if (v.digest) rcd.recipeDigest = String(v.digest);
|
|
1102
|
+
if (typeof v.processing === 'string') rcd.processing = v.processing;
|
|
1103
|
+
if (isOffset(v.startOffset) && v.startOffset > 0) rcd.startOffset = v.startOffset;
|
|
1104
|
+
audio[key] = rcd;
|
|
1105
|
+
}
|
|
1106
|
+
if (env.audioFailed && env.audioFailed()) warnings.push(`${LOG}: could not compress audio to AAC (no ffmpeg?); WAV is embedded and the file is large`);
|
|
1107
|
+
|
|
1108
|
+
// 塊:中身の sha256 の先頭 32 字を id に(同じ中身は 1 つ)
|
|
1109
|
+
const all = { ...files, ...audioFiles };
|
|
1110
|
+
const shaOf = dict();
|
|
1111
|
+
for (const p of Object.keys(all)) shaOf[p] = await sha256Hex(all[p]);
|
|
1112
|
+
const srcSha = await sourceSha256(Object.fromEntries(Object.keys(files).map((p) => [p, shaOf[p]])));
|
|
1113
|
+
const fileMap = dict(), blobs = dict();
|
|
1114
|
+
// 塊(base64)を作る前に、できる文書の大きさを見積もって組んだ文書の上限(bundledChars)で確かめる(塊ごとの要素の分も)
|
|
1115
|
+
const CHUNK_TAG = `<script type="application/octet-stream" id="${BP}${'0'.repeat(32)}-0000"></script>\n`.length;
|
|
1116
|
+
let chunkChars = 0;
|
|
1117
|
+
{ const seenSha = new Set();
|
|
1118
|
+
for (const p of Object.keys(all)) {
|
|
1119
|
+
if (seenSha.has(shaOf[p])) continue; seenSha.add(shaOf[p]);
|
|
1120
|
+
const b = all[p], n = Math.max(1, Math.ceil(b.length / LIMITS.chunkBytes));
|
|
1121
|
+
chunkChars += Math.ceil(b.length / 3) * 4 + n * CHUNK_TAG;
|
|
1122
|
+
}
|
|
1123
|
+
const projected = html.length + chunkChars;
|
|
1124
|
+
if (projected > LIM.bundledChars) throw new BuildLimitError('portable document (archive chunks)', projected, LIM.bundledChars); }
|
|
1125
|
+
// 塊の id と索引の記録だけを先に(base64 はすべての大きさを確かめた後に作る)
|
|
1126
|
+
const chunkJobs = [];
|
|
1127
|
+
for (const p of Object.keys(all).sort(cmpCodePoint)) {
|
|
1128
|
+
const id = shaOf[p].slice(0, 32);
|
|
1129
|
+
fileMap[p] = id;
|
|
1130
|
+
if (blobs[id]) { if (blobs[id].sha256 !== shaOf[p]) fail('blob-collision', `blob id collision at ${id}`); continue; }
|
|
1131
|
+
const b = all[p], ids = [];
|
|
1132
|
+
const n = Math.max(1, Math.ceil(b.length / LIMITS.chunkBytes));
|
|
1133
|
+
if (n - 1 > LIMITS.chunkMax) fail('too-large', `${p}: more than ${LIMITS.chunkMax + 1} chunks`);
|
|
1134
|
+
for (let j = 0; j < n; j++) ids.push(`${BP}${id}-${j}`);
|
|
1135
|
+
chunkJobs.push({ id, b, n });
|
|
1136
|
+
blobs[id] = { mime: p.startsWith('audio/') ? (mimeOf(p) === 'application/octet-stream' ? 'audio/mpeg' : mimeOf(p)) : isAttachPath(p) ? attachmentMime(p) : mimeOf(p), bytes: b.length, sha256: shaOf[p], chunks: ids };
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
// 部品とテーマ
|
|
1140
|
+
const components = [];
|
|
1141
|
+
let embeddedCode = false;
|
|
1142
|
+
const partTags = new Set((r.stats.parts || []).map((p) => p.tag).filter(Boolean));
|
|
1143
|
+
for (const t of (r.stats.legacyComponents || r.stats.components).filter((t) => !partTags.has(t))) {
|
|
1144
|
+
const name = t.slice(2), local = `components/${name}/index.js`;
|
|
1145
|
+
// sha256:同一性の hash(改行をそろえる。format spec §6、kit/core/identity-hash.mjs)
|
|
1146
|
+
if (files[local]) { components.push({ tag: t, name, version: 'local', sha256: await sha256Hex(normalizeEol(files[local])), source: 'embedded', path: local }); embeddedCode = true; }
|
|
1147
|
+
else if (regComp.has(name) && regComp.get(name).files.has('index.js')) {
|
|
1148
|
+
if (!RE.registryName.test(name)) { warnings.push(`${LOG}: component ${t} is not a registry name (${RE.registryName}); not recorded`); continue; }
|
|
1149
|
+
// version:部品庫(egatari/components)のリリースの版(format spec §6)
|
|
1150
|
+
components.push({ tag: t, name, version: regComp.get(name).version, sha256: await sha256Hex(normalizeEol(regComp.get(name).files.get('index.js'))), source: 'registry' });
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
// 2.0:組み立てが実際に書いたパーツだけを依存の順に記録する。ライブラリには tag がなく、同じ名前の別の版も残す。
|
|
1154
|
+
// 完全なコードの同一性と、絞り込んで書いたコードの hash は別(§6.2)。埋め込みも meta の名前・版をそのまま使う。
|
|
1155
|
+
for (const p of r.stats.parts || []) {
|
|
1156
|
+
const sha256 = await sha256Hex(normalizeEol(utf8(p.fullCode)));
|
|
1157
|
+
if (p.source === 'registry' && sha256 !== p.sha256) fail('component-hash', `${p.name}@${p.version}: code differs from its locked sha256`);
|
|
1158
|
+
const c = { name: p.name, version: p.version, sha256, source: p.source, ...(p.tag ? { tag: p.tag } : {}), requires: p.requires };
|
|
1159
|
+
if (p.source === 'embedded') { c.path = p.path; embeddedCode = true; }
|
|
1160
|
+
if (p.license) c.license = p.license;
|
|
1161
|
+
if (p.renderers) c.renderers = p.renderers;
|
|
1162
|
+
if (p.subset) c.subset = { keys: p.subset.keys, ...(p.subset.names ? { names: p.subset.names } : {}), sha256: await sha256Hex(utf8(p.code.replace(/<\/script/gi, '<\\/script').replace(/<!--/g, '<\\!--').replace(/\r\n?/g, '\n'))) };
|
|
1163
|
+
components.push(c);
|
|
1164
|
+
}
|
|
1165
|
+
for (const c of components) if (c.tag && r.stats.viewerInputs?.[c.tag] === true) c.viewerInput = true;
|
|
1166
|
+
// 原稿の中で動くもの(スクリプト・イベントの属性・javascript: の URL・取り込む SVG や HTML の中のもの・JavaScript のファイル)も、
|
|
1167
|
+
// 文書が持ち込むコード。読み手と同じ規則(kit/core/code-scan.mjs、§6)で中身から決める
|
|
1168
|
+
const deckSrc = new TextDecoder().decode(files[entry]);
|
|
1169
|
+
// 組んだ文書そのもの(取り込み・前処理の後。build の stats.codeReasons)と、文書に入れる原稿のファイルの全体(拡張子によらない補い)の両方で
|
|
1170
|
+
if (r.stats.codeReasons.length || codeReasons(files, { entry }).length) embeddedCode = true;
|
|
1171
|
+
|
|
1172
|
+
// 拡張の行 → extensions.<名前>[<段階の鍵>].<欄>(同じ欄が繰り返せば配列)
|
|
1173
|
+
const extensions = extensionsFrom(segs);
|
|
1174
|
+
// 設定の live と embed は未知の版・任意の追加項目もそのまま索引へ写す(§9A)
|
|
1175
|
+
const confLive = isObj(econf.extensions) && isObj(econf.extensions.live) ? econf.extensions.live : null;
|
|
1176
|
+
if (isObj(econf.extensions)) for (const name of ['live', 'embed']) if (own(econf.extensions, name)) extensions[name] = econf.extensions[name];
|
|
1177
|
+
|
|
1178
|
+
// metadata と deck-meta
|
|
1179
|
+
const lang = (deckSrc.match(/<html[^>]*\slang\s*=\s*["']([^"']*)["']/i)?.[1] || 'ja').trim() || 'ja';
|
|
1180
|
+
const title = plain(deckSrc.match(/<title[^>]*>([\s\S]*?)<\/title>/i)?.[1] || '') || plain(r.slides[0]?.title || '') || entry;
|
|
1181
|
+
const metadata = { title, lang };
|
|
1182
|
+
const em = isObj(econf.metadata) ? econf.metadata : {};
|
|
1183
|
+
for (const k of META_KEYS) if (own(em, k)) metadata[k] = em[k];
|
|
1184
|
+
if (own(em, 'title') && typeof em.title === 'string' && em.title) metadata.title = em.title;
|
|
1185
|
+
// player:同梱の再生器(§4.1。kit/core/player.mjs。出した版と中身が同じでなければ "+dev.<commit>")。generator:書いたソフト(Egatari Studio)
|
|
1186
|
+
const pl = await resolvePlayer(env0);
|
|
1187
|
+
// title:人に見せる名前(spec §3.1・§4.1。name は変わらない識別子)
|
|
1188
|
+
const player = { name: pl.name, version: pl.version, title: pl.title };
|
|
1189
|
+
const generator = { name: GENERATOR, version: env.version || '0', title: GENERATOR_TITLE };
|
|
1190
|
+
// 作り直し(段 B・C)は再生器を替える:前の文書の再生器の名前が違えば知らせる(§4.1:保存の前に、どの再生器が入るかを使う人に言う)
|
|
1191
|
+
const was = isObj(opts.carry) && isObj(opts.carry.player) && typeof opts.carry.player.name === 'string' ? opts.carry.player : null;
|
|
1192
|
+
const playerChange = was && was.name !== player.name ? { from: { name: was.name, version: String(was.version ?? ''), ...(typeof was.title === 'string' && was.title ? { title: was.title } : {}) }, to: player } : null;
|
|
1193
|
+
if (playerChange) warnings.push(`${LOG}: the saved file will carry ${player.title} ${player.version} instead of its player "${playerChange.from.name}" ${playerChange.from.version}`);
|
|
1194
|
+
const index = {
|
|
1195
|
+
format: FID, version: { ...FORMAT_VERSION }, profile: embeddedCode ? 'extended' : 'core',
|
|
1196
|
+
requires: Object.keys(audio).length ? ['sources-v1', 'audio-v1'] : ['sources-v1'],
|
|
1197
|
+
contracts: { ...CONTRACTS }, player, generator, docId, entry, sourceSha256: srcSha, files: fileMap, blobs,
|
|
1198
|
+
...(Object.keys(audio).length ? { audio } : {}),
|
|
1199
|
+
...(components.length ? { components } : {}),
|
|
1200
|
+
...(themes.length ? { themes } : {}),
|
|
1201
|
+
metadata,
|
|
1202
|
+
excluded: [...EXCLUDED_CATEGORIES],
|
|
1203
|
+
...(Object.keys(extensions).length ? { extensions } : {}),
|
|
1204
|
+
...(attachList.length ? { [FORMAT.ATTACH_KEY]: attachList } : {}),
|
|
1205
|
+
};
|
|
1206
|
+
// 読み取った文書から作り直すとき(編集アプリ):この書き手が知らない項目を、索引のどの深さでも残す(§7.1:metadata・音声の記録・部品とテーマ・塊・
|
|
1207
|
+
// 版などの中も)。口述原稿の行から作られなかった拡張も残す(§9A)。docId を変えない保存では derivedFrom を元のまま(付けも変えもしない。§7.3)
|
|
1208
|
+
if (isObj(opts.carry)) carryUnknown(index, opts.carry, { identity: !!opts.identity, lineExtensions: opts.originalNarration != null ? new Set(Object.keys(extensionsFrom(parseNarration(String(opts.originalNarration))))) : null });
|
|
1209
|
+
// 書き出しの印(§3.1):作業フォルダからの書き出しは新しい値に置き換え、1 ファイルの保存(carry)は元のまま(carryUnknown は知っている項目を写さない)。
|
|
1210
|
+
// 新しい docId の教材として保存するとき(identity)は外す
|
|
1211
|
+
if (opts.fromFolder) index.exportedFrom = { kind: 'folder', sourceSha256: srcSha };
|
|
1212
|
+
else if (isObj(opts.carry) && own(opts.carry, 'exportedFrom') && !opts.identity) index.exportedFrom = opts.carry.exportedFrom;
|
|
1213
|
+
// 設定のファイルが extensions を持てば、live はそれが決める(編集アプリで部屋を外したら、読み取った文書の索引から戻さない)
|
|
1214
|
+
if (isObj(econf.extensions) && isObj(index.extensions)) {
|
|
1215
|
+
if (confLive) index.extensions.live = extensions.live; else delete index.extensions.live;
|
|
1216
|
+
if (!Object.keys(index.extensions).length) delete index.extensions;
|
|
1217
|
+
}
|
|
1218
|
+
const ie = validateIndex(index);
|
|
1219
|
+
if (ie.length) fail('invalid-index', 'produced index is invalid: ' + ie.join('; '), ie);
|
|
1220
|
+
const deckMeta = {
|
|
1221
|
+
format: FID, version: { ...FORMAT_VERSION }, contracts: { ...CONTRACTS }, player, generator, docId, title: metadata.title, lang,
|
|
1222
|
+
portable: true, sourceSha256: srcSha, tracking: [],
|
|
1223
|
+
...(metadata.completion ? { completion: metadata.completion } : {}),
|
|
1224
|
+
...Object.fromEntries(['license', 'copyright', 'attribution'].filter((k) => own(metadata, k)).map((k) => [k, metadata[k]])),
|
|
1225
|
+
};
|
|
1226
|
+
const me = validateDeckMeta(deckMeta);
|
|
1227
|
+
if (me.length) fail('invalid-deck-meta', me.join('; '), me);
|
|
1228
|
+
|
|
1229
|
+
// 組み立ての出力に差し込む:deck-meta、音声の参照、読める層・索引・塊
|
|
1230
|
+
const oldMeta = jsonScript('deck-meta', metaPh);
|
|
1231
|
+
if (html.split(oldMeta).length !== 2) fail('internal', 'deck-meta placeholder not found exactly once');
|
|
1232
|
+
// 拡張 embed(spec の extensions/embed.md):索引の extensions.embed を実行系の deck-extensions にも写す(どの 1 ファイルにも。再生器が読み、
|
|
1233
|
+
// ファイルの決まりの frame-src の行き先はここから決まる。§4.2)。deck-meta の直後(実行系より前)
|
|
1234
|
+
const runtimeExt = {};
|
|
1235
|
+
if (isObj(index.extensions)) {
|
|
1236
|
+
if (isObj(index.extensions.embed)) runtimeExt.embed = index.extensions.embed;
|
|
1237
|
+
const live = index.extensions.live;
|
|
1238
|
+
if (isObj(live) && Number.isInteger(live.v) && live.v > 1) runtimeExt.live = live;
|
|
1239
|
+
}
|
|
1240
|
+
const hasRuntimeExt = Object.keys(runtimeExt).length > 0;
|
|
1241
|
+
html = html.replace(oldMeta, () => jsonScript('deck-meta', deckMeta) + (hasRuntimeExt ? '\n' + jsonScript(RUNTIME_EXT_ID, runtimeExt) : ''));
|
|
1242
|
+
// ファイルの決まり(§4.2):基準に、deck-extensions が宣言する行き先を足す(embed → frame-src)。組み立てが入れた基準の <meta> を置き換える
|
|
1243
|
+
if (hasRuntimeExt) {
|
|
1244
|
+
const baseMeta = policyMeta(policyText());
|
|
1245
|
+
if (html.split(baseMeta).length !== 2) fail('internal', 'file policy placeholder not found exactly once');
|
|
1246
|
+
html = html.replace(baseMeta, () => policyMeta(policyText(extensionSources(runtimeExt))));
|
|
1247
|
+
}
|
|
1248
|
+
// 音声の参照(deck-audio の src)と、その MIME(任意の mime。再生器が中身から推し量らずに済む)
|
|
1249
|
+
pend.forEach(({ file }, n) => {
|
|
1250
|
+
const ph = `"${SCHEME}P${tag}_${n}"`, id = fileMap[fileOfSrc.get(file)];
|
|
1251
|
+
if (html.split(ph).length !== html.split(`"src":${ph}`).length) fail('internal', 'audio placeholder found outside deck-audio');
|
|
1252
|
+
html = html.split(`"src":${ph}`).join(`"src":"${SCHEME}${id}","mime":"${blobs[id].mime}"`);
|
|
1253
|
+
});
|
|
1254
|
+
// つなぐ前に、組み立ての後に入れるもの(塊・索引・読める層)すべてを含めた出力の全体の大きさを、それぞれを作る前に確かめる:
|
|
1255
|
+
// 塊は上で見積もった字数(chunkChars)、索引は JSON にする前に下から見積もり(jsonLowerBound)、読める層は書き出す字(実体参照に直した後)を
|
|
1256
|
+
// 数えながら作る(readableLayer の cap)。どれも超えると分かった時点で、その文字列を作らずに断る
|
|
1257
|
+
let projected = html.length - prefixPh.length + chunkChars + 1;
|
|
1258
|
+
const room = () => LIM.bundledChars - projected;
|
|
1259
|
+
const ixCap = Math.min(LIMITS.indexBytes, room());
|
|
1260
|
+
{ const lb = jsonLowerBound(index, ixCap);
|
|
1261
|
+
if (lb > ixCap) throw new BuildLimitError(lb > LIMITS.indexBytes ? 'portable index' : 'portable document (index)', projected + lb, lb > LIMITS.indexBytes ? LIMITS.indexBytes : LIM.bundledChars); }
|
|
1262
|
+
const indexText = htmlSafeJson(JSON.stringify(index, null, 1));
|
|
1263
|
+
if (utf8Length(indexText) > LIMITS.indexBytes) throw new BuildLimitError('portable index', utf8Length(indexText), LIMITS.indexBytes);
|
|
1264
|
+
const ixScript = `<script type="${FORMAT.MIME}" id="${IX_ID}" data-sha256="${await sha256Hex(indexText)}">${indexText}</script>\n`;
|
|
1265
|
+
projected += ixScript.length;
|
|
1266
|
+
if (projected > LIM.bundledChars) throw new BuildLimitError('portable document (index)', projected, LIM.bundledChars);
|
|
1267
|
+
const readable = readableLayer(r.slides, segs, lang, warnings, room() - 1) + '\n';
|
|
1268
|
+
projected += readable.length;
|
|
1269
|
+
if (projected > LIM.bundledChars) throw new BuildLimitError('portable document (readable layer)', projected, LIM.bundledChars);
|
|
1270
|
+
// 塊(base64):すべての大きさを確かめた後にだけ作る
|
|
1271
|
+
const chunks = [];
|
|
1272
|
+
for (const { id, b, n } of chunkJobs) for (let j = 0; j < n; j++) chunks.push(`<script type="application/octet-stream" id="${BP}${id}-${j}">${toBase64(b.subarray(j * LIMITS.chunkBytes, (j + 1) * LIMITS.chunkBytes))}</script>`);
|
|
1273
|
+
{ const chunksLen = chunks.reduce((n, c) => n + c.length + 1, 0);
|
|
1274
|
+
const n = html.length - prefixPh.length + readable.length + ixScript.length + chunksLen + 1;
|
|
1275
|
+
if (n > LIM.bundledChars) throw new BuildLimitError('portable document', n, LIM.bundledChars); }
|
|
1276
|
+
const layer = readable + ixScript + chunks.join('\n') + '\n';
|
|
1277
|
+
if (html.split(prefixPh).length !== 2) fail('internal', 'archive placeholder not found exactly once');
|
|
1278
|
+
html = html.replace(prefixPh, () => layer);
|
|
1279
|
+
if (html.includes('\r')) html = html.replace(/\r\n?/g, '\n');
|
|
1280
|
+
// 書いたものが §4.2 の決まりに合うこと(置き場所と中身。合わなければ書かない)
|
|
1281
|
+
{ const pp = checkFilePolicy(html);
|
|
1282
|
+
if (pp.length) fail('file-policy', 'the file policy (§4.2) is not in place: ' + pp.join('; '), pp); }
|
|
1283
|
+
const size = utf8Length(html);
|
|
1284
|
+
if (size > WARN_BYTES) warnings.push(`${LOG}: the file is ${(size / MiB).toFixed(1)} MiB (over ${WARN_BYTES / MiB} MiB): consider splitting the lesson into chapters`);
|
|
1285
|
+
if (size > LIMITS.fileBytes) warnings.push(`${LOG}: the file is over ${LIMITS.fileBytes / MiB} MiB; editors may refuse it`);
|
|
1286
|
+
// 組み直した文書(carry)の部品庫の部品のうち、記録の hash(改行をそろえる前の CRLF の hash も)が、組み直しに使った版と同じ中身を指すもの(tag の配列)。
|
|
1287
|
+
// 前の Windows の checkout で書き出した文書は記録の hash が今の同一性の hash と違うが、同じ部品(app の registryProblems が使う)
|
|
1288
|
+
const registryEquivalent = [];
|
|
1289
|
+
if (carryLock) {
|
|
1290
|
+
for (const c of opts.carry.components) {
|
|
1291
|
+
if (!isObj(c) || c.source !== 'registry') continue;
|
|
1292
|
+
const v = versionForSha(carryLock, c.name, c.sha256, c.version), f = components.find((x) => x.name === c.name && x.version === v && x.source === 'registry');
|
|
1293
|
+
if (v && f && f.version === v && carryLock.components[c.name].sha256[v] === f.sha256) registryEquivalent.push(c.tag || `${c.name}@${c.version}`);
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
return { registryEquivalent, playerChange, ids: { added: idFix.added, orphans: idFix.orphans }, html, index, deckMeta, files: Object.assign(dict(), files, audioFiles), audio, writes, warnings, stats: { ...r.stats, bytes: size, files: Object.keys(files).length, audio: Object.keys(audio).length, blobs: Object.keys(blobs).length, attachments: attachList.length, liveResults } };
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
// ---------------------------------------------------------------- 知らない項目を残す(作り直しのとき)
|
|
1300
|
+
// この書き手が意味を知っている項目(ほかは知らない項目として残す)
|
|
1301
|
+
export const KNOWN = Object.freeze({
|
|
1302
|
+
index: KNOWN_INDEX,
|
|
1303
|
+
metadata: new Set(['title', 'lang', ...META_KEYS]),
|
|
1304
|
+
audio: new Set(['file', 'dur', 'cues', 'sync', 'kind', 'inputHash', 'recipe', 'recipeDigest', 'alternatives', 'processing', 'startOffset']),
|
|
1305
|
+
component: new Set(['tag', 'name', 'version', 'sha256', 'source', 'path', 'requires', 'license', 'renderers', 'subset']),
|
|
1306
|
+
theme: new Set(['name', 'version', 'sha256', 'source', 'path', 'extends']),
|
|
1307
|
+
blob: new Set(['mime', 'bytes', 'sha256', 'chunks']),
|
|
1308
|
+
// contracts.runtime:前の草案の項目。知っている項目として扱い、作り直しでは写さない(1.0 の形にはない。§7.1)
|
|
1309
|
+
version: new Set(['major', 'minor']), contracts: new Set(['source', 'runtime']), player: new Set(['name', 'version', 'title']), generator: new Set(['name', 'version', 'title']),
|
|
1310
|
+
});
|
|
1311
|
+
// src の、dst にも known にもない項目を dst に写す(同じ値の参照のまま。書き出しで JSON にする)
|
|
1312
|
+
export function copyUnknown(dst, src, known) {
|
|
1313
|
+
if (!isObj(dst) || !isObj(src)) return dst;
|
|
1314
|
+
for (const k of Object.keys(src)) if (!known.has(k) && !own(dst, k)) dst[k] = src[k];
|
|
1315
|
+
return dst;
|
|
1316
|
+
}
|
|
1317
|
+
// opts.identity:新しい docId で保存する(derivedFrom はこの書き手が付けた)。opts.lineExtensions:元の口述原稿の行から作られた拡張の名前
|
|
1318
|
+
// (今の行から作られなければ、行を消したということなので残さない)
|
|
1319
|
+
function carryUnknown(index, carry, opts) {
|
|
1320
|
+
for (const k of Object.keys(carry)) if (!KNOWN_INDEX.has(k) && !own(index, k)) index[k] = carry[k];
|
|
1321
|
+
// player は写さない:作り直しは再生器を替える(§4.1)ので、前の再生器の記録の項目はこの再生器のことではない
|
|
1322
|
+
for (const k of ['version', 'contracts', 'generator']) copyUnknown(index[k], carry[k], KNOWN[k]);
|
|
1323
|
+
if (isObj(carry.metadata)) {
|
|
1324
|
+
// 知っている項目でも、この書き手が作らなかったもの(ほかの書き手が書いた description など)は残す
|
|
1325
|
+
for (const k of Object.keys(carry.metadata)) if (k !== 'derivedFrom' && !own(index.metadata, k)) index.metadata[k] = carry.metadata[k];
|
|
1326
|
+
if (!opts.identity) {
|
|
1327
|
+
if (own(carry.metadata, 'derivedFrom')) index.metadata.derivedFrom = carry.metadata.derivedFrom;
|
|
1328
|
+
else delete index.metadata.derivedFrom;
|
|
1329
|
+
}
|
|
1330
|
+
} else if (!opts.identity) delete index.metadata.derivedFrom;
|
|
1331
|
+
if (isObj(index.audio) && isObj(carry.audio)) for (const k of Object.keys(index.audio)) copyUnknown(index.audio[k], carry.audio[k], KNOWN.audio);
|
|
1332
|
+
if (isObj(index.blobs) && isObj(carry.blobs)) for (const id of Object.keys(index.blobs)) {
|
|
1333
|
+
const c = carry.blobs[id];
|
|
1334
|
+
if (isObj(c) && c.sha256 === index.blobs[id].sha256) copyUnknown(index.blobs[id], c, KNOWN.blob);
|
|
1335
|
+
}
|
|
1336
|
+
const byKey = (list, key) => new Map((Array.isArray(list) ? list : []).filter(isObj).map((c) => [c[key], c]));
|
|
1337
|
+
for (const [list, key, known] of [['components', 'tag', KNOWN.component], ['themes', 'name', KNOWN.theme]]) {
|
|
1338
|
+
const id = (c) => list === 'components' && !c.tag ? `${c.name}@${c.version}` : c[key];
|
|
1339
|
+
const old = new Map((Array.isArray(carry[list]) ? carry[list] : []).filter(isObj).map((c) => [id(c), c]));
|
|
1340
|
+
for (const c of Array.isArray(index[list]) ? index[list] : []) {
|
|
1341
|
+
const prev = old.get(id(c));
|
|
1342
|
+
copyUnknown(c, prev, known);
|
|
1343
|
+
if (isObj(prev)) for (const field of ['subset', 'renderers', 'requires']) {
|
|
1344
|
+
if (field === 'subset' && isObj(c[field])) copyUnknown(c[field], prev[field], new Set(['keys', 'sha256']));
|
|
1345
|
+
if (field === 'renderers' && isObj(c[field]) && isObj(prev[field])) for (const n of Object.keys(c[field])) copyUnknown(c[field][n], prev[field][n], new Set(['version', 'options']));
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
if (isObj(carry.extensions)) {
|
|
1350
|
+
const ex = index.extensions || dict();
|
|
1351
|
+
for (const k of Object.keys(carry.extensions)) {
|
|
1352
|
+
const c = carry.extensions[k];
|
|
1353
|
+
if (!own(ex, k)) { if (!(opts.lineExtensions && opts.lineExtensions.has(k))) ex[k] = c; continue; }
|
|
1354
|
+
// 行から作った拡張:段階の鍵でない項目(拡張そのものの設定など)と v は元のものを残す。段階の項目は今の行が決める
|
|
1355
|
+
if (isObj(c)) for (const f of Object.keys(c)) if (!RE.stepKey.test(f) && (f === 'v' || !own(ex[k], f))) ex[k][f] = c[f];
|
|
1356
|
+
}
|
|
1357
|
+
if (Object.keys(ex).length) index.extensions = ex;
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
// 拡張の行(§8.2)→ {名前: {v: 1, <段階の鍵>: {欄: 値 | [値…]}}}(同じ欄が繰り返せば配列)
|
|
1362
|
+
export function extensionsFrom(segs) {
|
|
1363
|
+
const extensions = dict();
|
|
1364
|
+
for (const s of segs) for (const x of s.ext || []) {
|
|
1365
|
+
const ext = (extensions[x.name] ||= Object.assign(dict(), { v: 1 }));
|
|
1366
|
+
const step = (ext[`${s.slideKey}:${s.stepKey}`] ||= dict());
|
|
1367
|
+
if (!own(step, x.field)) step[x.field] = x.value;
|
|
1368
|
+
else if (Array.isArray(step[x.field])) step[x.field].push(x.value);
|
|
1369
|
+
else step[x.field] = [step[x.field], x.value];
|
|
1370
|
+
}
|
|
1371
|
+
return extensions;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
// TTS の控え(audio/seg_<digest>.json の voice)→ recipe(§5.2)。声は公開の名前だけ(パスは書かない)
|
|
1375
|
+
function recipeOf(sj, v) {
|
|
1376
|
+
const vc = sj && isObj(sj.voice) ? sj.voice : {};
|
|
1377
|
+
const voice = {};
|
|
1378
|
+
for (const role of ['expert', 'novice']) { const n = voiceName(vc[role]); if (n) voice[role] = n; }
|
|
1379
|
+
const processing = vc.norm || vc.trim || vc.pause_ms != null ? `trim=${vc.trim ?? '-'};norm=${vc.norm ?? '-'};pause_ms=${vc.pause_ms ?? '-'}` : 'unknown';
|
|
1380
|
+
return { engine: String(vc.engine || v.engine || 'unknown'), model: String(vc.model || 'unknown'), voice, seed: null, dictionary: typeof vc.yomi === 'string' ? vc.yomi : null, processing };
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
// §2.1 スクリプトなしで読める層:全段階の口述原稿の表示用の文字(スクリプトが動くと deck.js が隠す)。
|
|
1384
|
+
// 記事の中の段階は番号の小さい順、concl は最後。どのスライドにも当たらない鍵の口述原稿は入れず、warnings に知らせる
|
|
1385
|
+
// cap:書き出してよい字数(組んだ文書の上限の残り)。実体参照に直した後の字数を、その文字列を作る前に数え、超えるなら作らずに断る
|
|
1386
|
+
function readableLayer(slides, segs, lang, warnings = [], cap = Infinity) {
|
|
1387
|
+
const bySlide = new Map();
|
|
1388
|
+
for (const s of segs) { if (!bySlide.has(s.slideKey)) bySlide.set(s.slideKey, []); bySlide.get(s.slideKey).push(s); }
|
|
1389
|
+
const keys = new Set(slides.map((sl) => sl.key));
|
|
1390
|
+
for (const s of segs) if (!keys.has(s.slideKey)) warnings.push(`${LOG}: narration for "${s.slideKey}:${s.stepKey}" matches no slide; omitted from the readable layer`);
|
|
1391
|
+
let n = 0;
|
|
1392
|
+
const take = (k) => { n += k; if (n > cap) throw new BuildLimitError('portable document (readable layer)', n, cap); };
|
|
1393
|
+
const out = [];
|
|
1394
|
+
const push = (t) => { out.push(t); n += 1; }; // 1:つなぐ改行
|
|
1395
|
+
take(`<section id="${RD_ID}" lang="">`.length + escAttrLength(lang)); push(`<section id="${RD_ID}" lang="${escAttr(lang)}">`);
|
|
1396
|
+
for (const sl of slides) {
|
|
1397
|
+
const steps = (bySlide.get(sl.key) || []).slice().sort((a, b) => stepOrder(a.stepKey) - stepOrder(b.stepKey));
|
|
1398
|
+
const title = plain(sl.title || sl.key);
|
|
1399
|
+
take('<article data-slide-key=""><h2></h2>'.length + escAttrLength(sl.key) + escTextLength(title));
|
|
1400
|
+
push(`<article data-slide-key="${escAttr(sl.key)}"><h2>${escText(title)}</h2>`);
|
|
1401
|
+
for (const s of steps) { take(readableStepLength(s)); push(readableStep(s)); }
|
|
1402
|
+
take('</article>'.length); push('</article>');
|
|
1403
|
+
}
|
|
1404
|
+
take('</section>'.length); push('</section>');
|
|
1405
|
+
return out.join('\n');
|
|
1406
|
+
}
|
|
1407
|
+
// 実体参照に直した後の字数(直した文字列を作らずに数える):& → &(+4)、< > → < >(+3)、属性の " → "(+5)
|
|
1408
|
+
function escTextLength(s) {
|
|
1409
|
+
s = String(s); let n = s.length;
|
|
1410
|
+
for (let i = 0; i < s.length; i++) { const c = s.charCodeAt(i); if (c === 38) n += 4; else if (c === 60 || c === 62) n += 3; }
|
|
1411
|
+
return n;
|
|
1412
|
+
}
|
|
1413
|
+
function escAttrLength(s) {
|
|
1414
|
+
s = String(s); let n = escTextLength(s);
|
|
1415
|
+
for (let i = 0; i < s.length; i++) if (s.charCodeAt(i) === 34) n += 5;
|
|
1416
|
+
return n;
|
|
1417
|
+
}
|
|
1418
|
+
const readableStepLength = (s) => '<div data-step-key=""></div>'.length + escAttrLength(`${s.slideKey}:${s.stepKey}`) +
|
|
1419
|
+
s.turns.reduce((n, t) => n + '<p data-role=""></p>'.length + String(t.role).length + escTextLength(t.display), 0);
|
|
1420
|
+
// JSON.stringify(v) の字数の下限(文字列を作らずに数える。字下げと実体参照の分は数えない)。cap を超えたらそこで止めて返す
|
|
1421
|
+
export function jsonLowerBound(v, cap = Infinity) {
|
|
1422
|
+
let n = 0;
|
|
1423
|
+
const go = (x) => {
|
|
1424
|
+
if (n > cap) return;
|
|
1425
|
+
if (x === null || typeof x === 'boolean' || typeof x === 'number') { n += String(x).length; return; }
|
|
1426
|
+
if (typeof x === 'string') { n += x.length + 2; return; }
|
|
1427
|
+
if (Array.isArray(x)) { n += 2 + Math.max(0, x.length - 1); for (const e of x) { go(e === undefined || typeof e === 'function' ? null : e); if (n > cap) return; } return; }
|
|
1428
|
+
if (typeof x === 'object') {
|
|
1429
|
+
if (typeof x.toJSON === 'function') { go(x.toJSON()); return; }
|
|
1430
|
+
const ks = Object.keys(x).filter((k) => x[k] !== undefined && typeof x[k] !== 'function');
|
|
1431
|
+
n += 2 + Math.max(0, ks.length - 1);
|
|
1432
|
+
for (const k of ks) { n += k.length + 3; go(x[k]); if (n > cap) return; }
|
|
1433
|
+
}
|
|
1434
|
+
};
|
|
1435
|
+
go(v);
|
|
1436
|
+
return n;
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
// 読める層の 1 段階(段 A の編集が、変わった段階の div だけをこれで書き直す)
|
|
1440
|
+
export const readableStep = (s) => `<div data-step-key="${escAttr(`${s.slideKey}:${s.stepKey}`)}">` +
|
|
1441
|
+
s.turns.map((t) => `<p data-role="${t.role}">${escText(t.display)}</p>`).join('') + '</div>';
|
|
1442
|
+
export const readableStepOrder = stepOrder;
|
|
1443
|
+
export { escAttr as htmlAttr, escText as htmlText };
|
|
1444
|
+
|
|
1445
|
+
// ---------------------------------------------------------------- 読み取り(何も実行しない)
|
|
1446
|
+
// parse5 の規則で文字列として解析し(スクリプトは実行しない・資源も読まない。規則はスクリプトを動かすブラウザと同じ scriptingEnabled: true。<noscript> の中は文字)、
|
|
1447
|
+
// 形式の id(索引・塊・deck-meta・deck-audio)を持つ要素を集める。同じ id が 2 つあれば断る。
|
|
1448
|
+
// 木は上限つきで作る(kit/core/bounded-html.mjs:要素・属性・入れ子を解析の途中で数え、超えたらその場で断る。残す文字と位置は形式の id の
|
|
1449
|
+
// 要素のものだけ)。小さな要素を何百万も並べた文書でも、全部の木を作る前に止まる(§11)
|
|
1450
|
+
const WATCH = new RegExp(`^(?:${reEsc(IX_ID)}|${reEsc(BP)}.*|${reEsc(FORMAT.SIGNATURES_ID)}|deck-meta|deck-audio|deck-extensions)$`, 's');
|
|
1451
|
+
const watched = (attrs) => attrs.some((a) => a.name === 'id' && WATCH.test(a.value));
|
|
1452
|
+
export function scanDocument(text, limits = LIMITS) {
|
|
1453
|
+
const doc = boundedParse(text, { watch: watched, limits: { elements: limits.elements, attributes: limits.attributes, nesting: limits.nesting }, fail });
|
|
1454
|
+
const byId = new Map(), dups = new Set();
|
|
1455
|
+
const visit = (n) => {
|
|
1456
|
+
if (n.attrs) {
|
|
1457
|
+
const ida = n.attrs.find((a) => a.name === 'id');
|
|
1458
|
+
if (ida && WATCH.test(ida.value)) {
|
|
1459
|
+
if (byId.has(ida.value)) dups.add(ida.value);
|
|
1460
|
+
else {
|
|
1461
|
+
const at = Object.create(null); for (const a of n.attrs) if (!(a.name in at)) at[a.name] = a.value;
|
|
1462
|
+
const html = n.namespaceURI === 'http://www.w3.org/1999/xhtml';
|
|
1463
|
+
let t = ''; for (const c of n.childNodes || []) if (c.nodeName === '#text') t += c.value;
|
|
1464
|
+
byId.set(ida.value, { tag: html ? n.tagName : `${n.namespaceURI}:${n.tagName}`, attrs: at, text: t, start: n.sourceCodeLocation?.startOffset, end: n.sourceCodeLocation?.endOffset });
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
for (const c of n.childNodes || []) visit(c);
|
|
1469
|
+
if (n.content) visit(n.content);
|
|
1470
|
+
};
|
|
1471
|
+
visit(doc);
|
|
1472
|
+
return { byId, dups: [...dups] };
|
|
1473
|
+
}
|
|
1474
|
+
const isScript = (el, type) => el && el.tag === 'script' && (el.attrs.type || '').trim().toLowerCase() === type;
|
|
1475
|
+
|
|
1476
|
+
// 再生器の deck-meta(なければ null)
|
|
1477
|
+
export function readDeckMeta(scan) {
|
|
1478
|
+
const el = scan.byId.get('deck-meta');
|
|
1479
|
+
if (!isScript(el, 'application/json')) return null;
|
|
1480
|
+
try { return parseJsonStrict(el.text); } catch { return null; }
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
// 持ち運べる 1 ファイルでない文書(索引がない)が何か(読み手の知らせを分けるため。何も実行しない):
|
|
1484
|
+
// 'play-only'(再生専用の派生:deck-meta の format が形式の id)・'built'(組んだ発表の HTML:deck-meta はあるが形式の id でない)・
|
|
1485
|
+
// 'source'(デッキの原稿 deck.html:deck-meta がなく、<section class="slide"> がある)・'other'
|
|
1486
|
+
const SLIDE_SECTION = /<section\b[^>]*?\bclass\s*=\s*(?:"(?:[^"]*\s)?slide(?:\s[^"]*)?"|'(?:[^']*\s)?slide(?:\s[^']*)?'|slide(?=[\s>]))/i;
|
|
1487
|
+
const HTML_START = /^\uFEFF?\s*(?:<!--[\s\S]*?-->\s*)*<(?:!doctype\s+html|html)\b/i;
|
|
1488
|
+
export function sourceKind(text, scan, deckMeta = readDeckMeta(scan)) {
|
|
1489
|
+
if (deckMeta && deckMeta.format === FID) return 'play-only';
|
|
1490
|
+
if (scan.byId.has('deck-meta')) return 'built';
|
|
1491
|
+
return HTML_START.test(text) && SLIDE_SECTION.test(text) ? 'source' : 'other';
|
|
1492
|
+
}
|
|
1493
|
+
// input:文字列か UTF-8 のバイト列。opts.limits で上限を変えられる(試験用)
|
|
1494
|
+
// opts.extract:取り出すだけ(§7.1・§3.5・Player P7)。知らない major の版や知らない必須の機能(requires)の文書でも、1.x の規則で索引と塊の検査が
|
|
1495
|
+
// 通れば原稿を返す(編集も書き出し(作り直し)もさせない。extractOnly: true、extractReason: 'major' | 'feature')。取り出しは書き出しではない
|
|
1496
|
+
// 返すもの:{index, files: {path: Uint8Array}, audio: {stepKey: record}, deckMeta, docId, warnings, sourceMatches, extractOnly}
|
|
1497
|
+
export async function readPortable(input, opts = {}) {
|
|
1498
|
+
const L = { ...LIMITS, ...(opts.limits || {}) };
|
|
1499
|
+
// 1. ファイルの大きさ(解析の前)
|
|
1500
|
+
let text;
|
|
1501
|
+
if (typeof input === 'string') { if (utf8Length(input) > L.fileBytes) fail('file-too-large', `file is larger than ${L.fileBytes} bytes`); text = input; }
|
|
1502
|
+
else {
|
|
1503
|
+
if (input.length > L.fileBytes) fail('file-too-large', `file is larger than ${L.fileBytes} bytes`);
|
|
1504
|
+
try { text = new TextDecoder('utf-8', { fatal: true }).decode(input); } catch { fail('not-utf8', 'file is not valid UTF-8'); }
|
|
1505
|
+
}
|
|
1506
|
+
const scan = scanDocument(text, L);
|
|
1507
|
+
if (scan.dups.length) fail('duplicate-id', `duplicate element ids: ${scan.dups.slice(0, 5).join(', ')}`);
|
|
1508
|
+
const deckMeta = readDeckMeta(scan);
|
|
1509
|
+
const ixEl = scan.byId.get(IX_ID);
|
|
1510
|
+
if (!ixEl) {
|
|
1511
|
+
const kind = sourceKind(text, scan, deckMeta);
|
|
1512
|
+
fail('no-source', kind === 'play-only' ? `play-only ${FORMAT.DISPLAY_NAME} file: it carries no source to edit`
|
|
1513
|
+
: kind === 'built' ? `a built presentation (deck-meta without ${IX_ID}): it carries no source to edit`
|
|
1514
|
+
: kind === 'source' ? `a deck source file (slides without the built runtime): open its folder, or open the file alone`
|
|
1515
|
+
: `not a portable ${FORMAT.DISPLAY_NAME} file (no ${IX_ID})`, { kind });
|
|
1516
|
+
}
|
|
1517
|
+
if (!isScript(ixEl, FORMAT.MIME)) fail('bad-index', `${IX_ID} is not a <script type="${FORMAT.MIME}">`);
|
|
1518
|
+
// 2. 索引の大きさ(JSON.parse の前)とハッシュ
|
|
1519
|
+
if (utf8Length(ixEl.text) > L.indexBytes) fail('index-too-large', `index is larger than ${L.indexBytes} bytes`);
|
|
1520
|
+
const want = (ixEl.attrs['data-sha256'] || '').trim();
|
|
1521
|
+
if (!RE.sha256.test(want)) fail('bad-index-hash', `${IX_ID} has no valid data-sha256`);
|
|
1522
|
+
if (await sha256Hex(ixEl.text) !== want) fail('bad-index-hash', `${IX_ID} data-sha256 does not match its content`);
|
|
1523
|
+
const ix = parseJsonStrict(ixEl.text, { maxMembers: L.members, maxDepth: L.jsonDepth });
|
|
1524
|
+
// 3. 版・必須の機能(形の検査より先に、分かりやすい理由で断る)
|
|
1525
|
+
if (!isObj(ix) || ix.format !== FID) fail('bad-index', `index format is not "${FID}"`);
|
|
1526
|
+
const futureMajor = !isObj(ix.version) || ix.version.major !== FORMAT_VERSION.major;
|
|
1527
|
+
const majorOk = !futureMajor || (isObj(ix.version) && Number.isInteger(ix.version.major) && ix.version.major > FORMAT_VERSION.major);
|
|
1528
|
+
const unknownFeatures = Array.isArray(ix.requires) ? ix.requires.filter((f) => typeof f === 'string' && !FEATURES.includes(f)) : [];
|
|
1529
|
+
if (futureMajor && !(opts.extract && majorOk)) fail('unsupported-version', `${FORMAT.DISPLAY_NAME} ${isObj(ix.version) ? ix.version.major : '?'}.x is not supported by this reader (it reads 1.x); play the file or extract its source`);
|
|
1530
|
+
if (unknownFeatures.length && !opts.extract) fail('unknown-feature', `the file requires features this reader does not implement: ${unknownFeatures.join(', ')} (it can be played, and its source extracted, but not edited or re-exported)`);
|
|
1531
|
+
const extractOnly = futureMajor || unknownFeatures.length > 0;
|
|
1532
|
+
if (!extractOnly && isObj(ix.contracts) && Number.isInteger(ix.contracts.source) && ix.contracts.source > CONTRACTS.source) fail('unsupported-contract', `source contract ${ix.contracts.source} is newer than this reader (${CONTRACTS.source})`);
|
|
1533
|
+
// 4. パス(フォルダを作る前に全部。形の検査より先に、パスの理由で断る)
|
|
1534
|
+
if (isObj(ix.files)) {
|
|
1535
|
+
const fp = Object.keys(ix.files);
|
|
1536
|
+
if (fp.length > L.files) fail('too-many-files', `more than ${L.files} files`);
|
|
1537
|
+
const pe = checkArchivePaths(fp, L);
|
|
1538
|
+
if (pe.length) fail('bad-path', 'archive paths are not allowed: ' + pe.slice(0, 8).join('; '), pe);
|
|
1539
|
+
// audio/manifest.json は index.audio から作るもの(§3.3)。入っていれば、展開で記録と食い違うので断る
|
|
1540
|
+
if (fp.some((p) => foldPath(p) === 'audio/manifest.json')) fail('bad-path', 'audio/manifest.json must not be in files (it is derived from index.audio)');
|
|
1541
|
+
}
|
|
1542
|
+
// 1.0 の形より前の草案の文書(player がない。§7.1):今までどおり読む(player がないことは問わない)。preDraft を返し、編集器が知らせる・断る
|
|
1543
|
+
const preDraft = !own(ix, 'player');
|
|
1544
|
+
const errs = validateIndex(ix).filter((x) => !(extractOnly && /^version\.major:/.test(x)) && !(preDraft && x === 'index: missing "player"'));
|
|
1545
|
+
if (errs.length) fail('invalid-index', 'index is invalid: ' + errs.slice(0, 8).join('; '), errs);
|
|
1546
|
+
const paths = Object.keys(ix.files);
|
|
1547
|
+
if (own(ix, 'entry') && !own(ix.files, ix.entry)) fail('invalid-index', `entry "${ix.entry}" is not in files`);
|
|
1548
|
+
if (isObj(ix.article) && !own(ix.files, ix.article.path)) fail('invalid-index', `article.path "${ix.article.path}" is not in files`);
|
|
1549
|
+
for (const p of paths) if (!own(ix.blobs, ix.files[p])) fail('invalid-index', `files["${p}"] refers to a missing blob ${ix.files[p]}`);
|
|
1550
|
+
if (ix.audio) for (const [k, a] of Object.entries(ix.audio)) {
|
|
1551
|
+
if (!own(ix.files, a.file)) fail('invalid-index', `audio["${k}"].file "${a.file}" is not in files`);
|
|
1552
|
+
for (const alt of a.alternatives || []) if (!own(ix.files, alt.file)) fail('invalid-index', `audio["${k}"] alternative "${alt.file}" is not in files`);
|
|
1553
|
+
}
|
|
1554
|
+
// 5. 塊:使う塊だけ、宣言の大きさ → 1 つずつの長さ(復号の前)→ 復号した累計
|
|
1555
|
+
const used = [...new Set(paths.map((p) => ix.files[p]))];
|
|
1556
|
+
let declared = 0;
|
|
1557
|
+
for (const id of used) {
|
|
1558
|
+
const b = ix.blobs[id];
|
|
1559
|
+
if (b.bytes > L.fileMax) fail('file-too-large', `blob ${id} is larger than ${L.fileMax} bytes`);
|
|
1560
|
+
declared += b.bytes;
|
|
1561
|
+
b.chunks.forEach((c, j) => { if (c !== `${BP}${id}-${j}`) fail('bad-chunk-id', `blob ${id}: chunk ${j} is "${c}", expected "${BP}${id}-${j}"`); });
|
|
1562
|
+
if (b.chunks.length - 1 > L.chunkMax) fail('bad-chunk-id', `blob ${id}: too many chunks`);
|
|
1563
|
+
if (paths.some((p) => ix.files[p] === id && p.startsWith('audio/')) && !AUDIO_MIME.has(b.mime)) fail('bad-mime', `blob ${id} is used as audio but its type is ${b.mime}`);
|
|
1564
|
+
}
|
|
1565
|
+
if (declared > L.archiveBytes) fail('archive-too-large', `archive is larger than ${L.archiveBytes} bytes`);
|
|
1566
|
+
// 取り出した大きさ(論理):パスごとの塊の大きさの合計(いくつものパスが 1 つの塊を指せる)。パスごとの写しを作る前、復号の前に(§11)
|
|
1567
|
+
let logical = 0;
|
|
1568
|
+
for (const p of paths) logical += ix.blobs[ix.files[p]].bytes;
|
|
1569
|
+
if (logical > L.archiveBytes) fail('archive-too-large', `extracted files (counted per path) would be larger than ${L.archiveBytes} bytes`);
|
|
1570
|
+
const blobBytes = new Map();
|
|
1571
|
+
let total = 0;
|
|
1572
|
+
for (const id of used) {
|
|
1573
|
+
const b = ix.blobs[id], parts = [];
|
|
1574
|
+
let len = 0;
|
|
1575
|
+
for (const c of b.chunks) {
|
|
1576
|
+
const el = scan.byId.get(c);
|
|
1577
|
+
if (!el) fail('missing-chunk', `chunk ${c} is missing`);
|
|
1578
|
+
if (!isScript(el, 'application/octet-stream')) fail('bad-chunk', `chunk ${c} is not a <script type="application/octet-stream">`);
|
|
1579
|
+
if (el.text.length > L.chunkChars) fail('chunk-too-large', `chunk ${c} is longer than ${L.chunkChars} characters`);
|
|
1580
|
+
const d = fromBase64(el.text);
|
|
1581
|
+
if (!d) fail('bad-chunk', `chunk ${c} is not base64 (RFC 4648 §4, no line breaks)`);
|
|
1582
|
+
if (d.length > L.chunkBytes) fail('chunk-too-large', `chunk ${c} decodes to more than ${L.chunkBytes} bytes`);
|
|
1583
|
+
total += d.length; len += d.length;
|
|
1584
|
+
if (total > L.archiveBytes) fail('archive-too-large', `decoded archive is larger than ${L.archiveBytes} bytes`);
|
|
1585
|
+
if (len > b.bytes) fail('bad-blob', `blob ${id} is longer than declared`);
|
|
1586
|
+
parts.push(d);
|
|
1587
|
+
}
|
|
1588
|
+
const out = new Uint8Array(len);
|
|
1589
|
+
let o = 0; for (const d of parts) { out.set(d, o); o += d.length; }
|
|
1590
|
+
if (len !== b.bytes) fail('bad-blob', `blob ${id} has ${len} bytes, expected ${b.bytes}`);
|
|
1591
|
+
if (await sha256Hex(out) !== b.sha256) fail('bad-blob', `blob ${id} is corrupt (sha256 mismatch)`);
|
|
1592
|
+
blobBytes.set(id, out);
|
|
1593
|
+
}
|
|
1594
|
+
// 取り出した原稿に書かれたタグの数(「<」と英字・「/」・「!」の並び。拡張子によらず、組み立てが取り込みうるどのファイルも)。
|
|
1595
|
+
// 編集器は取り出した原稿を組み・調べるので、その解析の大きさもここで抑える(同じ塊は 1 回だけ数え、パスの数を掛ける)
|
|
1596
|
+
let tags = 0;
|
|
1597
|
+
for (const id of used) {
|
|
1598
|
+
const b = blobBytes.get(id);
|
|
1599
|
+
let n = 0;
|
|
1600
|
+
for (let i = 0, e = b.length - 1; i < e; i++) if (b[i] === 0x3c) { const c = b[i + 1] | 0x20; if ((c >= 0x61 && c <= 0x7a) || b[i + 1] === 0x2f || b[i + 1] === 0x21) n++; }
|
|
1601
|
+
tags += n * paths.filter((p) => ix.files[p] === id && !isAttachPath(p)).length; // 添付は組み立ても解析もしない(§3.8)
|
|
1602
|
+
if (tags > L.sourceTags) fail('too-complex', `the source files contain more than ${L.sourceTags} tags`);
|
|
1603
|
+
}
|
|
1604
|
+
const files = dict();
|
|
1605
|
+
for (const p of paths) files[p] = blobBytes.get(ix.files[p]);
|
|
1606
|
+
// 設定のファイル(FORMAT.CONFIG_FILE):あれば、その docId は索引の docId と同じであること(§3.3)
|
|
1607
|
+
if (own(files, CFG)) {
|
|
1608
|
+
let c;
|
|
1609
|
+
try { c = parseJsonStrict(new TextDecoder('utf-8', { fatal: true }).decode(files[CFG]), { maxMembers: L.members, maxDepth: L.jsonDepth }); }
|
|
1610
|
+
catch (e) { fail('bad-config', `${CFG}: ${e.message}`); }
|
|
1611
|
+
if (!isObj(c) || c.docId !== ix.docId) fail('docid-mismatch', `${CFG}: docId ${isObj(c) && typeof c.docId === 'string' ? `"${c.docId.slice(0, 40)}"` : '(missing)'} differs from the index docId ${ix.docId}`);
|
|
1612
|
+
// §3.3:attachments があれば index.attachments と同じであること(展開して組み直すと一覧が変わるので断る)
|
|
1613
|
+
if (!configAttachmentsMatch(c, ix)) fail('attachments-mismatch', `${CFG}: attachments differ from the index attachments (they must be equal, §3.3)`);
|
|
1614
|
+
}
|
|
1615
|
+
const audio = dict();
|
|
1616
|
+
if (ix.audio) for (const k of Object.keys(ix.audio)) audio[k] = ix.audio[k];
|
|
1617
|
+
// 6. ずれの確認(断らない。知らせて、段 A の編集を止めるのは編集器の役目)
|
|
1618
|
+
const warnings = [];
|
|
1619
|
+
const shas = dict();
|
|
1620
|
+
for (const p of paths) shas[p] = ix.blobs[ix.files[p]].sha256;
|
|
1621
|
+
const computed = await sourceSha256(shas);
|
|
1622
|
+
// §3.4:索引の値・計算し直した値・deck-meta の値のどれか 2 つが違えば「組んだ教材と原稿が食い違う」(段 A の編集はしない)
|
|
1623
|
+
if (computed !== ix.sourceSha256) warnings.push('the compiled lesson and its source disagree (the index sourceSha256 does not match its files): tier A edits are not allowed');
|
|
1624
|
+
const sourceMatches = !!deckMeta && deckMeta.sourceSha256 === ix.sourceSha256 && computed === ix.sourceSha256;
|
|
1625
|
+
if (!deckMeta) warnings.push('no deck-meta in the runtime layer');
|
|
1626
|
+
else {
|
|
1627
|
+
for (const e of validateDeckMeta(deckMeta, { preDraft })) warnings.push(e);
|
|
1628
|
+
if (deckMeta.sourceSha256 !== ix.sourceSha256) warnings.push('the compiled lesson and its source disagree (deck-meta.sourceSha256 differs from the index): tier A edits are not allowed');
|
|
1629
|
+
if (deckMeta.docId !== ix.docId) warnings.push('deck-meta.docId differs from the index docId');
|
|
1630
|
+
}
|
|
1631
|
+
// ファイルの決まり(§4.2):置き場所と中身(基準と、実行系が宣言した拡張の行き先だけ)。合わなければ知らせる(再生はできる。前の草案には決まりがない)
|
|
1632
|
+
if (preDraft) warnings.push(`the file was made with a draft of ${FORMAT.DISPLAY_NAME} before the 1.0 file shape (no player, §7.1)`);
|
|
1633
|
+
else for (const p of checkFilePolicy(text)) warnings.push(`not conforming: ${p}`);
|
|
1634
|
+
const da = scan.byId.get('deck-audio');
|
|
1635
|
+
if (isScript(da, 'application/json')) {
|
|
1636
|
+
try {
|
|
1637
|
+
const dj = parseJsonStrict(da.text);
|
|
1638
|
+
for (const [k, a] of Object.entries(dj)) {
|
|
1639
|
+
const m = isObj(a) && typeof a.src === 'string' && a.src.match(SRC_RE);
|
|
1640
|
+
if (m && !scan.byId.has(`${BP}${m[1]}-0`)) warnings.push(`deck-audio["${k}"] refers to a missing blob ${m[1]}`);
|
|
1641
|
+
}
|
|
1642
|
+
} catch (e) { warnings.push('deck-audio: ' + e.message); }
|
|
1643
|
+
}
|
|
1644
|
+
for (const w of attachmentIndexWarnings(ix)) warnings.push(w);
|
|
1645
|
+
if (futureMajor) warnings.push(`${FORMAT.DISPLAY_NAME} ${ix.version.major}.${ix.version.minor} is newer than this reader (1.x): the source can be extracted, not edited`);
|
|
1646
|
+
if (unknownFeatures.length) warnings.push(`the file requires features this reader does not implement (${unknownFeatures.join(', ')}): the source can be extracted, not edited or re-exported`);
|
|
1647
|
+
return { index: ix, files, audio, deckMeta, docId: ix.docId, warnings, sourceMatches, preDraft, extractOnly, extractReason: futureMajor ? 'major' : unknownFeatures.length ? 'feature' : null };
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
// ---------------------------------------------------------------- 再生専用の派生(§3.7)
|
|
1651
|
+
// 索引と、deck-audio が <scheme><blob> で参照しない塊を除く。deck-meta は portable: false、sourceSha256 なし、docId は残す
|
|
1652
|
+
export function playOnly(text) {
|
|
1653
|
+
const scan = scanDocument(text);
|
|
1654
|
+
if (scan.dups.length) fail('duplicate-id', `duplicate element ids: ${scan.dups.slice(0, 5).join(', ')}`);
|
|
1655
|
+
const meta = readDeckMeta(scan), metaEl = scan.byId.get('deck-meta');
|
|
1656
|
+
if (!meta || meta.format !== FID) fail('not-portable', `not a ${FORMAT.DISPLAY_NAME} file (no deck-meta with format "${FID}")`);
|
|
1657
|
+
const keep = new Set();
|
|
1658
|
+
const da = scan.byId.get('deck-audio');
|
|
1659
|
+
if (isScript(da, 'application/json')) {
|
|
1660
|
+
for (const a of Object.values(parseJsonStrict(da.text))) {
|
|
1661
|
+
const m = isObj(a) && typeof a.src === 'string' && a.src.match(SRC_RE);
|
|
1662
|
+
if (m) keep.add(m[1]);
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
const cut = [];
|
|
1666
|
+
for (const [id, el] of scan.byId) {
|
|
1667
|
+
if (el.start == null) continue;
|
|
1668
|
+
const m = id.match(RE.chunkId);
|
|
1669
|
+
if (id === IX_ID || (m && !keep.has(m[1]))) cut.push([el.start, el.end]);
|
|
1670
|
+
}
|
|
1671
|
+
const nm = { ...meta, portable: false };
|
|
1672
|
+
delete nm.sourceSha256;
|
|
1673
|
+
// The editor may have opened a file whose higher-version extension exists only
|
|
1674
|
+
// in the index. Preserve it before removing that index, without changing CSP.
|
|
1675
|
+
const ixEl = scan.byId.get(IX_ID), extEl = scan.byId.get(RUNTIME_EXT_ID);
|
|
1676
|
+
const extensions = ixEl ? parseJsonStrict(ixEl.text).extensions : null;
|
|
1677
|
+
const runtime = extEl ? parseJsonStrict(extEl.text) : {};
|
|
1678
|
+
let added = false;
|
|
1679
|
+
if (isObj(extensions) && isObj(runtime)) for (const name of ['live', 'embed']) {
|
|
1680
|
+
const x = extensions[name];
|
|
1681
|
+
if (isObj(x) && Number.isInteger(x.v) && x.v > 1 && !own(runtime, name)) { runtime[name] = x; added = true; }
|
|
1682
|
+
}
|
|
1683
|
+
const block = added ? '\n' + jsonScript(RUNTIME_EXT_ID, runtime) : '';
|
|
1684
|
+
if (added && extEl) cut.push([extEl.start, extEl.end, block]);
|
|
1685
|
+
cut.push([metaEl.start, metaEl.end, jsonScript('deck-meta', nm) + (extEl ? '' : block)]);
|
|
1686
|
+
cut.sort((a, b) => b[0] - a[0]);
|
|
1687
|
+
let out = text;
|
|
1688
|
+
for (const [s, e, rep] of cut) {
|
|
1689
|
+
const end = rep === undefined && out[e] === '\n' ? e + 1 : e;
|
|
1690
|
+
out = out.slice(0, s) + (rep ?? '') + out.slice(end);
|
|
1691
|
+
}
|
|
1692
|
+
return out;
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
// ---------------------------------------------------------------- 展開したフォルダの audio/manifest.json(tts/synth.py と build が読む形)
|
|
1696
|
+
// 音声の記録(index.audio)から作る。kind・inputHash・recipe・sync も残し、もう一度書き出すと同じ記録になるように
|
|
1697
|
+
export function manifestFromAudio(audio) {
|
|
1698
|
+
const segments = {};
|
|
1699
|
+
for (const k of Object.keys(audio)) { // 索引と同じ順(口述原稿の順)
|
|
1700
|
+
const a = audio[k];
|
|
1701
|
+
const e = { file: a.file.slice('audio/'.length), dur: a.dur, cues: a.cues };
|
|
1702
|
+
if (a.recipeDigest) e.digest = a.recipeDigest;
|
|
1703
|
+
if (a.recipe && a.recipe.engine) e.engine = a.recipe.engine;
|
|
1704
|
+
e.kind = a.kind; e.inputHash = a.inputHash;
|
|
1705
|
+
if (a.sync && a.sync !== 'auto') e.sync = a.sync;
|
|
1706
|
+
if (a.recipe) e.recipe = a.recipe;
|
|
1707
|
+
if (typeof a.processing === 'string') e.processing = a.processing;
|
|
1708
|
+
if (isOffset(a.startOffset) && a.startOffset > 0) e.startOffset = a.startOffset;
|
|
1709
|
+
segments[k] = e;
|
|
1710
|
+
}
|
|
1711
|
+
return JSON.stringify({ segments }, null, 1) + '\n';
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
// 試験用・仕様の試験用の文書を作る道具:索引を差し替え、data-sha256 を付け直す(indexText は JSON の文字列そのもの)
|
|
1715
|
+
export async function replaceIndexText(html, indexText) {
|
|
1716
|
+
const scan = scanDocument(html);
|
|
1717
|
+
const el = scan.byId.get(IX_ID);
|
|
1718
|
+
if (!el) fail('no-source', `no ${IX_ID}`);
|
|
1719
|
+
const t = htmlSafeJson(indexText);
|
|
1720
|
+
return html.slice(0, el.start) + `<script type="${FORMAT.MIME}" id="${IX_ID}" data-sha256="${await sha256Hex(t)}">${t}</script>` + html.slice(el.end);
|
|
1721
|
+
}
|