diff --git a/.agents/justifications/.gitkeep b/.agents/justifications/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/.agents/plans/.gitkeep b/.agents/plans/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/.agents/plans/swift-pink-sky-simplewebauthn-v13-upgrade.md b/.agents/plans/swift-pink-sky-simplewebauthn-v13-upgrade.md new file mode 100644 index 000000000..8ca225c13 --- /dev/null +++ b/.agents/plans/swift-pink-sky-simplewebauthn-v13-upgrade.md @@ -0,0 +1,186 @@ +--- +date: 2026-01-14 +title: Simplewebauthn V13 Upgrade +--- + +## Overview + +Upgrade SimpleWebAuthn packages from v9.x to v13.x to address the deprecation of `@simplewebauthn/types` and take advantage of new features and improvements. + +## Current State + +The codebase currently uses: +- `@simplewebauthn/browser@9.x` +- `@simplewebauthn/server@9.x` +- `@simplewebauthn/types@9.x` + +## Breaking Changes Summary (v9 → v13) + +### v10.0.0 Breaking Changes +1. **Minimum Node version raised to Node v20** +2. **`generateRegistrationOptions()` now expects `Base64URLString` for `excludeCredentials` IDs** (no more `type: 'public-key'` needed) +3. **`generateAuthenticationOptions()` now expects `Base64URLString` for `allowCredentials` IDs** +4. **`credentialID` returned from verification methods is now `Base64URLString`** instead of `Uint8Array` +5. **`AuthenticatorDevice.credentialID` is now `Base64URLString`** +6. **`rpID` is now required when calling `generateAuthenticationOptions()`** +7. **`generateRegistrationOptions()` will generate random user IDs** if not provided +8. **`user.id` is treated as base64url string in `startRegistration()`** +9. **`userHandle` is treated as base64url string in `startAuthentication()`** + +### v11.0.0 Breaking Changes +1. **Positional arguments in `startRegistration()` and `startAuthentication()` replaced by object** + - Before: `startRegistration(options)` + - After: `startRegistration({ optionsJSON: options })` + - Before: `startAuthentication(options)` + - After: `startAuthentication({ optionsJSON: options })` +2. **`AuthenticatorDevice` type renamed to `WebAuthnCredential`** + - `credentialID` → `credential.id` + - `credentialPublicKey` → `credential.publicKey` +3. **`verifyRegistrationResponse()` returns `registrationInfo.credential` instead of individual properties** + - `credentialID` → `credential.id` + - `credentialPublicKey` → `credential.publicKey` + - `counter` → `credential.counter` + - `transports` are now in `credential.transports` +4. **`verifyAuthenticationResponse()` uses `credential` argument instead of `authenticator`** + +### v13.0.0 Breaking Changes +1. **`@simplewebauthn/types` package is retired** + - Types are now exported from `@simplewebauthn/browser` and `@simplewebauthn/server` + - Import types from `@simplewebauthn/server` instead + +## Files to Update + +### Package Changes +1. Remove `@simplewebauthn/types` dependency +2. Update `@simplewebauthn/browser` to `^13.2.2` +3. Update `@simplewebauthn/server` to `^13.2.2` + +### Server-side Files + +#### 1. `packages/lib/server-only/auth/create-passkey-registration-options.ts` +- Change import from `@simplewebauthn/types` to `@simplewebauthn/server` +- Remove `type: 'public-key'` from `excludeCredentials` items +- Update `userID` to use `isoUint8Array.fromUTF8String()` for proper encoding + +#### 2. `packages/lib/server-only/auth/create-passkey-authentication-options.ts` +- Change import from `@simplewebauthn/types` to `@simplewebauthn/server` +- Remove `type: 'public-key'` from `allowCredentials` items + +#### 3. `packages/lib/server-only/auth/create-passkey-signin-options.ts` +- No changes needed (already using correct options) + +#### 4. `packages/lib/server-only/auth/create-passkey.ts` +- Change import from `@simplewebauthn/types` to `@simplewebauthn/server` +- Update to use new `registrationInfo.credential` structure: + - `credentialID` → `credential.id` + - `credentialPublicKey` → `credential.publicKey` + - `counter` → `credential.counter` +- Note: `credential.id` is now a `Base64URLString`, so `Buffer.from(credentialID)` needs updating + +#### 5. `packages/lib/server-only/document/is-recipient-authorized.ts` +- Update `verifyAuthenticationResponse()` to use `credential` instead of `authenticator`: + - Change `authenticator: { credentialID, credentialPublicKey, counter }` to `credential: { id, publicKey, counter }` +- Since `credential.id` is now base64url string, convert stored `credentialId` buffer to base64url + +#### 6. `packages/auth/server/routes/passkey.ts` +- Update `verifyAuthenticationResponse()` to use `credential` instead of `authenticator` +- Same changes as `is-recipient-authorized.ts` + +#### 7. `packages/trpc/server/auth-router/create-passkey.ts` +- Change import from `@simplewebauthn/types` to `@simplewebauthn/server` + +### Browser-side Files + +#### 8. `apps/remix/app/components/dialogs/passkey-create-dialog.tsx` +- Update `startRegistration()` call: + - Before: `startRegistration(passkeyRegistrationOptions)` + - After: `startRegistration({ optionsJSON: passkeyRegistrationOptions })` + +#### 9. `apps/remix/app/components/forms/signin.tsx` +- Update `startAuthentication()` call: + - Before: `startAuthentication(options)` + - After: `startAuthentication({ optionsJSON: options })` + +#### 10. `apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx` +- Update `startAuthentication()` call: + - Before: `startAuthentication(options)` + - After: `startAuthentication({ optionsJSON: options })` + +### Database/Schema Considerations + +The database stores `credentialId` as `Bytes`. The new API returns `credential.id` as `Base64URLString`. We need to: +1. When **storing** a new passkey: Convert from `Base64URLString` to `Buffer` +2. When **passing to verification**: Convert from `Buffer` to `Base64URLString` + +Use `isoBase64URL` helper from `@simplewebauthn/server/helpers` for these conversions. + +## Implementation Steps + +### Step 1: Update package.json dependencies +```bash +npm uninstall @simplewebauthn/types +npm install @simplewebauthn/browser@^13.2.2 @simplewebauthn/server@^13.2.2 +``` + +### Step 2: Update type imports +Replace all `@simplewebauthn/types` imports with `@simplewebauthn/server` + +### Step 3: Update browser-side API calls +- `startRegistration(options)` → `startRegistration({ optionsJSON: options })` +- `startAuthentication(options)` → `startAuthentication({ optionsJSON: options })` + +### Step 4: Update server-side registration +- Update `excludeCredentials` format (remove `type: 'public-key'`) +- Update `userID` encoding if needed +- Update `verifyRegistrationResponse()` result handling for new `credential` structure + +### Step 5: Update server-side authentication +- Update `allowCredentials` format (remove `type: 'public-key'`) +- Update `verifyAuthenticationResponse()` to use `credential` instead of `authenticator` +- Handle `Base64URLString` for `credential.id` + +### Step 6: Update credential storage/retrieval +- When storing: Convert `Base64URLString` to `Buffer` +- When reading: Convert `Buffer` to `Base64URLString` + +### Step 7: Test passkey flows +1. Test passkey creation +2. Test passkey sign-in +3. Test passkey authentication for document signing +4. Test passkey deletion + +## Code Examples + +### Converting stored Buffer to Base64URLString for verification +```typescript +import { isoBase64URL } from '@simplewebauthn/server/helpers'; + +// When reading from database (Buffer) and passing to verification +const credential = { + id: isoBase64URL.fromBuffer(passkey.credentialId), + publicKey: new Uint8Array(passkey.credentialPublicKey), + counter: Number(passkey.counter), + transports: passkey.transports, +}; +``` + +### Converting Base64URLString to Buffer for storage +```typescript +import { isoBase64URL } from '@simplewebauthn/server/helpers'; + +// When storing from registration response +const credentialIdBuffer = Buffer.from( + isoBase64URL.toBuffer(registrationInfo.credential.id) +); +``` + +## Risks and Mitigations + +1. **Database compatibility**: The `credentialId` is stored as `Bytes` in the database. The new API uses `Base64URLString`. We need proper conversion functions. + - **Mitigation**: Use `isoBase64URL.fromBuffer()` and `isoBase64URL.toBuffer()` for conversions + +2. **Existing passkeys**: Existing passkeys should continue to work as long as conversion is done correctly. + - **Mitigation**: Test with existing passkeys after upgrade + +3. **Browser compatibility**: v10+ requires newer browser APIs. + - **Mitigation**: `browserSupportsWebAuthn()` already handles this check \ No newline at end of file diff --git a/.agents/scratches/.gitkeep b/.agents/scratches/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/.env.example b/.env.example index 7b8872b69..9f842a7f9 100644 --- a/.env.example +++ b/.env.example @@ -13,18 +13,30 @@ NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY="DEADBEEF" # https://docs.documenso.com/developers/self-hosting/setting-up-oauth-providers#google-oauth-gmail NEXT_PRIVATE_GOOGLE_CLIENT_ID="" NEXT_PRIVATE_GOOGLE_CLIENT_SECRET="" +# Find documentation on setting up Microsoft OAuth here: +# https://docs.documenso.com/developers/self-hosting/setting-up-oauth-providers#microsoft-oauth-azure-ad +NEXT_PRIVATE_MICROSOFT_CLIENT_ID="" +NEXT_PRIVATE_MICROSOFT_CLIENT_SECRET="" NEXT_PRIVATE_OIDC_WELL_KNOWN="" NEXT_PRIVATE_OIDC_CLIENT_ID="" NEXT_PRIVATE_OIDC_CLIENT_SECRET="" NEXT_PRIVATE_OIDC_PROVIDER_LABEL="OIDC" NEXT_PRIVATE_OIDC_SKIP_VERIFY="" +# Specifies the prompt to use for OIDC signin, explicitly setting +# an empty string will omit the prompt parameter. +# See: https://www.cerberauth.com/blog/openid-connect-oauth2-prompts/ +NEXT_PRIVATE_OIDC_PROMPT="login" # [[URLS]] NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000" # URL used by the web app to request itself (e.g. local background jobs) NEXT_PRIVATE_INTERNAL_WEBAPP_URL="http://localhost:3000" +# [[SERVER]] +# OPTIONAL: The port the server will listen on. Defaults to 3000. +PORT=3000 + # [[DATABASE]] NEXT_PRIVATE_DATABASE_URL="postgres://documenso:password@127.0.0.1:54320/documenso" # Defines the URL to use for the database when running migrations and other commands that won't work with a connection pool. @@ -126,6 +138,23 @@ NEXT_PUBLIC_POSTHOG_KEY="" NEXT_PUBLIC_FEATURE_BILLING_ENABLED= # OPTIONAL: Leave blank to allow users to signup through /signup page. NEXT_PUBLIC_DISABLE_SIGNUP= +# OPTIONAL: Set to true to use internal webapp url in browserless requests. +NEXT_PUBLIC_USE_INTERNAL_URL_BROWSERLESS=false + +# [[TELEMETRY]] +# OPTIONAL: Set to "true" to disable anonymous telemetry for self-hosted instances. +# Telemetry helps us understand how Documenso is being used and improve the product. +# We only collect: app version, installation ID, and node ID. No personal data is collected. +DOCUMENSO_DISABLE_TELEMETRY= + +# [[AI]] +# OPTIONAL: Google Cloud Project ID for Vertex AI. +GOOGLE_VERTEX_PROJECT_ID="" +# OPTIONAL: Google Cloud region for Vertex AI. Defaults to "global". +GOOGLE_VERTEX_LOCATION="global" +# OPTIONAL: API key for Google Vertex AI (Gemini). Get your key from: +# https://console.cloud.google.com/vertex-ai/studio/settings/api-keys +GOOGLE_VERTEX_API_KEY="" # [[E2E Tests]] E2E_TEST_AUTHENTICATE_USERNAME="Test User" diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index a1eb7453b..274a22f2e 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -1,14 +1,19 @@ name: Playwright Tests on: push: - branches: ['main', 'feat/rr7'] + branches: ['main'] pull_request: branches: ['main'] + +concurrency: + group: ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: e2e_tests: name: 'E2E Tests' timeout-minutes: 60 - runs-on: warp-ubuntu-2204-x64-16x + runs-on: warp-ubuntu-2204-x64-8x steps: - uses: actions/checkout@v4 @@ -28,9 +33,6 @@ jobs: - name: Seed the database run: npm run prisma:seed - - name: Build app - run: npm run build - - name: Install playwright browsers run: npx playwright install --with-deps @@ -45,7 +47,7 @@ jobs: with: name: test-results path: 'packages/app-tests/**/test-results/*' - retention-days: 30 + retention-days: 7 env: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ vars.TURBO_TEAM }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a2fb4ddf2..962da1ec9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -36,6 +36,8 @@ jobs: - name: Build the docker image env: BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }} + NEXT_PRIVATE_TELEMETRY_KEY: ${{ secrets.NEXT_PRIVATE_TELEMETRY_KEY }} + NEXT_PRIVATE_TELEMETRY_HOST: ${{ secrets.NEXT_PRIVATE_TELEMETRY_HOST }} run: | APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" GIT_SHA="$(git rev-parse HEAD)" @@ -43,6 +45,8 @@ jobs: docker build \ -f ./docker/Dockerfile \ --progress=plain \ + --build-arg NEXT_PRIVATE_TELEMETRY_KEY="${NEXT_PRIVATE_TELEMETRY_KEY:-}" \ + --build-arg NEXT_PRIVATE_TELEMETRY_HOST="${NEXT_PRIVATE_TELEMETRY_HOST:-}" \ -t "documenso/documenso-$BUILD_PLATFORM:latest" \ -t "documenso/documenso-$BUILD_PLATFORM:$GIT_SHA" \ -t "documenso/documenso-$BUILD_PLATFORM:$APP_VERSION" \ @@ -61,6 +65,47 @@ jobs: env: BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }} + - name: Build the chromium docker image + env: + BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }} + run: | + APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" + GIT_SHA="$(git rev-parse HEAD)" + + docker build \ + -f ./docker/Dockerfile.chromium \ + --progress=plain \ + --build-arg TAG="$GIT_SHA" \ + -t "documenso/documenso-$BUILD_PLATFORM:latest-chromium" \ + -t "documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" \ + -t "documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \ + -t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:latest-chromium" \ + -t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" \ + -t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \ + . + + - name: Push the chromium docker image to DockerHub + env: + BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }} + run: | + APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" + GIT_SHA="$(git rev-parse HEAD)" + + docker push "documenso/documenso-$BUILD_PLATFORM:latest-chromium" + docker push "documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" + docker push "documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \ + + - name: Push the chromium docker image to GitHub Container Registry + env: + BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }} + run: | + APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" + GIT_SHA="$(git rev-parse HEAD)" + + docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:latest-chromium" + docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" + docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" + create_and_publish_manifest: name: Create and publish manifest runs-on: ubuntu-latest @@ -121,6 +166,43 @@ jobs: docker manifest push documenso/documenso:$GIT_SHA docker manifest push documenso/documenso:$APP_VERSION + - name: Create and push DockerHub chromium manifest + run: | + APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" + GIT_SHA="$(git rev-parse HEAD)" + + # Check if the version is stable (no rc or beta in the version) + if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + docker manifest create \ + documenso/documenso:latest-chromium \ + --amend documenso/documenso-amd64:latest-chromium \ + --amend documenso/documenso-arm64:latest-chromium + + docker manifest push documenso/documenso:latest-chromium + fi + + if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ ]]; then + docker manifest create \ + documenso/documenso:rc-chromium \ + --amend documenso/documenso-amd64:rc-chromium \ + --amend documenso/documenso-arm64:rc-chromium + + docker manifest push documenso/documenso:rc-chromium + fi + + docker manifest create \ + documenso/documenso:$GIT_SHA-chromium \ + --amend documenso/documenso-amd64:$GIT_SHA-chromium \ + --amend documenso/documenso-arm64:$GIT_SHA-chromium + + docker manifest create \ + documenso/documenso:$APP_VERSION-chromium \ + --amend documenso/documenso-amd64:$APP_VERSION-chromium \ + --amend documenso/documenso-arm64:$APP_VERSION-chromium + + docker manifest push documenso/documenso:$GIT_SHA-chromium + docker manifest push documenso/documenso:$APP_VERSION-chromium + - name: Create and push Github Container Registry manifest run: | APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" @@ -157,3 +239,40 @@ jobs: docker manifest push ghcr.io/documenso/documenso:$GIT_SHA docker manifest push ghcr.io/documenso/documenso:$APP_VERSION + + - name: Create and push Github Container Registry chromium manifest + run: | + APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')" + GIT_SHA="$(git rev-parse HEAD)" + + # Check if the version is stable (no rc or beta in the version) + if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + docker manifest create \ + ghcr.io/documenso/documenso:latest-chromium \ + --amend ghcr.io/documenso/documenso-amd64:latest-chromium \ + --amend ghcr.io/documenso/documenso-arm64:latest-chromium + + docker manifest push ghcr.io/documenso/documenso:latest-chromium + fi + + if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ ]]; then + docker manifest create \ + ghcr.io/documenso/documenso:rc-chromium \ + --amend ghcr.io/documenso/documenso-amd64:rc-chromium \ + --amend ghcr.io/documenso/documenso-arm64:rc-chromium + + docker manifest push ghcr.io/documenso/documenso:rc-chromium + fi + + docker manifest create \ + ghcr.io/documenso/documenso:$GIT_SHA-chromium \ + --amend ghcr.io/documenso/documenso-amd64:$GIT_SHA-chromium \ + --amend ghcr.io/documenso/documenso-arm64:$GIT_SHA-chromium + + docker manifest create \ + ghcr.io/documenso/documenso:$APP_VERSION-chromium \ + --amend ghcr.io/documenso/documenso-amd64:$APP_VERSION-chromium \ + --amend ghcr.io/documenso/documenso-arm64:$APP_VERSION-chromium + + docker manifest push ghcr.io/documenso/documenso:$GIT_SHA-chromium + docker manifest push ghcr.io/documenso/documenso:$APP_VERSION-chromium diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml index adadc0d61..0e80def07 100644 --- a/.github/workflows/translations-upload.yml +++ b/.github/workflows/translations-upload.yml @@ -17,6 +17,7 @@ jobs: environment: Translations permissions: contents: write + pull-requests: write steps: - name: Checkout uses: actions/checkout@v4 @@ -26,12 +27,54 @@ jobs: - name: Extract translations run: npm run translate:extract - - name: Check and commit any files created + - name: Commit changes and push to reserved branch + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | + set -euo pipefail + + BRANCH="chore/extract-translations" + git config --global user.name 'github-actions' git config --global user.email 'github-actions@documenso.com' + + git fetch origin + + # Create branch locally (always reset to main) + git checkout -B "$BRANCH" origin/main + + # Stage translation output git add packages/lib/translations - git diff --staged --quiet --exit-code || (git commit -m "chore: extract translations" && git push) + + # If no changes, exit early + if git diff --staged --quiet; then + echo "No translation changes found." + exit 0 + fi + + # Commit fresh snapshot + git commit -m "chore: extract translations" + + # Force push reserved branch + git push origin "$BRANCH" --force + + # Does a PR already exist? + EXISTING_PR=$(gh pr list \ + --state open \ + --head "$BRANCH" \ + --json number \ + --jq '.[0].number // empty') + + if [ -z "$EXISTING_PR" ]; then + echo "No existing PR — creating new one." + gh pr create \ + --title "chore: extract translations" \ + --body "Automated translation extraction" \ + --base main \ + --head "$BRANCH" + else + echo "PR #$EXISTING_PR already exists — not creating a new one." + fi - name: Compile translations id: compile_translations diff --git a/.gitignore b/.gitignore index 9e622a76f..e85bd9780 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ CLAUDE.md # agents .specs + +# scripts +scripts/output* diff --git a/.npmrc b/.npmrc index 99c51b515..7a1b32fd4 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,2 @@ -auto-install-peers = true legacy-peer-deps = true prefer-dedupe = true \ No newline at end of file diff --git a/.opencode/commands/commit.md b/.opencode/commands/commit.md new file mode 100644 index 000000000..d4382f18c --- /dev/null +++ b/.opencode/commands/commit.md @@ -0,0 +1,80 @@ +--- +description: Add and commit changes using conventional commits +allowed-tools: Bash, Read, Glob, Grep +--- + +Create a git commit for the current changes using the Conventional Commits standard. + +## Process + +1. **Analyze the changes** by running: + - `git status` to see all modified/untracked files + - `git diff` to see unstaged changes + - `git diff --staged` to see already-staged changes + - `git log --oneline -5` to see recent commit style + +2. **Stage appropriate files**: + - Stage all related changes with `git add` + - Do NOT stage files that appear to contain secrets (.env, credentials, API keys, tokens) + - If you detect potential secrets, warn the user and skip those files + +3. **Determine the commit type** based on the changes: + - `feat`: New feature or capability + - `fix`: Bug fix + - `docs`: Documentation only + - `style`: Formatting, whitespace (not CSS) + - `refactor`: Code restructuring without behavior change + - `perf`: Performance improvement + - `test`: Adding or updating tests + - `build`: Build system or dependencies + - `ci`: CI/CD configuration + - `chore`: Maintenance tasks, tooling, config + + NOTE: Do not use a scope for commits + +4. **Write the commit message**: + - **Subject line**: `: ` + - Use imperative mood ("add" not "added") + - Lowercase, no period at end + - Max 50 characters if possible, 72 hard limit + - **Body** (if needed): Explain _why_, not _what_ + - Wrap at 72 characters + - Separate from subject with blank line + +## Commit Format + +``` +[scope]: + +[optional body explaining WHY this change was made] +``` + +## Examples + +Simple change: + +``` +fix: handle empty input in parser without throwing +``` + +With body: + +``` +feat: add streaming response support + +Large responses were causing memory issues in production. +Streaming allows processing chunks incrementally. +``` + +## Rules + +- NEVER commit files that may contain secrets +- NEVER use `git commit --amend` unless the user explicitly requests it +- NEVER use `--no-verify` to skip hooks +- If the pre-commit hook fails, fix the issues and create a NEW commit +- If there are no changes to commit, inform the user and stop +- Use a HEREDOC to pass the commit message to ensure proper formatting + +## Execute + +Run the git commands to analyze, stage, and commit the changes now. diff --git a/.opencode/commands/continue.md b/.opencode/commands/continue.md new file mode 100644 index 000000000..bedc43c33 --- /dev/null +++ b/.opencode/commands/continue.md @@ -0,0 +1,112 @@ +--- +description: Continue implementing a spec from a previous session +argument-hint: +--- + +You are continuing implementation of a specification that was started in a previous session. Work autonomously until the feature is complete and tests pass. + +## Your Task + +1. **Read the spec** at `$ARGUMENTS` +2. **Read CODE_STYLE.md** for formatting conventions +3. **Assess current state**: + - Check git status for uncommitted changes + - Run tests to see what's passing/failing (if E2E tests exist) + - Review any existing implementation +4. **Determine what remains** by comparing the spec to the current state +5. **Plan remaining work** using TodoWrite +6. **Continue implementing** until complete + +## Assessing Current State + +Run these commands to understand where the previous session left off: + +```bash +git status # See uncommitted changes +git log --oneline -10 # See recent commits +npm run typecheck -w @documenso/remix # Check for type errors +npm run lint:fix # Check for linting issues +``` + +Review the code that's already been written to understand: + +- What's already implemented +- What's partially done +- What's not started yet + +## Implementation Guidelines + +### During Implementation + +- Follow CODE_STYLE.md strictly (2-space indent, double quotes, braces always, etc.) +- Follow workspace rules for TypeScript, React, TRPC patterns, and Remix conventions +- Mark todos complete as you finish each task +- Commit logical chunks of work + +### Code Quality + +- No stubbed implementations +- Handle edge cases and error conditions +- Include descriptive error messages with context +- Use async/await for all I/O operations +- Use AppError class when throwing errors +- Use Zod for validation and react-hook-form for forms + +### Testing + +**Important**: E2E tests are time-consuming. Only write tests for non-trivial functionality. + +- Write E2E tests in `packages/app-tests/e2e/` using Playwright +- Test critical user flows and edge cases +- Follow existing E2E test patterns in the codebase +- Use descriptive test names that explain what is being tested +- Skip tests for trivial changes (simple UI tweaks, minor refactors, etc.) + +## Autonomous Workflow + +Work continuously through these steps: + +1. **Implement** - Write the code for the current task +2. **Typecheck** - Run `npm run typecheck -w @documenso/remix` to verify types +3. **Lint** - Run `npm run lint:fix` to fix linting issues +4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @documenso/app-tests` +5. **Fix** - If tests fail, fix and re-run +6. **Repeat** - Move to next task + +## Stopping Conditions + +**Stop and report success when:** + +- All spec requirements are implemented +- Typecheck passes +- Lint passes +- E2E tests pass (if written for non-trivial functionality) + +**Stop and ask for help when:** + +- The spec is ambiguous and you need clarification +- You encounter a blocking issue you cannot resolve +- You need to make a decision that significantly deviates from the spec +- External dependencies are missing + +## Commands + +```bash +# Type checking +npm run typecheck -w @documenso/remix + +# Linting +npm run lint:fix + +# E2E Tests (only for non-trivial work) +npm run test:dev -w @documenso/app-tests # Run E2E tests in dev mode +npm run test-ui:dev -w @documenso/app-tests # Run E2E tests with UI +npm run test:e2e # Run full E2E test suite + +# Development +npm run dev # Start dev server +``` + +## Begin + +Read the spec file and CODE_STYLE.md, assess the current implementation state, then continue where the previous session left off. Use TodoWrite to track your progress throughout. diff --git a/.opencode/commands/create-justification.md b/.opencode/commands/create-justification.md new file mode 100644 index 000000000..f36a04f15 --- /dev/null +++ b/.opencode/commands/create-justification.md @@ -0,0 +1,75 @@ +--- +description: Create a new justification file in .agents/justifications/ +argument-hint: [content] +--- + +You are creating a new justification file in the `.agents/justifications/` directory. + +## Your Task + +1. **Determine the slug** - Use `$ARGUMENTS` as the file slug (kebab-case recommended) +2. **Gather content** - Collect or generate the justification content +3. **Create the file** - Use the create-justification script to generate the file + +## Usage + +The script will automatically: +- Generate a unique three-word ID (e.g., `swift-emerald-river`) +- Create frontmatter with current date and formatted title +- Save the file as `{id}-{slug}.md` in `.agents/justifications/` + +## Creating the File + +### Option 1: Direct Content + +If you have the content ready, run: + +```bash +npx tsx scripts/create-justification.ts "$ARGUMENTS" "Your justification content here" +``` + +### Option 2: Multi-line Content (Heredoc) + +For multi-line content, use heredoc: + +```bash +npx tsx scripts/create-justification.ts "$ARGUMENTS" << HEREDOC +Your multi-line +justification content +goes here +HEREDOC +``` + +### Option 3: Pipe Content + +You can also pipe content: + +```bash +echo "Your content" | npx tsx scripts/create-justification.ts "$ARGUMENTS" +``` + +## File Format + +The created file will have: + +```markdown +--- +date: 2026-01-13 +title: Justification Title +--- + +Your content here +``` + +The title is automatically formatted from the slug (e.g., `architecture-decision` → `Architecture Decision`). + +## Guidelines + +- Use descriptive slugs in kebab-case (e.g., `tech-stack-choice`, `api-design-rationale`) +- Include clear reasoning and context for the decision +- The unique ID ensures no filename conflicts +- Files are automatically dated for organization + +## Begin + +Create a justification file using the slug from `$ARGUMENTS` and appropriate content documenting the reasoning or justification. diff --git a/.opencode/commands/create-plan.md b/.opencode/commands/create-plan.md new file mode 100644 index 000000000..cde144440 --- /dev/null +++ b/.opencode/commands/create-plan.md @@ -0,0 +1,76 @@ +--- +description: Create a new plan file in .agents/plans/ +argument-hint: [content] +--- + +You are creating a new plan file in the `.agents/plans/` directory. + +## Your Task + +1. **Determine the slug** - Use `$ARGUMENTS` as the file slug (kebab-case recommended) +2. **Gather content** - Collect or generate the plan content +3. **Create the file** - Use the create-plan script to generate the file + +## Usage + +The script will automatically: + +- Generate a unique three-word ID (e.g., `happy-blue-moon`) +- Create frontmatter with current date and formatted title +- Save the file as `{id}-{slug}.md` in `.agents/plans/` + +## Creating the File + +### Option 1: Direct Content + +If you have the content ready, run: + +```bash +npx tsx scripts/create-plan.ts "$ARGUMENTS" "Your plan content here" +``` + +### Option 2: Multi-line Content (Heredoc) + +For multi-line content, use heredoc: + +```bash +npx tsx scripts/create-plan.ts "$ARGUMENTS" << HEREDOC +Your multi-line +plan content +goes here +HEREDOC +``` + +### Option 3: Pipe Content + +You can also pipe content: + +```bash +echo "Your content" | npx tsx scripts/create-plan.ts "$ARGUMENTS" +``` + +## File Format + +The created file will have: + +```markdown +--- +date: 2026-01-13 +title: Plan Title +--- + +Your content here +``` + +The title is automatically formatted from the slug (e.g., `my-feature` → `My Feature`). + +## Guidelines + +- Use descriptive slugs in kebab-case (e.g., `user-authentication`, `api-integration`) +- Include clear, actionable plan content +- The unique ID ensures no filename conflicts +- Files are automatically dated for organization + +## Begin + +Create a plan file using the slug from `$ARGUMENTS` and appropriate content for the planning task. diff --git a/.opencode/commands/create-scratch.md b/.opencode/commands/create-scratch.md new file mode 100644 index 000000000..1f4138944 --- /dev/null +++ b/.opencode/commands/create-scratch.md @@ -0,0 +1,75 @@ +--- +description: Create a new scratch file in .agents/scratches/ +argument-hint: [content] +--- + +You are creating a new scratch file in the `.agents/scratches/` directory. + +## Your Task + +1. **Determine the slug** - Use `$ARGUMENTS` as the file slug (kebab-case recommended) +2. **Gather content** - Collect or generate the scratch content +3. **Create the file** - Use the create-scratch script to generate the file + +## Usage + +The script will automatically: +- Generate a unique three-word ID (e.g., `calm-teal-cloud`) +- Create frontmatter with current date and formatted title +- Save the file as `{id}-{slug}.md` in `.agents/scratches/` + +## Creating the File + +### Option 1: Direct Content + +If you have the content ready, run: + +```bash +npx tsx scripts/create-scratch.ts "$ARGUMENTS" "Your scratch content here" +``` + +### Option 2: Multi-line Content (Heredoc) + +For multi-line content, use heredoc: + +```bash +npx tsx scripts/create-scratch.ts "$ARGUMENTS" << HEREDOC +Your multi-line +scratch content +goes here +HEREDOC +``` + +### Option 3: Pipe Content + +You can also pipe content: + +```bash +echo "Your content" | npx tsx scripts/create-scratch.ts "$ARGUMENTS" +``` + +## File Format + +The created file will have: + +```markdown +--- +date: 2026-01-13 +title: Scratch Title +--- + +Your content here +``` + +The title is automatically formatted from the slug (e.g., `quick-notes` → `Quick Notes`). + +## Guidelines + +- Use descriptive slugs in kebab-case (e.g., `exploration-ideas`, `temporary-notes`) +- Scratch files are for temporary notes, explorations, or ideas +- The unique ID ensures no filename conflicts +- Files are automatically dated for organization + +## Begin + +Create a scratch file using the slug from `$ARGUMENTS` and appropriate content for notes or exploration. diff --git a/.opencode/commands/document.md b/.opencode/commands/document.md new file mode 100644 index 000000000..72ca40259 --- /dev/null +++ b/.opencode/commands/document.md @@ -0,0 +1,201 @@ +--- +description: Generate MDX documentation for a module or feature +argument-hint: +--- + +You are creating proper MDX documentation for a module or feature in Documenso using Nextra. + +## Your Task + +1. **Identify the scope** - What does `$ARGUMENTS` refer to? (file, directory, or feature name) +2. **Read the source code** - Understand the public API, types, and behavior +3. **Read existing docs** - Check if there's documentation to update or reference +4. **Write comprehensive documentation** - Create or update MDX docs in the appropriate location +5. **Update navigation** - Add entry to `_meta.js` if creating a new page + +## Documentation Structure + +Create documentation in the appropriate location: + +- **Developer docs**: `apps/documentation/pages/developers/` +- **User docs**: `apps/documentation/pages/users/` + +### File Format + +All documentation files must be `.mdx` files with frontmatter: + +```mdx +--- +title: Page Title +description: Brief description for SEO and meta tags +--- + +# Page Title + +Content starts here... +``` + +### Navigation + +Each directory should have a `_meta.js` file that defines the navigation structure: + +```javascript +export default { + index: 'Introduction', + 'feature-name': 'Feature Name', + 'another-feature': 'Another Feature', +}; +``` + +If creating a new page, add it to the appropriate `_meta.js` file. + +### Documentation Format + +````mdx +--- +title: +description: Brief description of what this does and when to use it +--- + +# + +Brief description of what this module/feature does and when to use it. + +## Installation + +If there are specific packages or imports needed: + +```bash +npm install @documenso/package-name +``` + +## Quick Start + +```jsx +// Minimal working example +import { Component } from '@documenso/package'; + +const Example = () => { + return ; +}; +``` + +## API Reference + +### Component/Function Name + +Description of what it does. + +#### Props/Parameters + +| Prop/Param | Type | Description | +| ---------- | -------------------- | ------------------------- | +| prop | `string` | Description of the prop | +| optional | `boolean` (optional) | Optional prop description | + +#### Example + +```jsx +import { Component } from '@documenso/package'; + +; +``` + +### Types + +#### `TypeName` + +```typescript +type TypeName = { + property: string; + optional?: boolean; +}; +``` + +## Examples + +### Common Use Case + +```jsx +// Full working example +``` + +### Advanced Usage + +```jsx +// More complex example +``` + +## Related + +- [Link to related documentation](/developers/path) +- [Another related page](/users/path) +```` + +## Guidelines + +### Content Quality + +- **Be accurate** - Verify behavior by reading the code +- **Be complete** - Document all public API surface +- **Be practical** - Include real, working examples +- **Be concise** - Don't over-explain obvious things +- **Be user-focused** - Write for the target audience (developers or users) + +### Code Examples + +- Use appropriate language tags: `jsx`, `tsx`, `typescript`, `bash`, `json` +- Show imports when not obvious +- Include expected output in comments where helpful +- Progress from simple to complex +- Use real examples from the codebase when possible + +### Formatting + +- Always include frontmatter with `title` and `description` +- Use proper markdown headers (h1 for title, h2 for sections) +- Use tables for props/parameters documentation (matching existing style) +- Use code fences with appropriate language tags +- Use Nextra components when appropriate: + - `` for notes + - `` for step-by-step instructions +- Use relative links for internal documentation (e.g., `/developers/embedding/react`) + +### Nextra Components + +You can import and use Nextra components: + +```jsx +import { Callout, Steps } from 'nextra/components'; + + + This is an informational note. + + + + First step + Second step + +``` + +### Maintenance + +- Include types inline so docs don't get stale +- Reference source file locations for complex behavior +- Keep examples up-to-date with the codebase +- Update `_meta.js` when adding new pages + +## Process + +1. **Explore the code** - Read source files to understand the API +2. **Identify the audience** - Is this for developers or users? +3. **Check existing docs** - Look for similar pages to match style +4. **Draft the structure** - Outline sections before writing +5. **Write content** - Fill in each section with frontmatter +6. **Add examples** - Create working code samples +7. **Update navigation** - Add to `_meta.js` if needed +8. **Review** - Read through for clarity and accuracy + +## Begin + +Analyze `$ARGUMENTS`, read the relevant source code, check existing documentation patterns, and create comprehensive MDX documentation following the Documenso documentation style. diff --git a/.opencode/commands/implement.md b/.opencode/commands/implement.md new file mode 100644 index 000000000..e9ac84f8c --- /dev/null +++ b/.opencode/commands/implement.md @@ -0,0 +1,100 @@ +--- +description: Implement a spec from the plans directory +argument-hint: +--- + +You are implementing a specification from the `.agents/plans/` directory. Work autonomously until the feature is complete and tests pass. + +## Your Task + +1. **Read the spec** at `$ARGUMENTS` +2. **Read CODE_STYLE.md** for formatting conventions +3. **Plan the implementation** using the TodoWrite tool to break down the work +4. **Implement the feature** following the spec and code style +5. **Write E2E tests** only for non-trivial functionality (E2E tests are time-consuming) +6. **Run tests** and fix any failures +7. **Run typecheck and lint** and fix any issues + +## Implementation Guidelines + +### Before Coding + +- Understand the spec's goals and scope +- Identify the desired API from usage examples in the spec +- Review related existing code to understand patterns +- Break the work into discrete tasks using TodoWrite + +### During Implementation + +- Follow CODE_STYLE.md strictly (2-space indent, double quotes, braces always, etc.) +- Follow workspace rules for TypeScript, React, TRPC patterns, and Remix conventions +- Mark todos complete as you finish each task +- Commit logical chunks of work + +### Code Quality + +- No stubbed implementations +- Handle edge cases and error conditions +- Include descriptive error messages with context +- Use async/await for all I/O operations +- Use AppError class when throwing errors +- Use Zod for validation and react-hook-form for forms + +### Testing + +**Important**: E2E tests are time-consuming. Only write tests for non-trivial functionality. + +- Write E2E tests in `packages/app-tests/e2e/` using Playwright +- Test critical user flows and edge cases +- Follow existing E2E test patterns in the codebase +- Use descriptive test names that explain what is being tested +- Skip tests for trivial changes (simple UI tweaks, minor refactors, etc.) + +## Autonomous Workflow + +Work continuously through these steps: + +1. **Implement** - Write the code for the current task +2. **Typecheck** - Run `npm run typecheck -w @documenso/remix` to verify types +3. **Lint** - Run `npm run lint:fix` to fix linting issues +4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @documenso/app-tests` +5. **Fix** - If tests fail, fix and re-run +6. **Repeat** - Move to next task + +## Stopping Conditions + +**Stop and report success when:** + +- All spec requirements are implemented +- Typecheck passes +- Lint passes +- E2E tests pass (if written for non-trivial functionality) + +**Stop and ask for help when:** + +- The spec is ambiguous and you need clarification +- You encounter a blocking issue you cannot resolve +- You need to make a decision that significantly deviates from the spec +- External dependencies are missing + +## Commands + +```bash +# Type checking +npm run typecheck -w @documenso/remix + +# Linting +npm run lint:fix + +# E2E Tests (only for non-trivial work) +npm run test:dev -w @documenso/app-tests # Run E2E tests in dev mode +npm run test-ui:dev -w @documenso/app-tests # Run E2E tests with UI +npm run test:e2e # Run full E2E test suite + +# Development +npm run dev # Start dev server +``` + +## Begin + +Read the spec file and CODE_STYLE.md, then start implementing. Use TodoWrite to track your progress throughout. diff --git a/.opencode/commands/interview.md b/.opencode/commands/interview.md new file mode 100644 index 000000000..e84e8f37d --- /dev/null +++ b/.opencode/commands/interview.md @@ -0,0 +1,57 @@ +--- +description: Deep-dive interview to flesh out a spec or design document +agent: build +argument-hint: +--- + +You are conducting a thorough interview to help flesh out and complete a specification or design document. + +## Your Task + +1. **Read the document** at `$ARGUMENTS` +2. **Analyze it deeply** - identify gaps, ambiguities, unexplored edge cases, and areas needing clarification +3. **Interview the user** by providing a question with some pre-determined options +4. **Write the completed spec** back to the file when the interview is complete + +## Interview Guidelines + +### Question Quality +- Ask **non-obvious, insightful questions** - avoid surface-level queries +- Focus on: technical implementation details, architectural decisions, edge cases, error handling, UX implications, security considerations, performance tradeoffs, integration points, migration strategies, rollback plans +- Each question should reveal something that would otherwise be missed +- Challenge assumptions embedded in the document +- Explore second and third-order consequences of design decisions +- Use the Web Search and other tools where required to ground questions (e.g. package recommendations) + +### Question Strategy +- Start by identifying the 3-5 most critical unknowns or ambiguities +- Use the AskUserQuestion tool with well-crafted options that represent real tradeoffs +- When appropriate, offer multiple valid approaches with their pros/cons as options +- Don't ask about things that are already clearly specified +- Probe deeper when answers reveal new areas of uncertainty + +### Topics to Explore (as relevant) +- **Technical**: Data models, API contracts, state management, concurrency, caching, validation +- **UX**: Error states, loading states, empty states, edge cases, accessibility, mobile considerations +- **Operations**: Deployment, monitoring, alerting, debugging, logging, feature flags +- **Security**: Auth, authz, input validation, rate limiting, audit trails +- **Scale**: Performance bottlenecks, data growth, traffic spikes, graceful degradation +- **Integration**: Dependencies, backwards compatibility, versioning, migration path +- **Failure modes**: What happens when X fails? How do we recover? What's the blast radius? + +### Interview Flow +1. Ask 2-4 questions at a time (use multiple questions in one when they're related) +2. After each round, incorporate answers and identify follow-up questions +3. Continue until all critical areas are addressed +4. Signal when you believe the interview is complete, but offer to go deeper + +## Output + +When the interview is complete: +1. Synthesize all gathered information +2. Rewrite/expand the original document with the new details +3. Preserve the document's original structure where sensible, but reorganize if needed +4. Add new sections for areas that weren't originally covered +5. Write the completed spec back to `$ARGUMENTS` + +Begin by reading the file and identifying your first set of deep questions. diff --git a/.opencode/skill/create-justification/SKILL.md b/.opencode/skill/create-justification/SKILL.md new file mode 100644 index 000000000..78a2aaea9 --- /dev/null +++ b/.opencode/skill/create-justification/SKILL.md @@ -0,0 +1,56 @@ +--- +name: create-justification +description: Create a new justification file in .agents/justifications/ with a unique three-word ID, frontmatter, and formatted title +license: MIT +compatibility: opencode +metadata: + audience: agents + workflow: decision-making +--- + +## What I do + +I help you create new justification files in the `.agents/justifications/` directory. Each justification file gets: + +- A unique three-word identifier (e.g., `swift-emerald-river`) +- Frontmatter with the current date and formatted title +- Content you provide + +## How to use + +Run the script with a slug and content: + +```bash +npx tsx scripts/create-justification.ts "decision-name" "Justification content here" +``` + +Or use heredoc for multi-line content: + +```bash +npx tsx scripts/create-justification.ts "decision-name" << HEREDOC +Multi-line +justification content +goes here +HEREDOC +``` + +## File format + +Files are created as: `{three-word-id}-{slug}.md` + +Example: `swift-emerald-river-decision-name.md` + +The file includes frontmatter: + +```markdown +--- +date: 2026-01-13 +title: Decision Name +--- + +Your content here +``` + +## When to use me + +Use this skill when you need to document the reasoning or justification for a decision, approach, or architectural choice. The unique ID ensures no filename conflicts, and the frontmatter provides metadata for organization. diff --git a/.opencode/skill/create-plan/SKILL.md b/.opencode/skill/create-plan/SKILL.md new file mode 100644 index 000000000..8ceb2ef8c --- /dev/null +++ b/.opencode/skill/create-plan/SKILL.md @@ -0,0 +1,56 @@ +--- +name: create-plan +description: Create a new plan file in .agents/plans/ with a unique three-word ID, frontmatter, and formatted title +license: MIT +compatibility: opencode +metadata: + audience: agents + workflow: planning +--- + +## What I do + +I help you create new plan files in the `.agents/plans/` directory. Each plan file gets: + +- A unique three-word identifier (e.g., `happy-blue-moon`) +- Frontmatter with the current date and formatted title +- Content you provide + +## How to use + +Run the script with a slug and content: + +```bash +npx tsx scripts/create-plan.ts "feature-name" "Plan content here" +``` + +Or use heredoc for multi-line content: + +```bash +npx tsx scripts/create-plan.ts "feature-name" << HEREDOC +Multi-line +plan content +goes here +HEREDOC +``` + +## File format + +Files are created as: `{three-word-id}-{slug}.md` + +Example: `happy-blue-moon-feature-name.md` + +The file includes frontmatter: + +```markdown +--- +date: 2026-01-13 +title: Feature Name +--- + +Your content here +``` + +## When to use me + +Use this skill when you need to create a new plan document for a feature, task, or project. The unique ID ensures no filename conflicts, and the frontmatter provides metadata for organization. diff --git a/.opencode/skill/create-scratch/SKILL.md b/.opencode/skill/create-scratch/SKILL.md new file mode 100644 index 000000000..e44e4779d --- /dev/null +++ b/.opencode/skill/create-scratch/SKILL.md @@ -0,0 +1,56 @@ +--- +name: create-scratch +description: Create a new scratch file in .agents/scratches/ with a unique three-word ID, frontmatter, and formatted title +license: MIT +compatibility: opencode +metadata: + audience: agents + workflow: exploration +--- + +## What I do + +I help you create new scratch files in the `.agents/scratches/` directory. Each scratch file gets: + +- A unique three-word identifier (e.g., `calm-teal-cloud`) +- Frontmatter with the current date and formatted title +- Content you provide + +## How to use + +Run the script with a slug and content: + +```bash +npx tsx scripts/create-scratch.ts "note-name" "Scratch content here" +``` + +Or use heredoc for multi-line content: + +```bash +npx tsx scripts/create-scratch.ts "note-name" << HEREDOC +Multi-line +scratch content +goes here +HEREDOC +``` + +## File format + +Files are created as: `{three-word-id}-{slug}.md` + +Example: `calm-teal-cloud-note-name.md` + +The file includes frontmatter: + +```markdown +--- +date: 2026-01-13 +title: Note Name +--- + +Your content here +``` + +## When to use me + +Use this skill when you need to create a temporary note, exploration document, or scratch pad for ideas. The unique ID ensures no filename conflicts, and the frontmatter provides metadata for organization. diff --git a/.vscode/settings.json b/.vscode/settings.json index e6ff5d1a0..a39e263c5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,5 +17,6 @@ }, "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" - } + }, + "prisma.pinToPrisma6": true } diff --git a/AGENTS.md b/AGENTS.md index b6fba867d..bf92317f2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,6 +11,8 @@ - `npm run format` - Format code with Prettier - `npm run dev` - Start development server for Remix app +**Important:** Do not run `npm run build` to verify changes unless explicitly asked. Builds take a long time (~2 minutes). Use `npx tsc --noEmit` for type checking specific packages if needed. + ## Code Style Guidelines - Use TypeScript for all code; prefer `type` over `interface` diff --git a/CODE_STYLE.md b/CODE_STYLE.md new file mode 100644 index 000000000..c58c7255f --- /dev/null +++ b/CODE_STYLE.md @@ -0,0 +1,692 @@ +# Documenso Code Style Guide + +This document captures the code style, patterns, and conventions used in the Documenso codebase. It covers both enforceable rules and subjective "taste" elements that make our code consistent and maintainable. + +## Table of Contents + +1. [General Principles](#general-principles) +2. [TypeScript Conventions](#typescript-conventions) +3. [Imports & Dependencies](#imports--dependencies) +4. [Functions & Methods](#functions--methods) +5. [React & Components](#react--components) +6. [Error Handling](#error-handling) +7. [Async/Await Patterns](#asyncawait-patterns) +8. [Whitespace & Formatting](#whitespace--formatting) +9. [Naming Conventions](#naming-conventions) +10. [Pattern Matching](#pattern-matching) +11. [Database & Prisma](#database--prisma) +12. [TRPC Patterns](#trpc-patterns) + +--- + +## General Principles + +- **Functional over Object-Oriented**: Prefer functional programming patterns over classes +- **Explicit over Implicit**: Be explicit about types, return values, and error cases +- **Early Returns**: Use guard clauses and early returns to reduce nesting +- **Immutability**: Favor `const` over `let`; avoid mutation where possible + +--- + +## TypeScript Conventions + +### Type Definitions + +```typescript +// ✅ Prefer `type` over `interface` +type CreateDocumentOptions = { + templateId: number; + userId: number; + recipients: Recipient[]; +}; + +// ❌ Avoid interfaces unless absolutely necessary +interface CreateDocumentOptions { + templateId: number; +} +``` + +### Type Imports + +```typescript +// ✅ Use `type` keyword for type-only imports +import type { Document, Recipient } from '@prisma/client'; +import { DocumentStatus } from '@prisma/client'; + +// Types in function signatures +export const findDocuments = async ({ userId, teamId }: FindDocumentsOptions) => { + // ... +}; +``` + +### Inline Types for Function Parameters + +```typescript +// ✅ Extract inline types to named types +type FinalRecipient = Pick & { + templateRecipientId: number; + fields: Field[]; +}; + +const finalRecipients: FinalRecipient[] = []; +``` + +--- + +## Imports & Dependencies + +### Import Organization + +Imports should be organized in the following order with blank lines between groups: + +```typescript +// 1. React imports +import { useCallback, useEffect, useMemo } from 'react'; + +// 2. Third-party library imports (alphabetically) +import { zodResolver } from '@hookform/resolvers/zod'; +import { Trans } from '@lingui/react/macro'; +import type { Document, Recipient } from '@prisma/client'; +import { DocumentStatus, RecipientRole } from '@prisma/client'; +import { match } from 'ts-pattern'; + +// 3. Internal package imports (from @documenso/*) +import { AppError } from '@documenso/lib/errors/app-error'; +import { prisma } from '@documenso/prisma'; +import { Button } from '@documenso/ui/primitives/button'; + +// 4. Relative imports +import { getTeamById } from '../team/get-team'; +import type { FindResultResponse } from './types'; +``` + +### Destructuring Imports + +```typescript +// ✅ Destructure specific exports +// ✅ Use type imports for types +import type { Document } from '@prisma/client'; + +import { Button } from '@documenso/ui/primitives/button'; +import { Input } from '@documenso/ui/primitives/input'; +``` + +--- + +## Functions & Methods + +### Arrow Functions + +```typescript +// ✅ Always use arrow functions for functions +export const createDocument = async ({ + userId, + title, +}: CreateDocumentOptions) => { + // ... +}; + +// ✅ Callbacks and handlers +const onSubmit = useCallback(async () => { + // ... +}, [dependencies]); + +// ❌ Avoid regular function declarations +function createDocument() { + // ... +} +``` + +### Function Parameters + +```typescript +// ✅ Use destructured object parameters for multiple params +export const findDocuments = async ({ + userId, + teamId, + status = ExtendedDocumentStatus.ALL, + page = 1, + perPage = 10, +}: FindDocumentsOptions) => { + // ... +}; + +// ✅ Destructure on separate line when needed +const onFormSubmit = form.handleSubmit(onSubmit); + +// ✅ Deconstruct nested properties explicitly +const { user } = ctx; +const { templateId } = input; +``` + +--- + +## React & Components + +### Component Definition + +```typescript +// ✅ Use const with arrow function +export const AddSignersFormPartial = ({ + documentFlow, + recipients, + fields, + onSubmit, +}: AddSignersFormProps) => { + // ... +}; + +// ❌ Never use classes +class MyComponent extends React.Component { + // ... +} +``` + +### Hooks + +```typescript +// ✅ Group related hooks together with blank line separation +const { _ } = useLingui(); +const { toast } = useToast(); + +const { currentStep, totalSteps, previousStep } = useStep(); + +const form = useForm({ + resolver: zodResolver(ZFormSchema), + defaultValues: { + // ... + }, +}); +``` + +### Event Handlers + +```typescript +// ✅ Use arrow functions with descriptive names +const onFormSubmit = async () => { + await form.trigger(); + // ... +}; + +const onFieldCopy = useCallback( + (event?: KeyboardEvent | null) => { + event?.preventDefault(); + // ... + }, + [dependencies], +); + +// ✅ Inline handlers for simple operations + +``` + +### State Management + +```typescript +// ✅ Descriptive state names with auxiliary verbs +const [isLoading, setIsLoading] = useState(false); +const [hasError, setHasError] = useState(false); +const [showAdvancedSettings, setShowAdvancedSettings] = useState(false); + +// ✅ Complex state in single useState when related +const [coords, setCoords] = useState({ + x: 0, + y: 0, +}); +``` + +--- + +## Error Handling + +### Try-Catch Blocks + +```typescript +// ✅ Use try-catch for operations that might fail +try { + const document = await getDocumentById({ + documentId: Number(documentId), + userId: user.id, + }); + + return { + status: 200, + body: document, + }; +} catch (err) { + return { + status: 404, + body: { + message: 'Document not found', + }, + }; +} +``` + +### Throwing Errors + +```typescript +// ✅ Use AppError for application errors +throw new AppError(AppErrorCode.NOT_FOUND, { + message: 'Template not found', +}); + +// ✅ Use descriptive error messages +if (!template) { + throw new AppError(AppErrorCode.NOT_FOUND, { + message: `Template with ID ${templateId} not found`, + }); +} +``` + +### Error Parsing on Frontend + +```typescript +// ✅ Parse errors on the frontend +try { + await updateOrganisation({ organisationId, data }); +} catch (err) { + const error = AppError.parseError(err); + console.error(error); + + toast({ + title: t`An error occurred`, + description: error.message, + variant: 'destructive', + }); +} +``` + +--- + +## Async/Await Patterns + +### Async Function Definitions + +```typescript +// ✅ Mark async functions clearly +export const createDocument = async ({ + userId, + title, +}: Options): Promise => { + // ... +}; + +// ✅ Use await for promises +const document = await prisma.document.create({ data }); + +// ✅ Use Promise.all for parallel operations +const [document, recipients] = await Promise.all([ + getDocumentById({ documentId }), + getRecipientsForDocument({ documentId }), +]); +``` + +### Void for Fire-and-Forget + +```typescript +// ✅ Use void for intentionally unwaited promises +void handleAutoSave(); + +// ✅ Or in event handlers +onClick={() => void onFormSubmit()} +``` + +--- + +## Whitespace & Formatting + +### Blank Lines Between Concepts + +```typescript +// ✅ Blank line after imports +import { prisma } from '@documenso/prisma'; + +export const findDocuments = async () => { + // ... +}; + +// ✅ Blank line between logical sections +const user = await prisma.user.findFirst({ where: { id: userId } }); + +let team = null; + +if (teamId !== undefined) { + team = await getTeamById({ userId, teamId }); +} + +// ✅ Blank line before return statements +const result = await someOperation(); + +return result; +``` + +### Function/Method Spacing + +```typescript +// ✅ No blank lines between chained methods in same operation +const documents = await prisma.document + .findMany({ where: { userId } }) + .then((docs) => docs.map(maskTokens)); + +// ✅ Blank line between different operations +const document = await createDocument({ userId }); + +await sendDocument({ documentId: document.id }); + +return document; +``` + +### Object and Array Formatting + +```typescript +// ✅ Multi-line when complex +const options = { + userId, + teamId, + status: ExtendedDocumentStatus.ALL, + page: 1, +}; + +// ✅ Single line when simple +const coords = { x: 0, y: 0 }; + +// ✅ Array items on separate lines when objects +const recipients = [ + { + name: 'John', + email: 'john@example.com', + }, + { + name: 'Jane', + email: 'jane@example.com', + }, +]; +``` + +--- + +## Naming Conventions + +### Variables + +```typescript +// ✅ camelCase for variables and functions +const documentId = 123; +const onSubmit = () => {}; + +// ✅ Descriptive names with auxiliary verbs for booleans +const isLoading = false; +const hasError = false; +const canEdit = true; +const shouldRender = true; + +// ✅ Prefix with $ for DOM elements +const $page = document.querySelector('.page'); +const $inputRef = useRef(null); +``` + +### Types and Schemas + +```typescript +// ✅ PascalCase for types +type CreateDocumentOptions = { + userId: number; +}; + +// ✅ Prefix Zod schemas with Z +const ZCreateDocumentSchema = z.object({ + title: z.string(), +}); + +// ✅ Prefix type from Zod schema with T +type TCreateDocumentSchema = z.infer; +``` + +### Constants + +```typescript +// ✅ UPPER_SNAKE_CASE for true constants +const DEFAULT_DOCUMENT_DATE_FORMAT = 'dd/MM/yyyy'; +const MAX_FILE_SIZE = 1024 * 1024 * 5; + +// ✅ camelCase for const variables that aren't "constants" +const userId = await getUserId(); +``` + +### Functions + +```typescript +// ✅ Verb-based names for functions +const createDocument = async () => {}; +const findDocuments = async () => {}; +const updateDocument = async () => {}; +const deleteDocument = async () => {}; + +// ✅ On prefix for event handlers +const onSubmit = () => {}; +const onClick = () => {}; +const onFieldCopy = () => {}; // 'on' is also acceptable +``` + +### Clarity Over Brevity + +```typescript +// ✅ Prefer descriptive names over abbreviations +const superLongMethodThatIsCorrect = () => {}; +const recipientAuthenticationOptions = {}; +const documentMetadata = {}; + +// ❌ Avoid abbreviations that sacrifice clarity +const supLongMethThatIsCorrect = () => {}; +const recipAuthOpts = {}; +const docMeta = {}; + +// ✅ Common abbreviations that are widely understood are acceptable +const userId = 123; +const htmlElement = document.querySelector('div'); +const apiResponse = await fetch('/api'); +``` + +--- + +## Pattern Matching + +### Using ts-pattern + +```typescript +import { match } from 'ts-pattern'; + +// ✅ Use match for complex conditionals +const result = match(status) + .with(ExtendedDocumentStatus.DRAFT, () => ({ + status: 'draft', + })) + .with(ExtendedDocumentStatus.PENDING, () => ({ + status: 'pending', + })) + .with(ExtendedDocumentStatus.COMPLETED, () => ({ + status: 'completed', + })) + .exhaustive(); + +// ✅ Use .otherwise() for default case when not exhaustive +const value = match(type) + .with('text', () => 'Text field') + .with('number', () => 'Number field') + .otherwise(() => 'Unknown field'); +``` + +--- + +## Database & Prisma + +### Query Structure + +```typescript +// ✅ Destructure commonly used fields +const { id, email, name } = user; + +// ✅ Use select to limit returned fields +const user = await prisma.user.findFirst({ + where: { id: userId }, + select: { + id: true, + email: true, + name: true, + }, +}); + +// ✅ Use include for relations +const document = await prisma.document.findFirst({ + where: { id: documentId }, + include: { + recipients: true, + fields: true, + }, +}); +``` + +### Transactions + +```typescript +// ✅ Use transactions for related operations +return await prisma.$transaction(async (tx) => { + const document = await tx.document.create({ data }); + + await tx.field.createMany({ data: fieldsData }); + + await tx.documentAuditLog.create({ data: auditData }); + + return document; +}); +``` + +### Where Clauses + +```typescript +// ✅ Build complex where clauses separately +const whereClause: Prisma.DocumentWhereInput = { + AND: [ + { userId: user.id }, + { deletedAt: null }, + { status: { in: [DocumentStatus.DRAFT, DocumentStatus.PENDING] } }, + ], +}; + +const documents = await prisma.document.findMany({ + where: whereClause, +}); +``` + +--- + +## TRPC Patterns + +### Router Structure + +```typescript +// ✅ Destructure context and input at start +.query(async ({ input, ctx }) => { + const { teamId } = ctx; + const { templateId } = input; + + ctx.logger.info({ + input: { templateId }, + }); + + return await getTemplateById({ + id: templateId, + userId: ctx.user.id, + teamId, + }); +}); +``` + +### Request/Response Schemas + +```typescript +// ✅ Name schemas clearly +const ZCreateDocumentRequestSchema = z.object({ + title: z.string(), + recipients: z.array(ZRecipientSchema), +}); + +const ZCreateDocumentResponseSchema = z.object({ + documentId: z.number(), + status: z.string(), +}); +``` + +### Error Handling in TRPC + +```typescript +// ✅ Catch and transform errors appropriately +try { + const result = await createDocument({ userId, data }); + + return result; +} catch (err) { + return AppError.toRestAPIError(err); +} + +// ✅ Or throw AppError directly +if (!template) { + throw new AppError(AppErrorCode.NOT_FOUND, { + message: 'Template not found', + }); +} +``` + +--- + +## Additional Patterns + +### Optional Chaining + +```typescript +// ✅ Use optional chaining for potentially undefined values +const email = user?.email; +const recipientToken = recipient?.token ?? ''; + +// ✅ Use nullish coalescing for defaults +const pageSize = perPage ?? 10; +const status = documentStatus ?? DocumentStatus.DRAFT; +``` + +### Array Operations + +```typescript +// ✅ Use functional array methods +const activeRecipients = recipients.filter((r) => r.signingStatus === 'SIGNED'); +const recipientEmails = recipients.map((r) => r.email); +const hasSignedRecipients = recipients.some((r) => r.signingStatus === 'SIGNED'); + +// ✅ Use find instead of filter + [0] +const recipient = recipients.find((r) => r.id === recipientId); +``` + +### Conditional Rendering + +```typescript +// ✅ Use && for conditional rendering +{isLoading && } + +// ✅ Use ternary for either/or +{isLoading ? : } + +// ✅ Extract complex conditions to variables +const shouldShowAdvanced = isAdmin && hasPermission && !isDisabled; +{shouldShowAdvanced && } +``` + +--- + +## When in Doubt + +- **Consistency**: Follow the patterns you see in similar files +- **Readability**: Favor code that's easy to read over clever one-liners +- **Explicitness**: Be explicit rather than implicit +- **Whitespace**: Use blank lines to separate logical sections +- **Early Returns**: Use guard clauses to reduce nesting +- **Functional**: Prefer functional patterns over imperative ones diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fe2bb8304..501458cd4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,3 +52,53 @@ You can build the project with: ```bash npm run build ``` + +## AI-Assisted Development with OpenCode + +We use [OpenCode](https://opencode.ai) for AI-assisted development. OpenCode provides custom commands and skills to help maintain consistency and streamline common workflows. + +OpenCode works with most major AI providers (Anthropic, OpenAI, Google, etc.) or you can use [Zen](https://opencode.ai/zen) for optimized coding models. Configure your preferred provider in the OpenCode settings. + +> **Important**: All AI-generated code must be thoroughly reviewed by the contributor before submitting a PR. You are responsible for understanding and validating every line of code you submit. If we detect that contributors are simply throwing AI-generated code over the wall without proper review, they will be blocked from the repository. + +### Getting Started + +1. Install OpenCode (see [opencode.ai](https://opencode.ai) for other install methods): + ```bash + curl -fsSL https://opencode.ai/install | bash + ``` +2. Configure your AI provider (or use Zen for optimized models) +3. Run `opencode` in the project root + +### Available Commands + +Use these commands in OpenCode by typing the command name: + +| Command | Description | +| ------------------------------ | -------------------------------------------------------- | +| `/implement ` | Implement a spec from `.agents/plans/` autonomously | +| `/continue ` | Continue implementing a spec from a previous session | +| `/interview ` | Deep-dive interview to flesh out a spec or design | +| `/document ` | Generate MDX documentation for a module or feature | +| `/commit` | Create a conventional commit for staged changes | +| `/create-plan ` | Create a new plan file in `.agents/plans/` | +| `/create-scratch ` | Create a scratch file for notes in `.agents/scratches/` | +| `/create-justification ` | Create a justification file in `.agents/justifications/` | + +### Typical Workflow + +1. **Create a plan**: Use `/create-plan my-feature` to draft a spec for a new feature +2. **Flesh out the spec**: Use `/interview .agents/plans/.md` to refine requirements +3. **Implement**: Use `/implement .agents/plans/.md` to build the feature +4. **Continue if needed**: Use `/continue .agents/plans/.md` to pick up where you left off +5. **Commit**: Use `/commit` to create a conventional commit + +### Agent Files + +The `.agents/` directory stores AI-generated artifacts: + +- **`.agents/plans/`** - Feature specs and implementation plans +- **`.agents/scratches/`** - Temporary notes and explorations +- **`.agents/justifications/`** - Decision rationale and technical justifications + +These files use a unique ID format (`{word}-{word}-{word}-{slug}.md`) to prevent conflicts. diff --git a/README.md b/README.md index 185d9839e..9021ee7e6 100644 --- a/README.md +++ b/README.md @@ -171,9 +171,11 @@ git clone https://github.com//documenso 5. Create the database schema by running `npm run prisma:migrate-dev` -6. Run `npm run dev` in the root directory to start +6. Run `npm run translate:compile` in the root directory to compile lingui -7. Register a new user at http://localhost:3000/signup +7. Run `npm run dev` in the root directory to start + +8. Register a new user at http://localhost:3000/signup --- diff --git a/apps/documentation/next.config.js b/apps/documentation/next.config.ts similarity index 82% rename from apps/documentation/next.config.js rename to apps/documentation/next.config.ts index cf8ff8811..f036b2d99 100644 --- a/apps/documentation/next.config.js +++ b/apps/documentation/next.config.ts @@ -1,7 +1,8 @@ +import type { NextConfig } from 'next'; + import nextra from 'nextra'; -/** @type {import('next').NextConfig} */ -const nextConfig = { +const nextConfig: NextConfig = { transpilePackages: [ '@documenso/assets', '@documenso/lib', diff --git a/apps/documentation/package.json b/apps/documentation/package.json index 6408e156b..348d442ef 100644 --- a/apps/documentation/package.json +++ b/apps/documentation/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev": "next dev -p 3002", - "build": "next build && next-sitemap", + "build": "next build", "start": "next start -p 3002", "lint:fix": "next lint --fix", "clean": "rimraf .next && rimraf node_modules" @@ -15,18 +15,18 @@ "@documenso/tailwind-config": "*", "@documenso/trpc": "*", "@documenso/ui": "*", - "next": "14.2.28", - "next-plausible": "^3.12.0", - "nextra": "^2.13.4", - "nextra-theme-docs": "^2.13.4", + "next": "15.5.9", + "next-plausible": "^3.12.5", + "nextra": "^3", + "nextra-theme-docs": "^3", "react": "^18", "react-dom": "^18" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", + "@types/react": "18.3.27", "@types/react-dom": "^18", - "next-sitemap": "^4.2.3", + "pagefind": "^1.2.0", "typescript": "5.6.2" } } diff --git a/apps/documentation/pages/_app.mdx b/apps/documentation/pages/_app.mdx deleted file mode 100644 index d0e1523cb..000000000 --- a/apps/documentation/pages/_app.mdx +++ /dev/null @@ -1,10 +0,0 @@ -import { PlausibleProvider } from '../providers/plausible.tsx'; -import '../styles.css'; - -export default function App({ Component, pageProps }) { - return ( - - - - ); -} diff --git a/apps/documentation/pages/_app.tsx b/apps/documentation/pages/_app.tsx new file mode 100644 index 000000000..61c300b07 --- /dev/null +++ b/apps/documentation/pages/_app.tsx @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import React from 'react'; + +import { PlausibleProvider } from '../providers/plausible'; +import '../styles.css'; + +export type AppProps = { + Component: React.ComponentType; + pageProps: any; +}; + +export default function App({ Component, pageProps }: AppProps) { + return ( + + + + ); +} diff --git a/apps/documentation/pages/_meta.js b/apps/documentation/pages/_meta.js new file mode 100644 index 000000000..3d804ac10 --- /dev/null +++ b/apps/documentation/pages/_meta.js @@ -0,0 +1,34 @@ +export default { + index: { + type: 'page', + title: 'Home', + display: 'hidden', + theme: { + timestamp: false, + }, + }, + users: { + type: 'page', + title: 'Users', + }, + developers: { + type: 'page', + title: 'Developers', + }, + updates: { + title: "What's New", + type: 'menu', + items: { + changelog: { + title: 'Changelog', + href: 'https://documenso.com/changelog', + newWindow: true, + }, + blog: { + title: 'Blog', + href: 'https://documenso.com/blog', + newWindow: true, + }, + }, + }, +}; diff --git a/apps/documentation/pages/_meta.json b/apps/documentation/pages/_meta.json deleted file mode 100644 index f8c538d54..000000000 --- a/apps/documentation/pages/_meta.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "index": { - "type": "page", - "title": "Home", - "display": "hidden", - "theme": { - "timestamp": false - } - }, - "users": { - "type": "page", - "title": "Users" - }, - "developers": { - "type": "page", - "title": "Developers" - }, - "updates": { - "title": "What's New", - "type": "menu", - "items": { - "changelog": { - "title": "Changelog", - "href": "https://documenso.com/changelog", - "newWindow": true - }, - "blog": { - "title": "Blog", - "href": "https://documenso.com/blog", - "newWindow": true - } - } - } -} \ No newline at end of file diff --git a/apps/documentation/pages/developers/_meta.js b/apps/documentation/pages/developers/_meta.js new file mode 100644 index 000000000..2f0f9b24d --- /dev/null +++ b/apps/documentation/pages/developers/_meta.js @@ -0,0 +1,18 @@ +export default { + index: 'Introduction', + '-- Development & Deployment': { + type: 'separator', + title: 'Development & Deployment', + }, + 'local-development': 'Local Development', + 'developer-mode': 'Developer Mode', + 'self-hosting': 'Self Hosting', + contributing: 'Contributing', + '-- API & Integration Guides': { + type: 'separator', + title: 'API & Integration Guides', + }, + 'public-api': 'Public API', + embedding: 'Embedding', + webhooks: 'Webhooks', +}; diff --git a/apps/documentation/pages/developers/_meta.json b/apps/documentation/pages/developers/_meta.json deleted file mode 100644 index b3238257d..000000000 --- a/apps/documentation/pages/developers/_meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "index": "Introduction", - "-- Development & Deployment": { - "type": "separator", - "title": "Development & Deployment" - }, - "local-development": "Local Development", - "developer-mode": "Developer Mode", - "self-hosting": "Self Hosting", - "contributing": "Contributing", - "-- API & Integration Guides": { - "type": "separator", - "title": "API & Integration Guides" - }, - "public-api": "Public API", - "embedding": "Embedding", - "webhooks": "Webhooks" -} diff --git a/apps/documentation/pages/developers/contributing/_meta.js b/apps/documentation/pages/developers/contributing/_meta.js new file mode 100644 index 000000000..65d40b84e --- /dev/null +++ b/apps/documentation/pages/developers/contributing/_meta.js @@ -0,0 +1,4 @@ +export default { + index: 'Getting Started', + 'contributing-translations': 'Contributing Translations', +}; diff --git a/apps/documentation/pages/developers/contributing/_meta.json b/apps/documentation/pages/developers/contributing/_meta.json deleted file mode 100644 index 262c5231c..000000000 --- a/apps/documentation/pages/developers/contributing/_meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "index": "Getting Started", - "contributing-translations": "Contributing Translations" -} \ No newline at end of file diff --git a/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx b/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx index 7489912e6..8f57a127d 100644 --- a/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx +++ b/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx @@ -5,14 +5,22 @@ description: Learn how to get the coordinates of a field in a document. ## Field Coordinates -Field coordinates represent the position of a field in a document. They are returned in the `pageX` and `pageY` properties of the field. +Field coordinates represent the position of a field in a document. They are returned in the `pageX`, `pageY`, `width` and `height` properties of the field. To enable field coordinates, you can use the `devmode` query parameter. ```bash -https://app.documenso.com/documents//edit?devmode=true +# Legacy editor + +https://app.documenso.com/t//documents//legacy_editor?devmode=true ``` -You should then see the coordinates on top of each field. +![Field Coordinates Legacy Editor](/developer-mode/field-coordinates-legacy-editor.webp) -![Field Coordinates](/developer-mode/field-coordinates.webp) +```bash +# New editor + +https://app.documenso.com/t//documents//edit?step=addFields&devmode=true +``` + +![Field Coordinates New Editor](/developer-mode/field-coordinates-new-editor.webp) diff --git a/apps/documentation/pages/developers/embedding/_meta.js b/apps/documentation/pages/developers/embedding/_meta.js new file mode 100644 index 000000000..bfa67f172 --- /dev/null +++ b/apps/documentation/pages/developers/embedding/_meta.js @@ -0,0 +1,11 @@ +export default { + index: 'Get Started', + react: 'React Integration', + vue: 'Vue Integration', + svelte: 'Svelte Integration', + solid: 'Solid Integration', + preact: 'Preact Integration', + angular: 'Angular Integration', + 'css-variables': 'CSS Variables', + authoring: 'Authoring', +}; diff --git a/apps/documentation/pages/developers/embedding/_meta.json b/apps/documentation/pages/developers/embedding/_meta.json deleted file mode 100644 index 78d8b2503..000000000 --- a/apps/documentation/pages/developers/embedding/_meta.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "index": "Get Started", - "react": "React Integration", - "vue": "Vue Integration", - "svelte": "Svelte Integration", - "solid": "Solid Integration", - "preact": "Preact Integration", - "angular": "Angular Integration", - "css-variables": "CSS Variables", - "authoring": "Authoring" -} \ No newline at end of file diff --git a/apps/documentation/pages/developers/embedding/authoring.mdx b/apps/documentation/pages/developers/embedding/authoring.mdx index 8d5c4d09f..d3427f1c8 100644 --- a/apps/documentation/pages/developers/embedding/authoring.mdx +++ b/apps/documentation/pages/developers/embedding/authoring.mdx @@ -5,18 +5,38 @@ description: Learn how to use embedded authoring to create documents and templat # Embedded Authoring -In addition to embedding signing experiences, Documenso now supports embedded authoring, allowing you to integrate document and template creation directly within your application. +In addition to embedding signing experiences, Documenso now supports embedded authoring, allowing you to integrate document and template creation and editing directly within your application. ## How Embedded Authoring Works -The embedded authoring feature enables your users to create new documents without leaving your application. This process works through secure presign tokens that authenticate the embedding session and manage permissions. +The embedded authoring feature enables your users to create and edit documents and templates without leaving your application. This process works through secure presign tokens that authenticate the embedding session and manage permissions. -## Creating Documents with Embedded Authoring +## Available Components -To implement document creation in your application, use the `EmbedCreateDocument` component from our SDK: +The SDK provides four authoring components: + +- **`EmbedCreateDocumentV1`** - Create new documents +- **`EmbedCreateTemplateV1`** - Create new templates +- **`EmbedUpdateDocumentV1`** - Edit existing documents +- **`EmbedUpdateTemplateV1`** - Edit existing templates + +React Example: ```jsx -import { unstable_EmbedCreateDocument as EmbedCreateDocument } from '@documenso/embed-react'; +import { + EmbedCreateDocumentV1, + EmbedCreateTemplateV1, + EmbedUpdateDocumentV1, + EmbedUpdateTemplateV1, +} from '@documenso/embed-react'; +``` + +## Creating Documents + +To implement document creation in your application, use the `EmbedCreateDocumentV1` component: + +```jsx +import { EmbedCreateDocumentV1 } from '@documenso/embed-react'; const DocumentCreator = () => { // You'll need to obtain a presign token using your API key @@ -37,14 +57,93 @@ const DocumentCreator = () => { }; ``` +## Creating Templates + +To create templates, use the `EmbedCreateTemplateV1` component: + +```jsx +import { EmbedCreateTemplateV1 } from '@documenso/embed-react'; + +const TemplateCreator = () => { + const presignToken = 'YOUR_PRESIGN_TOKEN'; + + return ( +
+ { + console.log('Template created with ID:', data.templateId); + console.log('External reference ID:', data.externalId); + }} + /> +
+ ); +}; +``` + +## Updating Documents + +To edit existing documents, use the `EmbedUpdateDocumentV1` component: + +```jsx +import { EmbedUpdateDocumentV1 } from '@documenso/embed-react'; + +const DocumentEditor = () => { + const presignToken = 'YOUR_PRESIGN_TOKEN'; + const documentId = 123; // The ID of the document to edit + + return ( +
+ { + console.log('Document updated:', data.documentId); + }} + /> +
+ ); +}; +``` + +## Updating Templates + +To edit existing templates, use the `EmbedUpdateTemplateV1` component: + +```jsx +import { EmbedUpdateTemplateV1 } from '@documenso/embed-react'; + +const TemplateEditor = () => { + const presignToken = 'YOUR_PRESIGN_TOKEN'; + const templateId = 456; // The ID of the template to edit + + return ( +
+ { + console.log('Template updated:', data.templateId); + }} + /> +
+ ); +}; +``` + ## Obtaining a Presign Token -Before using the `EmbedCreateDocument` component, you'll need to obtain a presign token from your backend. This token authorizes the embedding session. +Before using any of the authoring components, you'll need to obtain a presign token from your backend. This token authorizes the embedding session. You can create a presign token by making a request to: ``` -POST /api/v2-beta/embedding/create-presign-token +POST /api/v2/embedding/create-presign-token ``` This API endpoint requires authentication with your Documenso API key. The token has a default expiration of 1 hour, but you can customize this duration based on your security requirements. @@ -53,17 +152,29 @@ You can find more details on this request at our [API Documentation](https://ope ## Configuration Options -The `EmbedCreateDocument` component accepts several configuration options: +All authoring components accept the following configuration options: -| Option | Type | Description | -| ------------------ | ------- | ------------------------------------------------------------------ | -| `presignToken` | string | **Required**. The authentication token for the embedding session. | -| `externalId` | string | Optional reference ID from your system to link with the document. | -| `host` | string | Optional custom host URL. Defaults to `https://app.documenso.com`. | -| `css` | string | Optional custom CSS to style the embedded component. | -| `cssVars` | object | Optional CSS variables for colors, spacing, and more. | -| `darkModeDisabled` | boolean | Optional flag to disable dark mode. | -| `className` | string | Optional CSS class name for the iframe. | +| Option | Type | Description | +| ------------------ | ------- | -------------------------------------------------------------------------- | +| `presignToken` | string | **Required**. The authentication token for the embedding session. | +| `externalId` | string | Optional reference ID from your system to link with the document/template. | +| `host` | string | Optional custom host URL. Defaults to `https://app.documenso.com`. | +| `css` | string | Optional custom CSS to style the embedded component. | +| `cssVars` | object | Optional CSS variables for colors, spacing, and more. | +| `darkModeDisabled` | boolean | Optional flag to disable dark mode. | +| `className` | string | Optional CSS class name for the iframe. | +| `additionalProps` | object | Optional additional props to pass to the iframe (for testing features). | +| `features` | object | Optional feature toggles to customize the authoring experience. | + +### Update Component Specific Props + +The `EmbedUpdateDocument` and `EmbedUpdateTemplate` components also accept: + +| Option | Type | Description | +| ---------------- | ------- | -------------------------------------------------------------------------------------------------------------- | +| `documentId` | number | **Required for EmbedUpdateDocument**. The ID of the document to edit. | +| `templateId` | number | **Required for EmbedUpdateTemplate**. The ID of the template to edit. | +| `onlyEditFields` | boolean | Optional flag to restrict editing to fields only skipping the recipient configuration step (default: `false`). | ## Feature Toggles @@ -83,9 +194,11 @@ You can customize the authoring experience by enabling or disabling specific fea /> ``` -## Handling Document Creation Events +## Handling Events -The `onDocumentCreated` callback is triggered when a document is successfully created, providing both the document ID and your external reference ID: +Each component provides callbacks for handling completion events: + +### Document Events ```jsx + + { + console.log('Document updated:', data.documentId); + // Handle document update + }} +/> ``` +### Template Events + +```jsx + { + console.log('Template created:', data.templateId); + // Handle template creation + }} +/> + + { + console.log('Template updated:', data.templateId); + // Handle template update + }} +/> +``` + +All event callbacks receive an object with: + +- `documentId` or `templateId` - The ID of the created/updated document or template +- `externalId` - Your external reference ID (if provided) + ## Styling the Embedded Component -You can customize the appearance of the embedded component using standard CSS classes: +You can customize the appearance of the embedded component using standard CSS classes, custom CSS, and CSS variables: ```jsx (null); + const [mode, setMode] = useState<'create' | 'edit'>('create'); - if (documentId) { + if (documentId && mode === 'create') { return (

Document Created Successfully!

Document ID: {documentId}

- +
+ + +
+
+ ); + } + + if (mode === 'edit' && documentId) { + return ( +
+ + { + console.log('Document updated:', data.documentId); + setMode('create'); + }} + />
); } @@ -153,6 +330,14 @@ function DocumentCreator() { { setDocumentId(data.documentId); }} @@ -161,7 +346,38 @@ function DocumentCreator() { ); } -export default DocumentCreator; +export default DocumentManager; ``` -With embedded authoring, your users can seamlessly create documents within your application, enhancing the overall user experience and streamlining document workflows. +## Advanced Usage + +### Using Additional Props + +You can pass additional props to the iframe for testing features before they're officially supported: + +```jsx + +``` + +### Restricting To Only Field Editing + +When updating documents or templates, you can restrict editing to fields only skipping the recipient configuration step: + +```jsx + { + console.log('Fields updated:', data.documentId); + }} +/> +``` + +With embedded authoring, your users can seamlessly create and edit documents and templates within your application, enhancing the overall user experience and streamlining document workflows. diff --git a/apps/documentation/pages/developers/index.mdx b/apps/documentation/pages/developers/index.mdx index 6b491a06b..4a65b2d3b 100644 --- a/apps/documentation/pages/developers/index.mdx +++ b/apps/documentation/pages/developers/index.mdx @@ -3,16 +3,16 @@ title: Developer Documentation description: Learn how to run Documenso locally, use our API, integrate webhooks, contribute to the project, and self-host Documenso. --- -import { Card, Cards } from 'nextra/components'; +import { Cards } from 'nextra/components'; # Developer Documentation The developer documentation is a comprehensive guide to help you: - - - - - + + + + + diff --git a/apps/documentation/pages/developers/local-development/_meta.js b/apps/documentation/pages/developers/local-development/_meta.js new file mode 100644 index 000000000..f092f5133 --- /dev/null +++ b/apps/documentation/pages/developers/local-development/_meta.js @@ -0,0 +1,8 @@ +export default { + index: 'Get Started', + quickstart: 'Developer Quickstart', + manual: 'Manual Setup', + gitpod: 'Gitpod', + 'signing-certificate': 'Signing Certificate', + translations: 'Translations', +}; diff --git a/apps/documentation/pages/developers/local-development/_meta.json b/apps/documentation/pages/developers/local-development/_meta.json deleted file mode 100644 index 725e5e278..000000000 --- a/apps/documentation/pages/developers/local-development/_meta.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "index": "Get Started", - "quickstart": "Developer Quickstart", - "manual": "Manual Setup", - "gitpod": "Gitpod", - "signing-certificate": "Signing Certificate", - "translations": "Translations" -} \ No newline at end of file diff --git a/apps/documentation/pages/developers/local-development/quickstart.mdx b/apps/documentation/pages/developers/local-development/quickstart.mdx index fdf1590f2..563505024 100644 --- a/apps/documentation/pages/developers/local-development/quickstart.mdx +++ b/apps/documentation/pages/developers/local-development/quickstart.mdx @@ -61,6 +61,6 @@ You can access the following services: - Main application - http://localhost:3000 - Incoming Mail Access - http://localhost:9000 - Database Connection Details: -- Port: 54320 -- Connection: Use your favourite database client to connect to the database. + - Port: 54320 + - Connection: Use your favorite database client to connect to the database. - S3 Storage Dashboard - http://localhost:9001 diff --git a/apps/documentation/pages/developers/public-api/_meta.js b/apps/documentation/pages/developers/public-api/_meta.js new file mode 100644 index 000000000..0db8e0114 --- /dev/null +++ b/apps/documentation/pages/developers/public-api/_meta.js @@ -0,0 +1,6 @@ +export default { + index: 'Get Started', + authentication: 'Authentication', + 'rate-limits': 'Rate Limits', + versioning: 'Versioning', +}; diff --git a/apps/documentation/pages/developers/public-api/_meta.json b/apps/documentation/pages/developers/public-api/_meta.json deleted file mode 100644 index 04132f894..000000000 --- a/apps/documentation/pages/developers/public-api/_meta.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "index": "Get Started", - "authentication": "Authentication", - "rate-limits": "Rate Limits", - "versioning": "Versioning" -} diff --git a/apps/documentation/pages/developers/public-api/authentication.mdx b/apps/documentation/pages/developers/public-api/authentication.mdx index a2e107f2f..afbea7033 100644 --- a/apps/documentation/pages/developers/public-api/authentication.mdx +++ b/apps/documentation/pages/developers/public-api/authentication.mdx @@ -9,11 +9,11 @@ Documenso uses API keys for authentication. An API key is a unique token that is ## Creating an API Key -To create an API key, navigate to the user settings page. Click on your avatar in the top right corner of the dashboard and select "**[User settings](https://app.documenso.com/settings)**" from the dropdown menu. +To create an API key, navigate to the user settings page. Click on your avatar in the top right corner of the dashboard and select "Team Settings" from the dropdown menu. ![A screenshot of the Documenso's dashboard that shows the dropdown menu when you click on your user avatar](/public-api-images/documenso-user-dropdown-menu.webp) -Once you're on the user settings page, navigate to the "**[API Tokens](https://app.documenso.com/settings/tokens)**" tab. The "API Token" page lists your existing keys and enables you to create new ones. +Once you're on the settings page, navigate to the **API Tokens** tab. This page lists your existing keys and enables you to create new ones. ![A screenshot of the Documenso's user settings page that shows the API Tokens page](/public-api-images/api-tokens-page-documenso.webp) @@ -37,31 +37,17 @@ You must include the API key in the `Authorization` request header to authentica Here's a sample API request using cURL: ```bash -curl --location 'https://app.documenso.com/api/v1/documents?page=1&perPage=1' \ ---header 'Authorization: api_xxxxxxxxxxxxxxxx' +curl --location 'https://app.documenso.com/api/v2/envelope/create' \ +--header 'Authorization: api_xxxxxxxxxxxxxxxx' \ +--form 'payload={ "title": "Some Title", "type": "DOCUMENT" }' ``` Here's a sample response from the API based on the above cURL request: ```json { - "documents": [ - { - "id": 11, - "userId": 2, - "teamId": null, - "title": "documenso", - "status": "PENDING", - "documentDataId": "ab2ecm1npk11rt5sp398waf7h", - "createdAt": "2024-04-25T11:05:18.420Z", - "updatedAt": "2024-04-25T11:05:36.328Z", - "completedAt": null - } - ], - "totalPages": 1 + "id": "envelope_xxxxxxxxxxxxx" } ``` -![A screenshot of a cURL request to the Documenso public API with the API key in the Authorization header](/public-api-images/documenso-api-authorization.webp) - -The API key has access to your account and all its resources. Please keep it secure and do not share it with others. If you suspect your key has been compromised, you can revoke it from the "API Tokens" page in your user settings. +The API key has access to your account and all its resources. Please keep it secure and do not share it with others. If you suspect your key has been compromised, you can revoke it from the same page you created it from. diff --git a/apps/documentation/pages/developers/public-api/index.mdx b/apps/documentation/pages/developers/public-api/index.mdx index 81b7536aa..f589c6c0f 100644 --- a/apps/documentation/pages/developers/public-api/index.mdx +++ b/apps/documentation/pages/developers/public-api/index.mdx @@ -9,19 +9,13 @@ import { Callout, Steps } from 'nextra/components'; Documenso provides a public REST API enabling you to interact with your documents programmatically. The API exposes various HTTP endpoints that allow you to perform operations such as: -- retrieving, uploading, deleting, and sending documents for signing -- creating, updating, and deleting recipients -- creating, updating, and deleting document fields +- Retrieving, uploading, deleting, and sending documents for signing +- Creating, updating, and deleting recipients +- Creating, updating, and deleting document fields The documentation walks you through creating API keys and using them to authenticate your API requests. You'll also learn about the available endpoints, request and response formats, and how to use the API. -## API V1 - Stable - -Check out the [API V1 documentation](https://app.documenso.com/api/v1/openapi) for details about the API endpoints, request parameters, response formats, and authentication methods. - -## API V2 - Beta - -API V2 is currently beta, and will be subject to breaking changes +## API V2 - Stable Check out the [API V2 documentation](https://documen.so/api-v2-docs) for details about the API endpoints, request parameters, response formats, and authentication methods. @@ -32,18 +26,15 @@ Our new API V2 supports the following typed SDKs: - [Go](https://github.com/documenso/sdk-go) - For the staging API, please use the following base URL: - `https://stg-app.documenso.com/api/v2-beta/` + For the staging API, please use the following base URL: `https://stg-app.documenso.com/api/v2/` -🚀 [V2 Announcement](https://documen.so/sdk-blog) +## API V1 - Deprecated + +Check out the [API V1 documentation](https://app.documenso.com/api/v1/openapi) for details about the API endpoints, request parameters, response formats, and authentication methods. 📖 [Documentation](https://documen.so/api-v2-docs) -💬 [Leave Feedback](https://documen.so/sdk-feedback) - -🔔 [Breaking Changes](https://documen.so/sdk-breaking) - ## Availability The API is available to individual users, teams and higher plans. [Fair Use](https://documen.so/fair) applies. diff --git a/apps/documentation/pages/developers/public-api/rate-limits.mdx b/apps/documentation/pages/developers/public-api/rate-limits.mdx index 1941258cd..82ee1b046 100644 --- a/apps/documentation/pages/developers/public-api/rate-limits.mdx +++ b/apps/documentation/pages/developers/public-api/rate-limits.mdx @@ -1,3 +1,8 @@ +--- +title: Rate Limits +description: Learn about the rate limits for the Documenso Public API. +--- + import { Callout } from 'nextra/components'; # Rate Limits diff --git a/apps/documentation/pages/developers/public-api/reference.mdx b/apps/documentation/pages/developers/public-api/reference.mdx index db0232797..19b1c9242 100644 --- a/apps/documentation/pages/developers/public-api/reference.mdx +++ b/apps/documentation/pages/developers/public-api/reference.mdx @@ -7,550 +7,246 @@ import { Callout, Steps } from 'nextra/components'; # API Reference -The Swagger UI for the API is available at [/api/v1/openapi](https://app.documenso.com/api/v1/openapi). This page provides detailed information about the API endpoints, request and response formats, and authentication requirements. - -## Upload a Document - -Uploading a document to your Documenso account requires a two-step process. - - - -### Create Document - -First, you need to make a `POST` request to the `/api/v1/documents` endpoint, which takes a JSON payload with the following fields: - -```json -{ - "title": "string", - "externalId": "string", - "recipients": [ - { - "name": "string", - "email": "user@example.com", - "role": "SIGNER", - "signingOrder": 0 - } - ], - "meta": { - "subject": "string", - "message": "string", - "timezone": "Etc/UTC", - "dateFormat": "yyyy-MM-dd hh:mm a", - "redirectUrl": "string", - "signingOrder": "PARALLEL" - }, - "authOptions": { - "globalAccessAuth": "ACCOUNT", - "globalActionAuth": "ACCOUNT" - }, - "formValues": { - "additionalProp1": "string", - "additionalProp2": "string", - "additionalProp3": "string" - } -} -``` - -- `title` _(required)_ - This represents the document's title. -- `externalId` - This is an optional field that you can use to store an external identifier for the document. This can be useful for tracking the document in your system. -- `recipients` _(required)_ - This is an array of recipient objects. Each recipient object has the following fields: - - `name` - The name of the recipient. - - `email` - The email address of the recipient. - - `role` - The role of the recipient. See the [available roles](/users/signing-documents#roles). - - `signingOrder` - The order in which the recipient should sign the document. This is an integer value starting from 0. -- `meta` - This object contains additional metadata for the document. It has the following fields: - - `subject` - The subject of the email that will be sent to the recipients. - - `message` - The message of the email that will be sent to the recipients. - - `timezone` - The timezone in which the document should be signed. - - `dateFormat` - The date format that should be used in the document. - - `redirectUrl` - The URL to which the user should be redirected after signing the document. - - `signingOrder` - The signing order for the document. This can be either `SEQUENTIAL` or `PARALLEL`. -- `authOptions` - This object contains authentication options for the document. It has the following fields: - - `globalAccessAuth` - The authentication level required to access the document. This can be either `ACCOUNT` or `null`. - - If the document is set to `ACCOUNT`, all recipients must authenticate with their Documenso account to access it. - - The document can be accessed without a Documenso account if it's set to `null`. - - `globalActionAuth` - The authentication level required to perform actions on the document. This can be `ACCOUNT`, `PASSKEY`, `TWO_FACTOR_AUTH`, or `null`. - - If the document is set to `ACCOUNT`, all recipients must authenticate with their Documenso account to perform actions on the document. - - If it's set to `PASSKEY`, all recipients must have the passkey active to perform actions on the document. - - If it's set to `TWO_FACTOR_AUTH`, all recipients must have the two-factor authentication active to perform actions on the document. - - If it's set to `null`, all the recipients can perform actions on the document without any authentication. -- `formValues` - This object contains additional form values for the document. This property only works with native PDF fields and accepts three types: number, text and boolean. +On this page we will refer to both Documents and Templates as Envelopes for convenience, unless otherwise specified. - The `globalActionAuth` property is only available for Enterprise accounts. + This page is used to demonstrate some of the endpoints and how to use them. For the full API + reference, please see the [API Reference](https://openapi.documenso.com/). -Here's an example of the JSON payload for uploading a document: +## Get Envelope -```json -{ - "title": "my-document.pdf", - "externalId": "12345", - "recipients": [ - { - "name": "Alex Blake", - "email": "alexblake@email.com", - "role": "SIGNER", - "signingOrder": 1 - }, - { - "name": "Ash Drew", - "email": "ashdrew@email.com", - "role": "SIGNER", - "signingOrder": 0 - } - ], - "meta": { - "subject": "Sign the document", - "message": "Hey there, please sign this document.", - "timezone": "Europe/London", - "dateFormat": "Day, Month Year", - "redirectUrl": "https://mysite.com/welcome", - "signingOrder": "SEQUENTIAL" - }, - "authOptions": { - "globalAccessAuth": "ACCOUNT", - "globalActionAuth": "PASSKEY" - } -} +For the vast majority of use cases, you will need to retrieve the envelope to get details for further operations. + +The main details you generally want to extract are the following: + +- **Recipients** - The individuals who will be signing the document +- **Fields** - The fields the user will sign +- **Items** - The PDF files the user will see and sign + +This is done by doing a the following GET [request](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/create) + +```sh +curl -X GET "https://app.documenso.com/api/v2/envelope/envelope_xxxxxxxxxxxxx" \ + -H "Authorization: api_xxxxxxxxxxxxxx" ``` -### Upload to S3 - -A successful API call to the `/api/v1/documents` endpoint returns a JSON response containing the upload URL, document ID, and recipient information. - -The upload URL is a pre-signed S3 URL that you can use to upload the document to the Documenso (or your) S3 bucket. You need to make a `PUT` request to this URL to upload the document. - -```json -{ - "uploadUrl": "https://///my-document.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=&X-Amz-Date=&X-Amz-Expires=3600&X-Amz-Signature=&X-Amz-SignedHeaders=host&x-id=PutObject", - "documentId": 51, - "recipients": [ - { - "recipientId": 11, - "name": "Alex Blake", - "email": "alexblake@email.com", - "token": "", - "role": "SIGNER", - "signingOrder": 1, - "signingUrl": "https://app.documenso.com/sign/" - }, - { - "recipientId": 12, - "name": "Ash Drew", - "email": "ashdrew@email.com", - "token": "", - "role": "SIGNER", - "signingOrder": 0, - "signingUrl": "https://app.documenso.com/sign/" - } - ] -} -``` - -When you make the `PUT` request to the pre-signed URL, you need to include the document file you want to upload. The image below shows how to upload a document to the S3 bucket via Postman. - -![Upload document to S3](/api-reference/upload-document-to-s3.webp) - -Here's an example of how to upload a document using cURL: - -```bash -curl --location --request PUT 'https://///my-document.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=&X-Amz-Date=&X-Amz-Expires=3600&X-Amz-Signature=&X-Amz-SignedHeaders=host&x-id=PutObject' \ ---form '=@"/Users/my-user/Documents/documenso.pdf"' -``` - -Once the document is successfully uploaded, you can access it in your Documenso account dashboard. The screenshot below shows the document that was uploaded via the API. - -![Uploaded Document](/api-reference/document-uploaded-to-documenso-via-api.webp) - - - -## Generate Document From Template - -Documenso allows you to generate documents from templates. This is useful when you have a standard document format you want to reuse. - -The API endpoint for generating a document from a template is `/api/v1/templates/{templateId}/generate-document`, and it takes a JSON payload with the following fields: - -```json -{ - "title": "string", - "externalId": "string", - "recipients": [ - { - "id": 0, - "name": "string", - "email": "user@example.com", - "signingOrder": 0 - } - ], - "meta": { - "subject": "string", - "message": "string", - "timezone": "string", - "dateFormat": "string", - "redirectUrl": "string", - "signingOrder": "PARALLEL" - }, - "authOptions": { - "globalAccessAuth": "ACCOUNT", - "globalActionAuth": "ACCOUNT" - }, - "formValues": { - "additionalProp1": "string", - "additionalProp2": "string", - "additionalProp3": "string" - } -} -``` - -The JSON payload is identical to the payload for uploading a document, so you can read more about the fields in the [Create Document](/developers/public-api/reference#create-document) step. For this API endpoint, the `recipients` property is required. - - - -### Grab the Template ID - -The first step is to retrieve the template ID from the Documenso dashboard. You can find the template ID in the URL by navigating to the template details page. - -![Template ID](/api-reference/documenso-template-id.webp) - -In this case, the template ID is "99999". - -### Retrieve the Recipient(s) ID(s) - -Once you have the template ID, the next step involves retrieving the ID(s) of the recipient(s) from the template. You can do this by making a GET request to `/api/v1/templates/{template-id}`. - A successful response looks as follows: ```json { - "id": 0, - "externalId": "string", - "type": "PUBLIC", - "title": "string", - "userId": 0, - "teamId": 0, - "templateDocumentDataId": "string", - "createdAt": "2024-10-11T08:46:58.247Z", - "updatedAt": "2024-10-11T08:46:58.247Z", - "templateMeta": { - "id": "string", - "subject": "string", - "message": "string", - "timezone": "string", - "dateFormat": "string", - "templateId": 0, - "redirectUrl": "string", - "signingOrder": "PARALLEL" - }, - "directLink": { - "token": "string", - "enabled": true - }, - "templateDocumentData": { - "id": "string", - "type": "S3_PATH", - "data": "string" - }, - "Field": [ - { - "id": 0, - "recipientId": 0, - "type": "SIGNATURE", - "page": 0, - "positionX": "string", - "positionY": "string", - "width": "string", - "height": "string" - } - ], - "Recipient": [ - { - "id": 0, - "email": "user@example.com", - "name": "string", - "signingOrder": 0, - "authOptions": "string", - "role": "CC" - } - ] -} -``` - -You'll need the recipient(s) ID(s) for the next step. - -### Generate the Document - -To generate a document from the template, you need to make a POST request to the `/api/v1/templates/{template-id}/generate-document` endpoint. - -At the minimum, you must provide the `recipients` array in the JSON payload. Here's an example of the JSON payload: - -```json -{ - "recipients": [ - { - "id": 0, - "name": "Ash Drew", - "email": "ashdrew@email.com", - "signingOrder": 0 - } - ] -} -``` - -Filling the `recipients` array with the corresponding recipient for each template placeholder recipient is recommended. For example, if the template has two placeholders, you should provide at least two recipients in the `recipients` array. Otherwise, the document will be sent to inexistent recipients such as ``. However, the recipients can always be edited via the API or the web app. - -A successful response will contain the document ID and recipient(s) information. - -```json -{ - "documentId": 999, - "recipients": [ - { - "recipientId": 0, - "name": "Ash Drew", - "email": "ashdrew@email.com", - "token": "", - "role": "SIGNER", - "signingOrder": null, - "signingUrl": "https://app.documenso.com/sign/" - } - ] -} -``` - -You can now access the document in your Documenso account dashboard. The screenshot below shows the document that was generated from the template. - -![Generated Document](/api-reference/document-generated-from-template.webp) - - - -## Add Fields to Document - -The API allows you to add fields to a document via the `/api/v1/documents/{documentId}/fields` endpoint. This is useful when you want to add fields to a document before sending it to recipients. - -To add fields to a document, you need to make a `POST` request with a JSON payload containing the field(s) information. - -```json -{ - "recipientId": 0, - "type": "SIGNATURE", - "pageNumber": 0, - "pageX": 0, - "pageY": 0, - "pageWidth": 0, - "pageHeight": 0, - "fieldMeta": { - "label": "string", - "placeholder": "string", - "required": true, - "readOnly": true, - "type": "text", - "text": "string", - "characterLimit": 0 - } -} - -// or - -[ - { - "recipientId": 0, - "type": "SIGNATURE", - "pageNumber": 0, - "pageX": 0, - "pageY": 0, - "pageWidth": 0, - "pageHeight": 0 - }, - { - "recipientId": 0, - "type": "TEXT", - "pageNumber": 0, - "pageX": 0, - "pageY": 0, - "pageWidth": 0, - "pageHeight": 0, - "fieldMeta": { - "label": "string", - "placeholder": "string", - "required": true, - "readOnly": true, - "type": "text", - "text": "string", - "characterLimit": 0 - } - } -] -``` - -This endpoint accepts either one field or an array of fields. - -Before adding fields to a document, you need each recipient's ID. If the document already has recipients, you can query the document to retrieve the recipient's details. If the document has no recipients, you need to add a recipient via the UI or API before adding a field. - - - -### Retrieve the Recipient(s) ID(s) - -Perform a `GET` request to the `/api/v1/documents/{id}` to retrieve the details of a specific document, including the recipient's information. - -An example response would look like this: - -```json -{ - "id": 137, - "externalId": null, - "userId": 3, - "teamId": null, - "title": "documenso.pdf", + "internalVersion": 2, + "type": "TEMPLATE", "status": "DRAFT", - "documentDataId": "", - "createdAt": "2024-10-11T12:29:12.725Z", - "updatedAt": "2024-10-11T12:29:12.725Z", + "source": "TEMPLATE", + "visibility": "EVERYONE", + "templateType": "PRIVATE", + "id": "envelope_xxxxxxxxxxxxxxxx", + "secondaryId": "template_9", + "externalId": null, + "createdAt": "2025-11-12T11:36:38.391Z", + "updatedAt": "2025-11-12T11:36:55.648Z", "completedAt": null, + "deletedAt": null, + "title": "Title", "recipients": [ { - "id": 55, - "documentId": 137, - "email": "ashdrew@email.com", - "name": "Ash Drew", + "envelopeId": "envelope_xxxxxxxxxxxxxxxx", "role": "SIGNER", - "signingOrder": null, - "token": "", - "signedAt": null, "readStatus": "NOT_OPENED", "signingStatus": "NOT_SIGNED", "sendStatus": "NOT_SENT", - "signingUrl": "https://app.documenso.com/sign/" + "id": 0, + "email": "recipient+1@documenso.com", + "name": "", + "token": "cxH2Ss79Hj94M1U3PxRAG", + "documentDeletedAt": null, + "expired": null, + "signedAt": null, + "authOptions": { + "accessAuth": [], + "actionAuth": [] + }, + "signingOrder": 1, + "rejectionReason": null } ] -} -``` - -From this response, you'll only need the recipient ID, which is `55` in this case. - -### (OR) Add a Recipient - -If the document doesn't already have recipient(s), you can add recipient(s) via the API. Make a `POST` request to the `/api/v1/documents/{documentId}/recipients` endpoint with the recipient information. This endpoint takes the following JSON payload: - -```json -{ - "name": "string", - "email": "user@example.com", - "role": "SIGNER", - "signingOrder": 0, - "authOptions": { - "actionAuth": "ACCOUNT" - } -} -``` - -The `authOptions` property is only available for Enterprise accounts. - -Here's an example of the JSON payload for adding a recipient: - -```json -{ - "name": "Ash Drew", - "email": "ashdrew@email.com", - "role": "SIGNER", - "signingOrder": 0 -} -``` - -A successful request will return a JSON response with the newly added recipient. You can now use the recipient ID to add fields to the document. - -### Add Field(s) - -Now you can make a `POST` request to the `/api/v1/documents/{documentId}/fields` endpoint with the field(s) information. Here's an example: - -```json -[ - { - "recipientId": 55, - "type": "SIGNATURE", - "pageNumber": 1, - "pageX": 50, - "pageY": 20, - "pageWidth": 25, - "pageHeight": 5 - }, - { - "recipientId": 55, - "type": "TEXT", - "pageNumber": 1, - "pageX": 20, - "pageY": 50, - "pageWidth": 30, - "pageHeight": 7.5, - "fieldMeta": { - "label": "Address", - "placeholder": "32 New York Street, 41241", - "required": true, - "readOnly": false, - "type": "text", - "text": "32 New York Street, 41241", - "characterLimit": 40 + "envelopeItems": [ + { + "envelopeId": "envelope_xxxxxxxxxxxxxxxx", + "id": "envelope_item_xxxxxxxxxxxxxxxxx", + "title": "FileOne", + "order": 1 } - } -] + ], + // Other attributes +} +``` + +## Create Envelope + +This example request will create a document with the following: + +- Two PDF files +- Two recipients with one field each + +You will need to: + +- Replace api_xxxxxxxxxxxxxx with your API key +- Replace the file paths with the actual paths to your files + +Note that the identifier on a field is linking to the files you upload. It can either be the index of the file or the filename. In this example it uses the index of the file. + +```sh +curl -X POST "https://app.documenso.com/api/v2/envelope/create" \ + -H "Authorization: api_xxxxxxxxxxxxxx" \ + -H "Content-Type: multipart/form-data" \ + -F 'payload={ + "type": "DOCUMENT", + "title": "Envelope Full Field Test", + "recipients": [ + { + "email": "recipient+1@example.com", + "name": "Recipient One", + "role": "SIGNER", + "fields": [ + { + "identifier": 0, + "type": "SIGNATURE", + "page": 1, + "positionX": 0, + "positionY": 0, + "width": 50, + "height": 50 + } + ] + }, + { + "email": "recipient-2@example.com", + "name": "Recipient Two", + "role": "SIGNER", + "fields": [ + { + "identifier": 1, + "type": "SIGNATURE", + "page": 1, + "positionX": 0, + "positionY": 0, + "width": 50, + "height": 50 + } + ] + } + ] + }' \ + -F "files=@./field-font-alignment.pdf;type=application/pdf" \ + -F "files=@./field-meta.pdf;type=application/pdf" ``` - The `text` field represents the default value of the field. If the user doesn't provide any other - value, this is the value that will be used to sign the field. + See the full request and response formats for the create endpoint + [here](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/create) - - It's important to pass the `type` in the `fieldMeta` property for the advanced fields. [Read more - here](#a-note-on-advanced-fields) +## Use Template + +Documenso allows you to generate documents from templates. This is useful when you have a standard document format you want to reuse. + +The API endpoint for generating a document from a template is `/api/v2/envelopes/use`, and it takes a JSON payload with the following fields: + + + See the full request and response formats for the use endpoint + [here](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/use) -A successful request will return a JSON response with the newly added fields. The image below illustrates the fields added to the document via the API. + -![A screenshot of the document in the Documenso editor](/api-reference/fields-added-via-api.webp) +### Grab the Template ID - +The first step is to retrieve the ID of the template you want to use. This can be done via the API or from the Documenso UI. -#### A Note on Advanced Fields +You can get the ID by navigating to the template page and looking at the URL. The ID is the last part of the URL which looks like this "envelope_xxxxxxxx" -The advanced fields are: text, checkbox, radio, number, and select. Whenever you append any of these advanced fields to a document, you need to pass the `type` in the `fieldMeta` property: +### Retrieve the Recipient(s) ID(s) -```json -... -"fieldMeta": { - "type": "text", -} -... +Once you have the template ID, you will want to retrieve the full template so you can see the recipients. + +This is optional, and you only will want to do this if you want to modify the recipient details prior to creating the new document. + +See the [Get Envelope](#get-envelope) section for more details on how to retrieve the envelope. + +### Generate the Document + +To generate a document from the template, you need to make a POST request to the [`/api/v2/envelope/use`](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/use) endpoint. + +You will need to replace the following: + +- `api_xxxxxxxxxxxxxx` with your API key +- `envelope_xxxxxxxxxxxxxxx` with the template ID +- `RECIPIENT_ID_HERE` with the recipient ID you want to modify prior to sending +- `RECIPIENT_EMAIL_HERE` with the new recipient email you want to use +- `RECIPIENT_NAME_HERE` with the new recipient name you want to use + +If you want to send the document immediately, you can add the `distributeDocument` parameter to the payload. + +```sh +curl -X POST "https://app.documenso.com/api/v2/envelope/use" \ + -H "Authorization: api_xxxxxxxxxxxxxx" \ + -H "Content-Type: multipart/form-data" \ + -F 'payload={ + "envelopeId": "envelope_xxxxxxxxxxxxxxx", + "recipients": [ + { + "id": RECIPIENT_ID_HERE, + "email": "RECIPIENT_EMAIL_HERE", + "name": "RECIPIENT_NAME_HERE" + } + ] + }' ``` -Replace the `text` value with the corresponding field type: +#### Generate the Document with Custom Files -- For the `TEXT` field it should be `text`. -- For the `CHECKBOX` field it should be `checkbox`. -- For the `RADIO` field it should be `radio`. -- For the `NUMBER` field it should be `number`. -- For the `SELECT` field it should be `select`. (check this before merge) +You can also generate a document from a template using custom PDF files to replace the template's default PDF files. -You must pass this property at all times, even if you don't need to set any other properties. If you don't, the endpoint will throw an error. +To do this, you will need to grab the `envelopeItemId` of the item you want to replace, this is found in the GET request in the previous step. -## Pre-fill Fields On Document Creation +You will need to replace the following: + +- `CUSTOM_FILE_NAME_HERE.pdf` with the custom file name +- `envelope_item_xxxxxxxxxxxxxxxxx` with the `envelopeItemId` of the item you want to replace + +```sh +curl -X POST "https://app.documenso.com/api/v2/envelope/use" \ + -H "Authorization: api_xxxxxxxxxxxxxx" \ + -H "Content-Type: multipart/form-data" \ + -F 'payload={ + "envelopeId": "envelope_xxxxxxxxxxxxxxx", + "recipients": [ + { + "id": RECIPIENT_ID_HERE, + "email": "RECIPIENT_EMAIL_HERE", + "name": "RECIPIENT_NAME_HERE" + } + ], + "customDocumentData": [ + { + "identifier": "CUSTOM_FILE_NAME_HERE.pdf", + "envelopeItemId": "envelope_item_xxxxxxxxxxxxxxxxx" + } + ] + }' \ + -F "files=@./CUSTOM_FILE_NAME_HERE.pdf;type=application/pdf" +``` + +You can now access the document in your Documenso account dashboard. + +#### Pre-fill Fields On Document Creation The API allows you to pre-fill fields on document creation. This is useful when you want to create a document from an existing template and pre-fill the fields with specific values. -To pre-fill a field, you need to make a `POST` request to the `/api/v1/templates/{templateId}/generate-document` endpoint with the field information. Here's an example: - ```json { - "title": "my-document.pdf", - "recipients": [ - { - "id": 3, - "name": "Example User", - "email": "example@documenso.com", - "signingOrder": 1, - "role": "SIGNER" - } - ], "prefillFields": [ { "id": 21, @@ -574,51 +270,96 @@ To pre-fill a field, you need to make a `POST` request to the `/api/v1/templates "value": ["option-1", "option-2"] } ] + // Other payload properties... } ``` -Check out the endpoint in the [API V1 documentation](https://app.documenso.com/api/v1/openapi#:~:text=/%7BtemplateId%7D/-,generate,-%2Ddocument). + -### API V2 +## Add Recipients -For API V2, you need to make a `POST` request to the `/api/v2-beta/template/use` endpoint with the field(s) information. Here's an example: +The API allows you to add recipients to an envelope via the [`/api/v2/envelope/recipient/create-many`](https://openapi.documenso.com/reference#tag/envelope-recipients/POST/envelope/recipient/create-many) endpoint. -```json -{ - "templateId": 111, - "recipients": [ - { - "id": 3, - "name": "Example User", - "email": "example@documenso.com", - "signingOrder": 1, - "role": "SIGNER" - } - ], - "prefillFields": [ - { - "id": 21, - "type": "text", - "label": "my-label", - "placeholder": "my-placeholder", - "value": "my-value" - }, - { - "id": 22, - "type": "number", - "label": "my-label", - "placeholder": "my-placeholder", - "value": "123" - }, - { - "id": 23, - "type": "checkbox", - "label": "my-label", - "placeholder": "my-placeholder", - "value": ["option-1", "option-2"] - } - ] -} +The following is an example of a request which creates 2 new recipients on the envelope. + +```sh +curl https://app.documenso.com/api/v2/envelope/recipient/create-many \ + --request POST \ + --header 'Authorization: api_xxxxxxxxxxxxxx' \ + --header 'Content-Type: application/json' \ + --data '{ + "envelopeId": "envelope_brxkyaxywuxkyeuv", + "data": [ + { + "name": "Recipient Name", + "email": "example@documenso.com", + "role": "SIGNER" + }, + { + "name": "Recipient Two", + "email": "example+2@documenso.com", + "role": "APPROVER" + } + ] + }' ``` -Check out the endpoint in the [API V2 documentation](https://openapi.documenso.com/reference#tag/template/POST/template/use). +## Add Fields + +The API allows you to add fields to an envelope via the [`/api/v2/envelope/field/create-many`](https://openapi.documenso.com/reference#tag/envelope-fields/POST/envelope/field/create-many) endpoint. + +Before adding fields to an envelope, you will need the following details: + +- **Envelope ID** - Which envelope the field will be added to +- **Recipient ID** - Which recipient the field will be added to +- **Envelope Item ID** - Which file the field will be added to. If blank, the field will be added to the first file. + +See the [Get Envelope](#get-envelope) section for more details on how to retrieve these details. + +The following is an example of a request which creates 2 new fields on the first page of the envelope. + +Note that width, height, positionX and positionY are percentage numbers between 0 and 100, which scale the field relative to the size of the PDF. + +```sh +curl https://app.documenso.com/api/v2/envelope/field/create-many \ + --request POST \ + --header 'Authorization: api_xxxxxxxxxxxxxx' \ + --header 'Content-Type: application/json' \ + --data '{ + "envelopeId": "envelope_xxxxxxxxxx", + "data": [ + { + "recipientId": recipient_id_here, + "envelopeItemId": "envelope_item_id_here", + "type": "TEXT", + "page": 1, + "positionX": 0, + "positionY": 0, + "width": 50, + "height": 50, + "fieldMeta": { + "type": "text", + "label": "First test field" + } + }, + { + "recipientId": recipient_id_here, + "envelopeItemId": "envelope_item_id_here", + "type": "TEXT", + "page": 1, + "positionX": 50, + "positionY": 50, + "width": 50, + "height": 50, + "fieldMeta": { + "type": "text", + "label": "Second test field" + } + } + ] + }' +``` + +Field meta allows you to further configure fields, for example it will allow you to add multiple items for checkboxes or radios. + +A successful request will return a JSON response with the newly added fields. diff --git a/apps/documentation/pages/developers/public-api/versioning.mdx b/apps/documentation/pages/developers/public-api/versioning.mdx index bed8ea4f9..6aca5bcfc 100644 --- a/apps/documentation/pages/developers/public-api/versioning.mdx +++ b/apps/documentation/pages/developers/public-api/versioning.mdx @@ -9,9 +9,9 @@ import { Callout } from 'nextra/components'; Documenso uses API versioning to manage changes to the public API. This allows us to introduce new features, fix bugs, and make other changes without breaking existing integrations. -The current version of the API is `v1`. +The current version of the API is `v2`. -The API version is specified in the URL. For example, the base URL for the `v1` API is `https://app.documenso.com/api/v1`. +The API version is specified in the URL. For example, the base URL for the `v2` API is `https://app.documenso.com/api/v2`. We may make changes to the API without incrementing the version number. We will always try to avoid breaking changes, but in some cases, it may be necessary to make changes that are not backward compatible. In these cases, we will increment the version number and provide information about the changes in the release notes. diff --git a/apps/documentation/pages/developers/self-hosting/_meta.js b/apps/documentation/pages/developers/self-hosting/_meta.js new file mode 100644 index 000000000..b8edc6838 --- /dev/null +++ b/apps/documentation/pages/developers/self-hosting/_meta.js @@ -0,0 +1,8 @@ +export default { + index: 'Getting Started', + 'signing-certificate': 'Signing Certificate', + 'how-to': 'How To', + 'setting-up-oauth-providers': 'Setting up OAuth Providers', + telemetry: 'Telemetry', + 'ai-features': 'AI Recipient & Field Detection', +}; diff --git a/apps/documentation/pages/developers/self-hosting/_meta.json b/apps/documentation/pages/developers/self-hosting/_meta.json deleted file mode 100644 index 5f40bbbc2..000000000 --- a/apps/documentation/pages/developers/self-hosting/_meta.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "index": "Getting Started", - "signing-certificate": "Signing Certificate", - "how-to": "How To", - "setting-up-oauth-providers": "Setting up OAuth Providers" -} \ No newline at end of file diff --git a/apps/documentation/pages/developers/self-hosting/ai-features.mdx b/apps/documentation/pages/developers/self-hosting/ai-features.mdx new file mode 100644 index 000000000..6b7e934b0 --- /dev/null +++ b/apps/documentation/pages/developers/self-hosting/ai-features.mdx @@ -0,0 +1,72 @@ +--- +title: AI Recipient & Field Detection (Self-hosting) +description: Configure Google Vertex AI so Documenso can detect recipients and fields automatically. +--- + +import { Callout, Steps } from 'nextra/components'; + +# AI Recipient & Field Detection (Self-hosting) + +This guide covers how to enable the AI recipient and field detection features when you self-host Documenso. + +## What this enables + +- Detect recipients from uploaded PDFs (roles, names, emails when present). +- Detect and place fields (signature, initials, name, email, date, text, number, radio, checkbox) onto draft envelopes. +- Built-in rate limits (3 requests per minute per IP) to prevent abuse. + +## Prerequisites + +- A Google Cloud project with the **Vertex AI API** enabled and billing active. +- A **Vertex AI Express API key** with access to Gemini models (create via the [Vertex AI Express flow](https://cloud.google.com/vertex-ai/generative-ai/docs/start/express-mode/overview) and manage keys in [API keys](https://cloud.google.com/vertex-ai/generative-ai/docs/start/api-keys)). +- Documenso version that includes the AI detection feature and the corresponding database migration. + +## Configure environment variables + +Add these variables to your deployment `.env` (or secret manager): + +``` +GOOGLE_VERTEX_PROJECT_ID="" +GOOGLE_VERTEX_API_KEY="" +# Optional, defaults to "global" +GOOGLE_VERTEX_LOCATION="global" +``` + + + Use a region close to your users if you need data residency considerations (e.g. `europe-west1`). + If you omit the location, Documenso uses `global`. Not all models are available in every region; + if a model is unavailable, switch to a supported region. + + +## Deploy with the published container + +- Use the official Documenso image (DockerHub or GHCR) and supply the Vertex env vars above. +- Ensure migrations run on startup (the container runs `prisma migrate deploy` in production mode). +- Restart the container after adding or changing Vertex env vars. + +## Enable the feature in Documenso + +Once the service is running with the Vertex env vars: + + +### Organisation settings + +Go to **Settings → Document Preferences → AI Features** and set to **Enabled**. Teams that inherit organisation defaults will pick this up. + +### Team settings + +If a team overrides organisation defaults, go to **Team Settings → Document Preferences → AI Features** and choose **Enabled** (or **Inherit** to follow the organisation). + +### Verify in the editor + +Open a draft envelope. In **Recipients**, you should see the sparkle button for AI detection. In **Fields**, you should see **Detect with AI** available. + + + +## Troubleshooting + +- **Too many requests**: Wait a minute or two and retry (rate limit is 3/min per IP). +- **AI options hidden**: Ensure the env vars are set, the server was restarted after setting them, and `aiFeaturesEnabled` is enabled at organisation/team level. +- **Detection fails immediately**: Confirm the Vertex API key is valid and the project has Vertex AI enabled. Check server logs for status codes from Vertex. + +If issues persist, recheck env vars, restart the service, and confirm the Prisma migration was applied. diff --git a/apps/documentation/pages/developers/self-hosting/how-to.mdx b/apps/documentation/pages/developers/self-hosting/how-to.mdx index cdc5a2c22..0d199b6b5 100644 --- a/apps/documentation/pages/developers/self-hosting/how-to.mdx +++ b/apps/documentation/pages/developers/self-hosting/how-to.mdx @@ -119,6 +119,8 @@ NEXT_PRIVATE_SMTP_USERNAME="" NEXT_PRIVATE_SMTP_PASSWORD="" ``` +For full AI setup details (including model availability notes), see the [AI Recipient & Field Detection (Self-hosting)](./ai-features) page. + ### Set Up Your Signing Certificate @@ -146,6 +148,7 @@ This method avoids file permission issues by creating the certificate directly i # Generate certificate inside container using environment variable docker exec -e CERT_PASS="$CERT_PASS" -it documenso-production-documenso-1 bash -c " + mkdir -p /app/certs && \ openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /tmp/private.key \ -out /tmp/certificate.crt \ @@ -267,47 +270,92 @@ You can access the Documenso application by visiting the URL you provided for th The environment variables listed above are a subset of those available for configuring Documenso. The table below provides a complete list of environment variables and their descriptions. -| Variable | Description | -| -------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `PORT` | The port on which the Documenso application runs. It defaults to `3000`. | -| `NEXTAUTH_SECRET` | The secret key used by NextAuth.js for encryption and signing. | -| `NEXT_PRIVATE_ENCRYPTION_KEY` | The primary encryption key for symmetric encryption and decryption (at least 32 characters). | -| `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY` | The secondary encryption key for symmetric encryption and decryption (at least 32 characters). | -| `NEXT_PRIVATE_GOOGLE_CLIENT_ID` | The Google client ID for Google authentication (optional). | -| `NEXT_PRIVATE_GOOGLE_CLIENT_SECRET` | The Google client secret for Google authentication (optional). | -| `NEXT_PUBLIC_WEBAPP_URL` | The URL for the web application. | -| `NEXT_PRIVATE_DATABASE_URL` | The URL for the primary database connection (with connection pooling). | -| `NEXT_PRIVATE_DIRECT_DATABASE_URL` | The URL for the direct database connection (without connection pooling). | -| `NEXT_PRIVATE_SIGNING_TRANSPORT` | The signing transport to use. Available options: local (default) | -| `NEXT_PRIVATE_SIGNING_PASSPHRASE` | The passphrase for the key file. | -| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS` | The base64-encoded contents of the key file will be used instead of the file path. | -| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH` | The path to the key file, default `/opt/documenso/cert.p12`. | -| `NEXT_PUBLIC_UPLOAD_TRANSPORT` | The transport for file uploads (database or s3). | -| `NEXT_PRIVATE_UPLOAD_ENDPOINT` | The endpoint for the S3 storage transport (for third-party S3-compatible providers). | -| `NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE` | Whether to force path-style URLs for the S3 storage transport. | -| `NEXT_PRIVATE_UPLOAD_REGION` | The region for the S3 storage transport (defaults to us-east-1). | -| `NEXT_PRIVATE_UPLOAD_BUCKET` | The bucket to use for the S3 storage transport. | -| `NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID` | The access key ID for the S3 storage transport. | -| `NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY` | The secret access key for the S3 storage transport. | -| `NEXT_PRIVATE_SMTP_TRANSPORT` | The transport to send emails (smtp-auth, smtp-api, resend, or mailchannels). | -| `NEXT_PRIVATE_SMTP_HOST` | The host for the SMTP server for SMTP transports. | -| `NEXT_PRIVATE_SMTP_PORT` | The port for the SMTP server for SMTP transports. | -| `NEXT_PRIVATE_SMTP_USERNAME` | The username for the SMTP server for the `smtp-auth` transport. | -| `NEXT_PRIVATE_SMTP_PASSWORD` | The password for the SMTP server for the `smtp-auth` transport. | -| `NEXT_PRIVATE_SMTP_APIKEY_USER` | The API key user for the SMTP server for the `smtp-api` transport. | -| `NEXT_PRIVATE_SMTP_APIKEY` | The API key for the SMTP server for the `smtp-api` transport. | -| `NEXT_PRIVATE_SMTP_SECURE` | Whether to force the use of TLS for the SMTP server for SMTP transports. | -| `NEXT_PRIVATE_SMTP_FROM_ADDRESS` | The email address for the "from" address. | -| `NEXT_PRIVATE_SMTP_FROM_NAME` | The sender name for the "from" address. | -| `NEXT_PRIVATE_RESEND_API_KEY` | The API key for Resend.com for the `resend` transport. | -| `NEXT_PRIVATE_MAILCHANNELS_API_KEY` | The optional API key for MailChannels (if using a proxy) for the `mailchannels` transport. | -| `NEXT_PRIVATE_MAILCHANNELS_ENDPOINT` | The optional endpoint for the MailChannels API (if using a proxy) for the `mailchannels` transport. | -| `NEXT_PRIVATE_MAILCHANNELS_DKIM_DOMAIN` | The domain for DKIM signing with MailChannels for the `mailchannels` transport. | -| `NEXT_PRIVATE_MAILCHANNELS_DKIM_SELECTOR` | The selector for DKIM signing with MailChannels for the `mailchannels` transport. | -| `NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY` | The private key for DKIM signing with MailChannels for the `mailchannels` transport. | -| `NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT` | The maximum document upload limit displayed to the user (in MB). | -| `NEXT_PUBLIC_POSTHOG_KEY` | The optional PostHog key for analytics and feature flags. | -| `NEXT_PUBLIC_DISABLE_SIGNUP` | Whether to disable user signups through the /signup page. | +For AI setup specifics, see the [AI Recipient & Field Detection (Self-hosting)](./ai-features) page. + +| Variable | Description | +| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PORT` | The port on which the Documenso application runs. It defaults to `3000`. | +| `NEXTAUTH_SECRET` | The secret key used by NextAuth.js for encryption and signing. | +| `NEXT_PRIVATE_ENCRYPTION_KEY` | The primary encryption key for symmetric encryption and decryption (at least 32 characters). | +| `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY` | The secondary encryption key for symmetric encryption and decryption (at least 32 characters). | +| `NEXT_PRIVATE_GOOGLE_CLIENT_ID` | The Google client ID for Google authentication (optional). | +| `NEXT_PRIVATE_GOOGLE_CLIENT_SECRET` | The Google client secret for Google authentication (optional). | +| `NEXT_PRIVATE_MICROSOFT_CLIENT_ID` | The Microsoft client ID for Microsoft authentication (optional). | +| `NEXT_PRIVATE_MICROSOFT_CLIENT_SECRET` | The Microsoft client secret for Microsoft authentication (optional). | +| `NEXT_PRIVATE_OIDC_CLIENT_ID` | The OIDC client ID for OIDC authentication (optional). | +| `NEXT_PRIVATE_OIDC_CLIENT_SECRET` | The OIDC client secret for OIDC authentication (optional). | +| `NEXT_PRIVATE_OIDC_WELL_KNOWN` | The well-known URL for the OIDC provider (optional). | +| `NEXT_PRIVATE_OIDC_PROVIDER_LABEL` | The label to display for the OIDC provider button (optional). | +| `NEXT_PRIVATE_OIDC_SKIP_VERIFY` | Whether to skip email verification for OIDC accounts (optional, default `false`). | +| `NEXT_PUBLIC_WEBAPP_URL` | The URL for the web application. | +| `NEXT_PUBLIC_SUPPORT_EMAIL` | The support email address displayed to users (default `support@documenso.com`). | +| `NEXT_PRIVATE_DATABASE_URL` | The URL for the primary database connection (with connection pooling). | +| `NEXT_PRIVATE_DIRECT_DATABASE_URL` | The URL for the direct database connection (without connection pooling). | +| `NEXT_PRIVATE_SIGNING_TRANSPORT` | The signing transport to use. Available options: local (default) | +| `NEXT_PRIVATE_SIGNING_PASSPHRASE` | The passphrase for the key file. | +| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS` | The base64-encoded contents of the key file will be used instead of the file path. | +| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH` | The path to the key file, default `/opt/documenso/cert.p12`. | +| `NEXT_PUBLIC_UPLOAD_TRANSPORT` | The transport for file uploads (database or s3). | +| `NEXT_PRIVATE_UPLOAD_ENDPOINT` | The endpoint for the S3 storage transport (for third-party S3-compatible providers). | +| `NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE` | Whether to force path-style URLs for the S3 storage transport. | +| `NEXT_PRIVATE_UPLOAD_REGION` | The region for the S3 storage transport (defaults to us-east-1). | +| `NEXT_PRIVATE_UPLOAD_BUCKET` | The bucket to use for the S3 storage transport. | +| `NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID` | The access key ID for the S3 storage transport. | +| `NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY` | The secret access key for the S3 storage transport. | +| `NEXT_PRIVATE_SMTP_TRANSPORT` | The transport to send emails (smtp-auth, smtp-api, resend, or mailchannels). | +| `NEXT_PRIVATE_SMTP_HOST` | The host for the SMTP server for SMTP transports. | +| `NEXT_PRIVATE_SMTP_PORT` | The port for the SMTP server for SMTP transports. | +| `NEXT_PRIVATE_SMTP_USERNAME` | The username for the SMTP server for the `smtp-auth` transport. | +| `NEXT_PRIVATE_SMTP_PASSWORD` | The password for the SMTP server for the `smtp-auth` transport. | +| `NEXT_PRIVATE_SMTP_APIKEY_USER` | The API key user for the SMTP server for the `smtp-api` transport. | +| `NEXT_PRIVATE_SMTP_APIKEY` | The API key for the SMTP server for the `smtp-api` transport. | +| `NEXT_PRIVATE_SMTP_SECURE` | Whether to force the use of TLS for the SMTP server for SMTP transports. | +| `NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS` | Whether to ignore TLS errors for the SMTP server (useful for self-signed certificates). | +| `NEXT_PRIVATE_SMTP_FROM_ADDRESS` | The email address for the "from" address. | +| `NEXT_PRIVATE_SMTP_FROM_NAME` | The sender name for the "from" address. | +| `NEXT_PRIVATE_RESEND_API_KEY` | The API key for Resend.com for the `resend` transport. | +| `NEXT_PRIVATE_MAILCHANNELS_API_KEY` | The optional API key for MailChannels (if using a proxy) for the `mailchannels` transport. | +| `NEXT_PRIVATE_MAILCHANNELS_ENDPOINT` | The optional endpoint for the MailChannels API (if using a proxy) for the `mailchannels` transport. | +| `NEXT_PRIVATE_MAILCHANNELS_DKIM_DOMAIN` | The domain for DKIM signing with MailChannels for the `mailchannels` transport. | +| `NEXT_PRIVATE_MAILCHANNELS_DKIM_SELECTOR` | The selector for DKIM signing with MailChannels for the `mailchannels` transport. | +| `NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY` | The private key for DKIM signing with MailChannels for the `mailchannels` transport. | +| `NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT` | The maximum document upload limit displayed to the user (in MB). | +| `NEXT_PUBLIC_POSTHOG_KEY` | The optional PostHog key for analytics and feature flags. | +| `NEXT_PUBLIC_DISABLE_SIGNUP` | Whether to disable user signups through the /signup page. | +| `NEXT_PRIVATE_BROWSERLESS_URL` | The URL for a Browserless.io instance to generate PDFs (optional). | +| `DOCUMENSO_DISABLE_TELEMETRY` | Set to `true` to disable anonymous telemetry (see [Telemetry](#telemetry) section below). | +| `GOOGLE_VERTEX_PROJECT_ID` | Google Cloud project ID used for Vertex AI (required for AI detection). | +| `GOOGLE_VERTEX_API_KEY` | Vertex AI Express API key with access to Gemini models (required for AI detection). See [AI Recipient & Field Detectionfor](./ai-features) for details. | +| `GOOGLE_VERTEX_LOCATION` | Optional Vertex region, defaults to `global`. Not all models are available in every region. | + +## Telemetry + +Documenso collects anonymous telemetry data to help us understand how the software is being used and improve the product. This telemetry is **enabled by default** for self-hosted instances. + +### What We Collect + +We collect minimal, privacy-preserving data: + +- **App Version**: The version of Documenso you are running +- **Installation ID**: A unique identifier for your installation (stored in your database) +- **Node ID**: A unique identifier for each server/container instance (stored in the OS temp directory) + +We do **not** collect any personal data, document contents, user information, or usage patterns. + +### Events + +- **Server Startup**: Captured once when the server starts +- **Server Heartbeat**: Captured every hour while the server is running + +### Disabling Telemetry + +To disable telemetry, set the following environment variable: + +```bash +DOCUMENSO_DISABLE_TELEMETRY=true +``` + +This will completely disable all telemetry data collection. ## Run as a Service diff --git a/apps/documentation/pages/developers/self-hosting/setting-up-oauth-providers.mdx b/apps/documentation/pages/developers/self-hosting/setting-up-oauth-providers.mdx index 0ba359142..efebb4092 100644 --- a/apps/documentation/pages/developers/self-hosting/setting-up-oauth-providers.mdx +++ b/apps/documentation/pages/developers/self-hosting/setting-up-oauth-providers.mdx @@ -27,3 +27,33 @@ NEXT_PRIVATE_GOOGLE_CLIENT_SECRET= ``` Finally verify the signing in with Google works by signing in with your Google account and checking the email address in your profile. + +## Microsoft OAuth (Azure AD) + +To use Microsoft OAuth, you will need to create an Azure AD application registration in the Microsoft Azure portal. This will allow users to sign in with their Microsoft accounts. + +### Create and configure a new Azure AD application + +1. Go to the [Azure Portal](https://portal.azure.com/) +2. Navigate to **Azure Active Directory** (or **Microsoft Entra ID** in newer Azure portals) +3. In the left sidebar, click **App registrations** +4. Click **New registration** +5. Enter a name for your application (e.g., "Documenso") +6. Under **Supported account types**, select **Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)** to allow any Microsoft account to sign in +7. Under **Redirect URI**, select **Web** and enter: `https:///api/auth/callback/microsoft` +8. Click **Register** + +### Configure the application + +1. After registration, you'll be taken to the app's overview page +2. Copy the **Application (client) ID** - this will be your `NEXT_PRIVATE_MICROSOFT_CLIENT_ID` +3. In the left sidebar, click **Certificates & secrets** +4. Under **Client secrets**, click **New client secret** +5. Add a description and select an expiration period +6. Click **Add** and copy the **Value** (not the Secret ID) - this will be your `NEXT_PRIVATE_MICROSOFT_CLIENT_SECRET` +7. In the Documenso environment variables, set the following: + +``` +NEXT_PRIVATE_MICROSOFT_CLIENT_ID= +NEXT_PRIVATE_MICROSOFT_CLIENT_SECRET= +``` diff --git a/apps/documentation/pages/developers/self-hosting/telemetry.mdx b/apps/documentation/pages/developers/self-hosting/telemetry.mdx new file mode 100644 index 000000000..3a0b83eac --- /dev/null +++ b/apps/documentation/pages/developers/self-hosting/telemetry.mdx @@ -0,0 +1,90 @@ +--- +title: Telemetry +description: Learn about the telemetry data that Documenso collects from self-hosted instances. +--- + +# Telemetry + +Documenso collects anonymous telemetry data from self-hosted instances to help us understand how the software is being used and make improvements to the product. This telemetry is enabled by default, but you can easily disable it if you prefer. + +## What We Collect + +We collect minimal, privacy-preserving information that helps us understand the health and adoption of self-hosted installations: + +- **App Version**: The version of Documenso you are running. This helps us understand which versions are in use and prioritize support for older versions. + +- **Installation ID**: A unique identifier for your installation. This is stored in your database and helps us count distinct installations without knowing who you are. + +- **Node ID**: A unique identifier for each server or container instance. This is stored in your operating system's temporary directory and helps us understand deployment patterns (for example, how many instances are running in a cluster). + +### What We Don't Collect + +We do **not** collect any of the following: + +- Personal information about you or your users +- Document contents or file names +- User email addresses or names +- Usage patterns or feature usage statistics +- Server logs or error messages +- Any data that could identify your organization or users + +## Why We Collect Telemetry + +The telemetry data we collect serves several important purposes: + +1. **Product Improvement**: Understanding which versions are in use helps us prioritize bug fixes and security updates for the versions that matter most. + +2. **Support Planning**: Knowing how many installations exist and their deployment patterns helps us plan support resources and documentation. + +3. **Feature Development**: Understanding deployment patterns (like cluster sizes) helps us make better architectural decisions for future features. + +4. **Community Health**: Tracking adoption helps us understand the growth of the self-hosted community and allocate resources accordingly. + +All of this is done anonymously and in aggregate. We cannot identify you, your organization, or your users from the telemetry data we collect. + +## Events We Track + +We track two simple events: + +- **Server Startup**: Captured once when your server starts. This tells us when installations are first set up or restarted. + +- **Server Heartbeat**: Captured every hour while your server is running. This helps us understand how many active installations exist and their uptime patterns. + +## How to Disable Telemetry + +If you prefer not to send telemetry data, you can disable it by setting an environment variable. + +### Using Environment Variables + +Add the following to your environment configuration: + +```bash +DOCUMENSO_DISABLE_TELEMETRY=true +``` + +### Docker + +If you're using Docker, you can set this in your `docker-compose.yml`: + +```yaml +services: + app: + environment: + - DOCUMENSO_DISABLE_TELEMETRY=true +``` + +Or pass it when running a container: + +```bash +docker run -e DOCUMENSO_DISABLE_TELEMETRY=true ... +``` + +### After Disabling + +Once you set `DOCUMENSO_DISABLE_TELEMETRY=true` and restart your server, no telemetry data will be sent. The telemetry client will not initialize, and no network requests will be made to our telemetry servers. + +Note: If you previously had telemetry enabled, the installation ID stored in your database will remain, but it will no longer be used or sent anywhere. + +## Questions or Concerns + +If you have questions about our telemetry practices or concerns about privacy, please reach out to us. We're committed to transparency and respect your choice to disable telemetry if you prefer. diff --git a/apps/documentation/pages/developers/webhooks.mdx b/apps/documentation/pages/developers/webhooks.mdx index 8fac71210..a9684a9cc 100644 --- a/apps/documentation/pages/developers/webhooks.mdx +++ b/apps/documentation/pages/developers/webhooks.mdx @@ -5,7 +5,7 @@ description: Learn how to use webhooks to receive real-time notifications about # Webhooks -Webhooks are HTTP callbacks triggered by specific events. When the user subscribes to a specific event, and that event occurs, the webhook makes an HTTP request to the URL provided by the user. The request can be a simple notification or carry a payload with more information about the event. +Webhooks are HTTP callbacks triggered by specific events. When you subscribe to a specific event and that event occurs, the webhook makes an HTTP request to the URL you provide. The request can be a simple notification or carry a payload with more information about the event. Some of the common use cases for webhooks include: @@ -25,13 +25,13 @@ Documenso supports Webhooks and allows you to subscribe to the following events: ## Create a webhook subscription -You can create a webhook subscription from the user settings page. Click on your avatar in the top right corner of the dashboard and select "**[User settings](https://app.documenso.com/settings)**" from the dropdown menu. +You can create a webhook subscription from the team settings page. Click your avatar in the top right corner of the dashboard and select "Team settings" from the dropdown menu. -![A screenshot of the Documenso's dashboard that shows the dropdown menu when you click on your user avatar](/webhook-images/dashboard-user-dropdown-menu.webp) +![A screenshot of the Documenso's dashboard that shows the dropdown menu when you click on your user avatar](/webhook-images/documenso-main-page.webp) -Then, navigate to the "**[Webhooks](https://app.documenso.com/settings/webhooks)**" tab, where you can see a list of your existing webhooks and create new ones. +Then, navigate to the "Webhooks" tab, which takes you to the webhooks main page. -![A screenshot of the Documenso's user settings page that shows the Webhooks tab and the Create Webhook button](/webhook-images/webhooks-settings-page.webp) +![A screenshot of the Documenso's team settings page that shows the Webhooks tab and the Create Webhook button](/webhook-images/webhooks-main-page.webp) Clicking on the "**Create Webhook**" button opens a modal to create a new webhook subscription. @@ -41,7 +41,7 @@ To create a new webhook subscription, you need to provide the following informat - Select the event(s) you want to subscribe to: `document.created`, `document.sent`, `document.opened`, `document.signed`, `document.completed`, `document.rejected`, `document.cancelled`. - Optionally, you can provide a secret key that will be used to sign the payload. This key will be included in the `X-Documenso-Secret` header of the request. -![A screenshot of the Create Webhook modal that shows the URL input field and the event checkboxes](/webhook-images/webhooks-page-create-webhook-modal.webp) +![A screenshot of the Create Webhook modal that shows the URL input field and the event checkboxes](/webhook-images/create-webhook-dialog.webp) After you have filled in the required information, click on the "**Create Webhook**" button to save your subscription. @@ -49,7 +49,22 @@ The screenshot below illustrates a newly created webhook subscription. ![A screenshot of the Documenso's user settings page that shows the newly created webhook subscription](/webhook-images/webhooks-page.webp) -You can edit or delete your webhook subscriptions by clicking the "**Edit**" or "**Delete**" buttons next to the webhook. +You can edit, view the logs, or delete your webhook subscriptions by clicking the three dots (...) under the "Action" column. You can also access the webhook logs by clicking on the webhook subscription directly. + +![A screenshot of the Documenso's team settings page that shows the webhook logs](/webhook-images/webhook-detail-page.webp) + +You can go even further and check the execution details of each call by clicking on a specific webhook call. + +![A screenshot of the Documenso's team settings page that shows the webhook call details](/webhook-images/webhook-run-page.webp) + +This page shows the details of the webhook call such as: + +- status +- event +- date when the webhook was sent +- response code +- request body +- response body and headers ## Webhook fields @@ -619,18 +634,26 @@ Example payload for the `document.rejected` event: } ``` -## Webhook Events Testing +## Webhook events testing -You can trigger test webhook events to test the webhook functionality. To trigger a test webhook, navigate to the [Webhooks page](/developers/webhooks) and click on the "Test Webhook" button. +You can trigger test webhook events to test the webhook functionality. To do so, navigate to the webhook subscription details page and click the "Test" button. -![Documenso's Webhooks Page](/webhook-images/test-webhooks-page.webp) +![A screenshot of the Documenso's team settings page that shows the webhook logs](/webhook-images/webhook-detail-page.webp) This opens a dialog where you can select the event type to test. -![Documenso's individual webhook page](/webhook-images/test-webhook-dialog.webp) +![Documenso's individual webhook page](/webhook-images/webhook-test-trigger.webp) -Choose the appropriate event and click "Send Test Webhook." You’ll shortly receive a test payload from Documenso with sample data. +Choose the event you want to test and click "Send". You’ll then receive a test payload from Documenso with sample data. + +## Webhook events resending + +To resend a webhook call, you need to navigate to the webhook call page and click the "Resend" button. + +![A screenshot of the Documenso's team settings page that shows the webhook call details](/webhook-images/webhook-run-page.webp) + +This will send the webhook event to the webhook URL again. ## Availability -Webhooks are available to individual users and teams. +Webhooks are available to teams only. diff --git a/apps/documentation/pages/users/_meta.js b/apps/documentation/pages/users/_meta.js new file mode 100644 index 000000000..7853a2557 --- /dev/null +++ b/apps/documentation/pages/users/_meta.js @@ -0,0 +1,23 @@ +export default { + index: 'Introduction', + support: 'Support', + '-- How To Use': { + type: 'separator', + title: 'How To Use', + }, + 'get-started': 'Get Started', + profile: 'Public Profile', + organisations: 'Organisations', + documents: 'Documents', + templates: 'Templates', + branding: 'Branding', + 'email-domains': 'Email Domains', + 'direct-links': 'Direct Signing Links', + '-- Legal Overview': { + type: 'separator', + title: 'Legal Overview', + }, + 'fair-use': 'Fair Use Policy', + licenses: 'Licenses', + compliance: 'Compliance', +}; diff --git a/apps/documentation/pages/users/_meta.json b/apps/documentation/pages/users/_meta.json deleted file mode 100644 index 3726fbd08..000000000 --- a/apps/documentation/pages/users/_meta.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "index": "Introduction", - "support": "Support", - "-- How To Use": { - "type": "separator", - "title": "How To Use" - }, - "get-started": "Get Started", - "profile": "Public Profile", - "organisations": "Organisations", - "documents": "Documents", - "templates": "Templates", - "branding": "Branding", - "email-domains": "Email Domains", - "direct-links": "Direct Signing Links", - "-- Legal Overview": { - "type": "separator", - "title": "Legal Overview" - }, - "fair-use": "Fair Use Policy", - "licenses": "Licenses", - "compliance": "Compliance" -} \ No newline at end of file diff --git a/apps/documentation/pages/users/compliance/_meta.js b/apps/documentation/pages/users/compliance/_meta.js new file mode 100644 index 000000000..52586af89 --- /dev/null +++ b/apps/documentation/pages/users/compliance/_meta.js @@ -0,0 +1,4 @@ +export default { + 'signature-levels': 'Signature Levels', + 'standards-and-regulations': 'Standards and Regulations', +}; diff --git a/apps/documentation/pages/users/compliance/_meta.json b/apps/documentation/pages/users/compliance/_meta.json deleted file mode 100644 index e61b143f8..000000000 --- a/apps/documentation/pages/users/compliance/_meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "signature-levels": "Signature Levels", - "standards-and-regulations": "Standards and Regulations" -} \ No newline at end of file diff --git a/apps/documentation/pages/users/compliance/signature-levels.mdx b/apps/documentation/pages/users/compliance/signature-levels.mdx index 62c6350b6..9b6933ed9 100644 --- a/apps/documentation/pages/users/compliance/signature-levels.mdx +++ b/apps/documentation/pages/users/compliance/signature-levels.mdx @@ -1,3 +1,8 @@ +--- +title: Signature Levels +description: Learn about the different signature levels for Documenso. +--- + import { Callout } from 'nextra/components'; # Signature Levels @@ -26,20 +31,20 @@ ensures the legal validity and enforceability of electronic signatures and recor ### Main Requirements -- [x] Intent to Sign: "Parties must demonstrate their intent to sign [..]" -- [x] Consent: "The ESIGN Act requires that all parties involved in a transaction consent to the use of electronic signatures and records [..]" -- [x] Consumer Disclosures: Before obtaining their consent, financial institutions must provide the consumer a clear and conspicuous statement informing the consumer [..] -- [x] Record Retention: Electronic Records must be maintained for later access by signers. -- [x] Security: The ESIGN Act does not mandate specific security measures, but it does require that parties take reasonable steps to ensure the security and integrity of electronic signatures and records. This may include implementing encryption, access controls, and authentication measures. +- [x] **Intent to Sign**: "Parties must demonstrate their intent to sign [..]" +- [x] **Consent**: "The ESIGN Act requires that all parties involved in a transaction consent to the use of electronic signatures and records [..]" +- [x] **Consumer Disclosures**: Before obtaining their consent, financial institutions must provide the consumer a clear and conspicuous statement informing the consumer [..] +- [x] **Record Retention**: Electronic Records must be maintained for later access by signers. +- [x] **Security**: The ESIGN Act does not mandate specific security measures, but it does require that parties take reasonable steps to ensure the security and integrity of electronic signatures and records. This may include implementing encryption, access controls, and authentication measures. ## UETA (Uniform Electronic Transactions Act) Status: Compliant -The Uniform Electronic Transactions Act is a law that provides a legal framework for the use of electronic -signatures and records in electronic transactions, ensuring they have the same validity and enforceability -as paper documents and handwritten signatures. +The Uniform Electronic Transactions Act is a law that provides a legal framework for the use of +electronic signatures and records in electronic transactions, ensuring they have the same validity +and enforceability as paper documents and handwritten signatures. ### Main Requirements @@ -50,9 +55,9 @@ _See [ESIGN](/users/compliance/signature-levels#-esign-electronic-signatures-in- Status: Compliant for Level 1 - SES (Simple Electronic Signatures) -eIDAS (Electronic Identification, Authentication and Trust Services) is an EU regulation that standardizes -electronic identification and trust services for secure and seamless electronic transactions across European -member states. +eIDAS (Electronic Identification, Authentication and Trust Services) is an EU regulation that +standardizes electronic identification and trust services for secure and seamless electronic +transactions across European member states. ### Level 1 - SES (Simple Electronic Signatures) @@ -69,8 +74,8 @@ eIDAS SES (Simple Electronic Signature) is a basic electronic signature with min Status: [Planned](https://github.com/documenso/backlog/issues/9) via third party until [Let's Sign](https://github.com/documenso/backlog/issues/21) is realized. -eIDAS AES (Advanced Electronic Signature) provides a higher level of security with unique identification -of the signer and data integrity. +eIDAS AES (Advanced Electronic Signature) provides a higher level of security with unique +identification of the signer and data integrity. ### Main Requirements @@ -85,8 +90,8 @@ of the signer and data integrity. Status: [Planned](https://github.com/documenso/backlog/issues/32) via third party until [Let's Sign](https://github.com/documenso/backlog/issues/21) is realized.
-eIDAS QES (Qualified Electronic Signature) is the highest security level, legally equivalent to a handwritten -signature within the EU. +eIDAS QES (Qualified Electronic Signature) is the highest security level, legally equivalent to a +handwritten signature within the EU. ### Main Requirements diff --git a/apps/documentation/pages/users/compliance/standards-and-regulations.mdx b/apps/documentation/pages/users/compliance/standards-and-regulations.mdx index 4d5193944..aacad6275 100644 --- a/apps/documentation/pages/users/compliance/standards-and-regulations.mdx +++ b/apps/documentation/pages/users/compliance/standards-and-regulations.mdx @@ -1,3 +1,8 @@ +--- +title: Standards and Regulations +description: Learn about the different standards and regulations for Documenso. +--- + import { Callout } from 'nextra/components'; ## 21 CFR Part 11 diff --git a/apps/documentation/pages/users/documents/_meta.js b/apps/documentation/pages/users/documents/_meta.js new file mode 100644 index 000000000..15d3d729b --- /dev/null +++ b/apps/documentation/pages/users/documents/_meta.js @@ -0,0 +1,8 @@ +export default { + 'sending-documents': 'Sending Documents', + 'document-preferences': 'Document Preferences', + 'document-visibility': 'Document Visibility', + fields: 'Document Fields', + 'email-preferences': 'Email Preferences', + 'ai-detection': 'AI Recipient & Field Detection', +}; diff --git a/apps/documentation/pages/users/documents/_meta.json b/apps/documentation/pages/users/documents/_meta.json deleted file mode 100644 index 9312fe12c..000000000 --- a/apps/documentation/pages/users/documents/_meta.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "sending-documents": "Sending Documents", - "document-preferences": "Document Preferences", - "document-visibility": "Document Visibility", - "fields": "Document Fields", - "email-preferences": "Email Preferences" -} \ No newline at end of file diff --git a/apps/documentation/pages/users/documents/ai-detection.mdx b/apps/documentation/pages/users/documents/ai-detection.mdx new file mode 100644 index 000000000..5eac2df52 --- /dev/null +++ b/apps/documentation/pages/users/documents/ai-detection.mdx @@ -0,0 +1,68 @@ +--- +title: AI Recipient & Field Detection +description: Use Documenso’s AI helpers to detect recipients and fields in draft documents. +--- + +# AI Recipient & Field Detection + +Documenso can suggest recipients and place fields automatically using Google Vertex AI (Gemini). The feature is optional and only available when your organisation or team has **AI Features** enabled. Documents are processed securely and providers do not retain your data for training. + +## Requirements + +- AI Features must be enabled in **Document Preferences** for your organisation or team. +- The envelope must be in **Draft** status. +- Helpful rate limits are in place (up to 3 detection requests per minute per IP) to prevent abuse. If you see a “too many requests” message, wait a minute or two and try again. + +### Enable AI features + +1. **Organisation settings**: + +Settings → Document Preferences → **AI Features** → Enabled. + +_This applies to teams that inherit organisation defaults._ + +2. **Team settings**: + +Team Settings → Document Preferences → **AI Features** → choose Enabled, Disabled, or Inherit. + +## Detect recipients + +Use this to identify who needs to sign or approve. + +1. Open a draft document/template and go to the **Recipients** panel. +2. Select the **sparkle** button to start detection. If AI is enabled, uploads launched from the dashboard will open the detector automatically. + +![Detect recipients with AI button in the Recipients panel](/document-signing/ai-recipient-detect-button.webp) + +3. Wait for progress to finish, then review the suggested recipients. +4. Remove any incorrect entries, then **Add recipients** to apply them. Existing recipients and duplicates are preserved. + +Notes: + +- Detection is unavailable once an envelope is completed. +- You can re-run detection if you update the document; each run counts toward the rate limit. + +## Detect fields + +Use this to auto-place fields on the pages of a draft. + +1. Open the envelope editor and switch to the **Fields** tab. +2. Select **Detect with AI**. Provide optional context (e.g., “Alice is the tenant, Bob is the landlord”) to improve recipient assignment. + +![AI field detection dialog with context input](/document-signing/ai-field-detection-button.webp) +![AI field detection dialog with context input](/document-signing/ai-field-detection-dialog.webp) + +3. Watch the progress indicators; they update per page and total fields found. +4. Review the summary and choose **Add fields** to place them in the editor. + +Notes: + +- Works only for draft envelopes and teams with AI features enabled. +- Existing fields are masked during detection to avoid duplicates. +- Fields are assigned to recipients based on nearby labels and your context message; you can edit them after adding. + +## Best practices + +- Keep labels near the intended fields (e.g., “Tenant signature”, “Buyer email”). +- Provide short context when roles are ambiguous. +- Always review suggestions before sending; AI assists but does not replace final checks. diff --git a/apps/documentation/pages/users/documents/fields.mdx b/apps/documentation/pages/users/documents/fields.mdx index 005ed2595..b352ca9ea 100644 --- a/apps/documentation/pages/users/documents/fields.mdx +++ b/apps/documentation/pages/users/documents/fields.mdx @@ -11,120 +11,76 @@ Learn about the different fields you can add to your documents in Documenso and The signature field collects the signer's signature. It's required for each recipient with the "Signer" role. -### Document Editor View - -The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. - ![The signature field in the Documenso document editor](/document-signing/signature-field-document-editor-view.webp) -### Document Signing View +The signature field settings include: -The recipient will see the signature field when they open the document to sign. - -The recipient must click on the signature field to open the signing view, where they can sign using their mouse, touchpad, or touchscreen. - -![The signature field in the Documenso document signing view](/document-signing/signature-field-document-signing-view.webp) - -The image below shows the signature field signed by the recipient. - -![The signature field signed by the user in the Documenso document signing view](/document-signing/signed-signature-field.webp) - -After signing, the recipient can click the "Complete" button to complete the signing process. +- **Font size** - The typed signature font size. You can disable typed signatures in the document settings. ## Email Field -The email field is used to collect the signer's email address. - -### Document Editor View - -The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. +The email field is used to collect the signer's email address. This will be the email address you entered when you created the recipients. ![The email field in the Documenso document editor](/document-signing/email-field-document-editor-view.webp) -### Document Signing View +The email field settings include: -When the recipient opens the document to sign, they will see the email field. - -The recipient must click on the email field to automatically sign the field with the email associated with their account. - -![The email field in the Documenso document signing view](/document-signing/email-field-document-signing-view.webp) - -The image below shows the email field signed by the recipient. - -![The email field signed by the user in the Documenso document signing view](/document-signing/signed-email-field.webp) - -After entering their email address, the recipient can click the "Complete" button to complete the signing process. +- **Font Size** - The font size of the email address. +- **Text Align** - The horizontal text alignment of the email address. ## Name Field The name field is used to collect the signer's name. -### Document Editor View - -The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. - ![The name field in the Documenso document editor](/document-signing/name-field-document-editor-view.webp) -### Document Signing View +The name field settings include: -When the recipient opens the document to sign, they will see the name field. +- **Font Size** - The font size of the name. +- **Text Align** - The horizontal text alignment of the name. -The recipient must click on the name field, which will automatically sign the field with the name associated with their account. +## Initials Field -![The name field in the Documenso document signing view](/document-signing/name-field-document-signing-view.webp) +The initials field is used to collect the signer's initials. This is generally the first and last name initials. -The image below shows the name field signed by the recipient. +![The initials field in the Documenso document editor](/document-signing/initials-field-document-editor-view.webp) -![The name field signed by the user in the Documenso document signing view](/document-signing/name-field-signed.webp) +The initials field settings include: -After entering their name, the recipient can click the "Complete" button to complete the signing process. +- **Font Size** - The font size of the initials. +- **Text Align** - The horizontal text alignment of the initials. ## Date Field -The date field is used to collect the date of the signature. - -### Document Editor View - -The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. +The date field is used to collect the date of the signature. You can change the date format in the document settings. ![The date field in the Documenso document editor](/document-signing/date-field-document-editor-view.webp) -### Document Signing View +The date field settings include: -When the recipient opens the document to sign, they will see the date field. - -The recipient must click on the date field to automatically sign the field with the current date and time. - -![The date field in the Documenso document signing view](/document-signing/date-field-document-signing-view.webp) - -The image below shows the date field signed by the recipient. - -![The date field signed by the user in the Documenso document signing view](/document-signing/date-field-signed.webp) - -After entering the date, the recipient can click the "Complete" button to complete the signing process. +- **Font Size** - The font size of the date. +- **Text Align** - The horizontal text alignment of the date. ## Text Field The text field is used to collect text input from the signer. -### Document Editor View - Place the text field on the document where you want the signer to enter text. The text field comes with additional settings that can be configured. ![The text field in the Documenso document editor](/document-signing/text-field-document-editor-view.webp) -To open the settings, click on the text field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. - -![The text field settings in the Documenso document editor](/document-signing/text-field-advanced-settings-document-editor-view.webp) - The text field settings include: -- **Label** - The label displayed in the field. -- **Placeholder** - The placeholder text displayed in the field. -- **Text** - The default text displayed in the field. +- **Label** - The label displayed in the field when the user opens the document to sign +- **Placeholder** - The placeholder text displayed in the field. The signer will see this prior to signing. +- **Text** - The text which will be prefilled into the field. The signer can change this text unless the field is read-only. - **Character limit** - The maximum number of characters allowed in the field. - **Required** - Whether the field is required or not. - **Read only** - Whether the field is read-only or not. +- **Text Align** - The horizontal text alignment of the text in the field. +- **Vertical Align** - The vertical text alignment of the text in the field. +- **Line height** - The line height of the text in the field. Useful for multi-line text fields. +- **Letter spacing** - The spacing between each character in the text in the field. It also comes with a couple of rules: @@ -133,71 +89,26 @@ It also comes with a couple of rules: - The signer must fill out a required field. - The text field characters count can't exceed the character limit. - The signer can't modify a read-only field. -- The field auto-signs if there is a default text value. - -Let's look at the following example. - -![A text field with the settings configured by the user in the Documenso document editor](/document-signing/text-field-with-filled-advanced-settings.webp) - -The field is configured as follows: - -- Label: "Address" -- Placeholder: "Your office address" -- Default Text: "Signing Street 1, 241245" -- Character Limit: 35 -- Required: False -- Read Only: False - -Since the field has a label set, the label is displayed instead of the default text field value - "Add text". - -### Document Signing View - -What the recipient sees when they open the document to sign depends on the settings configured by the sender. - -In this case, the recipient sees the text field signed with the default value. - -![Text field with the default value signed by the user in the Documenso document signing view](/document-signing/text-field-autosigned.webp) - -The recipient can modify the text field value since the field is not read-only. To change the value, the recipient must click the field to un-sign it. - -Once it's unsigned, the field uses the label set by the sender. - -![Unsigned text field in the Documenso document signing view](/document-signing/text-field-unsigned.webp) - -To sign the field with a different value, the recipient needs to click on the field and enter the new value. - -![Text field with the text input in the Documenso document signing view](/document-signing/text-field-input-modal.webp) - -Since the text field has a character limit, the recipient must enter a value that doesn't exceed the limit. Otherwise, an error message will appear, and the field will not be signed. - -The image below illustrates the text field signed with a new value. - -![Text field signed with a new value](/document-signing/text-field-new-value-signed.webp) - -After signing the field, the recipient can click the "Complete" button to complete the signing process. +- The field will be inserted automatically into the document if there is a default text value. ## Number Field The number field is used for collecting a number input from the signer. -### Document Editor View - -Place the number field on the document where you want the signer to enter a number. The number field comes with additional settings that can be configured. - -![The number field in the Documenso document editor](/document-signing/number-field-document-editor.webp) - -To open the settings, click on the number field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. - ![The number field in the Documenso document editor](/document-signing/number-field-document-editor-view.webp) The number field settings include: - **Label** - The label displayed is the field. - **Placeholder** - The placeholder text displayed in the field. -- **Value** - The default number displayed in the field. +- **Value** - The value which will be prefilled into the field. The signer can change this value unless the field is read-only. - **Number format** - The format of the number. - **Required** - Whether the field is required or not. - **Read only** - Whether the field is read-only or not. +- **Text Align** - The horizontal text alignment of the number in the field. +- **Vertical Align** - The vertical text alignment of the number in the field. +- **Line height** - The line height of the number in the field. Useful for multi-line number fields. +- **Letter spacing** - The spacing between each character in the number in the field. - **Validation** - The validation rules for the field. It also comes with a couple of rules: @@ -210,66 +121,18 @@ It also comes with a couple of rules: - If the default number and a min value are set, the default number must be greater than the min value. - The value must match the number format if a number format is set. -In this example, the number field is configured as follows: - -- Label: "Quantity" -- Placeholder: "Enter the preferred quantity" -- Default Value: 12 -- Number Format: "123,456,789.00" -- Required: False -- Read Only: False -- Validation: -- Min value: 5, Max value: 50 - -![A number field with the label configured by the user in the Documenso document editor](/document-signing/number-field-label.webp) - -Since the field has a label set, the label is displayed instead of the default number field value - "Add number". - -### Document Signing View - -What the recipient sees when they open the document to sign depends on the settings configured by the sender. - -The recipient sees the number field signed with the default value in this case. - -![Number field with the default value signed by the user in the Documenso document signing view](/document-signing/number-field-autosigned.webp) - -Since the number field is not read-only, the recipient can modify its value. To change the value, the recipient must click the field to un-sign it. - -Once it's unsigned, the field uses the label set by the sender. - -![Unsigned number field in the Documenso document signing view](/document-signing/number-field-unsigned.webp) - -To sign the field with a different value, the recipient needs to click on the field and enter the new value. - -![Number field with the number input in the Documenso document signing view](/document-signing/number-field-input-modal.webp) - -Since the number field has a validation rule set, the recipient must enter a value that meets the rules. In this example, the value needs to be between 5 and 50. Otherwise, an error message will appear, and the field will not be signed. - -The image below illustrates the text field signed with a new value. - -![Number field signed with a new value](/document-signing/number-field-signed-with-another-value.webp) - -After signing the field, the recipient can click the "Complete" button to complete the signing process. - ## Radio Field The radio field is used to collect a single choice from the signer. -### Document Editor View - -Place the radio field on the document where you want the signer to select a choice. The radio field comes with additional settings that can be configured. - ![The radio field in the Documenso document editor](/document-signing/radio-field-document-editor-view.webp) -To open the settings, click on the radio field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. - -![The radio field advanced settings in the Documenso document editor](/document-signing/radio-field-advanced-settings-document-editor-view.webp) - The radio field settings include: - **Required** - Whether the field is required or not. - **Read only** - Whether the field is read-only or not. - **Values** - The list of choices for the field. +- **Direction** - The direction of the radio field. Can be "Vertical" or "Horizontal". It also comes with a couple of rules: @@ -282,57 +145,22 @@ It also comes with a couple of rules: - It should contain at least one option. - The field can't have more than one option selected. -In this example, the radio field is configured as follows: - -- Required: False -- Read Only: False -- Options: - - Option 1 - - Option 2 - - Empty value - - Empty value - - Option 3 - -![The radio field with the settings configured by the user in the Documenso document editor](/document-signing/radio-field-options-document-editor-view.webp) - -Since the field contains radio options, it displays them instead of the default radio field value, "Radio". - -### Document Signing View - -What the recipient sees when they open the document to sign depends on the settings configured by the sender. - -In this case, the recipient sees the radio field unsigned because the sender didn't select a value. - -![Radio field with no value selected in the Documenso document signing view](/document-signing/radio-field-unsigned.webp) - -The recipient can select one of the options by clicking on the radio button next to the option. - -![Radio field with the value selected by the user in the Documenso document signing view](/document-signing/radio-field-signed.webp) - -After signing the field, the recipient can click the "Complete" button to complete the signing process. - ## Checkbox Field The checkbox field is used to collect multiple choices from the signer. -### Document Editor View - Place the checkbox field on the document where you want the signer to select choices. The checkbox field comes with additional settings that can be configured. -![The checkbox field in the Documenso document editor](/document-signing/checkbox-document-editor-view.webp) - -To open the settings, click on the checkbox field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. - -![The checkbox field settings in the Documenso document editor](/document-signing/checkbox-advanced-settings.webp) +![The checkbox field in the Documenso document editor](/document-signing/checkbox-field-document-editor-view.webp) The checkbox field settings include the following: -- **Validation** - The validation rules for the field. - - **Rule** - The rule specifies "At least", "At most", and "Exactly". - - **Number** - The number of choices that must be selected. - **Required** - Whether the field is required or not. - **Read only** - Whether the field is read-only or not. - **Options** - The list of choices for the field. +- **Direction** - The direction of the checkbox field. Can be "Vertical" or "Horizontal". +- **Validation Rule** - The rule specifies "At least", "At most", and "Exactly". +- **Validation Number** - The number of choices that must be selected. It also comes with a couple of rules: @@ -344,67 +172,20 @@ It also comes with a couple of rules: - The signer can't modify the field if it's read-only. - It should contain at least one option. -In this example, the checkbox field is configured as follows: - -- No validation rules -- Required: True -- Read Only: False -- Options: - - Option 1 - - Empty value (checked) - - Option 2 - - Option 3 (checked) - - Empty value - -![The checkbox field with the settings configured by the user in the Documenso document editor](/document-signing/checkbox-advanced-settings-document-editor-view.webp) - -Since the field contains checkbox options, it displays them instead of the default checkbox field value, "Checkbox". - -### Document Signing View - -What the recipient sees when they open the document to sign depends on the settings configured by the sender. - -In this case, the recipient sees the checkbox field signed with the values selected by the sender. - -![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-document-signing-view.webp) - -Since the field is required, the recipient can either sign with the values selected by the sender or modify the values. - -The values can be modified in 2 ways: - -- Click on the options you want to select or deselect. -- Hover over the field and click the "X" button to clear all the selected values. - -The image below illustrates the checkbox field with the values cleared by the recipient. Since the field is required, it has a red border instead of the yellow one (non-required fields). - -![Checkbox field the values cleared by the user in the Documenso document signing view](/document-signing/checkbox-field-unsigned.webp) - -Then, the recipient can select values other than the ones chosen by the sender. - -![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-custom-sign.webp) - -After signing the field, the recipient can click the "Complete" button to complete the signing process. - ## Dropdown/Select Field The dropdown/select field collects a single choice from a list of options. -### Document Editor View - Place the dropdown/select field on the document where you want the signer to select a choice. The dropdown/select field comes with additional settings that can be configured. -![The dropdown/select field in the Documenso document editor](/document-signing/select-field-sliders.webp) - -To open the settings, click on the dropdown/select field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. - -![The dropdown/select field settings in the Documenso document editor](/document-signing/select-field-advanced-settings-panel.webp) +![The dropdown/select field in the Documenso document editor](/document-signing/dropdown-field-document-editor-view.webp) The dropdown/select field settings include: - **Required** - Whether the field is required or not. - **Read only** - Whether the field is read-only or not. - **Options** - The list of choices for the field. -- **Default** value - The default value selected in the field. +- **Default Value** - The default value selected in the field. It also comes with a couple of rules: @@ -416,31 +197,3 @@ It also comes with a couple of rules: - The field can't be signed with a value not in the options list. - The signer can't modify the field if it's read-only. - It should contain at least one option. - -In this example, the dropdown/select field is configured as follows: - -- Required: False -- Read Only: False -- Default Value: None -- Options: - - Document - - Template - - Other - -### Document Signing View - -What the recipient sees when they open the document to sign depends on the settings configured by the sender. - -In this case, the recipient sees the dropdown/select field with the default label, "-- Select ---" since the sender has not set a default value. - -![Dropdown/select field in the Documenso document signing view](/document-signing/select-field-unsigned.webp) - -The recipient can modify the dropdown/select field value since the field is not read-only. To change the value, the recipient must click on the field for the dropdown list to appear. - -![Dropdown/select field with the dropdown list in the Documenso document signing view](/document-signing/select-field-unsigned-dropdown.webp) - -The recipient can select one of the options from the list. The image below illustrates the dropdown/select field signed with a new value. - -![Dropdown/select field signed with a value](/document-signing/select-field-signed.webp) - -After signing the field, the recipient can click the "Complete" button to complete the signing process. diff --git a/apps/documentation/pages/users/documents/sending-documents.mdx b/apps/documentation/pages/users/documents/sending-documents.mdx index bf4d7c394..d0bf17b0c 100644 --- a/apps/documentation/pages/users/documents/sending-documents.mdx +++ b/apps/documentation/pages/users/documents/sending-documents.mdx @@ -9,90 +9,85 @@ import { Callout, Steps } from 'nextra/components'; This guide will walk you through the process of sending a document out for signing. You will learn how to upload a document, add recipients, place signature fields, and send the document for signing. +## Uploading a Document + -### Login Into Your Account +### Log In to Your Account The guide assumes you have a Documenso account. If you don't, you can create a free account [here](https://documen.so/free-docs). ### Upload Document -Navigate to the [Documenso dashboard](https://app.documenso.com/documents) and click on the "Add a document" button. Select the document you want to upload and wait for the upload to complete. +Navigate to the [Documenso dashboard](https://app.documenso.com/documents) and click on the "Upload Document" button located at the top right of the page. Select the documents you want to upload and wait for the upload to complete. - The maximum file size for uploaded documents is 150MB in production. In staging, the limit is - 50MB. + The maximum file size for uploaded documents is 150MB in production. You can upload up to 5 + documents at a time on standard plans. In staging, the limit is 50MB. ![Documenso dashboard](/document-signing/documenso-documents-dashboard.webp) -After the upload is complete, you will be redirected to the document's page. You can configure the document's settings and add recipients and fields here. +After the upload is complete, you will be redirected to the editor. You can configure the document's settings and add recipients and fields here. -![Documenso document overview](/document-signing/documenso-uploaded-document.webp) + -### (Optional) Advanced Options +## Configuring and Sending Document -Click on the "Advanced options" button to access additional settings for the document. You can set an external ID, date format, time zone, and the redirect URL. +The Documenso editor allows you to create and configure documents or templates. The editor consists of three sections that guide you through the process of preparing your document. -![Advanced settings for a document uploaded in the Documenso dashboard](/document-signing/documenso-uploaded-document-advanced-options.webp) +1. **Document & Recipients** - Upload files and add recipients +2. **Add Fields** - Add fields to the document +3. **Preview** - Preview the document before sending -The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s). +You can click each section to navigate to it, and the current section will be highlighted in the sidebar. -The date format and time zone settings allow you to customize how the date and time are displayed in the document. +![Editor page in the Documenso dashboard](/document-signing/editor-overview.webp) -The redirect URL allows you to specify a URL where the signer will be redirected after signing the document. +There is also a quick actions section on the left-hand side which allows you to: -### (Optional) Document Access +- **Document Settings** - Configure general settings, emails, or security settings for the document +- **Send Document** - Send the document to the recipients +- **Duplicate** - Duplicate the document +- **Download** - Download the document PDF +- **Delete** - Delete the document -Documenso enables you to set up access control for your documents. You can require authentication for viewing the document. +The header contains some notable items: -The available options are: +- **Title** - You can edit the title in the top-left corner of the header by clicking on the text +- **Status** - You can see the current status of the document next to the title +- **Attachments** - You can configure the attachments on the right-hand side of the header -- **Require account** - The recipient must be signed in to view the document. -- **None** - The document can be accessed directly by the URL sent to the recipient. + -![Document access settings in the Documenso dashboard](/document-signing/documenso-enterprise-document-access.webp) +### Upload Documents and Add Recipients + +The first step in the editor is to upload your document and add recipients. + +![Upload and add recipients page in the Documenso editor](/document-signing/editor-upload-recipients.webp) + +#### Upload Document + +You can upload documents by either clicking the "Add a document" dropzone, or dragging and dropping files into the dropzone. - The "Document Access" feature is only available for Enterprise accounts. + The maximum file size for uploaded documents is 150MB in production. You can upload up to 5 + documents at a time on standard plans. In staging, the limit is 50MB. -### (Optional) Recipient Authentication +#### Add Recipients -The "Recipient Authentication" feature allows you to specify the authentication method required for recipients to sign the signature field. +Click the "+ Add Signer" button to add a new recipient. For each recipient you can configure the following: -The available options are: +- **Email address** - The recipient's email address +- **Name** - The recipient's name +- **Order** - The sequence in which the recipient should sign the document. Only available if the "Enable Signing Order" checkbox is enabled +- **Role** - As seen below -- **Require passkey** - The recipient must have an account and passkey configured via their settings. -- **Require 2FA** - The recipient must have an account and 2FA enabled via their settings. -- **None** - No authentication required. - -![Document recipient action authentication in the Documenso dashboard](/document-signing/document-enterprise-recipient-action-authentication.webp) - -This can be overridden by setting the authentication requirements directly for each recipient in the next step. - - - The "Recipient Authentication" feature is only available for Enterprise accounts. - - -### Recipients - -Click the "+ Add Signer" button to add a new recipient. You can configure the recipient's email address, name, role, and authentication method on this page. - -You can choose any option from the ["Recipient Authentication"](#optional-recipient-authentication) section, or you can set it to "Inherit authentication method" to use the global action signing authentication method configured in the "General Settings" step. - -![The required authentication method for a recipient](/document-signing/documenso-document-recipient-authentication-method.webp) - -You can also set the recipient's role, which determines their actions and permissions in the document. - -![The recipient role](/document-signing/documenso-document-recipient-role.webp) - -#### Roles - -Documenso has 4 roles for recipients with different permissions and actions. +Documenso has 5 roles for recipients with different permissions and actions. | Role | Function | Action required | Signature | | :-------: | :-----------------------------------------------------------------------------: | :-------------: | :-------: | -| Signer | Needs to sign signatures fields assigned to them. | Yes | Yes | +| Signer | Needs to sign signature fields assigned to them. | Yes | Yes | | Approver | Needs to approve the document as a whole. Signature optional. | Yes | Optional | | Viewer | Needs to confirm they viewed the document. | Yes | No | | Assistant | Can help prepare the document by filling in fields on behalf of other signers. | Yes | No | @@ -100,15 +95,20 @@ Documenso has 4 roles for recipients with different permissions and actions. ### Fields -Documenso supports 9 different field types that can be added to the document. Each field type collects various information from the recipients when they sign the document. +Documenso supports 10 different field types that can be added to the document. Each field type collects various information from the recipients when they sign the document. + +To create a field, you can either click and drag to draw a field on the document or drag and drop the field type from the sidebar. ![The available field types in the Documenso dashboard](/document-signing/documenso-document-fields.webp) +The field created will be assigned to the currently selected recipient. You can change the recipient by clicking on the recipient's name in the right sidebar. + The available field types are: - **Signature** - Collects the signer's signature - **Email** - Collects the signer's email address - **Name** - Collects the signer's name +- **Initials** - Collects the signer's initials - **Date** - Collects the date of the signature - **Text** - Collects text input from the signer - **Number** - Collects a number input from the signer @@ -123,11 +123,11 @@ All fields can be placed anywhere on the document and resized as needed. page](/users/documents/fields). -#### Signature Required +### Preview -Signer Roles require at least 1 signature field. You will get an error message if you try to send a document without a signature field. +In this section, you can preview what the document will look like once it is fully signed. This uses placeholder data for the fields. -![Error message when trying to send a document without a signature field](/document-signing/documenso-no-signature-field-found.webp) +![Preview section in the Documenso editor](/document-signing/documenso-editor-preview.webp) ### Email Settings @@ -156,3 +156,54 @@ https://app.documenso.com/sign/12ACP777zxQLO52hjj_vCB ``` + +## Document Settings + +To access the document settings, click the "Document Settings" button in the quick actions section. + +### General Settings + +![General Documenso editor settings](/document-signing/documenso-editor-general-settings.webp) + +- **Language** - The language that the emails will be sent in +- **Allowed Signature Types** - The signature types that the recipient will be allowed to use +- **Date Format** - The date format that will be used for date fields +- **Time Zone** - The time zone that will be used for date fields +- **External ID** - A custom ID for the document that can be used to identify the document in your external system(s) +- **Redirect URL** - The URL where the signer will be redirected after signing the document +- **Document Distribution Method** - Whether to use emails to send the document, or none (which we will generate signing links for manual distribution) + +### Email Settings + +![Email Documenso editor settings](/document-signing/documenso-editor-email-settings.webp) + +- **Reply To** - The email address that will be used as the reply to email address +- **Subject** - The subject of the email +- **Message** - The message of the email +- **Checkboxes** - You can select which emails should be sent during the document signing process + +### Security Settings + +Documenso enables you to set up access control for your documents. You can require authentication for viewing the document. + +The available options are: + +- **Require account** - The recipient must be signed in to view the document. +- **Require 2FA** - The recipient must use 2FA to sign the document. +- **None** - The document can be accessed directly by the URL sent to the recipient. + +![Security Documenso editor settings](/document-signing/documenso-editor-security-settings.webp) + +The "Recipient Authentication" feature allows you to specify the authentication method required for recipients to sign the signature field. + +The available options are: + +- **Require passkey** - The recipient must have an account and passkey configured via their settings. +- **Require 2FA** - The recipient must have an account and 2FA enabled via their settings. +- **None** - No authentication required. + +This can be overridden by setting the authentication requirements directly for each recipient in the next step. + + + The "Recipient Authentication" feature is only available for Enterprise accounts. + diff --git a/apps/documentation/pages/users/email-domains.mdx b/apps/documentation/pages/users/email-domains.mdx index d28b467e3..4a84141dc 100644 --- a/apps/documentation/pages/users/email-domains.mdx +++ b/apps/documentation/pages/users/email-domains.mdx @@ -1,3 +1,8 @@ +--- +title: Email Domains +description: Learn how to create and manage email domains in Documenso. +--- + import { Callout, Steps } from 'nextra/components'; # Email Domains diff --git a/apps/documentation/pages/users/fair-use.mdx b/apps/documentation/pages/users/fair-use.mdx index 2b2eb605a..2fb4198dd 100644 --- a/apps/documentation/pages/users/fair-use.mdx +++ b/apps/documentation/pages/users/fair-use.mdx @@ -7,28 +7,28 @@ import { Callout } from 'nextra/components'; # Fair Use Policy -### Why +We offer our plans without any limits on volume because we want our users and customers to make the most of their accounts. Estimating volume is incredibly hard, especially for shorter intervals like a quarter. We are not interested in selling volume packages our customers end up not using. -We offer our plans without any limits on volume because we want our users and customers to make the most of their accounts. Estimating volume is incredibly hard, especially for shorter intervals like a quarter. We are not interested in selling volume packages our customers end up not using. This is why the individual plan and the team plan do not include a limit on signing or API volume. If you are a customer of these [plans](https://documen.so/pricing), we ask you to abide by this fair use policy: +This is why the individual plan and the team plan do not include a limit on signing or API volume. If you are a customer of these [plans](https://documen.so/pricing), we ask you to abide by this fair use policy: ### Spirit of the Plan -> Use the limitless accounts as much as you like (they are meant to offer a lot) while respecting the spirit and intended scope of the account. +Use the limitless accounts as much as you like (they are meant to offer a lot) while respecting the spirit and intended scope of the account. What happens if I violate this policy? We will ask you to upgrade to a fitting plan or custom - pricing. We won’t block your account without reaching out. [Message - us](mailto:support@documenso.com) for questions. It's probably fine, though. + pricing. We won’t block your account without reaching out. You can [message + us](mailto:support@documenso.com) for questions. ### DO -- Sign as many documents with the individual plan for your single business or organization you are part of -- Use the API and Zapier to automate all your signing to sign as much as possible -- Experiment with the plans and integrations, testing what you want to build: When in doubt, do it. Especially if you are just starting. +- Sign as many documents as you need with the individual plan for your single business or organization you are part of +- Use the API and automation tools to automate all your signing workflows +- Experiment with the plans and integrations, testing what you want to build ### DON'T - Use the individual account's API to power a platform - Run a huge company, signing thousands of documents per day on a two-user team plan using the API -- Let this policy make you overthink. If you are a paying customer, we want you to win, and it's probably fine +- Let this policy make you overthink. If you are a paying customer, we want you to win diff --git a/apps/documentation/pages/users/get-started/account-creation.mdx b/apps/documentation/pages/users/get-started/account-creation.mdx index bea55e060..305486e6a 100644 --- a/apps/documentation/pages/users/get-started/account-creation.mdx +++ b/apps/documentation/pages/users/get-started/account-creation.mdx @@ -10,7 +10,12 @@ import { Callout, Steps } from 'nextra/components'; ### Pick a Plan -The first step to start using Documenso is to pick a plan and create an account. At the moment of writing this guide, we have 3 plans available: Free, Individual, Teams and Platform. +The first step to start using Documenso is to pick a plan and create an account. At the moment of writing this guide, we have 4 plans available: + +- Free +- Individual +- Teams +- Platform Explore each plan's features and choose the one that best suits your needs. The [pricing page](https://documen.so/pricing) has more information about the plans. @@ -24,7 +29,7 @@ To create a free account, navigate to the [registration page](https://documen.so ### Optional: Claim a Premium Username -You can claim a premium username by upgrading to a paid plan. After upgrading to a paid plan, you can update your [public profile](https://app.documenso.com/settings/public-profile). +You can claim a premium username by upgrading to a paid plan. After upgrading to a paid plan, you can update your [public profile](/users/profile). ### Optional: Create a Team diff --git a/apps/documentation/pages/users/licenses/_meta.js b/apps/documentation/pages/users/licenses/_meta.js new file mode 100644 index 000000000..0d4c939fc --- /dev/null +++ b/apps/documentation/pages/users/licenses/_meta.js @@ -0,0 +1,5 @@ +export default { + index: 'Overview', + 'community-edition': 'Community Edition', + 'enterprise-edition': 'Enterprise Edition', +}; diff --git a/apps/documentation/pages/users/licenses/_meta.json b/apps/documentation/pages/users/licenses/_meta.json deleted file mode 100644 index f9e85ffeb..000000000 --- a/apps/documentation/pages/users/licenses/_meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "index": "Overview", - "community-edition": "Community Edition", - "enterprise-edition": "Enterprise Edition" -} \ No newline at end of file diff --git a/apps/documentation/pages/users/licenses/community-edition.mdx b/apps/documentation/pages/users/licenses/community-edition.mdx index 88dde8fa7..f259fc2e5 100644 --- a/apps/documentation/pages/users/licenses/community-edition.mdx +++ b/apps/documentation/pages/users/licenses/community-edition.mdx @@ -1,3 +1,8 @@ +--- +title: Community Edition +description: Learn about the Community Edition of Documenso. +--- + import { Callout } from 'nextra/components'; # Community Edition @@ -32,10 +37,10 @@ Documenso and the Community Edition are licensed under [AGPL3](https://github.co ### Conditions -ℹ️ License and copyright notice -ℹ️ State changes -ℹ️ Disclose source -ℹ️ Network use is distribution +- License and copyright notice +- State changes +- Disclose source +- Network use is distribution It's important to remember that you must keep the AGPL3 license for your modified or non-modified diff --git a/apps/documentation/pages/users/licenses/enterprise-edition.mdx b/apps/documentation/pages/users/licenses/enterprise-edition.mdx index 8dab8b9e8..b1f6a77b2 100644 --- a/apps/documentation/pages/users/licenses/enterprise-edition.mdx +++ b/apps/documentation/pages/users/licenses/enterprise-edition.mdx @@ -1,3 +1,8 @@ +--- +title: Enterprise Edition +description: Learn about the Enterprise Edition of Documenso. +--- + import { Callout } from 'nextra/components'; # Enterprise Edition diff --git a/apps/documentation/pages/users/licenses/index.mdx b/apps/documentation/pages/users/licenses/index.mdx index cf5614c96..968274f5d 100644 --- a/apps/documentation/pages/users/licenses/index.mdx +++ b/apps/documentation/pages/users/licenses/index.mdx @@ -1,3 +1,8 @@ +--- +title: Licenses +description: Learn about the different licenses for self-hosting Documenso. +--- + # Self-Hosting Licenses Documenso comes in two versions for self-hosting: diff --git a/apps/documentation/pages/users/organisations/_meta.js b/apps/documentation/pages/users/organisations/_meta.js new file mode 100644 index 000000000..c0a7cf6e8 --- /dev/null +++ b/apps/documentation/pages/users/organisations/_meta.js @@ -0,0 +1,8 @@ +export default { + index: 'Introduction', + members: 'Members', + groups: 'Groups', + teams: 'Teams', + sso: 'SSO', + billing: 'Billing', +}; diff --git a/apps/documentation/pages/users/organisations/_meta.json b/apps/documentation/pages/users/organisations/_meta.json deleted file mode 100644 index dfc75fc95..000000000 --- a/apps/documentation/pages/users/organisations/_meta.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "index": "Introduction", - "members": "Members", - "groups": "Groups", - "teams": "Teams", - "sso": "SSO", - "billing": "Billing" -} diff --git a/apps/documentation/pages/users/organisations/sso/_meta.js b/apps/documentation/pages/users/organisations/sso/_meta.js new file mode 100644 index 000000000..797237e72 --- /dev/null +++ b/apps/documentation/pages/users/organisations/sso/_meta.js @@ -0,0 +1,4 @@ +export default { + index: 'Configuration', + 'microsoft-entra-id': 'Microsoft Entra ID', +}; diff --git a/apps/documentation/pages/users/organisations/sso/_meta.json b/apps/documentation/pages/users/organisations/sso/_meta.json deleted file mode 100644 index 4ba07c6f6..000000000 --- a/apps/documentation/pages/users/organisations/sso/_meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "index": "Configuration", - "microsoft-entra-id": "Microsoft Entra ID" -} diff --git a/apps/documentation/pages/users/profile.mdx b/apps/documentation/pages/users/profile.mdx index 780c226c8..227432a0b 100644 --- a/apps/documentation/pages/users/profile.mdx +++ b/apps/documentation/pages/users/profile.mdx @@ -15,7 +15,7 @@ Documenso allows you to create a public profile to share your templates for anyo ### Navigate to Your Profile Settings -Click on your profile picture in the top right corner and select "Settings" or "Team Settings". Then, navigate to the "Public Profile" tab to configure your profile. +Click on your profile picture in the top right corner and select "Team Settings". Then, navigate to the "Public Profile" tab to configure your profile. ![The profile settings page](/public-profile/documenso-public-profile-settings.webp) diff --git a/apps/documentation/pages/users/support.mdx b/apps/documentation/pages/users/support.mdx index 7eb00636f..a5c39427c 100644 --- a/apps/documentation/pages/users/support.mdx +++ b/apps/documentation/pages/users/support.mdx @@ -9,30 +9,30 @@ description: Learn what types of support we offer. If you are a developer or free user, you can reach out to the community or raise an issue: -### [Create Github Issues](https://github.com/documenso/documenso/issues) +**[Create Github Issues](https://github.com/documenso/documenso/issues)** The community and the core team address GitHub issues. Be sure to check if a similar issue already exists. Please note that while we want to address everything immediately, we must prioritize. -### [Join our Discord](https://documen.so/discord) +**[Join our Discord](https://documen.so/discord)** You can ask for help in the [community help channel](https://discord.com/channels/1132216843537485854/1133419426524430376). ## Paid Account Support -### Email: support@documenso.com +**Email: support@documenso.com** If you are paying customers facing issues, email our customer support, especially in urgent cases. -### Private Discord channel +**Private Discord channel** If you prefer Discord, we can invite you to a private channel. Message support to make this happen. ## Enterprise Support -### Email: support@documenso.com +**Email: support@documenso.com** If you are paying customers facing issues, email our customer support, especially in urgent cases. -### Slack +**Slack** If your team is on Slack, we can create a private workspace to support you more closely. diff --git a/apps/documentation/pages/users/templates.mdx b/apps/documentation/pages/users/templates.mdx index aa3c86798..1269ebd33 100644 --- a/apps/documentation/pages/users/templates.mdx +++ b/apps/documentation/pages/users/templates.mdx @@ -1,3 +1,8 @@ +--- +title: Templates +description: Learn how to create and use templates in Documenso. +--- + import { Callout, Steps } from 'nextra/components'; # Document Templates @@ -8,82 +13,43 @@ Documenso allows you to create templates, which are reusable documents. Template ### Create New Template -To create a new template, navigate to the ["Templates" page](https://app.documenso.com/templates) and click on the "New Template" button. +To create a new template, navigate to the "Templates" page and click on the "Upload Template" button. ![Documenso template page](/templates/documenso-template-page.webp) -Clicking on the "New Template" button opens a new modal to upload the document you want to use as a template. Select the document and wait for Documenso to upload it to your account. +You can select multiple files at once to upload into the template. Once the upload is complete you will be redirected to the editor. -![Upload a new template document in the Documenso dashboard](/templates/documenso-template-page-upload-document.webp) +![A successfully uploaded document in the Documenso dashboard](/templates/documenso-template-page-uploaded-document.webp) -Once the upload is complete, Documenso opens the template configuration page. - -![A successfuly uploaded document in the Documenso dashboard](/templates/documenso-template-page-uploaded-document.webp) +See the [documents](/users/documents/sending-documents) page for more information on how to use the editor. You can then configure the template by adding recipients, fields, and other options. -### (Optional) Email options - -When you send a document for signing, Documenso emails the recipients with a link to the document. The email contains a subject, message, and the document. - -Documenso uses a generic subject and message but also allows you to customize them for each document and template. - -![Configuring the email options for the Documenso template](/templates/documenso-template-page-uploaded-document-email-options.webp) - -To configure the email options, click the "Email Options" tab and fill in the subject and message fields. Every time you use this template for signing, Documenso will use the custom subject and message you provided. They can also be overridden before sending the document. - -### (Optional) Advanced Options - -The template also has advanced options that you can configure. These options include settings such as the external ID, date format, time zone and the redirect URL. - -![Configuring the advanced options for the Documenso template](/templates/documenso-template-page-uploaded-document-advanced-options.webp) - -The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s). - -The date format and time zone settings allow you to customize how the date and time are displayed in the document. - -The redirect URL allows you to specify a URL where the signer will be redirected after signing the document. - ### Add Placeholders or Recipients -You can add placeholders for the template recipients. Placeholders specify where the recipient's name, email, and other information should be in the document. +When adding recipients, you can use dummy recipients which can be replaced with actual recipients when you use a template, which we will explain in the next section. -You can also add recipients directly to the template. Recipients are the people who will receive the document for signing. +For example, the following has two recipients: + +- placeholder@documenso.com +- me@documenso.com ![Adding placeholder recipients for the Documenso template](/templates/documenso-template-recipients.webp) -If you add placeholders to the template, you must replace them with actual recipients when creating a document from it. See the modal from the ["Use a Template"](#use-a-template) section. - -### Add Fields - -The last step involves adding fields to the document. These fields collect information from the recipients when they sign the document. - -Documenso provides the following field types: - -- **Signature** - Collects the signer's signature -- **Email** - Collects the signer's email address -- **Name** - Collects the signer's name -- **Date** - Collects the date of the signature -- **Text** - Collects text input from the signer -- **Number** - Collects a number input from the signer -- **Radio** - Collects a single choice from the signer -- **Checkbox** - Collects multiple choices from the signer -- **Dropdown/Select** - Collects a single choice from a list of choices - -![Adding fields for the Documenso template](/templates/documenso-template-page-fields.webp) - -After adding the fields, press the "Save Template" button to save the template. +You can then place fields for each recipient. Learn more about the available field types and how to use them on the [Fields - page](signing-documents/fields). + page](/users/documents/fields). ### Use a Template -Click on the "Use Template" button to create a new document from the template. Before creating the document, you are asked to fill in the recipients for the placeholders you added to the template. +Once you're ready to use the template, you can click the "Use Template" button in the top right corner. -After filling in the recipients, click the "Create Document" button to create the document in your account. +Here you can choose to use the template as is, or you can replace the emails or names with different recipients as you require. + +You can now decide whether to create the document as a draft, or immediately send it to the recipients for signing. ![Use an available Documenso template](/templates/documenso-use-template.webp) @@ -91,7 +57,7 @@ You can also send the document straight to the recipients for signing by checkin ### (Optional) Create A Direct Signing Link -A direct signing link allows you to create a shareable link for document signing, where recipients can fill in their information and sign the document. See the "Create Direct Link" button in the image from [step 4](#add-placeholders-or-recipients). +A direct signing link allows you to create a shareable link for document signing, where recipients can fill in their information and sign the document. Check out the [Direct Signing Links](/users/direct-links) section for more information. diff --git a/apps/documentation/postcss.config.cjs b/apps/documentation/postcss.config.cjs new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/apps/documentation/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/apps/documentation/public/api-reference/documenso-template-id.webp b/apps/documentation/public/api-reference/documenso-template-id.webp deleted file mode 100644 index b3a7af0b4..000000000 Binary files a/apps/documentation/public/api-reference/documenso-template-id.webp and /dev/null differ diff --git a/apps/documentation/public/api-reference/document-generated-from-template.webp b/apps/documentation/public/api-reference/document-generated-from-template.webp deleted file mode 100644 index d203380f7..000000000 Binary files a/apps/documentation/public/api-reference/document-generated-from-template.webp and /dev/null differ diff --git a/apps/documentation/public/api-reference/document-uploaded-to-documenso-via-api.webp b/apps/documentation/public/api-reference/document-uploaded-to-documenso-via-api.webp deleted file mode 100644 index 2b08723a8..000000000 Binary files a/apps/documentation/public/api-reference/document-uploaded-to-documenso-via-api.webp and /dev/null differ diff --git a/apps/documentation/public/api-reference/fields-added-via-api.webp b/apps/documentation/public/api-reference/fields-added-via-api.webp deleted file mode 100644 index f3aeaf334..000000000 Binary files a/apps/documentation/public/api-reference/fields-added-via-api.webp and /dev/null differ diff --git a/apps/documentation/public/api-reference/upload-document-to-s3.webp b/apps/documentation/public/api-reference/upload-document-to-s3.webp deleted file mode 100644 index e5367c4d5..000000000 Binary files a/apps/documentation/public/api-reference/upload-document-to-s3.webp and /dev/null differ diff --git a/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp b/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp new file mode 100644 index 000000000..7cf99a3b9 Binary files /dev/null and b/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp differ diff --git a/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp b/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp new file mode 100644 index 000000000..ea6980da2 Binary files /dev/null and b/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp differ diff --git a/apps/documentation/public/developer-mode/field-coordinates.webp b/apps/documentation/public/developer-mode/field-coordinates.webp deleted file mode 100644 index 2089e8b15..000000000 Binary files a/apps/documentation/public/developer-mode/field-coordinates.webp and /dev/null differ diff --git a/apps/documentation/public/direct-links/choose-direct-link-recipient-documenso.webp b/apps/documentation/public/direct-links/choose-direct-link-recipient-documenso.webp index 1c5e8eecb..7dce51822 100644 Binary files a/apps/documentation/public/direct-links/choose-direct-link-recipient-documenso.webp and b/apps/documentation/public/direct-links/choose-direct-link-recipient-documenso.webp differ diff --git a/apps/documentation/public/direct-links/document-direct-link-documenso.webp b/apps/documentation/public/direct-links/document-direct-link-documenso.webp index 77b1d3763..860f4ee44 100644 Binary files a/apps/documentation/public/direct-links/document-direct-link-documenso.webp and b/apps/documentation/public/direct-links/document-direct-link-documenso.webp differ diff --git a/apps/documentation/public/direct-links/enable-document-direct-link-modal.webp b/apps/documentation/public/direct-links/enable-document-direct-link-modal.webp index 7817697d4..0d54bf2f8 100644 Binary files a/apps/documentation/public/direct-links/enable-document-direct-link-modal.webp and b/apps/documentation/public/direct-links/enable-document-direct-link-modal.webp differ diff --git a/apps/documentation/public/document-signing/ai-field-detection-button.webp b/apps/documentation/public/document-signing/ai-field-detection-button.webp new file mode 100644 index 000000000..0bad99e65 Binary files /dev/null and b/apps/documentation/public/document-signing/ai-field-detection-button.webp differ diff --git a/apps/documentation/public/document-signing/ai-field-detection-dialog.webp b/apps/documentation/public/document-signing/ai-field-detection-dialog.webp new file mode 100644 index 000000000..a586bf9e8 Binary files /dev/null and b/apps/documentation/public/document-signing/ai-field-detection-dialog.webp differ diff --git a/apps/documentation/public/document-signing/ai-recipient-detect-button.webp b/apps/documentation/public/document-signing/ai-recipient-detect-button.webp new file mode 100644 index 000000000..a22c6a1b6 Binary files /dev/null and b/apps/documentation/public/document-signing/ai-recipient-detect-button.webp differ diff --git a/apps/documentation/public/document-signing/checkbox-advanced-settings-document-editor-view.webp b/apps/documentation/public/document-signing/checkbox-advanced-settings-document-editor-view.webp deleted file mode 100644 index d0b13a6b5..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-advanced-settings-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/checkbox-advanced-settings.webp b/apps/documentation/public/document-signing/checkbox-advanced-settings.webp deleted file mode 100644 index 585b23f4f..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-advanced-settings.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/checkbox-document-editor-view.webp b/apps/documentation/public/document-signing/checkbox-document-editor-view.webp deleted file mode 100644 index 9eb2ebfc8..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/checkbox-field-custom-sign.webp b/apps/documentation/public/document-signing/checkbox-field-custom-sign.webp deleted file mode 100644 index 24689382d..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-field-custom-sign.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/checkbox-field-document-editor-view.webp b/apps/documentation/public/document-signing/checkbox-field-document-editor-view.webp new file mode 100644 index 000000000..29d87f5d8 Binary files /dev/null and b/apps/documentation/public/document-signing/checkbox-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/checkbox-field-document-signing-view.webp b/apps/documentation/public/document-signing/checkbox-field-document-signing-view.webp deleted file mode 100644 index 134be8838..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-field-document-signing-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/checkbox-field-unsigned.webp b/apps/documentation/public/document-signing/checkbox-field-unsigned.webp deleted file mode 100644 index d5ce8387f..000000000 Binary files a/apps/documentation/public/document-signing/checkbox-field-unsigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/date-field-document-editor-view.webp b/apps/documentation/public/document-signing/date-field-document-editor-view.webp index 1d1f8d607..589a7cff9 100644 Binary files a/apps/documentation/public/document-signing/date-field-document-editor-view.webp and b/apps/documentation/public/document-signing/date-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/date-field-document-signing-view.webp b/apps/documentation/public/document-signing/date-field-document-signing-view.webp deleted file mode 100644 index f520818cd..000000000 Binary files a/apps/documentation/public/document-signing/date-field-document-signing-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/date-field-signed.webp b/apps/documentation/public/document-signing/date-field-signed.webp deleted file mode 100644 index 56b8eeccb..000000000 Binary files a/apps/documentation/public/document-signing/date-field-signed.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-document-add-signers.webp b/apps/documentation/public/document-signing/documenso-document-add-signers.webp deleted file mode 100644 index fab97a048..000000000 Binary files a/apps/documentation/public/document-signing/documenso-document-add-signers.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-document-email-settings.webp b/apps/documentation/public/document-signing/documenso-document-email-settings.webp index 5682ec8af..0605344a0 100644 Binary files a/apps/documentation/public/document-signing/documenso-document-email-settings.webp and b/apps/documentation/public/document-signing/documenso-document-email-settings.webp differ diff --git a/apps/documentation/public/document-signing/documenso-document-fields.webp b/apps/documentation/public/document-signing/documenso-document-fields.webp index 4b6aebc3e..500545db7 100644 Binary files a/apps/documentation/public/document-signing/documenso-document-fields.webp and b/apps/documentation/public/document-signing/documenso-document-fields.webp differ diff --git a/apps/documentation/public/document-signing/documenso-document-recipient-authentication-method.webp b/apps/documentation/public/document-signing/documenso-document-recipient-authentication-method.webp deleted file mode 100644 index 2dde4325c..000000000 Binary files a/apps/documentation/public/document-signing/documenso-document-recipient-authentication-method.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-document-recipient-role.webp b/apps/documentation/public/document-signing/documenso-document-recipient-role.webp deleted file mode 100644 index 9d401878b..000000000 Binary files a/apps/documentation/public/document-signing/documenso-document-recipient-role.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-documents-dashboard.webp b/apps/documentation/public/document-signing/documenso-documents-dashboard.webp index 8e5c72fba..2fc47d123 100644 Binary files a/apps/documentation/public/document-signing/documenso-documents-dashboard.webp and b/apps/documentation/public/document-signing/documenso-documents-dashboard.webp differ diff --git a/apps/documentation/public/document-signing/documenso-editor-email-settings.webp b/apps/documentation/public/document-signing/documenso-editor-email-settings.webp new file mode 100644 index 000000000..f3be8ba83 Binary files /dev/null and b/apps/documentation/public/document-signing/documenso-editor-email-settings.webp differ diff --git a/apps/documentation/public/document-signing/documenso-editor-general-settings.webp b/apps/documentation/public/document-signing/documenso-editor-general-settings.webp new file mode 100644 index 000000000..c8ff54dfb Binary files /dev/null and b/apps/documentation/public/document-signing/documenso-editor-general-settings.webp differ diff --git a/apps/documentation/public/document-signing/documenso-editor-preview.webp b/apps/documentation/public/document-signing/documenso-editor-preview.webp new file mode 100644 index 000000000..7bf5f2f63 Binary files /dev/null and b/apps/documentation/public/document-signing/documenso-editor-preview.webp differ diff --git a/apps/documentation/public/document-signing/documenso-editor-security-settings.webp b/apps/documentation/public/document-signing/documenso-editor-security-settings.webp new file mode 100644 index 000000000..53b6f4567 Binary files /dev/null and b/apps/documentation/public/document-signing/documenso-editor-security-settings.webp differ diff --git a/apps/documentation/public/document-signing/documenso-enterprise-document-access.webp b/apps/documentation/public/document-signing/documenso-enterprise-document-access.webp deleted file mode 100644 index 3b877fd40..000000000 Binary files a/apps/documentation/public/document-signing/documenso-enterprise-document-access.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-no-signature-field-found.webp b/apps/documentation/public/document-signing/documenso-no-signature-field-found.webp deleted file mode 100644 index 95fc133fa..000000000 Binary files a/apps/documentation/public/document-signing/documenso-no-signature-field-found.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-uploaded-document-advanced-options.webp b/apps/documentation/public/document-signing/documenso-uploaded-document-advanced-options.webp deleted file mode 100644 index b2bd54b40..000000000 Binary files a/apps/documentation/public/document-signing/documenso-uploaded-document-advanced-options.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/documenso-uploaded-document.webp b/apps/documentation/public/document-signing/documenso-uploaded-document.webp deleted file mode 100644 index ac09d53cd..000000000 Binary files a/apps/documentation/public/document-signing/documenso-uploaded-document.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/document-enterprise-recipient-action-authentication.webp b/apps/documentation/public/document-signing/document-enterprise-recipient-action-authentication.webp deleted file mode 100644 index 81986e8fa..000000000 Binary files a/apps/documentation/public/document-signing/document-enterprise-recipient-action-authentication.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/dropdown-field-document-editor-view.webp b/apps/documentation/public/document-signing/dropdown-field-document-editor-view.webp new file mode 100644 index 000000000..ce5b81751 Binary files /dev/null and b/apps/documentation/public/document-signing/dropdown-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/editor-overview.webp b/apps/documentation/public/document-signing/editor-overview.webp new file mode 100644 index 000000000..319550467 Binary files /dev/null and b/apps/documentation/public/document-signing/editor-overview.webp differ diff --git a/apps/documentation/public/document-signing/editor-upload-recipients.webp b/apps/documentation/public/document-signing/editor-upload-recipients.webp new file mode 100644 index 000000000..c3c2a8ca4 Binary files /dev/null and b/apps/documentation/public/document-signing/editor-upload-recipients.webp differ diff --git a/apps/documentation/public/document-signing/email-field-document-editor-view.webp b/apps/documentation/public/document-signing/email-field-document-editor-view.webp index 261b9af23..37dab440e 100644 Binary files a/apps/documentation/public/document-signing/email-field-document-editor-view.webp and b/apps/documentation/public/document-signing/email-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/email-field-document-signing-view.webp b/apps/documentation/public/document-signing/email-field-document-signing-view.webp deleted file mode 100644 index f6d49ce56..000000000 Binary files a/apps/documentation/public/document-signing/email-field-document-signing-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/initials-field-document-editor-view.webp b/apps/documentation/public/document-signing/initials-field-document-editor-view.webp new file mode 100644 index 000000000..89ca68dbb Binary files /dev/null and b/apps/documentation/public/document-signing/initials-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/name-field-document-editor-view.webp b/apps/documentation/public/document-signing/name-field-document-editor-view.webp index 8ab400938..fbf8a8e9a 100644 Binary files a/apps/documentation/public/document-signing/name-field-document-editor-view.webp and b/apps/documentation/public/document-signing/name-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/name-field-document-signing-view.webp b/apps/documentation/public/document-signing/name-field-document-signing-view.webp deleted file mode 100644 index b4bb3e27c..000000000 Binary files a/apps/documentation/public/document-signing/name-field-document-signing-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/name-field-signed.webp b/apps/documentation/public/document-signing/name-field-signed.webp deleted file mode 100644 index af85610e1..000000000 Binary files a/apps/documentation/public/document-signing/name-field-signed.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-autosigned.webp b/apps/documentation/public/document-signing/number-field-autosigned.webp deleted file mode 100644 index cc7f522c7..000000000 Binary files a/apps/documentation/public/document-signing/number-field-autosigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-document-editor-view.webp b/apps/documentation/public/document-signing/number-field-document-editor-view.webp index daba7284f..aef5a2533 100644 Binary files a/apps/documentation/public/document-signing/number-field-document-editor-view.webp and b/apps/documentation/public/document-signing/number-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/number-field-document-editor.webp b/apps/documentation/public/document-signing/number-field-document-editor.webp deleted file mode 100644 index 043c8bec8..000000000 Binary files a/apps/documentation/public/document-signing/number-field-document-editor.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-input-modal.webp b/apps/documentation/public/document-signing/number-field-input-modal.webp deleted file mode 100644 index bf12ad796..000000000 Binary files a/apps/documentation/public/document-signing/number-field-input-modal.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-label.webp b/apps/documentation/public/document-signing/number-field-label.webp deleted file mode 100644 index 53a4235b4..000000000 Binary files a/apps/documentation/public/document-signing/number-field-label.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-signed-with-another-value.webp b/apps/documentation/public/document-signing/number-field-signed-with-another-value.webp deleted file mode 100644 index ba47c18b3..000000000 Binary files a/apps/documentation/public/document-signing/number-field-signed-with-another-value.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/number-field-unsigned.webp b/apps/documentation/public/document-signing/number-field-unsigned.webp deleted file mode 100644 index 4f37d2930..000000000 Binary files a/apps/documentation/public/document-signing/number-field-unsigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/radio-field-advanced-settings-document-editor-view.webp b/apps/documentation/public/document-signing/radio-field-advanced-settings-document-editor-view.webp deleted file mode 100644 index 26cd14fe3..000000000 Binary files a/apps/documentation/public/document-signing/radio-field-advanced-settings-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/radio-field-document-editor-view.webp b/apps/documentation/public/document-signing/radio-field-document-editor-view.webp index 0baa60c47..0b0ac6549 100644 Binary files a/apps/documentation/public/document-signing/radio-field-document-editor-view.webp and b/apps/documentation/public/document-signing/radio-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/radio-field-options-document-editor-view.webp b/apps/documentation/public/document-signing/radio-field-options-document-editor-view.webp deleted file mode 100644 index 53bfec3f9..000000000 Binary files a/apps/documentation/public/document-signing/radio-field-options-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/radio-field-signed.webp b/apps/documentation/public/document-signing/radio-field-signed.webp deleted file mode 100644 index 0ae25dc9a..000000000 Binary files a/apps/documentation/public/document-signing/radio-field-signed.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/radio-field-unsigned.webp b/apps/documentation/public/document-signing/radio-field-unsigned.webp deleted file mode 100644 index 10d9caf98..000000000 Binary files a/apps/documentation/public/document-signing/radio-field-unsigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-advanced-settings-panel.webp b/apps/documentation/public/document-signing/select-field-advanced-settings-panel.webp deleted file mode 100644 index c6820e4b7..000000000 Binary files a/apps/documentation/public/document-signing/select-field-advanced-settings-panel.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-document-editor-view.webp b/apps/documentation/public/document-signing/select-field-document-editor-view.webp deleted file mode 100644 index 1cea9a312..000000000 Binary files a/apps/documentation/public/document-signing/select-field-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-signed.webp b/apps/documentation/public/document-signing/select-field-signed.webp deleted file mode 100644 index 5c7bffe44..000000000 Binary files a/apps/documentation/public/document-signing/select-field-signed.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-sliders.webp b/apps/documentation/public/document-signing/select-field-sliders.webp deleted file mode 100644 index be1b0b54d..000000000 Binary files a/apps/documentation/public/document-signing/select-field-sliders.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-unsigned-dropdown.webp b/apps/documentation/public/document-signing/select-field-unsigned-dropdown.webp deleted file mode 100644 index 4f7f3c17b..000000000 Binary files a/apps/documentation/public/document-signing/select-field-unsigned-dropdown.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/select-field-unsigned.webp b/apps/documentation/public/document-signing/select-field-unsigned.webp deleted file mode 100644 index 05593164a..000000000 Binary files a/apps/documentation/public/document-signing/select-field-unsigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/signature-field-document-editor-view.webp b/apps/documentation/public/document-signing/signature-field-document-editor-view.webp index a87aac725..a976a2dfe 100644 Binary files a/apps/documentation/public/document-signing/signature-field-document-editor-view.webp and b/apps/documentation/public/document-signing/signature-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/signature-field-document-signing-view.webp b/apps/documentation/public/document-signing/signature-field-document-signing-view.webp deleted file mode 100644 index 60f2f13c3..000000000 Binary files a/apps/documentation/public/document-signing/signature-field-document-signing-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/signed-email-field.webp b/apps/documentation/public/document-signing/signed-email-field.webp deleted file mode 100644 index e3b935d50..000000000 Binary files a/apps/documentation/public/document-signing/signed-email-field.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/signed-signature-field.webp b/apps/documentation/public/document-signing/signed-signature-field.webp deleted file mode 100644 index 4b25e4196..000000000 Binary files a/apps/documentation/public/document-signing/signed-signature-field.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-advanced-settings-document-editor-view.webp b/apps/documentation/public/document-signing/text-field-advanced-settings-document-editor-view.webp deleted file mode 100644 index 5b1f3e5ee..000000000 Binary files a/apps/documentation/public/document-signing/text-field-advanced-settings-document-editor-view.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-autosigned.webp b/apps/documentation/public/document-signing/text-field-autosigned.webp deleted file mode 100644 index 71e966986..000000000 Binary files a/apps/documentation/public/document-signing/text-field-autosigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-document-editor-view.webp b/apps/documentation/public/document-signing/text-field-document-editor-view.webp index d5c69cbb7..288d38817 100644 Binary files a/apps/documentation/public/document-signing/text-field-document-editor-view.webp and b/apps/documentation/public/document-signing/text-field-document-editor-view.webp differ diff --git a/apps/documentation/public/document-signing/text-field-input-modal.webp b/apps/documentation/public/document-signing/text-field-input-modal.webp deleted file mode 100644 index 519ba8085..000000000 Binary files a/apps/documentation/public/document-signing/text-field-input-modal.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-new-value-signed.webp b/apps/documentation/public/document-signing/text-field-new-value-signed.webp deleted file mode 100644 index ff67978bd..000000000 Binary files a/apps/documentation/public/document-signing/text-field-new-value-signed.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-unsigned.webp b/apps/documentation/public/document-signing/text-field-unsigned.webp deleted file mode 100644 index f6dd89002..000000000 Binary files a/apps/documentation/public/document-signing/text-field-unsigned.webp and /dev/null differ diff --git a/apps/documentation/public/document-signing/text-field-with-filled-advanced-settings.webp b/apps/documentation/public/document-signing/text-field-with-filled-advanced-settings.webp deleted file mode 100644 index 7c9e2f7f6..000000000 Binary files a/apps/documentation/public/document-signing/text-field-with-filled-advanced-settings.webp and /dev/null differ diff --git a/apps/documentation/public/email-domains/create-domain-dialog.webp b/apps/documentation/public/email-domains/create-domain-dialog.webp deleted file mode 100644 index 0e9c3bc70..000000000 Binary files a/apps/documentation/public/email-domains/create-domain-dialog.webp and /dev/null differ diff --git a/apps/documentation/public/pdf.worker.min.js b/apps/documentation/public/pdf.worker.min.js deleted file mode 100644 index 122422609..000000000 --- a/apps/documentation/public/pdf.worker.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2023 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @licend The above is the entire license notice for the - * JavaScript code in this page - */ -!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=e.pdfjsWorker=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf.worker",[],(()=>e.pdfjsWorker=t())):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t():e["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t()}(globalThis,(()=>(()=>{"use strict";var e=[,(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.WorkerTask=t.WorkerMessageHandler=void 0;var r=a(2),n=a(3),i=a(4),s=a(6),o=a(10),c=a(68),l=a(73),h=a(104),u=a(105),d=a(72);class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=new r.PromiseCapability}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=WorkerTask;class WorkerMessageHandler{static setup(e,t){let a=!1;e.on("test",(function(t){if(!a){a=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(function(e){(0,r.setVerbosityLevel)(e.verbosity)}));e.on("GetDocRequest",(function(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let a,f=!1,g=null;const p=new Set,m=(0,r.getVerbosityLevel)(),{docId:b,apiVersion:y}=e,w="3.11.174";if(y!==w)throw new Error(`The API version "${y}" does not match the Worker version "${w}".`);const S=[];for(const e in[])S.push(e);if(S.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+S.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");const x=b+"_worker";let C=new h.MessageHandler(x,b,t);function ensureNotTerminated(){if(f)throw new Error("Worker was terminated")}function startWorkerTask(e){p.add(e)}function finishWorkerTask(e){e.finish();p.delete(e)}async function loadDocument(e){await a.ensureDoc("checkHeader");await a.ensureDoc("parseStartXRef");await a.ensureDoc("parse",[e]);await a.ensureDoc("checkFirstPage",[e]);await a.ensureDoc("checkLastPage",[e]);const t=await a.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([a.loadXfaFonts(C,e).catch((e=>{})).then((()=>finishWorkerTask(e))),a.loadXfaImages()])}const[r,n]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("fingerprints")]);return{numPages:r,fingerprints:n,htmlForXfa:t?await a.ensureDoc("htmlForXfa"):null}}function getPdfManager({data:e,password:t,disableAutoFetch:a,rangeChunkSize:i,length:o,docBaseUrl:c,enableXfa:l,evaluatorOptions:h}){const d={source:null,disableAutoFetch:a,docBaseUrl:c,docId:b,enableXfa:l,evaluatorOptions:h,handler:C,length:o,password:t,rangeChunkSize:i},f=new r.PromiseCapability;let p;if(e){try{d.source=e;p=new s.LocalPdfManager(d);f.resolve(p)}catch(e){f.reject(e)}return f.promise}let m,y=[];try{m=new u.PDFWorkerStream(C)}catch(e){f.reject(e);return f.promise}const w=m.getFullReader();w.headersReady.then((function(){if(w.isRangeSupported){d.source=m;d.length=w.contentLength;d.disableAutoFetch||=w.isStreamingSupported;p=new s.NetworkPdfManager(d);for(const e of y)p.sendProgressiveData(e);y=[];f.resolve(p);g=null}})).catch((function(e){f.reject(e);g=null}));let S=0;new Promise((function(e,t){const readChunk=function({value:e,done:a}){try{ensureNotTerminated();if(a){p||function(){const e=(0,n.arrayBuffersToBytes)(y);o&&e.length!==o&&(0,r.warn)("reported HTTP length is different from actual");try{d.source=e;p=new s.LocalPdfManager(d);f.resolve(p)}catch(e){f.reject(e)}y=[]}();g=null;return}S+=e.byteLength;w.isStreamingSupported||C.send("DocProgress",{loaded:S,total:Math.max(S,w.contentLength||0)});p?p.sendProgressiveData(e):y.push(e);w.read().then(readChunk,t)}catch(e){t(e)}};w.read().then(readChunk,t)})).catch((function(e){f.reject(e);g=null}));g=function(e){m.cancelAllRequests(e)};return f.promise}C.on("GetPage",(function(e){return a.getPage(e.pageIndex).then((function(e){return Promise.all([a.ensure(e,"rotate"),a.ensure(e,"ref"),a.ensure(e,"userUnit"),a.ensure(e,"view")]).then((function([e,t,a,r]){return{rotate:e,ref:t,userUnit:a,view:r}}))}))}));C.on("GetPageIndex",(function(e){const t=i.Ref.get(e.num,e.gen);return a.ensureCatalog("getPageIndex",[t])}));C.on("GetDestinations",(function(e){return a.ensureCatalog("destinations")}));C.on("GetDestination",(function(e){return a.ensureCatalog("getDestination",[e.id])}));C.on("GetPageLabels",(function(e){return a.ensureCatalog("pageLabels")}));C.on("GetPageLayout",(function(e){return a.ensureCatalog("pageLayout")}));C.on("GetPageMode",(function(e){return a.ensureCatalog("pageMode")}));C.on("GetViewerPreferences",(function(e){return a.ensureCatalog("viewerPreferences")}));C.on("GetOpenAction",(function(e){return a.ensureCatalog("openAction")}));C.on("GetAttachments",(function(e){return a.ensureCatalog("attachments")}));C.on("GetDocJSActions",(function(e){return a.ensureCatalog("jsActions")}));C.on("GetPageJSActions",(function({pageIndex:e}){return a.getPage(e).then((function(e){return a.ensure(e,"jsActions")}))}));C.on("GetOutline",(function(e){return a.ensureCatalog("documentOutline")}));C.on("GetOptionalContentConfig",(function(e){return a.ensureCatalog("optionalContentConfig")}));C.on("GetPermissions",(function(e){return a.ensureCatalog("permissions")}));C.on("GetMetadata",(function(e){return Promise.all([a.ensureDoc("documentInfo"),a.ensureCatalog("metadata")])}));C.on("GetMarkInfo",(function(e){return a.ensureCatalog("markInfo")}));C.on("GetData",(function(e){return a.requestLoadedStream().then((function(e){return e.bytes}))}));C.on("GetAnnotations",(function({pageIndex:e,intent:t}){return a.getPage(e).then((function(a){const r=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(r);return a.getAnnotationsData(C,r,t).then((e=>{finishWorkerTask(r);return e}),(e=>{finishWorkerTask(r);throw e}))}))}));C.on("GetFieldObjects",(function(e){return a.ensureDoc("fieldObjects")}));C.on("HasJSActions",(function(e){return a.ensureDoc("hasJSActions")}));C.on("GetCalculationOrderIds",(function(e){return a.ensureDoc("calculationOrderIds")}));C.on("SaveDocument",(async function({isPureXfa:e,numPages:t,annotationStorage:s,filename:c}){const h=[a.requestLoadedStream(),a.ensureCatalog("acroForm"),a.ensureCatalog("acroFormRef"),a.ensureDoc("startXRef"),a.ensureDoc("xref"),a.ensureDoc("linearization"),a.ensureCatalog("structTreeRoot")],u=[],f=e?null:(0,n.getNewAnnotationsMap)(s),[g,p,m,b,y,w,S]=await Promise.all(h),x=y.trailer.getRaw("Root")||null;let k;if(f){S?await S.canUpdateStructTree({pdfManager:a,newAnnotationsByPage:f})&&(k=S):await d.StructTreeRoot.canCreateStructureTree({catalogRef:x,pdfManager:a,newAnnotationsByPage:f})&&(k=null);const e=o.AnnotationFactory.generateImages(s.values(),y,a.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===k?u:[];for(const[r,n]of f)t.push(a.getPage(r).then((t=>{const a=new WorkerTask(`Save (editor): page ${r}`);return t.saveNewAnnotations(C,a,n,e).finally((function(){finishWorkerTask(a)}))})));null===k?u.push(Promise.all(t).then((async e=>{await d.StructTreeRoot.createStructureTree({newAnnotationsByPage:f,xref:y,catalogRef:x,pdfManager:a,newRefs:e});return e}))):k&&u.push(Promise.all(t).then((async e=>{await k.updateStructureTree({newAnnotationsByPage:f,pdfManager:a,newRefs:e});return e})))}if(e)u.push(a.serializeXfaData(s));else for(let e=0;ee.needAppearances)),M=p instanceof i.Dict&&p.get("XFA")||null;let D=null,E=!1;if(Array.isArray(M)){for(let e=0,t=M.length;e{"string"==typeof a&&(e[t]=(0,r.stringToPDFString)(a))}));N={rootRef:x,encryptRef:y.trailer.getRaw("Encrypt")||null,newRef:y.getNewTemporaryRef(),infoRef:y.trailer.getRaw("Info")||null,info:e,fileIds:y.trailer.get("ID")||null,startXRef:w?b:y.lastXRefStreamPos??b,filename:c}}return(0,l.incrementalUpdate)({originalData:g.bytes,xrefInfo:N,newRefs:F,xref:y,hasXfa:!!M,xfaDatasetsRef:D,hasXfaDatasetsEntry:E,needAppearances:T,acroFormRef:m,acroForm:p,xfaData:O}).finally((()=>{y.resetNewTemporaryRef()}))}));C.on("GetOperatorList",(function(e,t){const n=e.pageIndex;a.getPage(n).then((function(a){const i=new WorkerTask(`GetOperatorList: page ${n}`);startWorkerTask(i);const s=m>=r.VerbosityLevel.INFOS?Date.now():0;a.getOperatorList({handler:C,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(i);s&&(0,r.info)(`page=${n+1} - getOperatorList: time=${Date.now()-s}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));C.on("GetTextContent",(function(e,t){const{pageIndex:n,includeMarkedContent:i,disableNormalization:s}=e;a.getPage(n).then((function(e){const a=new WorkerTask("GetTextContent: page "+n);startWorkerTask(a);const o=m>=r.VerbosityLevel.INFOS?Date.now():0;e.extractTextContent({handler:C,task:a,sink:t,includeMarkedContent:i,disableNormalization:s}).then((function(){finishWorkerTask(a);o&&(0,r.info)(`page=${n+1} - getTextContent: time=`+(Date.now()-o)+"ms");t.close()}),(function(e){finishWorkerTask(a);a.terminated||t.error(e)}))}))}));C.on("GetStructTree",(function(e){return a.getPage(e.pageIndex).then((function(e){return a.ensure(e,"getStructTree")}))}));C.on("FontFallback",(function(e){return a.fontFallback(e.id,C)}));C.on("Cleanup",(function(e){return a.cleanup(!0)}));C.on("Terminate",(function(e){f=!0;const t=[];if(a){a.terminate(new r.AbortException("Worker was terminated."));const e=a.cleanup();t.push(e);a=null}else(0,c.clearGlobalCaches)();g&&g(new r.AbortException("Worker was terminated."));for(const e of p){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){C.destroy();C=null}))}));C.on("Ready",(function(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();C.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof r.PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);C.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);a.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);C.send("DocException",e)}))}else e instanceof r.InvalidPDFException||e instanceof r.MissingPDFException||e instanceof r.UnexpectedResponseException||e instanceof r.UnknownErrorException?C.send("DocException",e):C.send("DocException",new r.UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();e instanceof n.XRefParseException?a.requestLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)})):onFailure(e)}))}ensureNotTerminated();getPdfManager(e).then((function(e){if(f){e.terminate(new r.AbortException("Worker was terminated."));throw new Error("Worker was terminated")}a=e;a.requestLoadedStream(!0).then((e=>{C.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return x}static initializeFromPort(e){const t=new h.MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}t.WorkerMessageHandler=WorkerMessageHandler;"undefined"==typeof window&&!r.isNodeJS&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self)},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.RenderingIntentFlag=t.PromiseCapability=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.MAX_IMAGE_SIZE_TO_CACHE=t.LINE_FACTOR=t.LINE_DESCENT_FACTOR=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.BASELINE_FACTOR=t.AnnotationType=t.AnnotationReplyType=t.AnnotationPrefix=t.AnnotationMode=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationEditorType=t.AnnotationEditorPrefix=t.AnnotationEditorParamsType=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0;t.assert=function assert(e,t){e||unreachable(t)};t.bytesToString=bytesToString;t.createValidAbsoluteUrl=function createValidAbsoluteUrl(e,t=null,a=null){if(!e)return null;try{if(a&&"string"==typeof e){if(a.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(a.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch{}return null};t.getModificationDate=function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")};t.getUuid=function getUuid(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();const e=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(e);else for(let t=0;t<32;t++)e[t]=Math.floor(255*Math.random());return bytesToString(e)};t.getVerbosityLevel=function getVerbosityLevel(){return n};t.info=function info(e){n>=r.INFOS&&console.log(`Info: ${e}`)};t.isArrayBuffer=function isArrayBuffer(e){return"object"==typeof e&&void 0!==e?.byteLength};t.isArrayEqual=function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let a=0,r=e.length;at?t.normalize("NFKC"):l.get(a)))};t.objectFromMap=function objectFromMap(e){const t=Object.create(null);for(const[a,r]of e)t[a]=r;return t};t.objectSize=function objectSize(e){return Object.keys(e).length};t.setVerbosityLevel=function setVerbosityLevel(e){Number.isInteger(e)&&(n=e)};t.shadow=shadow;t.string32=function string32(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)};t.stringToBytes=stringToBytes;t.stringToPDFString=function stringToPDFString(e){if(e[0]>="ï"){let t;"þ"===e[0]&&"ÿ"===e[1]?t="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?t="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const a=new TextDecoder(t,{fatal:!0}),r=stringToBytes(e);return a.decode(r)}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let a=0,r=e.length;a=r.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function shadow(e,t,a,r=!1){Object.defineProperty(e,t,{value:a,enumerable:!r,configurable:!0,writable:!1});return a}const i=function BaseExceptionClosure(){function BaseException(e,t){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();t.BaseException=i;t.PasswordException=class PasswordException extends i{constructor(e,t){super(e,"PasswordException");this.code=t}};t.UnknownErrorException=class UnknownErrorException extends i{constructor(e,t){super(e,"UnknownErrorException");this.details=t}};t.InvalidPDFException=class InvalidPDFException extends i{constructor(e){super(e,"InvalidPDFException")}};t.MissingPDFException=class MissingPDFException extends i{constructor(e){super(e,"MissingPDFException")}};t.UnexpectedResponseException=class UnexpectedResponseException extends i{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}};t.FormatError=class FormatError extends i{constructor(e){super(e,"FormatError")}};t.AbortException=class AbortException extends i{constructor(e){super(e,"AbortException")}};function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,a=8192;if(te.toString(16).padStart(2,"0")));t.Util=class Util{static makeHexColor(e,t,a){return`#${s[e]}${s[t]}${s[a]}`}static scaleMinMax(e,t){let a;if(e[0]){if(e[0]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[0];t[1]*=e[0];if(e[3]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[3];t[3]*=e[3]}else{a=t[0];t[0]=t[2];t[2]=a;a=t[1];t[1]=t[3];t[3]=a;if(e[1]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[1];t[3]*=e[1];if(e[2]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[2];t[1]*=e[2]}t[0]+=e[4];t[1]+=e[4];t[2]+=e[5];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const a=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/a,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/a]}static getAxialAlignedBoundingBox(e,t){const a=this.applyTransform(e,t),r=this.applyTransform(e.slice(2,4),t),n=this.applyTransform([e[0],e[3]],t),i=this.applyTransform([e[2],e[1]],t);return[Math.min(a[0],r[0],n[0],i[0]),Math.min(a[1],r[1],n[1],i[1]),Math.max(a[0],r[0],n[0],i[0]),Math.max(a[1],r[1],n[1],i[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],a=e[0]*t[0]+e[1]*t[2],r=e[0]*t[1]+e[1]*t[3],n=e[2]*t[0]+e[3]*t[2],i=e[2]*t[1]+e[3]*t[3],s=(a+i)/2,o=Math.sqrt((a+i)**2-4*(a*i-n*r))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const a=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(a>r)return null;const n=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),i=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return n>i?null:[a,n,r,i]}static bezierBoundingBox(e,t,a,r,n,i,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l){if(0===l){u=6*e-12*a+6*n;h=-3*e+9*a-9*n+3*s;d=3*a-3*e}else{u=6*t-12*r+6*i;h=-3*t+9*r-9*i+3*o;d=3*r-3*t}if(Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u;0{this.resolve=t=>{this.#e=!0;e(t)};this.reject=e=>{this.#e=!0;t(e)}}))}get settled(){return this.#e}};let c=null,l=null;t.AnnotationPrefix="pdfjs_internal_id_"},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.PDF_VERSION_REGEXP=t.MissingDataException=void 0;t.arrayBuffersToBytes=function arrayBuffersToBytes(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let a=0;for(let r=0;r=0;t--){const r=s[t];if(r instanceof n.Dict)for(const t of r.getKeys()){const s=a[t];if(!s)continue;const o=[];_collectJS(r.getRaw(t),e,o,new n.RefSet);o.length>0&&(i[s]=o)}}if(t.has("A")){const a=[];_collectJS(t.get("A"),e,a,new n.RefSet);a.length>0&&(i.Action=a)}return(0,r.objectSize)(i)>0?i:null};t.encodeToXmlString=function encodeToXmlString(e){const t=[];let a=0;for(let r=0,n=e.length;r55295&&(n<57344||n>65533)&&r++;a=r+1}}if(0===t.length)return e;a126||35===n||40===n||41===n||60===n||62===n||91===n||93===n||123===n||125===n||47===n||37===n){a"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))};t.getInheritableProperty=getInheritableProperty;t.getLookupTableFactory=function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}};t.getNewAnnotationsMap=function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[a,n]of e){if(!a.startsWith(r.AnnotationEditorPrefix))continue;let e=t.get(n.pageIndex);if(!e){e=[];t.set(n.pageIndex,e)}e.push(n)}return t.size>0?t:null};t.getRotationMatrix=function getRotationMatrix(e,t,a){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,a];case 270:return[0,-1,1,0,0,a];default:throw new Error("Invalid rotation")}};t.isAscii=function isAscii(e){return/^[\x00-\x7F]*$/.test(e)};t.isWhiteSpace=function isWhiteSpace(e){return 32===e||9===e||13===e||10===e};t.log2=function log2(e){if(e<=0)return 0;return Math.ceil(Math.log2(e))};t.numberToString=function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);if(t%100==0)return(t/100).toString();if(t%10==0)return e.toFixed(1);return e.toFixed(2)};t.parseXFAPath=function parseXFAPath(e){const t=/(.+)\[(\d+)\]$/;return e.split(".").map((e=>{const a=e.match(t);return a?{name:a[1],pos:parseInt(a[2],10)}:{name:e,pos:0}}))};t.readInt8=function readInt8(e,t){return e[t]<<24>>24};t.readUint16=function readUint16(e,t){return e[t]<<8|e[t+1]};t.readUint32=function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0};t.recoverJsURL=function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);if(t?.[2]){const e=t[2];let a=!1;"true"===t[3]&&"app.launchURL"===t[1]&&(a=!0);return{url:e,newWindow:a}}return null};t.stringToUTF16HexString=function stringToUTF16HexString(e){const t=[];for(let a=0,r=e.length;a>8&255).toString(16).padStart(2,"0"),(255&r).toString(16).padStart(2,"0"))}return t.join("")};t.stringToUTF16String=function stringToUTF16String(e,t=!1){const a=[];t&&a.push("þÿ");for(let t=0,r=e.length;t>8&255),String.fromCharCode(255&r))}return a.join("")};t.toRomanNumerals=function toRomanNumerals(e,t=!1){(0,r.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const a=[];let n;for(;e>=1e3;){e-=1e3;a.push("M")}n=e/100|0;e%=100;a.push(s[n]);n=e/10|0;e%=10;a.push(s[10+n]);a.push(s[20+e]);const i=a.join("");return t?i.toLowerCase():i};t.validateCSSFont=function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:r,italicAngle:n}=e;if(!validateFontName(a,!0))return!1;const i=r?r.toString():"";e.fontWeight=t.has(i)?i:"400";const s=parseFloat(n);e.italicAngle=isNaN(s)||s<-90||s>90?"14":n.toString();return!0};t.validateFontName=validateFontName;var r=a(2),n=a(4),i=a(5);t.PDF_VERSION_REGEXP=/^[1-9]\.\d$/;class MissingDataException extends r.BaseException{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}t.MissingDataException=MissingDataException;class ParserEOFException extends r.BaseException{constructor(e){super(e,"ParserEOFException")}}t.ParserEOFException=ParserEOFException;class XRefEntryException extends r.BaseException{constructor(e){super(e,"XRefEntryException")}}t.XRefEntryException=XRefEntryException;class XRefParseException extends r.BaseException{constructor(e){super(e,"XRefParseException")}}t.XRefParseException=XRefParseException;function getInheritableProperty({dict:e,key:t,getArray:a=!1,stopWhenFound:r=!0}){let i;const s=new n.RefSet;for(;e instanceof n.Dict&&(!e.objId||!s.has(e.objId));){e.objId&&s.put(e.objId);const n=a?e.getArray(t):e.get(t);if(void 0!==n){if(r)return n;(i||=[]).push(n)}e=e.get("Parent")}return i}const s=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function _collectJS(e,t,a,s){if(!e)return;let o=null;if(e instanceof n.Ref){if(s.has(e))return;o=e;s.put(o);e=t.fetch(e)}if(Array.isArray(e))for(const r of e)_collectJS(r,t,a,s);else if(e instanceof n.Dict){if((0,n.isName)(e.get("S"),"JavaScript")){const t=e.get("JS");let n;t instanceof i.BaseStream?n=t.getString():"string"==typeof t&&(n=t);n&&=(0,r.stringToPDFString)(n).replaceAll("\0","");n&&a.push(n)}_collectJS(e.getRaw("Next"),t,a,s)}o&&s.remove(o)}const o={60:"<",62:">",38:"&",34:""",39:"'"};function validateFontName(e,t=!1){const a=/^("|').*("|')$/.exec(e);if(a&&a[1]===a[2]){if(new RegExp(`[^\\\\]${a[1]}`).test(e.slice(1,-1))){t&&(0,r.warn)(`FontFamily contains unescaped ${a[1]}: ${e}.`);return!1}}else for(const a of e.split(/[ \t]+/))if(/^(\d|(-(\d|-)))/.test(a)||!/^[\w-\\]+$/.test(a)){t&&(0,r.warn)(`FontFamily contains invalid : ${e}.`);return!1}return!0}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=t.CIRCULAR_REF=void 0;t.clearPrimitiveCaches=function clearPrimitiveCaches(){s=Object.create(null);o=Object.create(null);c=Object.create(null)};t.isCmd=function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)};t.isDict=function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))};t.isName=isName;t.isRefsEqual=function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen};var r=a(2);const n=Symbol("CIRCULAR_REF");t.CIRCULAR_REF=n;const i=Symbol("EOF");t.EOF=i;let s=Object.create(null),o=Object.create(null),c=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return o[e]||=new Name(e)}}t.Name=Name;class Cmd{constructor(e){this.cmd=e}static get(e){return s[e]||=new Cmd(e)}}t.Cmd=Cmd;const l=function nonSerializableClosure(){return l};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=l}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetch(r,this.suppressEncryption):r}async getAsync(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetchAsync(r,this.suppressEncryption):r}getArray(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}r instanceof Ref&&this.xref&&(r=this.xref.fetch(r,this.suppressEncryption));if(Array.isArray(r)){r=r.slice();for(let e=0,t=r.length;e{(0,r.unreachable)("Should not call `set` on the empty dictionary.")};return(0,r.shadow)(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:a=!1}){const r=new Dict(e),n=new Map;for(const e of t)if(e instanceof Dict)for(const[t,r]of Object.entries(e._map)){let e=n.get(t);if(void 0===e){e=[];n.set(t,e)}else if(!(a&&r instanceof Dict))continue;e.push(r)}for(const[t,a]of n){if(1===a.length||!(a[0]instanceof Dict)){r._map[t]=a[0];continue}const n=new Dict(e);for(const e of a)for(const[t,a]of Object.entries(e._map))void 0===n._map[t]&&(n._map[t]=a);n.size>0&&(r._map[t]=n)}n.clear();return r.size>0?r:Dict.empty}clone(){const e=new Dict(this.xref);for(const t of this.getKeys())e.set(t,this.getRaw(t));return e}}t.Dict=Dict;class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static fromString(e){const t=c[e];if(t)return t;const a=/^(\d+)R(\d*)$/.exec(e);return a&&"0"!==a[1]?c[e]=new Ref(parseInt(a[1]),a[2]?parseInt(a[2]):0):null}static get(e,t){const a=0===t?`${e}R`:`${e}R${t}`;return c[a]||=new Ref(e,t)}}t.Ref=Ref;class RefSet{constructor(e=null){this._set=new Set(e?._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}t.RefSet=RefSet;class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}t.RefSetCache=RefSetCache;function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BaseStream=void 0;var r=a(2);class BaseStream{constructor(){this.constructor===BaseStream&&(0,r.unreachable)("Cannot initialize BaseStream.")}get length(){(0,r.unreachable)("Abstract getter `length` accessed")}get isEmpty(){(0,r.unreachable)("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return(0,r.shadow)(this,"isDataLoaded",!0)}getByte(){(0,r.unreachable)("Abstract method `getByte` called")}getBytes(e){(0,r.unreachable)("Abstract method `getBytes` called")}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,r.unreachable)("Abstract method `getByteRange` called")}getString(e){return(0,r.bytesToString)(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){(0,r.unreachable)("Abstract method `reset` called")}moveStart(){(0,r.unreachable)("Abstract method `moveStart` called")}makeSubStream(e,t,a=null){(0,r.unreachable)("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}t.BaseStream=BaseStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NetworkPdfManager=t.LocalPdfManager=void 0;var r=a(2),n=a(7),i=a(3),s=a(9),o=a(8);class BasePdfManager{constructor(e){this.constructor===BasePdfManager&&(0,r.unreachable)("Cannot initialize BasePdfManager.");this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=(0,r.createValidAbsoluteUrl)(e);if(t)return t.href;(0,r.warn)(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e.docBaseUrl);this._docId=e.docId;this._password=e.password;this.enableXfa=e.enableXfa;e.evaluatorOptions.isOffscreenCanvasSupported&&=r.FeatureTest.isOffscreenCanvasSupported;this.evaluatorOptions=e.evaluatorOptions}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}get catalog(){return this.pdfDocument.catalog}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,a){(0,r.unreachable)("Abstract method `ensure` called")}requestRange(e,t){(0,r.unreachable)("Abstract method `requestRange` called")}requestLoadedStream(e=!1){(0,r.unreachable)("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){(0,r.unreachable)("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){(0,r.unreachable)("Abstract method `terminate` called")}}t.LocalPdfManager=class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new o.Stream(e.source);this.pdfDocument=new s.PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,a){const r=e[t];return"function"==typeof r?r.apply(e,a):r}requestRange(e,t){return Promise.resolve()}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}};t.NetworkPdfManager=class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new n.ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,a){try{const r=e[t];return"function"==typeof r?r.apply(e,a):r}catch(r){if(!(r instanceof i.MissingDataException))throw r;await this.requestRange(r.begin,r.end);return this.ensure(e,t,a)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ChunkedStreamManager=t.ChunkedStream=void 0;var r=a(3),n=a(2),i=a(8);class ChunkedStream extends i.Stream{constructor(e,t,a){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=a;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,a=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=a;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new r.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const a=Math.floor(e/this.chunkSize);if(a>this.numChunks)return;const n=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=a;i=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e){r>this.progressiveDataLength&&this.ensureRange(a,r);return t.subarray(a,r)}let n=a+e;n>r&&(n=r);n>this.progressiveDataLength&&this.ensureRange(a,n);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,a=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),a=Math.floor((this.end-1)/e)+1,r=[];for(let e=t;e{const readChunk=({value:s,done:o})=>{try{if(o){const t=(0,r.arrayBuffersToBytes)(n);n=null;e(t);return}i+=s.byteLength;a.isStreamingSupported&&this.onProgress({loaded:i});n.push(s);a.read().then(readChunk,t)}catch(e){t(e)}};a.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(e=!1){if(!e){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,a=new Set;this._chunksNeededByRequest.set(t,a);for(const t of e)this.stream.hasChunk(t)||a.add(t);if(0===a.size)return Promise.resolve();const r=new n.PromiseCapability;this._promisesByRequest.set(t,r);const i=[];for(const e of a){let a=this._requestsByChunk.get(e);if(!a){a=[];this._requestsByChunk.set(e,a);i.push(e)}a.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,a=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,a).catch(r.reject)}}return r.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const a=this.getBeginChunk(e),r=this.getEndChunk(t),n=[];for(let e=a;e=0&&r+1!==i){t.push({beginChunk:a,endChunk:r+1});a=i}n+1===e.length&&t.push({beginChunk:a,endChunk:i+1});r=i}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,a=void 0===e.begin,r=a?this.progressiveDataLength:e.begin,n=r+t.byteLength,i=Math.floor(r/this.chunkSize),s=n0||o.push(a)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StringStream=t.Stream=t.NullStream=void 0;var r=a(5),n=a(2);class Stream extends r.BaseStream{constructor(e,t,a,r){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+a||this.bytes.length;this.dict=r}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e)return t.subarray(a,r);let n=a+e;n>r&&(n=r);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,a=null){return new Stream(this.bytes.buffer,e,t,a)}}t.Stream=Stream;t.StringStream=class StringStream extends Stream{constructor(e){super((0,n.stringToBytes)(e))}};t.NullStream=class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Page=t.PDFDocument=void 0;var r=a(2),n=a(10),i=a(3),s=a(4),o=a(51),c=a(5),l=a(74),h=a(66),u=a(68),d=a(102),f=a(16),g=a(8),p=a(76),m=a(64),b=a(13),y=a(18),w=a(72),S=a(73),x=a(77),C=a(103);const k=[0,0,612,792];class Page{constructor({pdfManager:e,xref:t,pageIndex:a,pageDict:r,ref:n,globalIdFactory:i,fontCache:s,builtInCMapCache:o,standardFontDataCache:c,globalImageCache:l,systemFontCache:h,nonBlendModesSet:u,xfaFactory:d}){this.pdfManager=e;this.pageIndex=a;this.pageDict=r;this.xref=t;this.ref=n;this.fontCache=s;this.builtInCMapCache=o;this.standardFontDataCache=c;this.globalImageCache=l;this.systemFontCache=h;this.nonBlendModesSet=u;this.evaluatorOptions=e.evaluatorOptions;this.resourcesPromise=null;this.xfaFactory=d;const f={obj:0};this._localIdFactory=class extends i{static createObjId(){return`p${a}_${++f.obj}`}static getPageObjId(){return`p${n.toString()}`}}}_getInheritableProperty(e,t=!1){const a=(0,i.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(a)?1!==a.length&&a[0]instanceof s.Dict?s.Dict.merge({xref:this.xref,dictArray:a}):a[0]:a}get content(){return this.pageDict.getArray("Contents")}get resources(){const e=this._getInheritableProperty("Resources");return(0,r.shadow)(this,"resources",e instanceof s.Dict?e:s.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;let t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){t=r.Util.normalizeRect(t);if(t[2]-t[0]>0&&t[3]-t[1]>0)return t;(0,r.warn)(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return(0,r.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||k)}get cropBox(){return(0,r.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");("number"!=typeof e||e<=0)&&(e=1);return(0,r.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!(0,r.isArrayEqual)(e,t)){const a=r.Util.intersect(e,t);if(a&&a[2]-a[0]>0&&a[3]-a[1]>0)return(0,r.shadow)(this,"view",a);(0,r.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,r.shadow)(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return(0,r.shadow)(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;(0,r.warn)(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof c.BaseStream?e:Array.isArray(e)?new y.StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new g.NullStream))}get xfaData(){return(0,r.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}#t(e,t,a){for(const n of e)if(n.id){const e=s.Ref.fromString(n.id);if(!e){(0,r.warn)(`A non-linked annotation cannot be modified: ${n.id}`);continue}if(n.deleted){t.put(e);continue}a?.put(e);n.ref=e;delete n.id}}async saveNewAnnotations(e,t,a,r){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const i=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),o=new s.RefSet,c=new s.RefSet;this.#t(a,o,c);const l=this.pageDict,h=this.annotations.filter((e=>!(e instanceof s.Ref&&o.has(e)))),u=await n.AnnotationFactory.saveNewAnnotations(i,t,a,r);for(const{ref:e}of u.annotations)e instanceof s.Ref&&!c.has(e)&&h.push(e);const d=l.get("Annots");l.set("Annots",h);const f=[];await(0,S.writeObject)(this.ref,l,f,this.xref);d&&l.set("Annots",d);const g=u.dependencies;g.push({ref:this.ref,data:f.join("")},...u.annotations);return g}save(e,t,a){const n=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const s of e)s.mustBePrinted(a)&&i.push(s.save(n,t,a).catch((function(e){(0,r.warn)(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(i).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then((()=>new p.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:a,intent:o,cacheKey:c,annotationStorage:l=null}){const h=this.getContentStream(),u=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),d=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),f=this.xfaFactory?null:(0,i.getNewAnnotationsMap)(l);let g=null,p=Promise.resolve(null);if(f){const e=f.get(this.pageIndex);if(e){const t=this.pdfManager.ensureDoc("annotationGlobals");let i;const o=new Set;for(const{bitmapId:t,bitmap:a}of e)!t||a||o.has(t)||o.add(t);const{isOffscreenCanvasSupported:c}=this.evaluatorOptions;if(o.size>0){const t=e.slice();for(const[e,a]of l)e.startsWith(r.AnnotationEditorPrefix)&&a.bitmap&&o.has(a.bitmapId)&&t.push(a);i=n.AnnotationFactory.generateImages(t,this.xref,c)}else i=n.AnnotationFactory.generateImages(e,this.xref,c);g=new s.RefSet;this.#t(e,g,null);p=t.then((t=>t?n.AnnotationFactory.printNewAnnotations(t,d,a,e,i):null))}}const y=Promise.all([h,u]).then((([r])=>{const n=new m.OperatorList(o,t);e.send("StartRenderPage",{transparency:d.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:c});return d.getOperatorList({stream:r,task:a,resources:this.resources,operatorList:n}).then((function(){return n}))}));return Promise.all([y,this._parsedAnnotations,p]).then((function([e,t,n]){if(n){t=t.filter((e=>!(e.ref&&g.has(e.ref))));for(let e=0,a=n.length;ee.ref&&(0,s.isRefsEqual)(e.ref,r.refToReplace)));if(i>=0){t.splice(i,1,r);n.splice(e--,1);a--}}}t=t.concat(n)}if(0===t.length||o&r.RenderingIntentFlag.ANNOTATIONS_DISABLE){e.flush(!0);return{length:e.totalLength}}const i=!!(o&r.RenderingIntentFlag.ANNOTATIONS_FORMS),c=!!(o&r.RenderingIntentFlag.ANY),h=!!(o&r.RenderingIntentFlag.DISPLAY),u=!!(o&r.RenderingIntentFlag.PRINT),f=[];for(const e of t)(c||h&&e.mustBeViewed(l,i)||u&&e.mustBePrinted(l))&&f.push(e.getOperatorList(d,a,o,i,l).catch((function(e){(0,r.warn)(`getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(f).then((function(t){let a=!1,r=!1;for(const{opList:n,separateForm:i,separateCanvas:s}of t){e.addOpList(n);a||=i;r||=s}e.flush(!0,{form:a,canvas:r});return{length:e.totalLength}}))}))}extractTextContent({handler:e,task:t,includeMarkedContent:a,disableNormalization:r,sink:n}){const i=this.getContentStream(),s=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([i,s]).then((([i])=>new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:i,task:t,resources:this.resources,includeMarkedContent:a,disableNormalization:r,sink:n,viewBox:this.view})))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new w.StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,a){const n=await this._parsedAnnotations;if(0===n.length)return n;const i=[],s=[];let o;const c=!!(a&r.RenderingIntentFlag.ANY),l=!!(a&r.RenderingIntentFlag.DISPLAY),h=!!(a&r.RenderingIntentFlag.PRINT);for(const a of n){const n=c||l&&a.viewable;(n||h&&a.printable)&&i.push(a.data);if(a.hasTextContent&&n){o||=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});s.push(a.extractTextContent(o,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){(0,r.warn)(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)})))}}await Promise.all(s);return i}get annotations(){const e=this._getInheritableProperty("Annots");return(0,r.shadow)(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then((async e=>{if(0===e.length)return e;const t=await this.pdfManager.ensureDoc("annotationGlobals");if(!t)return[];const a=[];for(const i of e)a.push(n.AnnotationFactory.create(this.xref,i,t,this._localIdFactory,!1,this.ref).catch((function(e){(0,r.warn)(`_parsedAnnotations: "${e}".`);return null})));const i=[];let s;for(const e of await Promise.all(a))e&&(e instanceof n.PopupAnnotation?(s||=[]).push(e):i.push(e));s&&i.push(...s);return i}));return(0,r.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,i.collectActions)(this.xref,this.pageDict,r.PageActionEventType);return(0,r.shadow)(this,"jsActions",e)}}t.Page=Page;const v=new Uint8Array([37,80,68,70,45]),F=new Uint8Array([115,116,97,114,116,120,114,101,102]),O=new Uint8Array([101,110,100,111,98,106]);function find(e,t,a=1024,r=!1){const n=t.length,i=e.peekBytes(a),s=i.length-n;if(s<=0)return!1;if(r){const a=n-1;let r=i.length-1;for(;r>=a;){let s=0;for(;s=n){e.pos+=r-a;return!0}r--}}else{let a=0;for(;a<=s;){let r=0;for(;r=n){e.pos+=a;return!0}a++}}return!1}t.PDFDocument=class PDFDocument{constructor(e,t){if(t.length<=0)throw new r.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new C.XRef(t,e);this._pagePromises=new Map;this._version=null;const a={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++a.font}static createObjId(){(0,r.unreachable)("Abstract method `createObjId` called.")}static getPageObjId(){(0,r.unreachable)("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new h.Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=f.Linearization.create(this.stream)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.info)(e)}return(0,r.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();find(e,O)&&(t=e.pos+6-e.start)}else{const a=1024,r=F.length;let n=!1,s=e.end;for(;!n&&s>0;){s-=a-r;s<0&&(s=0);e.pos=s;n=find(e,F,a,!0)}if(n){e.skip(9);let a;do{a=e.getByte()}while((0,i.isWhiteSpace)(a));let r="";for(;a>=32&&a<=57;){r+=String.fromCharCode(a);a=e.getByte()}t=parseInt(r,10);isNaN(t)&&(t=0)}}return(0,r.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,v))return;e.moveStart();e.skip(v.length);let t,a="";for(;(t=e.getByte())>32&&a.length<7;)a+=String.fromCharCode(t);i.PDF_VERSION_REGEXP.test(a)?this._version=a:(0,r.warn)(`Invalid PDF header version: ${a}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return(0,r.shadow)(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof s.Dict))return!1;if(e.has("Kids")){if(++t>10){(0,r.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const a=(0,s.isName)(e.get("FT"),"Sig"),n=e.get("Rect"),i=Array.isArray(n)&&n.every((e=>0===e));return a&&i}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),a={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof c.BaseStream&&!t.isEmpty){a["xdp:xdp"]=t;return a}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,r=t.length;e{y.set(e,t)}));const w=[];for(const[e,a]of y){const o=a.get("FontDescriptor");if(!(o instanceof s.Dict))continue;let c=o.get("FontFamily");c=c.replaceAll(/[ ]+(\d)/g,"$1");const l={fontFamily:c,fontWeight:o.get("FontWeight"),italicAngle:-o.get("ItalicAngle")};(0,i.validateCSSFont)(l)&&w.push(u.handleSetFont(n,[s.Name.get(e),1],null,d,t,g,null,l).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);const S=this.xfaFactory.setFonts(f);if(!S)return;h.ignoreErrors=!0;w.length=0;f.length=0;const x=new Set;for(const e of S)(0,o.getXfaFontName)(`${e}-Regular`)||x.add(e);x.size&&S.push("PdfJS-Fallback");for(const e of S)if(!x.has(e))for(const a of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const i=`${e}-${a.name}`,c=(0,o.getXfaFontDict)(i);w.push(u.handleSetFont(n,[s.Name.get(i),1],null,d,t,g,c,{fontFamily:e,fontWeight:a.fontWeight,italicAngle:a.italicAngle}).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);this.xfaFactory.appendFonts(f,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,r.shadow)(this,"formInfo",e);try{const a=t.get("Fields"),r=Array.isArray(a)&&a.length>0;e.hasFields=r;const n=t.get("XFA");e.hasXfa=Array.isArray(n)&&n.length>0||n instanceof c.BaseStream&&!n.isEmpty;const i=!!(1&t.get("SigFlags")),s=i&&this._hasOnlyDocumentSignatures(a);e.hasAcroForm=r&&!s;e.hasSignatures=i}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`Cannot fetch form information: "${e}".`)}return(0,r.shadow)(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.info)("The document information dictionary is invalid.")}if(!(t instanceof s.Dict))return(0,r.shadow)(this,"documentInfo",e);for(const a of t.getKeys()){const n=t.get(a);switch(a){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof n){e[a]=(0,r.stringToPDFString)(n);continue}break;case"Trapped":if(n instanceof s.Name){e[a]=n;continue}break;default:let t;switch(typeof n){case"string":t=(0,r.stringToPDFString)(n);break;case"number":case"boolean":t=n;break;default:n instanceof s.Name&&(t=n)}if(void 0===t){(0,r.warn)(`Bad value, for custom key "${a}", in Info: ${n}.`);continue}e.Custom||(e.Custom=Object.create(null));e.Custom[a]=t;continue}(0,r.warn)(`Bad value, for key "${a}", in Info: ${n}.`)}return(0,r.shadow)(this,"documentInfo",e)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(const a of e){const e=a.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const e=this.xref.trailer.get("ID");let t,a;if(Array.isArray(e)&&validate(e[0])){t=(0,r.stringToBytes)(e[0]);e[1]!==e[0]&&validate(e[1])&&(a=(0,r.stringToBytes)(e[1]))}else t=(0,l.calculateMD5)(this.stream.getByteRange(0,1024),0,1024);return(0,r.shadow)(this,"fingerprints",[hexString(t),a?hexString(a):null])}async _getLinearizationPage(e){const{catalog:t,linearization:a,xref:n}=this,i=s.Ref.get(a.objectNumberFirst,0);try{const e=await n.fetchAsync(i);if(e instanceof s.Dict){let a=e.getRaw("Type");a instanceof s.Ref&&(a=await n.fetchAsync(a));if((0,s.isName)(a,"Page")||!e.has("Type")&&!e.has("Kids")){t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1);t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0);return[e,i]}}throw new r.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(a){(0,r.warn)(`_getLinearizationPage: "${a.message}".`);return t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:a,linearization:r,xfaFactory:n}=this;let i;i=n?Promise.resolve([s.Dict.empty,null]):r?.pageFirst===e?this._getLinearizationPage(e):a.getPageDict(e);i=i.then((([t,r])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:r,globalIdFactory:this._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalImageCache:a.globalImageCache,systemFontCache:a.systemFontCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:n})));this._pagePromises.set(e,i);return i}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof i.XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new i.XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:a}=this;t.setActualNumPages();let n;try{await Promise.all([a.ensureDoc("xfaFactory"),a.ensureDoc("linearization"),a.ensureCatalog("numPages")]);if(this.xfaFactory)return;n=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(n))throw new r.FormatError("Page count is not an integer.");if(n<=1)return;await this.getPage(n-1)}catch(s){this._pagePromises.delete(n-1);await this.cleanup();if(s instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;(0,r.warn)(`checkLastPage - invalid /Pages tree /Count: ${n}.`);let o;try{o=await t.getAllPageDicts(e)}catch(a){if(a instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;t.setActualNumPages(1);return}for(const[e,[r,n]]of o){let i;if(r instanceof Error){i=Promise.reject(r);i.catch((()=>{}))}else i=Promise.resolve(new Page({pdfManager:a,xref:this.xref,pageIndex:e,pageDict:r,ref:n,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,i)}t.setActualNumPages(o.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):(0,u.clearGlobalCaches)()}#a(e,t,a,i){const s=this.xref.fetchIfRef(t);if(s.has("T")){const t=(0,r.stringToPDFString)(s.get("T"));e=""===e?t:`${e}.${t}`}a.has(e)||a.set(e,[]);a.get(e).push(n.AnnotationFactory.create(this.xref,t,i,this._localIdFactory,!0,null).then((e=>e?.getFieldObject())).catch((function(e){(0,r.warn)(`#collectFieldObjects: "${e}".`);return null})));if(s.has("Kids"))for(const t of s.get("Kids"))this.#a(e,t,a,i)}get fieldObjects(){if(!this.formInfo.hasFields)return(0,r.shadow)(this,"fieldObjects",Promise.resolve(null));const e=this.pdfManager.ensureDoc("annotationGlobals").then((async e=>{if(!e)return null;const t=Object.create(null),a=new Map;for(const t of this.catalog.acroForm.get("Fields"))this.#a("",t,a,e);const r=[];for(const[e,n]of a)r.push(Promise.all(n).then((a=>{(a=a.filter((e=>!!e))).length>0&&(t[e]=a)})));await Promise.all(r);return t}));return(0,r.shadow)(this,"fieldObjects",e)}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,r.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e?.has("CO"))return(0,r.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,r.shadow)(this,"calculationOrderIds",null);const a=[];for(const e of t)e instanceof s.Ref&&a.push(e.toString());return 0===a.length?(0,r.shadow)(this,"calculationOrderIds",null):(0,r.shadow)(this,"calculationOrderIds",a)}get annotationGlobals(){return(0,r.shadow)(this,"annotationGlobals",n.AnnotationFactory.createGlobals(this.pdfManager))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PopupAnnotation=t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0;t.getQuadPoints=getQuadPoints;var r=a(2),n=a(3),i=a(11),s=a(4),o=a(8),c=a(5),l=a(60),h=a(66),u=a(12),d=a(69),f=a(26),g=a(76),p=a(64),m=a(73),b=a(77);t.AnnotationFactory=class AnnotationFactory{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments")]).then((([t,a,r,n,i])=>({pdfManager:e,acroForm:t instanceof s.Dict?t:s.Dict.empty,xfaDatasets:a,structTreeRoot:r,baseUrl:n,attachments:i})),(e=>{(0,r.warn)(`createGlobals: "${e}".`);return null}))}static async create(e,t,a,r,n,i){const s=n?await this._getPageIndex(e,t,a.pdfManager):null;return a.pdfManager.ensure(this,"_create",[e,t,a,r,n,s,i])}static _create(e,t,a,i,o=!1,c=null,l=null){const h=e.fetchIfRef(t);if(!(h instanceof s.Dict))return;const{acroForm:u,pdfManager:d}=a,f=t instanceof s.Ref?t.toString():`annot_${i.createObjId()}`;let g=h.get("Subtype");g=g instanceof s.Name?g.name:null;const p={xref:e,ref:t,dict:h,subtype:g,id:f,annotationGlobals:a,collectFields:o,needAppearances:!o&&!0===u.get("NeedAppearances"),pageIndex:c,evaluatorOptions:d.evaluatorOptions,pageRef:l};switch(g){case"Link":return new LinkAnnotation(p);case"Text":return new TextAnnotation(p);case"Widget":let e=(0,n.getInheritableProperty)({dict:h,key:"FT"});e=e instanceof s.Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(p);case"Btn":return new ButtonWidgetAnnotation(p);case"Ch":return new ChoiceWidgetAnnotation(p);case"Sig":return new SignatureWidgetAnnotation(p)}(0,r.warn)(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(p);case"Popup":return new PopupAnnotation(p);case"FreeText":return new FreeTextAnnotation(p);case"Line":return new LineAnnotation(p);case"Square":return new SquareAnnotation(p);case"Circle":return new CircleAnnotation(p);case"PolyLine":return new PolylineAnnotation(p);case"Polygon":return new PolygonAnnotation(p);case"Caret":return new CaretAnnotation(p);case"Ink":return new InkAnnotation(p);case"Highlight":return new HighlightAnnotation(p);case"Underline":return new UnderlineAnnotation(p);case"Squiggly":return new SquigglyAnnotation(p);case"StrikeOut":return new StrikeOutAnnotation(p);case"Stamp":return new StampAnnotation(p);case"FileAttachment":return new FileAttachmentAnnotation(p);default:o||(g?(0,r.warn)(`Unimplemented annotation type "${g}", falling back to base annotation.`):(0,r.warn)("Annotation is missing the required /Subtype."));return new Annotation(p)}}static async _getPageIndex(e,t,a){try{const n=await e.fetchIfRefAsync(t);if(!(n instanceof s.Dict))return-1;const i=n.getRaw("P");if(i instanceof s.Ref)try{return await a.ensureCatalog("getPageIndex",[i])}catch(e){(0,r.info)(`_getPageIndex -- not a valid page reference: "${e}".`)}if(n.has("Kids"))return-1;const o=await a.ensureDoc("numPages");for(let e=0;ee/255))}function getQuadPoints(e,t){const a=e.getArray("QuadPoints");if(!Array.isArray(a)||0===a.length||a.length%8>0)return null;const r=[];for(let e=0,n=a.length/8;et[2]||st[3]))return null;r.push([{x:n,y:o},{x:i,y:o},{x:n,y:s},{x:i,y:s}])}return r}function getTransformMatrix(e,t,a){const[n,i,s,o]=r.Util.getAxialAlignedBoundingBox(t,a);if(n===s||i===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-n),l=(e[3]-e[1])/(o-i);return[c,0,0,l,e[0]-n*c,e[1]-i*l]}class Annotation{constructor(e){const{dict:t,xref:a,annotationGlobals:i}=e;this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setOptionalContent(t);const o=t.get("MK");this.setBorderAndBackgroundColors(o);this.setRotation(o,t);this.ref=e.ref instanceof s.Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const c=!!(this.flags&r.AnnotationFlag.LOCKED),l=!!(this.flags&r.AnnotationFlag.LOCKEDCONTENTS);if(i.structTreeRoot){let a=t.get("StructParent");a=Number.isInteger(a)&&a>=0?a:-1;i.structTreeRoot.addAnnotationIdToPage(e.pageRef,a)}this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&r.AnnotationFlag.NOROTATE),noHTML:c&&l};if(e.collectFields){const i=t.get("Kids");if(Array.isArray(i)){const e=[];for(const t of i)t instanceof s.Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,n.collectActions)(a,t,r.AnnotationActionEventType);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,r.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,r.AnnotationFlag.PRINT)&&!this._hasFlag(e,r.AnnotationFlag.HIDDEN)&&!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)}mustBeViewed(e,t){const a=e?.get(this.data.id)?.noView;return void 0!==a?!a:this.viewable&&!this._hasFlag(this.flags,r.AnnotationFlag.HIDDEN)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?(0,r.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,l.bidi)(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:a}=e,r=(0,n.getInheritableProperty)({dict:t,key:"DA"})||a.acroForm.get("DA");this._defaultAppearance="string"==typeof r?r:"";this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Array.isArray(e)&&4===e.length?r.Util.normalizeRect(e):[0,0,0,0]}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const a=e[t];if(a instanceof s.Name)switch(a.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=a.name;continue}(0,r.warn)(`Ignoring invalid lineEnding: ${a}`)}}setRotation(e,t){this.rotation=0;let a=e instanceof s.Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(a)&&0!==a){a%=360;a<0&&(a+=360);a%90==0&&(this.rotation=a)}}setBorderAndBackgroundColors(e){if(e instanceof s.Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof s.Dict)if(e.has("BS")){const t=e.get("BS"),a=t.get("Type");if(!a||(0,s.isName)(a,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof s.Dict))return;const a=t.get("N");if(a instanceof c.BaseStream){this.appearance=a;return}if(!(a instanceof s.Dict))return;const r=e.get("AS");if(!(r instanceof s.Name&&a.has(r.name)))return;const n=a.get(r.name);n instanceof c.BaseStream&&(this.appearance=n)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof s.Name?(0,r.warn)("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof s.Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new g.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,a,n,i){const c=this.data;let l=this.appearance;const h=!!(this.data.hasOwnCanvas&&a&r.RenderingIntentFlag.DISPLAY);if(!l){if(!h)return{opList:new p.OperatorList,separateForm:!1,separateCanvas:!1};l=new o.StringStream("");l.dict=new s.Dict}const u=l.dict,d=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],l),f=u.getArray("BBox")||[0,0,1,1],g=u.getArray("Matrix")||[1,0,0,1,0,0],m=getTransformMatrix(c.rect,f,g),b=new p.OperatorList;let y;this.oc&&(y=await e.parseMarkedContentProps(this.oc,null));void 0!==y&&b.addOp(r.OPS.beginMarkedContentProps,["OC",y]);b.addOp(r.OPS.beginAnnotation,[c.id,c.rect,m,g,h]);await e.getOperatorList({stream:l,task:t,resources:d,operatorList:b,fallbackFontDict:this._fallbackFontDict});b.addOp(r.OPS.endAnnotation,[]);void 0!==y&&b.addOp(r.OPS.endMarkedContent,[]);this.reset();return{opList:b,separateForm:!1,separateCanvas:h}}async save(e,t,a){return null}get hasTextContent(){return!1}async extractTextContent(e,t,a){if(!this.appearance)return;const n=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),i=[],s=[];let o=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){o||=t.transform.slice(-2);s.push(t.str);if(t.hasEOL){i.push(s.join(""));s.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:n,includeMarkedContent:!0,sink:c,viewBox:a});this.reset();s.length&&i.push(s.join(""));if(i.length>1||i[0]){const e=this.appearance.dict,t=e.getArray("BBox")||[0,0,1,1],a=e.getArray("Matrix")||[1,0,0,1,0,0],n=this.data.rect,s=getTransformMatrix(n,t,a);s[4]-=n[0];s[5]-=n[1];o=r.Util.applyTransform(o,s);o=r.Util.applyTransform(o,a);this.data.textPosition=o;this.data.textContent=i}}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){(0,r.warn)("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return(0,r.stringToPDFString)(e.get("T"));const t=[];e.has("T")&&t.unshift((0,r.stringToPDFString)(e.get("T")));let a=e;const n=new s.RefSet;e.objId&&n.put(e.objId);for(;a.has("Parent");){a=a.get("Parent");if(!(a instanceof s.Dict)||a.objId&&n.has(a.objId))break;a.objId&&n.put(a.objId);a.has("T")&&t.unshift((0,r.stringToPDFString)(a.get("T")))}return t.join(".")}}t.Annotation=Annotation;class AnnotationBorderStyle{constructor(){this.width=1;this.style=r.AnnotationBorderStyleType.SOLID;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof s.Name)this.width=0;else if("number"==typeof e){if(e>0){const a=(t[2]-t[0])/2,n=(t[3]-t[1])/2;if(a>0&&n>0&&(e>a||e>n)){(0,r.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof s.Name)switch(e.name){case"S":this.style=r.AnnotationBorderStyleType.SOLID;break;case"D":this.style=r.AnnotationBorderStyleType.DASHED;break;case"B":this.style=r.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=r.AnnotationBorderStyleType.INSET;break;case"U":this.style=r.AnnotationBorderStyleType.UNDERLINE}}setDashArray(e,t=!1){if(Array.isArray(e)&&e.length>0){let a=!0,r=!0;for(const t of e){if(!(+t>=0)){a=!1;break}t>0&&(r=!1)}if(a&&!r){this.dashArray=e;t&&this.setStyle(s.Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=AnnotationBorderStyle;class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof s.Ref?e.toString():null;const a=t.get("RT");this.data.replyType=a instanceof s.Name?a.name:r.AnnotationReplyType.REPLY}let a=null;if(this.data.replyType===r.AnnotationReplyType.GROUP){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;a=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;a=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=a instanceof s.Ref?a.toString():null;t.has("RC")&&(this.data.richText=b.XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:a,fillColor:r,blendMode:n,strokeAlpha:i,fillAlpha:c,pointsCallback:l}){let h=Number.MAX_VALUE,u=Number.MAX_VALUE,d=Number.MIN_VALUE,f=Number.MIN_VALUE;const g=["q"];t&&g.push(t);a&&g.push(`${a[0]} ${a[1]} ${a[2]} RG`);r&&g.push(`${r[0]} ${r[1]} ${r[2]} rg`);let p=this.data.quadPoints;p||(p=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of p){const[t,a,r,n]=l(g,e);h=Math.min(h,t);d=Math.max(d,a);u=Math.min(u,r);f=Math.max(f,n)}g.push("Q");const m=new s.Dict(e),b=new s.Dict(e);b.set("Subtype",s.Name.get("Form"));const y=new o.StringStream(g.join(" "));y.dict=b;m.set("Fm0",y);const w=new s.Dict(e);n&&w.set("BM",s.Name.get(n));"number"==typeof i&&w.set("CA",i);"number"==typeof c&&w.set("ca",c);const S=new s.Dict(e);S.set("GS0",w);const x=new s.Dict(e);x.set("ExtGState",S);x.set("XObject",m);const C=new s.Dict(e);C.set("Resources",x);const k=this.data.rect=[h,u,d,f];C.set("BBox",k);this.appearance=new o.StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=C;this._streams.push(this.appearance,y)}static async createNewAnnotation(e,t,a,r){const n=t.ref||=e.getNewTemporaryRef(),i=await this.createNewAppearanceStream(t,e,r),s=[];let o;if(i){const r=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:r});await(0,m.writeObject)(r,i,s,e);a.push({ref:r,data:s.join("")})}else o=this.createNewDict(t,e,{});Number.isInteger(t.parentTreeId)&&o.set("StructParent",t.parentTreeId);s.length=0;await(0,m.writeObject)(n,o,s,e);return{ref:n,data:s.join("")}}static async createNewPrintAnnotation(e,t,a,r){const n=await this.createNewAppearanceStream(a,t,r),i=this.createNewDict(a,t,{ap:n}),s=new this.prototype.constructor({dict:i,xref:t,annotationGlobals:e,evaluatorOptions:r.evaluatorOptions});a.ref&&(s.ref=s.refToReplace=a.ref);return s}}t.MarkupAnnotation=MarkupAnnotation;class WidgetAnnotation extends Annotation{constructor(e){super(e);const{dict:t,xref:a,annotationGlobals:i}=e,o=this.data;this._needAppearances=e.needAppearances;o.annotationType=r.AnnotationType.WIDGET;void 0===o.fieldName&&(o.fieldName=this._constructFieldName(t));void 0===o.actions&&(o.actions=(0,n.collectActions)(a,t,r.AnnotationActionEventType));let c=(0,n.getInheritableProperty)({dict:t,key:"V",getArray:!0});o.fieldValue=this._decodeFormValue(c);const l=(0,n.getInheritableProperty)({dict:t,key:"DV",getArray:!0});o.defaultFieldValue=this._decodeFormValue(l);if(void 0===c&&i.xfaDatasets){const e=this._title.str;if(e){this._hasValueFromXFA=!0;o.fieldValue=c=i.xfaDatasets.getValue(e)}}void 0===c&&null!==o.defaultFieldValue&&(o.fieldValue=o.defaultFieldValue);o.alternativeText=(0,r.stringToPDFString)(t.get("TU")||"");this.setDefaultAppearance(e);o.hasAppearance||=this._needAppearances&&void 0!==o.fieldValue&&null!==o.fieldValue;const h=(0,n.getInheritableProperty)({dict:t,key:"FT"});o.fieldType=h instanceof s.Name?h.name:null;const u=(0,n.getInheritableProperty)({dict:t,key:"DR"}),d=i.acroForm.get("DR"),f=this.appearance?.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:a,dictArray:[u,f,d],mergeSubDicts:!0})};o.fieldFlags=(0,n.getInheritableProperty)({dict:t,key:"Ff"});(!Number.isInteger(o.fieldFlags)||o.fieldFlags<0)&&(o.fieldFlags=0);o.readOnly=this.hasFieldFlag(r.AnnotationFieldFlag.READONLY);o.required=this.hasFieldFlag(r.AnnotationFieldFlag.REQUIRED);o.hidden=this._hasFlag(o.annotationFlags,r.AnnotationFlag.HIDDEN)||this._hasFlag(o.annotationFlags,r.AnnotationFlag.NOVIEW)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>(0,r.stringToPDFString)(e))):e instanceof s.Name?(0,r.stringToPDFString)(e.name):"string"==typeof e?(0,r.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,r.AnnotationFlag.NOVIEW)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(0===t)return r.IDENTITY_MATRIX;const a=this.data.rect[2]-this.data.rect[0],i=this.data.rect[3]-this.data.rect[1];return(0,n.getRotationMatrix)(t,a,i)}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const a=this.data.rect[2]-this.data.rect[0],r=this.data.rect[3]-this.data.rect[1],n=0===t||180===t?`0 0 ${a} ${r} re`:`0 0 ${r} ${a} re`;let s="";this.backgroundColor&&(s=`${(0,i.getPdfColor)(this.backgroundColor,!0)} ${n} f `);if(this.borderColor){s+=`${this.borderStyle.width||1} w ${(0,i.getPdfColor)(this.borderColor,!1)} ${n} S `}return s}async getOperatorList(e,t,a,n,i){if(n&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new p.OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,a,n,i);const s=await this._getAppearance(e,t,a,i);if(this.appearance&&null===s)return super.getOperatorList(e,t,a,n,i);const c=new p.OperatorList;if(!this._defaultAppearance||null===s)return{opList:c,separateForm:!1,separateCanvas:!1};const l=!!(this.data.hasOwnCanvas&&a&r.RenderingIntentFlag.DISPLAY),h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u=getTransformMatrix(this.data.rect,h,[1,0,0,1,0,0]);let d;this.oc&&(d=await e.parseMarkedContentProps(this.oc,null));void 0!==d&&c.addOp(r.OPS.beginMarkedContentProps,["OC",d]);c.addOp(r.OPS.beginAnnotation,[this.data.id,this.data.rect,u,this.getRotationMatrix(i),l]);const f=new o.StringStream(s);await e.getOperatorList({stream:f,task:t,resources:this._fieldResources.mergedResources,operatorList:c});c.addOp(r.OPS.endAnnotation,[]);void 0!==d&&c.addOp(r.OPS.endMarkedContent,[]);return{opList:c,separateForm:!1,separateCanvas:l}}_getMKDict(e){const t=new s.Dict(null);e&&t.set("R",e);this.borderColor&&t.set("BC",getPdfColorArray(this.borderColor));this.backgroundColor&&t.set("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,a){const i=a?.get(this.data.id);let c=i?.value,l=i?.rotation;if(c===this.data.fieldValue||void 0===c){if(!this._hasValueFromXFA&&void 0===l)return null;c||=this.data.fieldValue}if(void 0===l&&!this._hasValueFromXFA&&Array.isArray(c)&&Array.isArray(this.data.fieldValue)&&c.length===this.data.fieldValue.length&&c.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===l&&(l=this.rotation);let h=null;if(!this._needAppearances){h=await this._getAppearance(e,t,r.RenderingIntentFlag.SAVE,a);if(null===h)return null}let u=!1;if(h?.needAppearances){u=!0;h=null}const{xref:d}=e,f=d.fetchIfRef(this.ref);if(!(f instanceof s.Dict))return null;const g=new s.Dict(d);for(const e of f.getKeys())"AP"!==e&&g.set(e,f.getRaw(e));const p={path:this.data.fieldName,value:c},encoder=e=>(0,n.isAscii)(e)?e:(0,n.stringToUTF16String)(e,!0);g.set("V",Array.isArray(c)?c.map(encoder):encoder(c));this.amendSavedDict(a,g);const b=this._getMKDict(l);b&&g.set("MK",b);const y=[],w=[{ref:this.ref,data:"",xfa:p,needAppearances:u}];if(null!==h){const e=d.getNewTemporaryRef(),t=new s.Dict(d);g.set("AP",t);t.set("N",e);const n=this._getSaveFieldResources(d),i=new o.StringStream(h),c=i.dict=new s.Dict(d);c.set("Subtype",s.Name.get("Form"));c.set("Resources",n);c.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const l=this.getRotationMatrix(a);l!==r.IDENTITY_MATRIX&&c.set("Matrix",l);await(0,m.writeObject)(e,i,y,d);w.push({ref:e,data:y.join(""),xfa:null,needAppearances:!1});y.length=0}g.set("M",`D:${(0,r.getModificationDate)()}`);await(0,m.writeObject)(this.ref,g,y,d);w[0].data=y.join("");return w}async _getAppearance(e,t,a,s){if(this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD))return null;const o=s?.get(this.data.id);let c,l;if(o){c=o.formattedValue||o.value;l=o.rotation}if(void 0===l&&void 0===c&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const h=this.getBorderAndBackgroundAppearances(s);if(void 0===c){c=this.data.fieldValue;if(!c)return`/Tx BMC q ${h}Q EMC`}Array.isArray(c)&&1===c.length&&(c=c[0]);(0,r.assert)("string"==typeof c,"Expected `value` to be a string.");c=c.trim();if(this.data.combo){const e=this.data.options.find((({exportValue:e})=>c===e));c=e?.displayValue||c}if(""===c)return`/Tx BMC q ${h}Q EMC`;void 0===l&&(l=this.rotation);let u,d=-1;if(this.data.multiLine){u=c.split(/\r\n?|\n/).map((e=>e.normalize("NFC")));d=u.length}else u=[c.replace(/\r\n?|\n/,"").normalize("NFC")];let f=this.data.rect[3]-this.data.rect[1],g=this.data.rect[2]-this.data.rect[0];90!==l&&270!==l||([g,f]=[f,g]);this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let p,m,b,y=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const w=[];let S=!1;for(const e of u){const t=y.encodeString(e);t.length>1&&(S=!0);w.push(t.join(""))}if(S&&a&r.RenderingIntentFlag.SAVE)return{needAppearances:!0};if(S&&this._isOffscreenCanvasSupported){const a=this.data.comb?"monospace":"sans-serif",r=new i.FakeUnicodeFont(e.xref,a),s=r.createFontResources(u.join("")),o=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of o.getKeys())e.set(t,o.getRaw(t))}else this._fieldResources.mergedResources.set("Font",o);const l=r.fontName.name;y=await WidgetAnnotation._getFontData(e,t,{fontName:l,fontSize:0},s);for(let e=0,t=w.length;e2)return`/Tx BMC q ${h}BT `+p+` 1 0 0 1 ${(0,n.numberToString)(2)} ${(0,n.numberToString)(v)} Tm (${(0,n.escapeString)(w[0])}) Tj ET Q EMC`;return`/Tx BMC q ${h}BT `+p+` 1 0 0 1 0 0 Tm ${this._renderText(w[0],y,m,g,k,{shift:0},2,v)} ET Q EMC`}static async _getFontData(e,t,a,r){const n=new p.OperatorList,i={font:null,clone(){return this}},{fontName:o,fontSize:c}=a;await e.handleSetFont(r,[o&&s.Name.get(o),c],null,n,t,i,null);return i.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,a,n,s){let{fontSize:o}=this.data.defaultAppearanceData,c=(o||12)*r.LINE_FACTOR,l=Math.round(e/c);if(!o){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===s){const i=this._getTextWidth(a,n);o=roundWithTwoDigits(Math.min(e/r.LINE_FACTOR,i>t?t/i:1/0));l=1}else{const i=a.split(/\r\n?|\n/),h=[];for(const e of i){const t=n.encodeString(e).join(""),a=n.charsToGlyphs(t),r=n.getCharPositions(t);h.push({line:t,glyphs:a,positions:r})}const isTooBig=a=>{let r=0;for(const i of h){r+=this._splitLine(null,n,a,t,i).length*a;if(r>e)return!0}return!1};l=Math.max(l,s);for(;;){c=e/l;o=roundWithTwoDigits(c/r.LINE_FACTOR);if(!isTooBig(o))break;l++}}const{fontName:h,fontColor:u}=this.data.defaultAppearanceData;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:o,fontName:h,fontColor:u})}return[this._defaultAppearance,o,e/l]}_renderText(e,t,a,r,i,s,o,c){let l;if(1===i){l=(r-this._getTextWidth(e,t)*a)/2}else if(2===i){l=r-this._getTextWidth(e,t)*a-o}else l=o;const h=(0,n.numberToString)(l-s.shift);s.shift=l;return`${h} ${c=(0,n.numberToString)(c)} Td (${(0,n.escapeString)(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:a,acroFormResources:r}=this._fieldResources,n=this.data.defaultAppearanceData?.fontName;if(!n)return t||s.Dict.empty;for(const e of[t,a])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(n))return e}if(r instanceof s.Dict){const a=r.get("Font");if(a instanceof s.Dict&&a.has(n)){const r=new s.Dict(e);r.set(n,a.getRaw(n));const i=new s.Dict(e);i.set("Font",r);return s.Dict.merge({xref:e,dictArray:[i,t],mergeSubDicts:!0})}}return t||s.Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let a=(0,n.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(a)||a<0||a>2)&&(a=null);this.data.textAlignment=a;let i=(0,n.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(i)||i<0)&&(i=0);this.data.maxLen=i;this.data.multiLine=this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE);this.data.comb=this.hasFieldFlag(r.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(r.AnnotationFieldFlag.FILESELECT)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(r.AnnotationFieldFlag.DONOTSCROLL)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,a,r,i,s,o,c,l,h,u){const d=i/this.data.maxLen,f=this.getBorderAndBackgroundAppearances(u),g=[],p=t.getCharPositions(a);for(const[e,t]of p)g.push(`(${(0,n.escapeString)(a.substring(e,t))}) Tj`);const m=g.join(` ${(0,n.numberToString)(d)} 0 Td `);return`/Tx BMC q ${f}BT `+e+` 1 0 0 1 ${(0,n.numberToString)(o)} ${(0,n.numberToString)(c+l)} Tm ${m} ET Q EMC`}_getMultilineAppearance(e,t,a,r,i,s,o,c,l,h,u,d){const f=[],g=i-2*c,p={shift:0};for(let e=0,n=t.length;er){c.push(e.substring(d,a));d=a;f=p;l=-1;u=-1}else{f+=p;l=a;h=n;u=t}else if(f+p>r)if(-1!==l){c.push(e.substring(d,h));d=h;t=u+1;l=-1;f=0}else{c.push(e.substring(d,a));d=a;f=p}else f+=p}d"Off"!==e));i.length=0;i.push("Off",e)}i.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=i[1];const o=a.get(this.data.exportValue);this.checkedAppearance=o instanceof c.BaseStream?o:null;const l=a.get("Off");this.uncheckedAppearance=l instanceof c.BaseStream?l:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.fieldValue=this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof s.Dict){this.parent=e.dict.getRaw("Parent");const a=t.get("V");a instanceof s.Name&&(this.data.fieldValue=this._decodeFormValue(a))}const a=e.dict.get("AP");if(!(a instanceof s.Dict))return;const r=a.get("N");if(!(r instanceof s.Dict))return;for(const e of r.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const n=r.get(this.data.buttonValue);this.checkedAppearance=n instanceof c.BaseStream?n:null;const i=r.get("Off");this.uncheckedAppearance=i instanceof c.BaseStream?i:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:a}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");h.Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:a.baseUrl,docAttachments:a.attachments})}else(0,r.warn)("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new s.Dict;e.set("BaseFont",s.Name.get("ZapfDingbats"));e.set("Type",s.Name.get("FallbackType"));e.set("Subtype",s.Name.get("FallbackType"));e.set("Encoding",s.Name.get("ZapfDingbatsEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const i=(0,n.getInheritableProperty)({dict:t,key:"Opt"});if(Array.isArray(i))for(let e=0,t=i.length;e=0&&t0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let a=e?.get(this.data.id)?.value;Array.isArray(a)||(a=[a]);const r=[],{options:n}=this.data;for(let e=0,t=0,i=n.length;ea){a=r;t=e}}[g,p]=this._computeFontSize(e,h-4,t,f,-1)}const m=p*r.LINE_FACTOR,b=(m-p)/2,y=Math.floor(l/m);let w=0;if(d.length>0){const e=Math.min(...d),t=Math.max(...d);w=Math.max(0,t-y+1);w>e&&(w=e)}const S=Math.min(w+y+1,u),x=["/Tx BMC q",`1 1 ${h} ${l} re W n`];if(d.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of d)w<=e&&e1)return null;e=t.join("");M.push(e);let a=0;const r=y.charsToGlyphs(e);for(const e of r)a+=e.width*O;T=Math.max(T,a)}let D=1;T>k&&(D=k/T);let E=1;const N=r.LINE_FACTOR*d,R=(r.LINE_FACTOR-r.LINE_DESCENT_FACTOR)*d,L=N*F.length;L>v&&(E=v/L);const $=d*Math.min(D,E);let _,j,U;switch(g){case 0:U=[1,0,0,1];j=[f[0],f[1],k,v];_=[f[0],f[3]-R];break;case 90:U=[0,1,-1,0];j=[f[1],-f[2],k,v];_=[f[1],-f[0]-R];break;case 180:U=[-1,0,0,-1];j=[-f[2],-f[3],k,v];_=[-f[2],-f[1]-R];break;case 270:U=[0,-1,1,0];j=[-f[3],f[0],k,v];_=[-f[3],f[2]-R]}const X=["q",`${U.join(" ")} 0 0 cm`,`${j.join(" ")} re W n`,"BT",`${(0,i.getPdfColor)(u,!0)}`,`0 Tc /Helv ${(0,n.numberToString)($)} Tf`];X.push(`${_.join(" ")} Td (${(0,n.escapeString)(M[0])}) Tj`);const H=(0,n.numberToString)(N);for(let e=1,t=M.length;e{e.push(`${n[0]} ${n[1]} m`,`${n[2]} ${n[3]} l`,"S");return[t[0].x-l,t[1].x+l,t[3].y-l,t[1].y+l]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.SQUARE;this.data.hasOwnCanvas=this.data.noRotate;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),n=getRgbColor(t.getArray("IC"),null),i=n?getPdfColorArray(n):null,s=i?r:null;if(0===this.borderStyle.width&&!i)return;this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[2].x+this.borderStyle.width/2,r=t[2].y+this.borderStyle.width/2,n=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;e.push(`${a} ${r} ${n} ${s} re`);i?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.CIRCLE;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),n=getRgbColor(t.getArray("IC"),null),i=n?getPdfColorArray(n):null,s=i?r:null;if(0===this.borderStyle.width&&!i)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[0].x+this.borderStyle.width/2,r=t[0].y-this.borderStyle.width/2,n=t[3].x-this.borderStyle.width/2,s=t[3].y+this.borderStyle.width/2,c=a+(n-a)/2,l=r+(s-r)/2,h=(n-a)/2*o,u=(s-r)/2*o;e.push(`${c} ${s} m`,`${c+h} ${s} ${n} ${l+u} ${n} ${l} c`,`${n} ${l-u} ${c+h} ${r} ${c} ${r} c`,`${c-h} ${r} ${a} ${l-u} ${a} ${l} c`,`${a} ${l+u} ${c-h} ${s} ${c} ${s} c`,"h");i?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.POLYLINE;this.data.hasOwnCanvas=this.data.noRotate;this.data.vertices=[];if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const n=t.getArray("Vertices");if(Array.isArray(n)){for(let e=0,t=n.length;e{const a=this.data.vertices;for(let t=0,r=a.length;t{for(const t of this.data.inkLists){for(let a=0,r=t.length;ae.points)));d.set("F",4);d.set("Rotate",h);const f=new s.Dict(t);d.set("BS",f);f.set("W",u);d.set("C",Array.from(i,(e=>e/255)));d.set("CA",o);const g=new s.Dict(t);d.set("AP",g);a?g.set("N",a):g.set("N",n);return d}static async createNewAppearanceStream(e,t,a){const{color:r,rect:c,paths:l,thickness:h,opacity:u}=e,d=[`${h} w 1 J 1 j`,`${(0,i.getPdfColor)(r,!1)}`];1!==u&&d.push("/R0 gs");const f=[];for(const{bezier:e}of l){f.length=0;f.push(`${(0,n.numberToString)(e[0])} ${(0,n.numberToString)(e[1])} m`);for(let t=2,a=e.length;t{e.push(`${t[0].x} ${t[0].y} m`,`${t[1].x} ${t[1].y} l`,`${t[3].x} ${t[3].y} l`,`${t[2].x} ${t[2].y} l`,"f");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class UnderlineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.UNDERLINE;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 0.571 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{e.push(`${t[2].x} ${t[2].y+1.3} m`,`${t[3].x} ${t[3].y+1.3} l`,"S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.SQUIGGLY;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{const a=(t[0].y-t[2].y)/6;let r=a,n=t[2].x;const i=t[2].y,s=t[3].x;e.push(`${n} ${i+r} m`);do{n+=2;r=0===r?a:0;e.push(`${n} ${i+r} l`)}while(n{e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.STAMP;this.data.hasOwnCanvas=this.data.noRotate}static async createImage(e,t){const{width:a,height:n}=e,i=new OffscreenCanvas(a,n),c=i.getContext("2d",{alpha:!0});c.drawImage(e,0,0);const l=c.getImageData(0,0,a,n).data,h=new Uint32Array(l.buffer),u=h.some(r.FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));if(u){c.fillStyle="white";c.fillRect(0,0,a,n);c.drawImage(e,0,0)}const d=i.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),f=s.Name.get("XObject"),g=s.Name.get("Image"),p=new s.Dict(t);p.set("Type",f);p.set("Subtype",g);p.set("BitsPerComponent",8);p.set("ColorSpace",s.Name.get("DeviceRGB"));p.set("Filter",s.Name.get("DCTDecode"));p.set("BBox",[0,0,a,n]);p.set("Width",a);p.set("Height",n);let m=null;if(u){const e=new Uint8Array(h.length);if(r.FeatureTest.isLittleEndian)for(let t=0,a=h.length;t>>24;else for(let t=0,a=h.length;t=0&&o<=1?o:null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FakeUnicodeFont=void 0;t.createDefaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:a}){return`/${(0,n.escapePDFName)(t)} ${e} Tf ${getPdfColor(a,!0)}`};t.getPdfColor=getPdfColor;t.parseAppearanceStream=function parseAppearanceStream(e,t,a){return new AppearanceStreamEvaluator(e,t,a).parse()};t.parseDefaultAppearance=function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()};var r=a(4),n=a(3),i=a(2),s=a(12),o=a(13),c=a(59),l=a(57),h=a(8);class DefaultAppearanceEvaluator extends o.EvaluatorPreprocessor{constructor(e){super(new h.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:a,args:n}=e;switch(0|a){case i.OPS.setFont:const[e,a]=n;e instanceof r.Name&&(t.fontName=e.name);"number"==typeof a&&a>0&&(t.fontSize=a);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(n,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(n,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(n,0,t.fontColor,0)}}}catch(e){(0,i.warn)(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}class AppearanceStreamEvaluator extends o.EvaluatorPreprocessor{constructor(e,t,a){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=a;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:s.ColorSpace.singletons.gray},a=!1;const n=[];try{for(;;){e.args.length=0;if(a||!this.read(e))break;const{fn:o,args:c}=e;switch(0|o){case i.OPS.save:n.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case i.OPS.restore:t=n.pop()||t;break;case i.OPS.setTextMatrix:t.scaleFactor*=Math.hypot(c[0],c[1]);break;case i.OPS.setFont:const[e,o]=c;e instanceof r.Name&&(t.fontName=e.name);"number"==typeof o&&o>0&&(t.fontSize=o*t.scaleFactor);break;case i.OPS.setFillColorSpace:t.fillColorSpace=s.ColorSpace.parse({cs:c[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case i.OPS.setFillColor:t.fillColorSpace.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.showText:case i.OPS.showSpacedText:case i.OPS.nextLineShowText:case i.OPS.nextLineSetSpacingShowText:a=!0}}}catch(e){(0,i.warn)(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return(0,i.shadow)(this,"_localColorSpaceCache",new c.LocalColorSpaceCache)}get _pdfFunctionFactory(){const e=new l.PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported});return(0,i.shadow)(this,"_pdfFunctionFactory",e)}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){const a=e[0]/255;return`${(0,n.numberToString)(a)} ${t?"g":"G"}`}return Array.from(e,(e=>(0,n.numberToString)(e/255))).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const a=new OffscreenCanvas(1,1);this.ctxMeasure=a.getContext("2d");FakeUnicodeFont._fontNameId||(FakeUnicodeFont._fontNameId=1);this.fontName=r.Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`)}get toUnicodeRef(){if(!FakeUnicodeFont._toUnicodeRef){const e="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo\n<< /Registry (Adobe)\n/Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n1 beginbfrange\n<0000> <0000>\nendbfrange\nendcmap CMapName currentdict /CMap defineresource pop end end",t=FakeUnicodeFont.toUnicodeStream=new h.StringStream(e),a=new r.Dict(this.xref);t.dict=a;a.set("Length",e.length);FakeUnicodeFont._toUnicodeRef=this.xref.getNewPersistentRef(t)}return FakeUnicodeFont._toUnicodeRef}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new r.Dict(this.xref);e.set("Type",r.Name.get("FontDescriptor"));e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.set("FontStretch",r.Name.get("Normal"));e.set("FontWeight",400);e.set("ItalicAngle",0);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new r.Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",r.Name.get("Font"));e.set("Subtype",r.Name.get("CIDFontType0"));e.set("CIDToGIDMap",r.Name.get("Identity"));e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],a=[...this.widths.entries()].sort();let n=null,i=null;for(const[e,r]of a)if(n)if(e===n+i.length)i.push(r);else{t.push(n,i);n=e;i=[r]}else{n=e;i=[r]}n&&t.push(n,i);e.set("W",t);const s=new r.Dict(this.xref);s.set("Ordering","Identity");s.set("Registry","Adobe");s.set("Supplement",0);e.set("CIDSystemInfo",s);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new r.Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",r.Name.get("Font"));e.set("Subtype",r.Name.get("Type0"));e.set("Encoding",r.Name.get("Identity-H"));e.set("DescendantFonts",[this.descendantFontRef]);e.set("ToUnicode",this.toUnicodeRef);return this.xref.getNewPersistentRef(e)}get resources(){const e=new r.Dict(this.xref),t=new r.Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const a of e.split(/\r\n?|\n/))for(const e of a.split("")){const a=e.charCodeAt(0);if(this.widths.has(a))continue;const r=t.measureText(e),n=Math.ceil(r.width);this.widths.set(a,n);this.firstChar=Math.min(a,this.firstChar);this.lastChar=Math.max(a,this.lastChar)}return this.resources}createAppearance(e,t,a,s,o,c){const l=this._createContext(),u=[];let d=-1/0;for(const t of e.split(/\r\n?|\n/)){u.push(t);const e=l.measureText(t).width;d=Math.max(d,e);for(const e of t.split("")){const t=e.charCodeAt(0);let a=this.widths.get(t);if(void 0===a){const r=l.measureText(e);a=Math.ceil(r.width);this.widths.set(t,a);this.firstChar=Math.min(t,this.firstChar);this.lastChar=Math.max(t,this.lastChar)}}}d*=s/1e3;const[f,g,p,m]=t;let b=p-f,y=m-g;a%180!=0&&([b,y]=[y,b]);let w=1;d>b&&(w=b/d);let S=1;const x=i.LINE_FACTOR*s,C=i.LINE_DESCENT_FACTOR*s,k=x*u.length;k>y&&(S=y/k);const v=s*Math.min(w,S),F=["q",`0 0 ${(0,n.numberToString)(b)} ${(0,n.numberToString)(y)} re W n`,"BT",`1 0 0 1 0 ${(0,n.numberToString)(y+C)} Tm 0 Tc ${getPdfColor(o,!0)}`,`/${this.fontName.name} ${(0,n.numberToString)(v)} Tf`],{resources:O}=this;if(1!==(c="number"==typeof c&&c>=0&&c<=1?c:1)){F.push("/R0 gs");const e=new r.Dict(this.xref),t=new r.Dict(this.xref);t.set("ca",c);t.set("CA",c);t.set("Type",r.Name.get("ExtGState"));e.set("R0",t);O.set("ExtGState",e)}const T=(0,n.numberToString)(x);for(const e of u)F.push(`0 -${T} Td <${(0,n.stringToUTF16HexString)(e)}> Tj`);F.push("ET","Q");const M=F.join("\n"),D=new r.Dict(this.xref);D.set("Subtype",r.Name.get("Form"));D.set("Type",r.Name.get("XObject"));D.set("BBox",[0,0,b,y]);D.set("Length",M.length);D.set("Resources",O);if(a){const e=(0,n.getRotationMatrix)(a,b,y);D.set("Matrix",e)}const E=new h.StringStream(M);E.dict=D;return E}}t.FakeUnicodeFont=FakeUnicodeFont},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ColorSpace=void 0;var r=a(2),n=a(4),i=a(5),s=a(3);class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&(0,r.unreachable)("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const a=new Uint8ClampedArray(3);this.getRgbItem(e,t,a,0);return a}getRgbItem(e,t,a,n){(0,r.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,a,n,i,s,o){(0,r.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,r.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,a,r,n,i,s,o,c){const l=t*a;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:this.#m(0,1,1.055*e**(1/2.4)-.055)}#m(e,t,a){return Math.max(e,Math.min(t,a))}#b(e){return e<0?-this.#b(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#u}#y(e,t,a){if(0===e[0]&&0===e[1]&&0===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=this.#b(0),n=(1-r)/(1-this.#b(e[0])),i=1-n,s=(1-r)/(1-this.#b(e[1])),o=1-s,c=(1-r)/(1-this.#b(e[2])),l=1-c;a[0]=t[0]*n+i;a[1]=t[1]*s+o;a[2]=t[2]*c+l}#w(e,t,a){if(1===e[0]&&1===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=a;this.#d(CalRGBCS.#n,t,r);const n=CalRGBCS.#c;this.#f(e,r,n);this.#d(CalRGBCS.#i,n,a)}#S(e,t,a){const r=a;this.#d(CalRGBCS.#n,t,r);const n=CalRGBCS.#c;this.#g(e,r,n);this.#d(CalRGBCS.#i,n,a)}#r(e,t,a,r,n){const i=this.#m(0,1,e[t]*n),s=this.#m(0,1,e[t+1]*n),o=this.#m(0,1,e[t+2]*n),c=1===i?1:i**this.GR,l=1===s?1:s**this.GG,h=1===o?1:o**this.GB,u=this.MXA*c+this.MXB*l+this.MXC*h,d=this.MYA*c+this.MYB*l+this.MYC*h,f=this.MZA*c+this.MZB*l+this.MZC*h,g=CalRGBCS.#l;g[0]=u;g[1]=d;g[2]=f;const p=CalRGBCS.#h;this.#w(this.whitePoint,g,p);const m=CalRGBCS.#l;this.#y(this.blackPoint,p,m);const b=CalRGBCS.#h;this.#S(CalRGBCS.#o,m,b);const y=CalRGBCS.#l;this.#d(CalRGBCS.#s,b,y);a[r]=255*this.#p(y[0]);a[r+1]=255*this.#p(y[1]);a[r+2]=255*this.#p(y[2])}getRgbItem(e,t,a,r){this.#r(e,t,a,r,1)}getRgbBuffer(e,t,a,r,n,i,s){const o=1/((1<this.amax||this.bmin>this.bmax){(0,r.info)("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#x(e){return e>=6/29?e**3:108/841*(e-4/29)}#A(e,t,a,r){return a+e*(r-a)/t}#r(e,t,a,r,n){let i=e[t],s=e[t+1],o=e[t+2];if(!1!==a){i=this.#A(i,a,0,100);s=this.#A(s,a,this.amin,this.amax);o=this.#A(o,a,this.bmin,this.bmax)}s>this.amax?s=this.amax:sthis.bmax?o=this.bmax:o{Object.defineProperty(t,"__esModule",{value:!0});t.PartialEvaluator=t.EvaluatorPreprocessor=void 0;var r=a(2),n=a(14),i=a(4),s=a(34),o=a(37),c=a(41),l=a(50),h=a(51),u=a(42),d=a(57),f=a(16),g=a(59),p=a(8),m=a(5),b=a(60),y=a(12),w=a(18),S=a(38),x=a(61),C=a(39),k=a(45),v=a(40),F=a(62),O=a(63),T=a(64),M=a(65);const D=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,isOffscreenCanvasSupported:!1,canvasMaxAreaInBytes:-1,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),E=1,N=2,R=Promise.resolve();function normalizeBlendMode(e,t=!1){if(Array.isArray(e)){for(const t of e){const e=normalizeBlendMode(t,!0);if(e)return e}(0,r.warn)(`Unsupported blend mode Array: ${e}`);return"source-over"}if(!(e instanceof i.Name))return t?null:"source-over";switch(e.name){case"Normal":case"Compatible":return"source-over";case"Multiply":return"multiply";case"Screen":return"screen";case"Overlay":return"overlay";case"Darken":return"darken";case"Lighten":return"lighten";case"ColorDodge":return"color-dodge";case"ColorBurn":return"color-burn";case"HardLight":return"hard-light";case"SoftLight":return"soft-light";case"Difference":return"difference";case"Exclusion":return"exclusion";case"Hue":return"hue";case"Saturation":return"saturation";case"Color":return"color";case"Luminosity":return"luminosity"}if(t)return null;(0,r.warn)(`Unsupported blend mode: ${e.name}`);return"source-over"}function incrementCachedImageMaskCount(e){e.fn===r.OPS.paintImageMaskXObject&&e.args[0]?.count>0&&e.args[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checkedd){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){(0,r.warn)(e);return}throw new Error(e)}let f;c.has("OC")&&(f=await this.parseMarkedContentProps(c.get("OC"),e));let g,p;if(c.get("IM","ImageMask")||!1){const e=c.get("I","Interpolate"),a=h+7>>3,o=t.getBytes(a*u),d=c.getArray("D","Decode");if(this.parsingType3Font){g=M.PDFImage.createRawMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof w.DecodeStream,inverseDecode:d?.[0]>0,interpolate:e});g.cached=!!i;p=[g];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);if(i){const e={fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}g=await M.PDFImage.createMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof w.DecodeStream,inverseDecode:d?.[0]>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported});if(g.isSingleOpaquePixel){n.addImageOps(r.OPS.paintSolidColorImageMask,[],f);if(i){const e={fn:r.OPS.paintSolidColorImageMask,args:[],optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}const m=`mask_${this.idFactory.createObjId()}`;n.addDependency(m);this._sendImgData(m,g);p=[{data:m,width:g.width,height:g.height,interpolate:g.interpolate,count:1}];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);if(i){const e={fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}if(a&&!c.has("SMask")&&!c.has("Mask")&&h+u<200){const i=new M.PDFImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o});g=await i.createImageData(!0,!1);n.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported;n.addImageOps(r.OPS.paintInlineImageXObject,[g],f);return}let m=`img_${this.idFactory.createObjId()}`,b=!1;if(this.parsingType3Font)m=`${this.idFactory.getDocId()}_type3_${m}`;else if(l){b=this.globalImageCache.shouldCache(l,this.pageIndex);b&&(m=`${this.idFactory.getDocId()}_${m}`)}n.addDependency(m);p=[m,h,u];M.PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o}).then((async e=>{g=await e.createImageData(!1,this.options.isOffscreenCanvasSupported);if(i&&l&&b){const e=g.bitmap?g.width*g.height*4:g.data.length;this.globalImageCache.addByteSize(l,e)}return this._sendImgData(m,g,b)})).catch((e=>{(0,r.warn)(`Unable to decode image "${m}": "${e}".`);return this._sendImgData(m,null,b)}));n.addImageOps(r.OPS.paintImageXObject,p,f);if(i){const e={fn:r.OPS.paintImageXObject,args:p,optionalContent:f};s.set(i,l,e);if(l){this._regionalImageCache.set(null,l,e);if(b){(0,r.assert)(!a,"Cannot cache an inline image globally.");this.globalImageCache.setData(l,{objId:m,fn:r.OPS.paintImageXObject,args:p,optionalContent:f,byteSize:0})}}}}handleSMask(e,t,a,r,n,i){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,d.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),a=new Float32Array(1);for(let r=0;r<256;r++){a[0]=r/255;e(a,0,a,0);t[r]=255*a[0]|0}o.transferMap=t}return this.buildFormXObject(t,s,o,a,r,n.state.clone(),i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,d.isPDFFunction)(e))return null;t=[e]}const a=[];let r=0,n=0;for(const e of t){const t=this.xref.fetchIfRef(e);r++;if((0,i.isName)(t,"Identity")){a.push(null);continue}if(!(0,d.isPDFFunction)(t))return null;const s=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++){c[0]=e/255;s(c,0,c,0);o[e]=255*c[0]|0}a.push(o);n++}return 1!==r&&4!==r||0===n?null:a}handleTilingType(e,t,a,n,s,o,c,h){const u=new T.OperatorList,d=i.Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),a]});return this.getOperatorList({stream:n,task:c,resources:d,operatorList:u}).then((function(){const a=u.getIR(),r=(0,l.getTilingPatternIR)(a,s,t);o.addDependencies(u.dependencies);o.addOp(e,r);s.objId&&h.set(null,s.objId,{operatorListIR:a,dict:s})})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`handleTilingType - ignoring pattern: "${e}".`)}}))}handleSetFont(e,t,a,r,n,o,c=null,l=null){const h=t?.[0]instanceof i.Name?t[0].name:null;return this.loadFont(h,a,e,c,l).then((t=>t.font.isType3Font?t.loadType3Data(this,e,n).then((function(){r.addDependencies(t.type3Dependencies);return t})).catch((e=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Type3 font load error: ${e}`),dict:t.font,evaluatorOptions:this.options}))):t)).then((e=>{o.font=e.font;e.send(this.handler);return e.loadedName}))}handleText(e,t){const a=t.font,n=a.charsToGlyphs(e);if(a.data){(!!(t.textRenderingMode&r.TextRenderingMode.ADD_TO_PATH_FLAG)||"Pattern"===t.fillColorSpace.name||a.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(a,n,this.handler,this.options)}return n}ensureStateFont(e){if(e.font)return;const t=new r.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;(0,r.warn)(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:a,cacheKey:n,task:s,stateManager:o,localGStateCache:c,localColorSpaceCache:l}){const h=t.objId;let u=!0;const d=[];let f=Promise.resolve();for(const n of t.getKeys()){const c=t.get(n);switch(n){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":d.push([n,c]);break;case"Font":u=!1;f=f.then((()=>this.handleSetFont(e,null,c[0],a,s,o.state).then((function(e){a.addDependency(e);d.push([n,[e,c[1]]])}))));break;case"BM":d.push([n,normalizeBlendMode(c)]);break;case"SMask":if((0,i.isName)(c,"None")){d.push([n,!1]);break}if(c instanceof i.Dict){u=!1;f=f.then((()=>this.handleSMask(c,e,a,s,o,l)));d.push([n,!0])}else(0,r.warn)("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(c);d.push([n,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,r.info)("graphic state operator "+n);break;default:(0,r.info)("Unknown graphic state operator "+n)}}return f.then((function(){d.length>0&&a.addOp(r.OPS.setGState,[d]);u&&c.set(n,h,d)}))}loadFont(e,t,a,n=null,o=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options});let c;if(t)t instanceof i.Ref&&(c=t);else{const t=a.get("Font");t&&(c=t.getRaw(e))}if(c){if(this.parsingType3Font&&this.type3FontRefs.has(c))return errorFont();if(this.fontCache.has(c))return this.fontCache.get(c);t=this.xref.fetchIfRef(c)}if(!(t instanceof i.Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){(0,r.warn)(`Font "${e}" is not available.`);return errorFont()}(0,r.warn)(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=n||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const l=new r.PromiseCapability;let h;try{h=this.preEvaluateFont(t);h.cssFontInfo=o}catch(e){(0,r.warn)(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:u,hash:d}=h,f=c instanceof i.Ref;let g;if(d&&u instanceof i.Dict){const e=u.fontAliases||=Object.create(null);if(e[d]){const t=e[d].aliasRef;if(f&&t&&this.fontCache.has(t)){this.fontCache.putAlias(c,t);return this.fontCache.get(c)}}else e[d]={fontID:this.idFactory.createFontId()};f&&(e[d].aliasRef=c);g=e[d].fontID}else g=this.idFactory.createFontId();(0,r.assert)(g?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(f)this.fontCache.put(c,l.promise);else{t.cacheKey=`cacheKey_${g}`;this.fontCache.put(t.cacheKey,l.promise)}t.loadedName=`${this.idFactory.getDocId()}_${g}`;this.translateFont(h).then((e=>{l.resolve(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{(0,r.warn)(`loadFont - translateFont failed: "${e}".`);l.resolve(new TranslatedFont({loadedName:t.loadedName,font:new s.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return l.promise}buildPath(e,t,a,n=!1){const i=e.length-1;a||(a=[]);if(i<0||e.fnArray[i]!==r.OPS.constructPath){if(n){(0,r.warn)(`Encountered path operator "${t}" inside of a text object.`);e.addOp(r.OPS.save,null)}let i;switch(t){case r.OPS.rectangle:const e=a[0]+a[2],t=a[1]+a[3];i=[Math.min(a[0],e),Math.max(a[0],e),Math.min(a[1],t),Math.max(a[1],t)];break;case r.OPS.moveTo:case r.OPS.lineTo:i=[a[0],a[0],a[1],a[1]];break;default:i=[1/0,-1/0,1/0,-1/0]}e.addOp(r.OPS.constructPath,[[t],a,i]);n&&e.addOp(r.OPS.restore,null)}else{const n=e.argsArray[i];n[0].push(t);n[1].push(...a);const s=n[2];switch(t){case r.OPS.rectangle:const e=a[0]+a[2],t=a[1]+a[3];s[0]=Math.min(s[0],a[0],e);s[1]=Math.max(s[1],a[0],e);s[2]=Math.min(s[2],a[1],t);s[3]=Math.max(s[3],a[1],t);break;case r.OPS.moveTo:case r.OPS.lineTo:s[0]=Math.min(s[0],a[0]);s[1]=Math.max(s[1],a[0]);s[2]=Math.min(s[2],a[1]);s[3]=Math.max(s[3],a[1])}}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:a}){return y.ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){(0,r.warn)(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:a,localShadingPatternCache:r}){let n=r.get(e);if(!n){const i=l.Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,a).getIR();n=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(n=`${this.idFactory.getDocId()}_type3_${n}`);r.set(e,n);this.parsingType3Font?this.handler.send("commonobj",[n,"Pattern",i]):this.handler.send("obj",[n,this.pageIndex,"Pattern",i])}return n}handleColorN(e,t,a,n,s,o,c,h,u,d){const f=a.pop();if(f instanceof i.Name){const g=s.getRaw(f.name),p=g instanceof i.Ref&&u.getByRef(g);if(p)try{const r=n.base?n.base.getRgb(a,0):null,i=(0,l.getTilingPatternIR)(p.operatorListIR,p.dict,r);e.addOp(t,i);return}catch{}const b=this.xref.fetchIfRef(g);if(b){const i=b instanceof m.BaseStream?b.dict:b,s=i.get("PatternType");if(s===E){const r=n.base?n.base.getRgb(a,0):null;return this.handleTilingType(t,r,o,b,i,e,c,u)}if(s===N){const a=i.get("Shading"),r=i.getArray("Matrix"),n=this.parseShading({shading:a,resources:o,localColorSpaceCache:h,localShadingPatternCache:d});e.addOp(t,["Shading",n,r]);return}throw new r.FormatError(`Unknown PatternType: ${s}`)}}throw new r.FormatError(`Unknown PatternName: ${f}`)}_parseVisibilityExpression(e,t,a){if(++t>10){(0,r.warn)("Visibility expression is too deeply nested");return}const n=e.length,s=this.xref.fetchIfRef(e[0]);if(!(n<2)&&s instanceof i.Name){switch(s.name){case"And":case"Or":case"Not":a.push(s.name);break;default:(0,r.warn)(`Invalid operator ${s.name} in visibility expression`);return}for(let r=1;r0)return{type:"OCMD",expression:t}}const t=a.get("OCGs");if(Array.isArray(t)||t instanceof i.Dict){const e=[];if(Array.isArray(t))for(const a of t)e.push(a.toString());else e.push(t.objId);return{type:n,ids:e,policy:a.get("P")instanceof i.Name?a.get("P").name:null,expression:null}}if(t instanceof i.Ref)return{type:n,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:a,operatorList:n,initialState:s=null,fallbackFontDict:o=null}){a||=i.Dict.empty;s||=new EvalState;if(!n)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,l=this.xref;let h=!1;const u=new g.LocalImageCache,d=new g.LocalColorSpaceCache,f=new g.LocalGStateCache,p=new g.LocalTilingPatternCache,b=new Map,w=a.get("XObject")||i.Dict.empty,S=a.get("Pattern")||i.Dict.empty,x=new StateManager(s),C=new EvaluatorPreprocessor(e,l,x),k=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=C.savedStatesDepth;e0&&n.addOp(r.OPS.setGState,[t]);e=null;continue}}next(new Promise((function(e,s){if(!D)throw new r.FormatError("GState must be referred to by name.");const o=a.get("ExtGState");if(!(o instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const l=o.get(M);if(!(l instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");c.setGState({resources:a,gState:l,operatorList:n,cacheKey:M,task:t,stateManager:x,localGStateCache:f,localColorSpaceCache:d}).then(e,s)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.moveTo:case r.OPS.lineTo:case r.OPS.curveTo:case r.OPS.curveTo2:case r.OPS.curveTo3:case r.OPS.closePath:case r.OPS.rectangle:c.buildPath(n,s,e,h);continue;case r.OPS.markPoint:case r.OPS.markPointProps:case r.OPS.beginCompat:case r.OPS.endCompat:continue;case r.OPS.beginMarkedContentProps:if(!(e[0]instanceof i.Name)){(0,r.warn)(`Expected name for beginMarkedContentProps arg0=${e[0]}`);continue}if("OC"===e[0].name){next(c.parseMarkedContentProps(e[1],a).then((e=>{n.addOp(r.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`)}})));return}e=[e[0].name,e[1]instanceof i.Dict?e[1].get("MCID"):null];break;case r.OPS.beginMarkedContent:case r.OPS.endMarkedContent:default:if(null!==e){for(F=0,O=e.length;F{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:a,stateManager:n=null,includeMarkedContent:s=!1,sink:o,seenStyles:c=new Set,viewBox:l,markedContentData:h=null,disableNormalization:u=!1}){a||=i.Dict.empty;n||=new StateManager(new TextState);s&&(h||={level:0});const d={items:[],styles:Object.create(null)},f={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},p=[" "," "];let y=0;function saveLastChar(e){const t=(y+1)%2,a=" "!==p[y]&&" "===p[t];p[y]=e;y=t;return a}function shouldAddWhitepsace(){return" "!==p[y]&&" "===p[(y+1)%2]}function resetLastChars(){p[0]=p[1]=" ";y=0}const w=this,S=this.xref,x=[];let C=null;const k=new g.LocalImageCache,v=new g.LocalGStateCache,F=new EvaluatorPreprocessor(e,S,n);let O;function pushWhitespace({width:e=0,height:t=0,transform:a=f.prevTransform,fontName:r=f.fontName}){d.items.push({str:" ",dir:"ltr",width:e,height:t,transform:a,fontName:r,hasEOL:!1})}function getCurrentTextTransform(){const e=O.font,t=[O.fontSize*O.textHScale,0,0,O.fontSize,0,O.textRise];if(e.isType3Font&&(O.fontSize<=1||e.isCharBBox)&&!(0,r.isArrayEqual)(O.fontMatrix,r.FONT_IDENTITY_MATRIX)){const a=e.bbox[3]-e.bbox[1];a>0&&(t[3]*=a*O.fontMatrix[3])}return r.Util.transform(O.ctm,r.Util.transform(O.textMatrix,t))}function ensureTextContentItem(){if(f.initialized)return f;const{font:e,loadedName:t}=O;if(!c.has(t)){c.add(t);d.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}}f.fontName=t;const a=f.transform=getCurrentTextTransform();if(e.vertical){f.width=f.totalWidth=Math.hypot(a[0],a[1]);f.height=f.totalHeight=0;f.vertical=!0}else{f.width=f.totalWidth=0;f.height=f.totalHeight=Math.hypot(a[2],a[3]);f.vertical=!1}const r=Math.hypot(O.textLineMatrix[0],O.textLineMatrix[1]),n=Math.hypot(O.ctm[0],O.ctm[1]);f.textAdvanceScale=n*r;const{fontSize:i}=O;f.trackingSpaceMin=.102*i;f.notASpace=.03*i;f.negativeSpaceMax=-.2*i;f.spaceInFlowMin=.102*i;f.spaceInFlowMax=.6*i;f.hasEOL=!1;f.initialized=!0;return f}function updateAdvanceScale(){if(!f.initialized)return;const e=Math.hypot(O.textLineMatrix[0],O.textLineMatrix[1]),t=Math.hypot(O.ctm[0],O.ctm[1])*e;if(t!==f.textAdvanceScale){if(f.vertical){f.totalHeight+=f.height*f.textAdvanceScale;f.height=0}else{f.totalWidth+=f.width*f.textAdvanceScale;f.width=0}f.textAdvanceScale=t}}function handleSetFont(e,n){return w.loadFont(e,n,a).then((function(e){return e.font.isType3Font?e.loadType3Data(w,a,t).catch((function(){})).then((function(){return e})):e})).then((function(e){O.loadedName=e.loadedName;O.font=e.font;O.fontMatrix=e.font.fontMatrix||r.FONT_IDENTITY_MATRIX}))}function applyInverseRotation(e,t,a){const r=Math.hypot(a[0],a[1]);return[(a[0]*e+a[1]*t)/r,(a[2]*e+a[3]*t)/r]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let a=t[4],r=t[5];if(O.font?.vertical){if(al[2]||r+el[3])return!1}else if(a+el[2]||rl[3])return!1;if(!O.font||!f.prevTransform)return!0;let n=f.prevTransform[4],i=f.prevTransform[5];if(n===a&&i===r)return!0;let s=-1;t[0]&&0===t[1]&&0===t[2]?s=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(s=t[1]>0?90:270);switch(s){case 0:break;case 90:[a,r]=[r,a];[n,i]=[i,n];break;case 180:[a,r,n,i]=[-a,-r,-n,-i];break;case 270:[a,r]=[-r,-a];[n,i]=[-i,-n];break;default:[a,r]=applyInverseRotation(a,r,t);[n,i]=applyInverseRotation(n,i,f.prevTransform)}if(O.font.vertical){const e=(i-r)/f.textAdvanceScale,t=a-n,s=Math.sign(f.height);if(e.5*f.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>f.width){appendEOL();return!0}e<=s*f.notASpace&&resetLastChars();if(e<=s*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else f.height+=e;else if(!addFakeSpaces(e,f.prevTransform,s))if(0===f.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else f.height+=e;Math.abs(t)>.25*f.width&&flushTextContentItem();return!0}const o=(a-n)/f.textAdvanceScale,c=r-i,h=Math.sign(f.width);if(o.5*f.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(c)>f.height){appendEOL();return!0}o<=h*f.notASpace&&resetLastChars();if(o<=h*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else f.width+=o;else if(!addFakeSpaces(o,f.prevTransform,h))if(0===f.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else f.width+=o;Math.abs(c)>.25*f.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const a=O.font;if(!e){const e=O.charSpacing+t;e&&(a.vertical?O.translateTextMatrix(0,-e):O.translateTextMatrix(e*O.textHScale,0));return}const r=a.charsToGlyphs(e),n=O.fontMatrix[0]*O.fontSize;for(let e=0,i=r.length;e0){const e=x.join("");x.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case r.OPS.showText:if(!n.state.font){w.ensureStateFont(n.state);continue}buildTextContentItem({chars:b[0],extraSpacing:0});break;case r.OPS.nextLineShowText:if(!n.state.font){w.ensureStateFont(n.state);continue}O.carriageReturn();buildTextContentItem({chars:b[0],extraSpacing:0});break;case r.OPS.nextLineSetSpacingShowText:if(!n.state.font){w.ensureStateFont(n.state);continue}O.wordSpacing=b[0];O.charSpacing=b[1];O.carriageReturn();buildTextContentItem({chars:b[2],extraSpacing:0});break;case r.OPS.paintXObject:flushTextContentItem();C||(C=a.get("XObject")||i.Dict.empty);var D=b[0]instanceof i.Name,E=b[0].name;if(D&&k.getByName(E))break;next(new Promise((function(e,d){if(!D)throw new r.FormatError("XObject must be referred to by name.");let f=C.getRaw(E);if(f instanceof i.Ref){if(k.getByRef(f)){e();return}if(w.globalImageCache.getData(f,w.pageIndex)){e();return}f=S.fetch(f)}if(!(f instanceof m.BaseStream))throw new r.FormatError("XObject should be a stream");const g=f.dict.get("Subtype");if(!(g instanceof i.Name))throw new r.FormatError("XObject should have a Name subtype");if("Form"!==g.name){k.set(E,f.dict.objId,!0);e();return}const p=n.state.clone(),b=new StateManager(p),y=f.dict.getArray("Matrix");Array.isArray(y)&&6===y.length&&b.transform(y);enqueueChunk();const x={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;o.enqueue(e,t)},get desiredSize(){return o.desiredSize},get ready(){return o.ready}};w.getTextContent({stream:f,task:t,resources:f.dict.get("Resources")||a,stateManager:b,includeMarkedContent:s,sink:x,seenStyles:c,viewBox:l,markedContentData:h,disableNormalization:u}).then((function(){x.enqueueInvoked||k.set(E,f.dict.objId,!0);e()}),d)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!w.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring XObject: "${e}".`)}})));return;case r.OPS.setGState:D=b[0]instanceof i.Name;E=b[0].name;if(D&&v.getByName(E))break;next(new Promise((function(e,t){if(!D)throw new r.FormatError("GState must be referred to by name.");const n=a.get("ExtGState");if(!(n instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const s=n.get(E);if(!(s instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");const o=s.get("Font");if(o){flushTextContentItem();O.fontName=null;O.fontSize=o[1];handleSetFont(null,o[0]).then(e,t)}else{v.set(E,s.objId,!0);e()}})).catch((function(e){if(!(e instanceof r.AbortException)){if(!w.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.beginMarkedContent:flushTextContentItem();if(s){h.level++;d.items.push({type:"beginMarkedContent",tag:b[0]instanceof i.Name?b[0].name:null})}break;case r.OPS.beginMarkedContentProps:flushTextContentItem();if(s){h.level++;let e=null;b[1]instanceof i.Dict&&(e=b[1].get("MCID"));d.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${w.idFactory.getPageObjId()}_mc${e}`:null,tag:b[0]instanceof i.Name?b[0].name:null})}break;case r.OPS.endMarkedContent:flushTextContentItem();if(s){if(0===h.level)break;h.level--;d.items.push({type:"endMarkedContent"})}break;case r.OPS.restore:!e||e.font===O.font&&e.fontSize===O.fontSize&&e.fontName===O.fontName||flushTextContentItem()}if(d.items.length>=o.desiredSize){p=!0;break}}if(p)next(R);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}extractDataStructures(e,t,a){const n=this.xref;let s;const l=this.readToUnicode(a.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(a.composite){const t=e.get("CIDSystemInfo");t instanceof i.Dict&&(a.cidSystemInfo={registry:(0,r.stringToPDFString)(t.get("Registry")),ordering:(0,r.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof m.BaseStream&&(s=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const h=[];let u,d=null;if(e.has("Encoding")){u=e.get("Encoding");if(u instanceof i.Dict){d=u.get("BaseEncoding");d=d instanceof i.Name?d.name:null;if(u.has("Differences")){const e=u.get("Differences");let t=0;for(const a of e){const e=n.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof i.Name))throw new r.FormatError(`Invalid entry in 'Differences' array: ${e}`);h[t++]=e.name}}}}else if(u instanceof i.Name)d=u.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new r.FormatError(e);(0,r.warn)(e)}"MacRomanEncoding"!==d&&"MacExpertEncoding"!==d&&"WinAnsiEncoding"!==d&&(d=null)}const f=!a.file||a.isInternalFont,g=(0,c.getSymbolsFonts)()[a.name];d&&f&&g&&(d=null);if(d)a.defaultEncoding=(0,o.getEncoding)(d);else{const e=!!(a.flags&S.FontFlags.Symbolic),t=!!(a.flags&S.FontFlags.Nonsymbolic);u=o.StandardEncoding;"TrueType"!==a.type||t||(u=o.WinAnsiEncoding);if(e||g){u=o.MacRomanEncoding;f&&(/Symbol/i.test(a.name)?u=o.SymbolSetEncoding:/Dingbats/i.test(a.name)?u=o.ZapfDingbatsEncoding:/Wingdings/i.test(a.name)&&(u=o.WinAnsiEncoding))}a.defaultEncoding=u}a.differences=h;a.baseEncodingName=d;a.hasEncoding=!!d||h.length>0;a.dict=e;return l.then((e=>{a.toUnicode=e;return this.buildToUnicode(a)})).then((e=>{a.toUnicode=e;s&&(a.cidToGidMap=this.readCidToGidMap(s,e));return a}))}_simpleFontToUnicode(e,t=!1){(0,r.assert)(!e.composite,"Must be a simple font.");const a=[],n=e.defaultEncoding.slice(),i=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(n[e]=t)}const c=(0,C.getGlyphsUnicode)();for(const r in n){let s=n[r];if(""===s)continue;let l=c[s];if(void 0!==l){a[r]=String.fromCharCode(l);continue}let h=0;switch(s[0]){case"G":3===s.length&&(h=parseInt(s.substring(1),16));break;case"g":5===s.length&&(h=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const a=s.substring(1);if(t){h=parseInt(a,16);break}h=+a;if(Number.isNaN(h)&&Number.isInteger(parseInt(a,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":l=(0,v.getUnicodeForGlyph)(s,c);-1!==l&&(h=l);break;default:switch(s){case"f_h":case"f_t":case"T_h":a[r]=s.replaceAll("_","");continue}}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+r){const e=(0,o.getEncoding)(i);if(e&&(s=e[r])){a[r]=String.fromCharCode(c[s]);continue}}a[r]=String.fromCodePoint(h)}}return a}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new u.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof n.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:a}=e.cidSystemInfo,s=i.Name.get(`${t}-${a}-UCS2`),o=await n.CMapFactory.create({encoding:s,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[],l=[];e.cMap.forEach((function(e,t){if(t>65535)throw new r.FormatError("Max size of CID is 65,535");const a=o.lookup(t);if(a){l.length=0;for(let e=0,t=a.length;e{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){(0,r.warn)(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const a=[];for(let r=0,n=e.length;r>1;(0!==n||t.has(i))&&(a[i]=n)}return a}extractWidths(e,t,a){const r=this.xref;let n=[],s=0;const o=[];let c,l,h,u,d,f,g,p;if(a.composite){s=e.has("DW")?e.get("DW"):1e3;p=e.get("W");if(p)for(l=0,h=p.length;l{if(g){const e=[];let a=u;for(const t of g)e[a++]=this.xref.fetchIfRef(t);t.widths=e}else t.widths=this.buildCharCodeToWidth(n.widths,t);return new s.Font(e,y,t)}))}(e=new i.Dict(null)).set("FontName",i.Name.get(l));e.set("FontBBox",t.getArray("FontBBox")||[0,0,0,0])}let y=e.get("FontName"),w=t.get("BaseFont");"string"==typeof y&&(y=i.Name.get(y));"string"==typeof w&&(w=i.Name.get(w));const C=y?.name,k=w?.name;if(!m&&C!==k){(0,r.info)(`The FontDescriptor's FontName is "${C}" but should be the same as the Font's BaseFont "${k}".`);C&&k&&(k.startsWith(C)||!(0,c.isKnownFontName)(C)&&(0,c.isKnownFontName)(k))&&(y=null)}y||=w;if(!(y instanceof i.Name))throw new r.FormatError("invalid font name");let v,F,O,T,M;try{v=e.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`translateFont - fetching "${y.name}" font file: "${e}".`);v=new p.NullStream}let D=!1,E=null,N=null;if(v){if(v.dict){const e=v.dict.get("Subtype");e instanceof i.Name&&(F=e.name);O=v.dict.get("Length1");T=v.dict.get("Length2");M=v.dict.get("Length3")}}else if(g){const e=(0,h.getXfaFontName)(y.name);if(e){g.fontFamily=`${g.fontFamily}-PdfJS-XFA`;g.metrics=e.metrics||null;E=e.factors||null;v=await this.fetchStandardFontData(e.name);D=!!v;a=t=(0,h.getXfaFontDict)(y.name);o=!0}}else if(!m){const e=(0,c.getStandardFontName)(y.name);if(e){v=await this.fetchStandardFontData(e);D=!!v}!D&&this.options.useSystemFonts&&(N=(0,x.getFontSubstitution)(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,y.name,e))}b={type:l,name:y.name,subtype:F,file:v,length1:O,length2:T,length3:M,isInternalFont:D,loadedName:a.loadedName,composite:o,fixedPitch:!1,fontMatrix:t.getArray("FontMatrix")||r.FONT_IDENTITY_MATRIX,firstChar:u,lastChar:d,toUnicode:f,bbox:e.getArray("FontBBox")||t.getArray("FontBBox"),ascent:e.get("Ascent"),descent:e.get("Descent"),xHeight:e.get("XHeight")||0,capHeight:e.get("CapHeight")||0,flags:e.get("Flags"),italicAngle:e.get("ItalicAngle")||0,isType3Font:m,cssFontInfo:g,scaleFactors:E,systemFontInfo:N};if(o){const e=a.get("Encoding");e instanceof i.Name&&(b.cidEncoding=e.name);const t=await n.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});b.cMap=t;b.vertical=b.cMap.vertical}return this.extractDataStructures(t,a,b).then((a=>{this.extractWidths(t,e,a);return new s.Font(y.name,v,a)}))}static buildFontPaths(e,t,a,n){function buildPath(t){const i=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;a.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(n.ignoreErrors){(0,r.warn)(`buildFontPaths - ignoring ${i} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t?.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new i.Dict;e.set("BaseFont",i.Name.get("Helvetica"));e.set("Type",i.Name.get("FallbackType"));e.set("Subtype",i.Name.get("FallbackType"));e.set("Encoding",i.Name.get("WinAnsiEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=PartialEvaluator;class TranslatedFont{constructor({loadedName:e,font:t,dict:a,evaluatorOptions:r}){this.loadedName=e;this.font=t;this.dict=a;this._evaluatorOptions=r||D;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,a){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const n=e.clone({ignoreErrors:!1});n.parsingType3Font=!0;const s=new i.RefSet(e.type3FontRefs);this.dict.objId&&!s.has(this.dict.objId)&&s.put(this.dict.objId);n.type3FontRefs=s;const o=this.font,c=this.type3Dependencies;let l=Promise.resolve();const h=this.dict.get("CharProcs"),u=this.dict.get("Resources")||t,d=Object.create(null),f=r.Util.normalizeRect(o.bbox||[0,0,0,0]),g=f[2]-f[0],p=f[3]-f[1],m=Math.hypot(g,p);for(const e of h.getKeys())l=l.then((()=>{const t=h.get(e),i=new T.OperatorList;return n.getOperatorList({stream:t,task:a,resources:u,operatorList:i}).then((()=>{i.fnArray[0]===r.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(i,m);d[e]=i.getIR();for(const e of i.dependencies)c.add(e)})).catch((function(t){(0,r.warn)(`Type3 font resource "${e}" is not available.`);const a=new T.OperatorList;d[e]=a.getIR()}))}));this.type3Loaded=l.then((()=>{o.charProcOperatorList=d;if(this._bbox){o.isCharBBox=!0;o.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=NaN){const a=r.Util.normalizeRect(e.argsArray[0].slice(2)),n=a[2]-a[0],i=a[3]-a[1],s=Math.hypot(n,i);if(0===n||0===i){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(s/t)>=10){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);this._bbox[0]=Math.min(this._bbox[0],a[0]);this._bbox[1]=Math.min(this._bbox[1],a[1]);this._bbox[2]=Math.max(this._bbox[2],a[2]);this._bbox[3]=Math.max(this._bbox[3],a[3])}let o=0,c=e.length;for(;o=r.OPS.moveTo&&s<=r.OPS.endPath;if(i.variableArgs)c>o&&(0,r.info)(`Command ${n}: expected [0, ${o}] args, but received ${c} args.`);else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;){e.push(t.shift());c--}for(;cEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new r.FormatError(`Invalid ${e}`);(0,r.warn)(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(s,t);e.fn=s;e.args=t;return!0}if(a===i.EOF)return!1;if(null!==a){null===t&&(t=[]);t.push(a);if(t.length>33)throw new r.FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case r.OPS.save:this.stateManager.save();break;case r.OPS.restore:this.stateManager.restore();break;case r.OPS.transform:this.stateManager.transform(t)}}}t.EvaluatorPreprocessor=EvaluatorPreprocessor},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.IdentityCMap=t.CMapFactory=t.CMap=void 0;var r=a(2),n=a(4),i=a(5),s=a(15),o=a(16),c=a(3),l=a(8);const h=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],u=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,a){this.codespaceRanges[e-1].push(t,a);this.numCodespaceRanges++}mapCidRange(e,t,a){if(t-e>u)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=a++}mapBfRange(e,t,a){if(t-e>u)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const r=a.length-1;for(;e<=t;){this._map[e++]=a;const t=a.charCodeAt(r)+1;t>255?a=a.substring(0,r-1)+String.fromCharCode(a.charCodeAt(r-1)+1)+"\0":a=a.substring(0,r)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,a){if(t-e>u)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const r=a.length;let n=0;for(;e<=t&&n>>0;const s=n[i];for(let e=0,t=s.length;e=t&&r<=n){a.charcode=r;a.length=i+1;return}}}a.charcode=0;a.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let a=0,r=t.length;a=n&&e<=i)return a+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=CMap;class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,a){(0,r.unreachable)("should not call mapCidRange")}mapBfRange(e,t,a){(0,r.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,a){(0,r.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,r.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,r.unreachable)("should not access .isIdentityCMap")}}t.IdentityCMap=IdentityCMap;function strToInt(e){let t=0;for(let a=0;a>>0}function expectString(e){if("string"!=typeof e)throw new r.FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new r.FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=a;e.mapOne(r,i)}}function parseBfRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();if(Number.isInteger(a)||"string"==typeof a){const t=Number.isInteger(a)?String.fromCharCode(a):a;e.mapBfRange(r,i,t)}else{if(!(0,n.isCmd)(a,"["))break;{a=t.getObj();const s=[];for(;!(0,n.isCmd)(a,"]")&&a!==n.EOF;){s.push(a);a=t.getObj()}e.mapBfRangeToArray(r,i,s)}}}throw new r.FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectInt(a);const i=a;e.mapOne(r,i)}}function parseCidRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();expectInt(a);const s=a;e.mapCidRange(r,i,s)}}function parseCodespaceRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcodespacerange"))return;if("string"!=typeof a)break;const r=strToInt(a);a=t.getObj();if("string"!=typeof a)break;const i=strToInt(a);e.addCodespaceRange(a.length,r,i)}throw new r.FormatError("Invalid codespace range.")}function parseWMode(e,t){const a=t.getObj();Number.isInteger(a)&&(e.vertical=!!a)}function parseCMapName(e,t){const a=t.getObj();a instanceof n.Name&&(e.name=a.name)}async function parseCMap(e,t,a,i){let s,o;e:for(;;)try{const a=t.getObj();if(a===n.EOF)break;if(a instanceof n.Name){"WMode"===a.name?parseWMode(e,t):"CMapName"===a.name&&parseCMapName(e,t);s=a}else if(a instanceof n.Cmd)switch(a.cmd){case"endcmap":break e;case"usecmap":s instanceof n.Name&&(o=s.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof c.MissingDataException)throw e;(0,r.warn)("Invalid cMap data: "+e);continue}!i&&o&&(i=o);return i?extendCMap(e,a,i):e}async function extendCMap(e,t,a){e.useCMap=await createBuiltInCMap(a,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let a=0;aextendCMap(i,t,e)));if(n===r.CMapCompressionType.NONE){const e=new o.Lexer(new l.Stream(a));return parseCMap(i,e,t,null)}throw new Error(`Invalid CMap "compressionType" value: ${n}`)}t.CMapFactory=class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:a}){if(e instanceof n.Name)return createBuiltInCMap(e.name,t);if(e instanceof i.BaseStream){const r=await parseCMap(new CMap,new o.Lexer(e),t,a);return r.isIdentityCMap?createBuiltInCMap(r.name,t):r}throw new Error("Encoding required.")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BinaryCMapReader=void 0;var r=a(2);function hexToInt(e,t){let a=0;for(let r=0;r<=t;r++)a=a<<8|e[r];return a>>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,a){let r=0;for(let n=a;n>=0;n--){r+=e[n]+t[n];e[n]=255&r;r>>=8}}function incHex(e,t){let a=1;for(let r=t;r>=0&&a>0;r--){a+=e[r];e[r]=255&a;a>>=8}}const n=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const a=this.readByte();if(a<0)throw new r.FormatError("unexpected EOF in bcmap");e=!(128&a);t=t<<7|127&a}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let a;const n=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new r.FormatError("unexpected EOF in bcmap");a=!(128&e);n[i++]=127&e}while(!a);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&n.length>0;){o|=n[--i]<>=8;c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const a=1&e[t]?255:0;let r=0;for(let n=0;n<=t;n++){r=(1&r)<<8|e[n];e[n]=r>>1^a}}readString(){const e=this.readNumber(),t=new Array(e);for(let a=0;a=0;){const e=f>>5;if(7===e){switch(31&f){case 0:r.readString();break;case 1:s=r.readString()}continue}const a=!!(16&f),i=15&f;if(i+1>n)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const g=1,p=r.readNumber();switch(e){case 0:r.readHex(o,i);r.readHexNumber(c,i);addHex(c,o,i);t.addCodespaceRange(i+1,hexToInt(o,i),hexToInt(c,i));for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0});t.Parser=t.Linearization=t.Lexer=void 0;var r=a(2),n=a(4),i=a(3),s=a(8),o=a(17),c=a(19),l=a(20),h=a(22),u=a(23),d=a(26),f=a(29),g=a(31),p=a(32),m=a(33);class Parser{constructor({lexer:e,xref:t,allowStreams:a=!1,recoveryMode:r=!1}){this.lexer=e;this.xref=t;this.allowStreams=a;this.recoveryMode=r;this.imageCache=Object.create(null);this._imageId=0;this.refill()}refill(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()}shift(){if(this.buf2 instanceof n.Cmd&&"ID"===this.buf2.cmd){this.buf1=this.buf2;this.buf2=null}else{this.buf1=this.buf2;this.buf2=this.lexer.getObj()}}tryShift(){try{this.shift();return!0}catch(e){if(e instanceof i.MissingDataException)throw e;return!1}}getObj(e=null){const t=this.buf1;this.shift();if(t instanceof n.Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const a=[];for(;!(0,n.isCmd)(this.buf1,"]")&&this.buf1!==n.EOF;)a.push(this.getObj(e));if(this.buf1===n.EOF){if(this.recoveryMode)return a;throw new i.ParserEOFException("End of file inside array.")}this.shift();return a;case"<<":const s=new n.Dict(this.xref);for(;!(0,n.isCmd)(this.buf1,">>")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name)){(0,r.info)("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;s.set(t,this.getObj(e))}if(this.buf1===n.EOF){if(this.recoveryMode)return s;throw new i.ParserEOFException("End of file inside dictionary.")}if((0,n.isCmd)(this.buf2,"stream"))return this.allowStreams?this.makeStream(s,e):s;this.shift();return s;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,n.isCmd)(this.buf2,"R")){const e=n.Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,a=e.pos;let o,c,l=0;for(;-1!==(o=e.getByte());)if(0===l)l=69===o?1:0;else if(1===l)l=73===o?2:0;else if(32===o||10===o||13===o){c=e.pos;const a=e.peekBytes(15),i=a.length;if(0===i)break;for(let e=0;e127))){l=0;break}}if(2!==l)continue;if(!t){(0,r.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const h=new Lexer(new s.Stream(a.slice()),t);h._hexStringWarn=()=>{};let u=0;for(;;){const e=h.getObj();if(e===n.EOF){l=0;break}if(e instanceof n.Cmd){const a=t[e.cmd];if(!a){l=0;break}if(a.variableArgs?u<=a.numArgs:u===a.numArgs)break;u=0}else u++}if(2===l)break}else l=0;if(-1===o){(0,r.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(c){(0,r.warn)('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-c))}}let h=4;e.skip(-h);o=e.peekByte();e.skip(h);(0,i.isWhiteSpace)(o)||h--;return e.pos-h-a}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let a,n,i=!1;for(;-1!==(a=e.getByte());)if(255===a){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:n=e.getUint16();n>2?e.skip(n-2):e.skip(-2)}if(i)break}const s=e.pos-t;if(-1===a){(0,r.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-s);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return s}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte());)if(126===a){const t=e.pos;a=e.peekByte();for(;(0,i.isWhiteSpace)(a);){e.skip();a=e.peekByte()}if(62===a){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte())&&62!==a;);const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}inlineStreamSkipEI(e){let t,a=0;for(;-1!==(t=e.getByte());)if(0===a)a=69===t?1:0;else if(1===a)a=73===t?2:0;else if(2===a)break}makeInlineImage(e){const t=this.lexer,a=t.stream,i=Object.create(null);let s;for(;!(0,n.isCmd)(this.buf1,"ID")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name))throw new r.FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;i[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(s=a.pos-t.beginInlineImagePos);const o=this.xref.fetchIfRef(i.F||i.Filter);let c;if(o instanceof n.Name)c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);e instanceof n.Name&&(c=e.name)}const l=a.pos;let h,u;switch(c){case"DCT":case"DCTDecode":h=this.findDCTDecodeInlineStreamEnd(a);break;case"A85":case"ASCII85Decode":h=this.findASCII85DecodeInlineStreamEnd(a);break;case"AHx":case"ASCIIHexDecode":h=this.findASCIIHexDecodeInlineStreamEnd(a);break;default:h=this.findDefaultInlineStreamEnd(a)}if(h<1e3&&s>0){const e=a.pos;a.pos=t.beginInlineImagePos;u=function getInlineImageCacheKey(e){const t=[],a=e.length;let r=0;for(;r=r){a.pos+=s;return a.pos-e}s++}a.pos+=i}return-1}makeStream(e,t){const a=this.lexer;let s=a.stream;a.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(!Number.isInteger(c)){(0,r.info)(`Bad length "${c&&c.toString()}" in stream.`);c=0}s.pos=o+c;a.nextChar();if(this.tryShift()&&(0,n.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const a=1;for(let n=1;n<=a;n++){const a=e.length-n,c=e.slice(0,a),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(a+1)[a];if(!(0,i.isWhiteSpace)(e))break;(0,r.info)(`Found "${(0,r.bytesToString)(c)}" when searching for endstream command.`);t=l;break}}if(t<0)throw new r.FormatError("Missing endstream command.")}c=t;a.nextChar();this.shift();this.shift()}this.shift();s=s.makeSubStream(o,c,e);t&&(s=t.createStream(s,c));s=this.filter(s,e,c);s.dict=e;return s}filter(e,t,a){let i=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(i instanceof n.Name){Array.isArray(s)&&(0,r.warn)("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,i.name,a,s)}let o=a;if(Array.isArray(i)){const t=i,a=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,a=0,n=1;if(45===e){n=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){a=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if((0,i.isWhiteSpace)(e)||-1===e){(0,r.info)(`Lexer.getNumber - "${t}".`);return 0}throw new r.FormatError(t)}let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const r=e-48;if(t)o=10*o+r;else{0!==a&&(a*=10);s=10*s+r}}else if(46===e){if(0!==a)break;a=1}else if(45===e)(0,r.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){c=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==a&&(s/=a);t&&(s*=10**(c*o));return n*s}getString(){let e=1,t=!1;const a=this.strBuf;a.length=0;let n=this.nextChar();for(;;){let i=!1;switch(0|n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 40:++e;a.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else a.push(")");break;case 92:n=this.nextChar();switch(n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 110:a.push("\n");break;case 114:a.push("\r");break;case 116:a.push("\t");break;case 98:a.push("\b");break;case 102:a.push("\f");break;case 92:case 40:case 41:a.push(String.fromCharCode(n));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&n;n=this.nextChar();i=!0;if(n>=48&&n<=55){e=(e<<3)+(15&n);n=this.nextChar();if(n>=48&&n<=55){i=!1;e=(e<<3)+(15&n)}}a.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:a.push(String.fromCharCode(n))}break;default:a.push(String.fromCharCode(n))}if(t)break;i||(n=this.nextChar())}return a.join("")}getName(){let e,t;const a=this.strBuf;a.length=0;for(;(e=this.nextChar())>=0&&!b[e];)if(35===e){e=this.nextChar();if(b[e]){(0,r.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");a.push("#");break}const n=toHexDigit(e);if(-1!==n){t=e;e=this.nextChar();const i=toHexDigit(e);if(-1===i){(0,r.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);a.push("#",String.fromCharCode(t));if(b[e])break;a.push(String.fromCharCode(e));continue}a.push(String.fromCharCode(n<<4|i))}else a.push("#",String.fromCharCode(e))}else a.push(String.fromCharCode(e));a.length>127&&(0,r.warn)(`Name token is longer than allowed by the spec: ${a.length}`);return n.Name.get(a.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,r.warn)(`getHexString - ignoring invalid character: ${e}`):(0,r.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,a,n=this.currentChar,i=!0;this._hexStringNumWarn=0;for(;;){if(n<0){(0,r.warn)("Unterminated hex string");break}if(62===n){this.nextChar();break}if(1!==b[n]){if(i){t=toHexDigit(n);if(-1===t){this._hexStringWarn(n);n=this.nextChar();continue}}else{a=toHexDigit(n);if(-1===a){this._hexStringWarn(n);n=this.nextChar();continue}e.push(String.fromCharCode(t<<4|a))}i=!i;n=this.nextChar()}else n=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==b[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return n.Cmd.get("[");case 93:this.nextChar();return n.Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return n.Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return n.Cmd.get(">>")}return n.Cmd.get(">");case 123:this.nextChar();return n.Cmd.get("{");case 125:this.nextChar();return n.Cmd.get("}");case 41:this.nextChar();throw new r.FormatError(`Illegal character: ${t}`)}let a=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return n.Cmd.get(a)}}const i=this.knownCommands;let s=void 0!==i?.[a];for(;(t=this.nextChar())>=0&&!b[t];){const e=a+String.fromCharCode(t);if(s&&void 0===i[e])break;if(128===a.length)throw new r.FormatError(`Command token too long: ${a.length}`);a=e;s=void 0!==i?.[a]}if("true"===a)return!0;if("false"===a)return!1;if("null"===a)return null;"BI"===a&&(this.beginInlineImagePos=this.stream.pos);return n.Cmd.get(a)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=Lexer;t.Linearization=class Linearization{static create(e){function getInt(e,t,a=!1){const r=e.get(t);if(Number.isInteger(r)&&(a?r>=0:r>0))return r;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),a=t.getObj(),r=t.getObj(),i=t.getObj(),s=t.getObj();let o,c;if(!(Number.isInteger(a)&&Number.isInteger(r)&&(0,n.isCmd)(i,"obj")&&s instanceof n.Dict&&"number"==typeof(o=s.get("Linearized"))&&o>0))return null;if((c=getInt(s,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:c,hints:function getHints(e){const t=e.get("H");let a;if(Array.isArray(t)&&(2===(a=t.length)||4===a)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(s),objectNumberFirst:getInt(s,"O"),endFirst:getInt(s,"E"),numPages:getInt(s,"N"),mainXRefEntriesOffset:getInt(s,"T"),pageFirst:s.has("P")?getInt(s,"P",!0):0}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Ascii85Stream=void 0;var r=a(18),n=a(3);class Ascii85Stream extends r.DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const a=this.bufferLength;let r,i;if(122===t){r=this.ensureBuffer(a+4);for(i=0;i<4;++i)r[a+i]=0;this.bufferLength+=4}else{const s=this.input;s[0]=t;for(i=1;i<5;++i){t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();s[i]=t;if(-1===t||126===t)break}r=this.ensureBuffer(a+i-1);this.bufferLength+=i-1;if(i<5){for(;i<5;++i)s[i]=117;this.eof=!0}let o=0;for(i=0;i<5;++i)o=85*o+(s[i]-33);for(i=3;i>=0;--i){r[a+i]=255&o;o>>=8}}}}t.Ascii85Stream=Ascii85Stream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StreamsSequenceStream=t.DecodeStream=void 0;var r=a(5),n=a(8);const i=new Uint8Array(0);class DecodeStream extends r.BaseStream{constructor(e){super();this._rawMinBufferLength=e||0;this.pos=0;this.bufferLength=0;this.eof=!1;this.buffer=i;this.minBufferLength=512;if(e)for(;this.minBufferLengthr&&(a=r)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength}this.pos=a;return this.buffer.subarray(t,a)}reset(){this.pos=0}makeSubStream(e,t,a=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const a=e+t;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new n.Stream(this.buffer,e,t,a)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=DecodeStream;t.StreamsSequenceStream=class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){let a=0;for(const t of e)a+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(a);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let a;try{a=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const r=this.bufferLength,n=r+a.length;this.ensureBuffer(n).set(a,r);this.bufferLength=n}getBaseStreams(){const e=[];for(const t of this.streams){const a=t.getBaseStreams();a&&e.push(...a)}return e.length>0?e:null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AsciiHexStream=void 0;var r=a(18);class AsciiHexStream extends r.DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,a=this.ensureBuffer(this.bufferLength+t);let r=this.bufferLength,n=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(n<0)n=e;else{a[r++]=n<<4|e;n=-1}}if(n>=0&&this.eof){a[r++]=n<<4;n=-1}this.firstDigit=n;this.bufferLength=r}}t.AsciiHexStream=AsciiHexStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxStream=void 0;var r=a(21),n=a(18),i=a(4);class CCITTFaxStream extends n.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;a instanceof i.Dict||(a=i.Dict.empty);const n={next:()=>e.getByte()};this.ccittFaxDecoder=new r.CCITTFaxDecoder(n,{K:a.get("K"),EndOfLine:a.get("EndOfLine"),EncodedByteAlign:a.get("EncodedByteAlign"),Columns:a.get("Columns"),Rows:a.get("Rows"),EndOfBlock:a.get("EndOfBlock"),BlackIs1:a.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=CCITTFaxStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxDecoder=void 0;var r=a(2);const n=-1,i=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;this.eoblock=t.EndOfBlock??!0;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;let a;for(;0===(a=this._lookBits(12));)this._eatBits(1);1===a&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,a=this.columns;let i,s,o,c,l;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let o,l,h;if(this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}this._addPixels(t[this.codingPos]+o,s);t[this.codingPos]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s);s^=1}}let u=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){o=this._lookBits(12);if(this.eoline)for(;o!==n&&1!==o;){this._eatBits(1);o=this._lookBits(12)}else for(;0===o;){this._eatBits(1);o=this._lookBits(12)}if(1===o){this._eatBits(12);u=!0}else o===n&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&u&&this.byteAlign){o=this._lookBits(12);if(1===o){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(c=0;c<4;++c){o=this._lookBits(12);1!==o&&(0,r.info)("bad rtc code: "+o);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){o=this._lookBits(13);if(o===n){this.eof=!0;return-1}if(o>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&o)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){l=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]o){l<<=o;1&this.codingPos||(l|=255>>8-o);this.outputBits-=o;o=0}else{l<<=this.outputBits;1&this.codingPos||(l|=255>>8-this.outputBits);o-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){l<<=o;o=0}}}while(o)}this.black&&(l^=255);return l}_addPixels(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}this.codingPos=n}_addPixelsNeg(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}else if(e0&&e=i){const t=a[e-i];if(t[0]===r){this._eatBits(r);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=i[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,i);if(e[0]&&e[2])return e[1]}(0,r.info)("Bad two dim code");return n}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===n)return 1;e=t>>5==0?s[t]:o[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];e=this._findTableCode(11,12,s);if(e[0])return e[1]}(0,r.info)("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===n)return 1;t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];e=this._findTableCode(7,12,l,64);if(e[0])return e[1];e=this._findTableCode(10,13,c);if(e[0])return e[1]}(0,r.info)("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FlateStream=void 0;var r=a(18),n=a(2);const i=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const a=e.getByte(),r=e.getByte();if(-1===a||-1===r)throw new n.FormatError(`Invalid header in flate stream: ${a}, ${r}`);if(8!=(15&a))throw new n.FormatError(`Unknown compression method in flate stream: ${a}, ${r}`);if(((a<<8)+r)%31!=0)throw new n.FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`);if(32&r)throw new n.FormatError(`FDICT bit set in flate stream: ${a}, ${r}`);this.codeSize=0;this.codeBuf=0}getBits(e){const t=this.str;let a,r=this.codeSize,i=this.codeBuf;for(;r>e;this.codeSize=r-=e;return a}getCode(e){const t=this.str,a=e[0],r=e[1];let i,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l;this.codeSize=s-l;return h}generateHuffmanTable(e){const t=e.length;let a,r=0;for(a=0;ar&&(r=e[a]);const n=1<>=1}for(a=e;a>=1;if(0===u){let t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let r=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");r|=t<<8;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let i=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");i|=t<<8;if(i!==(65535&~r)&&(0!==r||0!==i))throw new n.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const s=this.bufferLength,o=s+r;e=this.ensureBuffer(o);this.bufferLength=o;if(0===r)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(r);e.set(t,s);t.length0;)u[o++]=g}r=this.generateHuffmanTable(u.subarray(0,e));h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let a=this.getCode(r);if(a<256){if(f+1>=d){e=this.ensureBuffer(f+1);d=e.length}e[f++]=a;continue}if(256===a){this.bufferLength=f;return}a-=257;a=s[a];let n=a>>16;n>0&&(n=this.getBits(n));t=(65535&a)+n;a=this.getCode(h);a=o[a];n=a>>16;n>0&&(n=this.getBits(n));const i=(65535&a)+n;if(f+t>=d){e=this.ensureBuffer(f+t);d=e.length}for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Stream=void 0;var r=a(5),n=a(18),i=a(4),s=a(24),o=a(2);class Jbig2Stream extends n.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,o.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new s.Jbig2Image,t=[];if(this.params instanceof i.Dict){const e=this.params.get("JBIG2Globals");if(e instanceof r.BaseStream){const a=e.getBytes();t.push({data:a,start:0,end:a.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const a=e.parseChunks(t),n=a.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Image=void 0;var r=a(2),n=a(3),i=a(25),s=a(21);class Jbig2Error extends r.BaseException{constructor(e){super(`JBIG2 error: ${e}`,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,a){this.data=e;this.start=t;this.end=a}get decoder(){const e=new i.ArithmeticDecoder(this.data,this.start,this.end);return(0,r.shadow)(this,"decoder",e)}get contextCache(){const e=new ContextCache;return(0,r.shadow)(this,"contextCache",e)}}const o=2**31-1,c=-(2**31);function decodeInteger(e,t,a){const r=e.getContexts(t);let n=1;function readBits(e){let t=0;for(let i=0;i>>0}const i=readBits(1),s=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);let l;0===i?l=s:s>0&&(l=-s);return l>=c&&l<=o?l:null}function decodeIAID(e,t,a){const r=e.getContexts("IAID");let n=1;for(let e=0;e=O&&$=T){q=q<<1&y;for(b=0;b=0&&j=0){U=N[_][j];U&&(q|=U<=e?l<<=1:l=l<<1|k[o][c]}for(p=0;p=x||c<0||c>=S?l<<=1:l=l<<1|r[o][c]}const u=v.readBit(F,l);t[s]=u}}return k}function decodeTextRegion(e,t,a,r,n,i,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let S,x;for(S=0;S1&&(n=e?y.readBits(b):decodeInteger(k,"IAIT",C));const i=s*v+n,F=e?f.symbolIDTable.decode(y):decodeIAID(k,C,c),O=t&&(e?y.readBit():decodeInteger(k,"IARI",C));let T=o[F],M=T[0].length,D=T.length;if(O){const e=decodeInteger(k,"IARDW",C),t=decodeInteger(k,"IARDH",C);M+=e;D+=t;T=decodeRefinement(M,D,g,T,(e>>1)+decodeInteger(k,"IARDX",C),(t>>1)+decodeInteger(k,"IARDY",C),!1,p,m)}const E=i-(1&u?0:D-1),N=r-(2&u?M-1:0);let R,L,$;if(l){for(R=0;R>5&7;const h=[31&o];let u=t+6;if(7===o){c=536870911&(0,n.readUint32)(e,u-1);u+=3;let t=c+7>>3;h[0]=e[u++];for(;--t>0;)h.push(e[u++])}else if(5===o||6===o)throw new Jbig2Error("invalid referred-to flags");a.retainBits=h;let d=4;a.number<=256?d=1:a.number<=65536&&(d=2);const f=[];let p,m;for(p=0;p>>24&255;i[3]=t.height>>16&255;i[4]=t.height>>8&255;i[5]=255&t.height;for(p=u,m=e.length;p>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;h+=2;if(!e.huffman){l=0===e.template?4:1;o=[];for(c=0;c>2&3;u.stripSize=1<>4&3;u.transposed=!!(64&d);u.combinationOperator=d>>7&3;u.defaultPixelValue=d>>9&1;u.dsOffset=d<<17>>27;u.refinementTemplate=d>>15&1;if(u.huffman){const e=(0,n.readUint16)(r,h);h+=2;u.huffmanFS=3&e;u.huffmanDS=e>>2&3;u.huffmanDT=e>>4&3;u.huffmanRefinementDW=e>>6&3;u.huffmanRefinementDH=e>>8&3;u.huffmanRefinementDX=e>>10&3;u.huffmanRefinementDY=e>>12&3;u.huffmanRefinementSizeSelector=!!(16384&e)}if(u.refinement&&!u.refinementTemplate){o=[];for(c=0;c<2;c++){o.push({x:(0,n.readInt8)(r,h),y:(0,n.readInt8)(r,h+1)});h+=2}u.refinementAt=o}u.numberOfSymbolInstances=(0,n.readUint32)(r,h);h+=4;s=[u,a.referredTo,r,h,i];break;case 16:const f={},p=r[h++];f.mmr=!!(1&p);f.template=p>>1&3;f.patternWidth=r[h++];f.patternHeight=r[h++];f.maxPatternIndex=(0,n.readUint32)(r,h);h+=4;s=[f,a.number,r,h,i];break;case 22:case 23:const m={};m.info=readRegionSegmentInformation(r,h);h+=g;const b=r[h++];m.mmr=!!(1&b);m.template=b>>1&3;m.enableSkip=!!(8&b);m.combinationOperator=b>>4&7;m.defaultPixelValue=b>>7&1;m.gridWidth=(0,n.readUint32)(r,h);h+=4;m.gridHeight=(0,n.readUint32)(r,h);h+=4;m.gridOffsetX=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridOffsetY=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridVectorX=(0,n.readUint16)(r,h);h+=2;m.gridVectorY=(0,n.readUint16)(r,h);h+=2;s=[m,a.referredTo,r,h,i];break;case 38:case 39:const y={};y.info=readRegionSegmentInformation(r,h);h+=g;const w=r[h++];y.mmr=!!(1&w);y.template=w>>1&3;y.prediction=!!(8&w);if(!y.mmr){l=0===y.template?4:1;o=[];for(c=0;c>2&1;S.combinationOperator=x>>3&3;S.requiresBuffer=!!(32&x);S.combinationOperatorOverride=!!(64&x);s=[S];break;case 49:case 50:case 51:case 62:break;case 53:s=[a.number,r,h,i];break;default:throw new Jbig2Error(`segment type ${a.typeName}(${a.type}) is not implemented`)}const u="on"+a.typeName;u in t&&t[u].apply(t,s)}function processSegments(e,t){for(let a=0,r=e.length;a>3,a=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&a.fill(255);this.buffer=a}drawBitmap(e,t){const a=this.currentPageInfo,r=e.width,n=e.height,i=a.width+7>>3,s=a.combinationOperatorOverride?e.combinationOperator:a.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*i+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,a,r){const n=e.info,i=new DecodingContext(t,a,r),s=decodeBitmap(e.mmr,n.width,n.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(n,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,a,r,i,s){let o,c;if(e.huffman){o=function getSymbolDictionaryHuffmanTables(e,t,a){let r,n,i,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:r=getStandardTable(e.huffmanDHSelector+4);break;case 3:r=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:n=getStandardTable(e.huffmanDWSelector+2);break;case 3:n=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){i=getCustomHuffmanTable(o,t,a);o++}else i=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,a):getStandardTable(1);return{tableDeltaHeight:r,tableDeltaWidth:n,tableBitmapSize:i,tableAggregateInstances:s}}(e,a,this.customTables);c=new Reader(r,i,s)}let l=this.symbols;l||(this.symbols=l={});const h=[];for(const e of a){const t=l[e];t&&h.push(...t)}const u=new DecodingContext(r,i,s);l[t]=function decodeSymbolDictionary(e,t,a,r,i,s,o,c,l,h,u,d){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const f=[];let g=0,p=(0,n.log2)(a.length+r);const m=u.decoder,b=u.contextCache;let y,w;if(e){y=getStandardTable(1);w=[];p=Math.max(p,1)}for(;f.length1)y=decodeTextRegion(e,t,r,g,0,n,1,a.concat(f),p,0,0,1,0,s,l,h,u,0,d);else{const e=decodeIAID(b,m,p),t=decodeInteger(b,"IARDX",m),n=decodeInteger(b,"IARDY",m);y=decodeRefinement(r,g,l,e=32){let a,r,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");r=n.readBits(2)+3;a=i[e-1].prefixLength;break;case 33:r=n.readBits(3)+3;a=0;break;case 34:r=n.readBits(7)+11;a=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;b--){M=e?decodeMMRBitmap(T,l,h,!0):decodeBitmap(!1,l,h,a,!1,null,F,p);O[b]=M}for(D=0;D=0;y--){N^=O[y][D][E];R|=N<>8;_=d+D*f-E*g>>8;if($>=0&&$+C<=r&&_>=0&&_+k<=i)for(b=0;b=i)){U=m[t];j=L[b];for(y=0;y=0&&e>1&7),l=1+(r>>4&7),h=[];let u,d,f=i;do{u=o.readBits(c);d=o.readBits(l);h.push(new HuffmanLine([f,u,d,0]));f+=1<>t&1;if(t<=0)this.children[a]=new HuffmanTreeNode(e);else{let r=this.children[a];r||(this.children[a]=r=new HuffmanTreeNode(null));r.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,a=e.length;t0&&this.rootNode.buildTree(a,a.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let a=0;for(let r=0;r=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,a=0;for(t=e-1;t>=0;t--)a|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,a){let r=0;for(let n=0,i=t.length;n>a&1;a--}}if(r&&!l){const e=5;for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0});t.ArithmeticDecoder=void 0;const a=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class ArithmeticDecoder{constructor(e,t,a){this.data=e;this.bp=t;this.dataEnd=a;this.chigh=e[t];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let r=e[t]>>1,n=1&e[t];const i=a[r],s=i.qe;let o,c=this.a-s;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&c));this.a=c;e[t]=r<<1|n;return o}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.JpegStream=void 0;var r=a(18),n=a(4),i=a(27),s=a(2);class JpegStream extends r.DecodeStream{constructor(e,t,a){let r;for(;-1!==(r=e.getByte());)if(255===r){e.skip(-1);break}super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("D","Decode");if((this.forceRGBA||this.forceRGB)&&Array.isArray(t)){const a=this.dict.get("BPC","BitsPerComponent")||8,r=t.length,n=new Int32Array(r);let i=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.JpegImage=void 0;var r=a(2),n=a(28),i=a(3);class JpegError extends r.BaseException{constructor(e){super(`JPEG error: ${e}`,"JpegError")}}class DNLMarkerError extends r.BaseException{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends r.BaseException{constructor(e){super(e,"EOIMarkerError")}}const s=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),o=4017,c=799,l=3406,h=2276,u=1567,d=3784,f=5793,g=2896;function buildHuffmanTable(e,t){let a,r,n=0,i=16;for(;i>0&&!e[i-1];)i--;const s=[{children:[],index:0}];let o,c=s[0];for(a=0;a0;)c=s.pop();c.index++;s.push(c);for(;s.length<=a;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}n++}if(a+10){b--;return m>>b&1}m=e[t++];if(255===m){const r=e[t++];if(r){if(220===r&&d){t+=2;const r=(0,i.readUint16)(e,t);t+=2;if(r>0&&r!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r)}else if(217===r){if(d){const e=x*(8===a.precision?8:0);if(e>0&&Math.round(a.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(m<<8|r).toString(16)}`)}}b=7;return m>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){y--;return}let a=c;const r=l;for(;a<=r;){const r=decodeHuffman(e.huffmanTableAC),n=15&r,i=r>>4;if(0===n){if(i<15){y=receive(i)+(1<>4;if(0===n)if(o<15){y=receive(o)+(1<>4;if(0===r){if(i<15)break;n+=16;continue}n+=i;const o=s[n];e.blockData[t+o]=receiveAndExtend(r);n++}};let D,E=0;const N=1===C?n[0].blocksPerLine*n[0].blocksPerColumn:f*a.mcusPerColumn;let R,L;for(;E<=N;){const a=o?Math.min(N-E,o):N;if(a>0){for(v=0;v0?"unexpected":"excessive";(0,r.warn)(`decodeScan - ${e} MCU data, current marker is: ${D.invalid}`);t=D.offset}if(!(D.marker>=65488&&D.marker<=65495))break;t+=2}return t-p}function quantizeAndInverse(e,t,a){const r=e.quantizationTable,n=e.blockData;let i,s,p,m,b,y,w,S,x,C,k,v,F,O,T,M,D;if(!r)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){x=n[t+e];C=n[t+e+1];k=n[t+e+2];v=n[t+e+3];F=n[t+e+4];O=n[t+e+5];T=n[t+e+6];M=n[t+e+7];x*=r[e];if(0!=(C|k|v|F|O|T|M)){C*=r[e+1];k*=r[e+2];v*=r[e+3];F*=r[e+4];O*=r[e+5];T*=r[e+6];M*=r[e+7];i=f*x+128>>8;s=f*F+128>>8;p=k;m=T;b=g*(C-M)+128>>8;S=g*(C+M)+128>>8;y=v<<4;w=O<<4;i=i+s+1>>1;s=i-s;D=p*d+m*u+128>>8;p=p*u-m*d+128>>8;m=D;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;s=s+p+1>>1;p=s-p;D=b*h+S*l+2048>>12;b=b*l-S*h+2048>>12;S=D;D=y*c+w*o+2048>>12;y=y*o-w*c+2048>>12;w=D;a[e]=i+S;a[e+7]=i-S;a[e+1]=s+w;a[e+6]=s-w;a[e+2]=p+y;a[e+5]=p-y;a[e+3]=m+b;a[e+4]=m-b}else{D=f*x+512>>10;a[e]=D;a[e+1]=D;a[e+2]=D;a[e+3]=D;a[e+4]=D;a[e+5]=D;a[e+6]=D;a[e+7]=D}}for(let e=0;e<8;++e){x=a[e];C=a[e+8];k=a[e+16];v=a[e+24];F=a[e+32];O=a[e+40];T=a[e+48];M=a[e+56];if(0!=(C|k|v|F|O|T|M)){i=f*x+2048>>12;s=f*F+2048>>12;p=k;m=T;b=g*(C-M)+2048>>12;S=g*(C+M)+2048>>12;y=v;w=O;i=4112+(i+s+1>>1);s=i-s;D=p*d+m*u+2048>>12;p=p*u-m*d+2048>>12;m=D;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;s=s+p+1>>1;p=s-p;D=b*h+S*l+2048>>12;b=b*l-S*h+2048>>12;S=D;D=y*c+w*o+2048>>12;y=y*o-w*c+2048>>12;w=D;x=i+S;M=i-S;C=s+w;T=s-w;k=p+y;O=p-y;v=m+b;F=m-b;x<16?x=0:x>=4080?x=255:x>>=4;C<16?C=0:C>=4080?C=255:C>>=4;k<16?k=0:k>=4080?k=255:k>>=4;v<16?v=0:v>=4080?v=255:v>>=4;F<16?F=0:F>=4080?F=255:F>>=4;O<16?O=0:O>=4080?O=255:O>>=4;T<16?T=0:T>=4080?T=255:T>>=4;M<16?M=0:M>=4080?M=255:M>>=4;n[t+e]=x;n[t+e+8]=C;n[t+e+16]=k;n[t+e+24]=v;n[t+e+32]=F;n[t+e+40]=O;n[t+e+48]=T;n[t+e+56]=M}else{D=f*x+8192>>14;D=D<-2040?0:D>=2024?255:D+2056>>4;n[t+e]=D;n[t+e+8]=D;n[t+e+16]=D;n[t+e+24]=D;n[t+e+32]=D;n[t+e+40]=D;n[t+e+48]=D;n[t+e+56]=D}}}function buildComponentData(e,t){const a=t.blocksPerLine,r=t.blocksPerColumn,n=new Int16Array(64);for(let e=0;e=r)return null;const s=(0,i.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,i.readUint16)(e,n);for(;!(o>=65472&&o<=65534);){if(++n>=r)return null;o=(0,i.readUint16)(e,n)}return{invalid:s.toString(16),marker:o,offset:n}}t.JpegImage=class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=(0,i.readUint16)(e,o);o+=2;let a=o+t-2;const n=findNextFileMarker(e,a,o);if(n?.invalid){(0,r.warn)("readDataBlock - incorrect length, current marker is: "+n.invalid);a=n.offset}const s=e.subarray(o,a);o+=s.length;return s}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),a=Math.ceil(e.scanLines/8/e.maxV);for(const r of e.components){const n=Math.ceil(Math.ceil(e.samplesPerLine/8)*r.h/e.maxH),i=Math.ceil(Math.ceil(e.scanLines/8)*r.v/e.maxV),s=t*r.h,o=64*(a*r.v)*(s+1);r.blockData=new Int16Array(o);r.blocksPerLine=n;r.blocksPerColumn=i}e.mcusPerLine=t;e.mcusPerColumn=a}let a,n,o=0,c=null,l=null,h=0;const u=[],d=[],f=[];let g=(0,i.readUint16)(e,o);o+=2;if(65496!==g)throw new JpegError("SOI not found");g=(0,i.readUint16)(e,o);o+=2;e:for(;65497!==g;){let p,m,b;switch(g){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const y=readDataBlock();65504===g&&74===y[0]&&70===y[1]&&73===y[2]&&70===y[3]&&0===y[4]&&(c={version:{major:y[5],minor:y[6]},densityUnits:y[7],xDensity:y[8]<<8|y[9],yDensity:y[10]<<8|y[11],thumbWidth:y[12],thumbHeight:y[13],thumbData:y.subarray(14,14+3*y[12]*y[13])});65518===g&&65===y[0]&&100===y[1]&&111===y[2]&&98===y[3]&&101===y[4]&&(l={version:y[5]<<8|y[6],flags0:y[7]<<8|y[8],flags1:y[9]<<8|y[10],transformCode:y[11]});break;case 65499:const w=(0,i.readUint16)(e,o);o+=2;const S=w+o-2;let x;for(;o>4==0)for(m=0;m<64;m++){x=s[m];a[x]=e[o++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(m=0;m<64;m++){x=s[m];a[x]=(0,i.readUint16)(e,o);o+=2}}u[15&t]=a}break;case 65472:case 65473:case 65474:if(a)throw new JpegError("Only single frame JPEGs supported");o+=2;a={};a.extended=65473===g;a.progressive=65474===g;a.precision=e[o++];const C=(0,i.readUint16)(e,o);o+=2;a.scanLines=t||C;a.samplesPerLine=(0,i.readUint16)(e,o);o+=2;a.components=[];a.componentIds={};const k=e[o++];let v=0,F=0;for(p=0;p>4,n=15&e[o+1];v>4==0?f:d)[15&t]=buildHuffmanTable(a,n)}break;case 65501:o+=2;n=(0,i.readUint16)(e,o);o+=2;break;case 65498:const T=1==++h&&!t;o+=2;const M=e[o++],D=[];for(p=0;p>4];n.huffmanTableAC=d[15&i];D.push(n)}const E=e[o++],N=e[o++],R=e[o++];try{const t=decodeScan(e,o,a,D,n,E,N,R>>4,15&R,T);o+=t}catch(t){if(t instanceof DNLMarkerError){(0,r.warn)(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){(0,r.warn)(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:o+=4;break;case 65535:255!==e[o]&&o--;break;default:const L=findNextFileMarker(e,o-2,o-3);if(L?.invalid){(0,r.warn)("JpegImage.parse - unexpected data, current marker is: "+L.invalid);o=L.offset;break}if(!L||o>=e.length-1){(0,r.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+g.toString(16))}g=(0,i.readUint16)(e,o);o+=2}this.width=a.samplesPerLine;this.height=a.scanLines;this.jfif=c;this.adobe=l;this.components=[];for(const e of a.components){const t=u[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/a.maxH,scaleY:e.v/a.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,a=!1){const r=this.width/e,n=this.height/t;let i,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),S=new Uint32Array(e),x=4294967288;let C;for(u=0;u>8)+k[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,a,r;for(let n=0,i=e.length;n4)throw new JpegError("Unsupported color mode");const s=this._getLinearizedBlockData(e,t,i);if(1===this.numComponents&&(a||r)){const e=s.length*(a?4:3),t=new Uint8ClampedArray(e);let r=0;if(a)(0,n.grayToRGBA)(s,new Uint32Array(t.buffer));else for(const e of s){t[r++]=e;t[r++]=e;t[r++]=e}return t}if(3===this.numComponents&&this._isColorConversionNeeded){if(a){const e=new Uint8ClampedArray(s.length/3*4);return this._convertYccToRgba(s,e)}return this._convertYccToRgb(s)}if(4===this.numComponents){if(this._isColorConversionNeeded)return a?this._convertYcckToRgba(s):r?this._convertYcckToRgb(s):this._convertYcckToCmyk(s);if(a)return this._convertCmykToRgba(s);if(r)return this._convertCmykToRgb(s)}return s}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.convertBlackAndWhiteToRGBA=convertBlackAndWhiteToRGBA;t.convertToRGBA=function convertToRGBA(e){switch(e.kind){case r.ImageKind.GRAYSCALE_1BPP:return convertBlackAndWhiteToRGBA(e);case r.ImageKind.RGB_24BPP:return function convertRGBToRGBA({src:e,srcPos:t=0,dest:a,destPos:n=0,width:i,height:s}){let o=0;const c=e.length>>2,l=new Uint32Array(e.buffer,t,c);if(r.FeatureTest.isLittleEndian){for(;o>>24|t<<8|4278190080;a[n+2]=t>>>16|r<<16|4278190080;a[n+3]=r>>>8|4278190080}for(let t=4*o,r=e.length;t>>8|255;a[n+2]=t<<16|r>>>16|255;a[n+3]=r<<8|255}for(let t=4*o,r=e.length;t>3,d=7&n,f=e.length;a=new Uint32Array(a.buffer);let g=0;for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.JpxStream=void 0;var r=a(18),n=a(30),i=a(2);class JpxStream extends r.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,i.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new n.JpxImage;e.parse(this.bytes);const t=e.width,a=e.height,r=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const n=new Uint8ClampedArray(t*a*r);for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.JpxImage=void 0;var r=a(2),n=a(3),i=a(25);class JpxError extends r.BaseException{constructor(e){super(`JPX error: ${e}`,"JpxError")}}const s={LL:0,LH:1,HL:1,HH:2};t.JpxImage=class JpxImage{constructor(){this.failOnCorruptedImage=!1}parse(e){if(65359===(0,n.readUint16)(e,0)){this.parseCodestream(e,0,e.length);return}const t=e.length;let a=0;for(;a>24&255,o>>16&255,o>>8&255,255&o);(0,r.warn)(`Unsupported header type ${o} (${i}).`)}l&&(a+=c)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const a=t;t=e.getByte();if(65361===(a<<8|t)){e.skip(4);const t=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0;e.skip(16);const i=e.getUint16();this.width=t-r;this.height=a-n;this.componentsCount=i;this.bitsPerComponent=8;return}}throw new JpxError("No size marker found in JPX stream")}parseCodestream(e,t,a){const i={};let s=!1;try{let o=t;for(;o+1>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}b.SPqcds=l;if(i.mainHeader)i.QCD=b;else{i.currentTile.QCD=b;i.currentTile.QCC=[]}break;case 65373:f=(0,n.readUint16)(e,o);const y={};a=o+2;let w;if(i.SIZ.Csiz<257)w=e[a++];else{w=(0,n.readUint16)(e,a);a+=2}c=e[a++];switch(31&c){case 0:h=8;u=!0;break;case 1:h=16;u=!1;break;case 2:h=16;u=!0;break;default:throw new Error("Invalid SQcd value "+c)}y.noQuantization=8===h;y.scalarExpounded=u;y.guardBits=c>>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}y.SPqcds=l;i.mainHeader?i.QCC[w]=y:i.currentTile.QCC[w]=y;break;case 65362:f=(0,n.readUint16)(e,o);const S={};a=o+2;const x=e[a++];S.entropyCoderWithCustomPrecincts=!!(1&x);S.sopMarkerUsed=!!(2&x);S.ephMarkerUsed=!!(4&x);S.progressionOrder=e[a++];S.layersCount=(0,n.readUint16)(e,a);a+=2;S.multipleComponentTransform=e[a++];S.decompositionLevelsCount=e[a++];S.xcb=2+(15&e[a++]);S.ycb=2+(15&e[a++]);const C=e[a++];S.selectiveArithmeticCodingBypass=!!(1&C);S.resetContextProbabilities=!!(2&C);S.terminationOnEachCodingPass=!!(4&C);S.verticallyStripe=!!(8&C);S.predictableTermination=!!(16&C);S.segmentationSymbolUsed=!!(32&C);S.reversibleTransformation=e[a++];if(S.entropyCoderWithCustomPrecincts){const t=[];for(;a>4})}S.precinctsSizes=t}const k=[];S.selectiveArithmeticCodingBypass&&k.push("selectiveArithmeticCodingBypass");S.terminationOnEachCodingPass&&k.push("terminationOnEachCodingPass");S.verticallyStripe&&k.push("verticallyStripe");S.predictableTermination&&k.push("predictableTermination");if(k.length>0){s=!0;(0,r.warn)(`JPX: Unsupported COD options (${k.join(", ")}).`)}if(i.mainHeader)i.COD=S;else{i.currentTile.COD=S;i.currentTile.COC=[]}break;case 65424:f=(0,n.readUint16)(e,o);d={};d.index=(0,n.readUint16)(e,o+2);d.length=(0,n.readUint32)(e,o+4);d.dataEnd=d.length+o-2;d.partIndex=e[o+8];d.partsCount=e[o+9];i.mainHeader=!1;if(0===d.partIndex){d.COD=i.COD;d.COC=i.COC.slice(0);d.QCD=i.QCD;d.QCC=i.QCC.slice(0)}i.currentTile=d;break;case 65427:d=i.currentTile;if(0===d.partIndex){initializeTile(i,d.index);buildPackets(i)}f=d.dataEnd-o;parseTilePackets(i,e,o,f);break;case 65363:(0,r.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:f=(0,n.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=f}}catch(e){if(s||this.failOnCorruptedImage)throw new JpxError(e.message);(0,r.warn)(`JPX: Trying to recover from: "${e.message}".`)}this.tiles=function transformComponents(e){const t=e.SIZ,a=e.components,r=t.Csiz,n=[];for(let t=0,i=e.tiles.length;t>2);c[b++]=e+m>>h;c[b++]=e>>h;c[b++]=e+p>>h}else for(d=0;d>h;c[b++]=g-.34413*p-.71414*m>>h;c[b++]=g+1.772*p>>h}if(e)for(d=0,b=3;d>h}else for(let e=0;e>h;b+=r}}n.push(l)}return n}(i);this.width=i.SIZ.Xsiz-i.SIZ.XOsiz;this.height=i.SIZ.Ysiz-i.SIZ.YOsiz;this.componentsCount=i.SIZ.Csiz}};function calculateComponentDimensions(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e.XRsiz);e.y0=Math.ceil(t.YOsiz/e.YRsiz);e.y1=Math.ceil(t.Ysiz/e.YRsiz);e.width=e.x1-e.x0;e.height=e.y1-e.y0}function calculateTileGrids(e,t){const a=e.SIZ,r=[];let n;const i=Math.ceil((a.Xsiz-a.XTOsiz)/a.XTsiz),s=Math.ceil((a.Ysiz-a.YTOsiz)/a.YTsiz);for(let e=0;e0?Math.min(r.xcb,n.PPx-1):Math.min(r.xcb,n.PPx);n.ycb_=a>0?Math.min(r.ycb,n.PPy-1):Math.min(r.ycb,n.PPy);return n}function buildPrecincts(e,t,a){const r=1<t.trx0?Math.ceil(t.trx1/r)-Math.floor(t.trx0/r):0,l=t.try1>t.try0?Math.ceil(t.try1/n)-Math.floor(t.try0/n):0,h=c*l;t.precinctParameters={precinctWidth:r,precinctHeight:n,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function buildCodeblocks(e,t,a){const r=a.xcb_,n=a.ycb_,i=1<>r,c=t.tby0>>n,l=t.tbx1+i-1>>r,h=t.tby1+s-1>>n,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g);pe.cbyMax&&(e.cbyMax=p)}else f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p};m.precinct=e}t.codeblockParameters={codeblockWidth:r,codeblockHeight:n,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1};t.codeblocks=d;t.precincts=f}function createPacket(e,t,a){const r=[],n=e.subbands;for(let e=0,a=n.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;if(!(l>=a)){for(;s=0;--e){const a=t.resolutions[e],r=g*a.precinctParameters.precinctWidth,n=g*a.precinctParameters.precinctHeight;h=Math.min(h,r);u=Math.min(u,n);d=Math.max(d,a.precinctParameters.numprecinctswide);f=Math.max(f,a.precinctParameters.numprecinctshigh);l[e]={width:r,height:n};g<<=1}a=Math.min(a,h);r=Math.min(r,u);n=Math.max(n,d);i=Math.max(i,f);s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:a,minHeight:r,maxNumWide:n,maxNumHigh:i}}function buildPackets(e){const t=e.SIZ,a=e.currentTile.index,r=e.tiles[a],n=t.Csiz;for(let e=0;e>>o&(1<0;){const e=i.shift();o=e.codeblock;void 0===o.data&&(o.data=[]);o.data.push({data:t,start:a+s,end:a+s+e.dataLength,codingpasses:e.codingpasses});s+=e.dataLength}}return s}function copyCoefficients(e,t,a,r,n,s,o,c,l){const h=r.tbx0,u=r.tby0,d=r.tbx1-r.tbx0,f=r.codeblocks,g="H"===r.type.charAt(0)?1:0,p="H"===r.type.charAt(1)?t:0;for(let a=0,m=f.length;a=s?j:j*(1<0?1-e:0)}const p=t.subbands[r],m=s[p.type];copyCoefficients(i,a,0,p,g?1:2**(f+m-o)*(1+n/2048),h+o-1,g,u,d)}m.push({width:a,height:n,items:i})}const y=p.calculate(m,r.tcx0,r.tcy0);return{left:r.tcx0,top:r.tcy0,width:y.width,height:y.height,items:y.items}}function initializeTile(e,t){const a=e.SIZ.Csiz,r=e.tiles[t];for(let t=0;t>=1;t>>=1;r++}r--;a=this.levels[r];a.items[a.index]=n;this.currentLevel=r;delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];e--;if(e<0){this.value=a;return!1}this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class InclusionTree{constructor(e,t,a){const r=(0,n.log2)(Math.max(e,t))+1;this.levels=[];for(let n=0;na){this.currentLevel=r;this.propagateValues();return!1}e>>=1;t>>=1;r++}this.currentLevel=r-1;return!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1;this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];for(;--e>=0;){t=this.levels[e];t.items[t.index]=a}}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];t.items[t.index]=255;e--;if(e<0)return!1;this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class BitModel{static UNIFORM_CONTEXT=17;static RUNLENGTH_CONTEXT=18;static LLAndLHContextsLabel=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]);static HLContextLabel=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]);static HHContextLabel=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);constructor(e,t,a,r,n){this.width=e;this.height=t;let i;i="HH"===a?BitModel.HHContextLabel:"HL"===a?BitModel.HLContextLabel:BitModel.LLAndLHContextsLabel;this.contextLabelTable=i;const s=e*t;this.neighborsSignificance=new Uint8Array(s);this.coefficentsSign=new Uint8Array(s);let o;o=n>14?new Uint32Array(s):n>6?new Uint16Array(s):new Uint8Array(s);this.coefficentsMagnitude=o;this.processingFlags=new Uint8Array(s);const c=new Uint8Array(s);if(0!==r)for(let e=0;e0,o=t+10){c=a-n;s&&(r[c-1]+=16);o&&(r[c+1]+=16);r[c]+=4}if(e+1=a)break;s[d]&=-2;if(r[d]||!i[d])continue;const g=c[i[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);n[d]=e;r[d]=1;this.setNeighborsSignificance(t,u,d);s[d]|=2}l[d]++;s[d]|=1}}}decodeSignBit(e,t,a){const r=this.width,n=this.height,i=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==i[a-1];if(t+10&&0!==i[a-r];if(e+1=0){u=9+o;d=this.decoder.readBit(this.contexts,u)}else{u=9-o;d=1^this.decoder.readBit(this.contexts,u)}return d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,a=this.height,r=this.coefficentsMagnitude,n=this.neighborsSignificance,i=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*a,l=4*t;for(let a,h=0;h>1;let n,i,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;n=(t|=0)-3;for(i=r+4;i--;n+=2)e[n]*=.8128930661159609;n=t-2;s=u*e[n-1];for(i=r+3;i--;n+=2){o=u*e[n+1];e[n]=d*e[n]-s-o;if(!i--)break;n+=2;s=u*e[n+1];e[n]=d*e[n]-s-o}n=t-1;s=h*e[n-1];for(i=r+2;i--;n+=2){o=h*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=h*e[n+1];e[n]-=s+o}n=t;s=l*e[n-1];for(i=r+1;i--;n+=2){o=l*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=l*e[n+1];e[n]-=s+o}if(0!==r){n=t+1;s=c*e[n-1];for(i=r;i--;n+=2){o=c*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=c*e[n+1];e[n]-=s+o}}}}class ReversibleTransform extends Transform{filter(e,t,a){const r=a>>1;let n,i;for(n=t|=0,i=r+1;i--;n+=2)e[n]-=e[n-1]+e[n+1]+2>>2;for(n=t+1,i=r;i--;n+=2)e[n]+=e[n-1]+e[n+1]>>1}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LZWStream=void 0;var r=a(18);class LZWStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const r=4096,n={earlyChange:a,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(r),dictionaryLengths:new Uint16Array(r),dictionaryPrevCodes:new Uint16Array(r),currentSequence:new Uint8Array(r),currentSequenceLength:0};for(let e=0;e<256;++e){n.dictionaryValues[e]=e;n.dictionaryLengths[e]=1}this.lzwState=n}readBits(e){let t=this.bitsCached,a=this.cachedData;for(;t>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[a];a=l[a]}}else d[f++]=d[0]}if(n){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+i&s+i-1?h:0|Math.min(Math.log(s+i)/.6931471805599453+1,12)}u=e;g+=f;if(r{Object.defineProperty(t,"__esModule",{value:!0});t.PredictorStream=void 0;var r=a(18),n=a(4),i=a(2);class PredictorStream extends r.DecodeStream{constructor(e,t,a){super(t);if(!(a instanceof n.Dict))return e;const r=this.predictor=a.get("Predictor")||1;if(r<=1)return e;if(2!==r&&(r<10||r>15))throw new i.FormatError(`Unsupported predictor: ${r}`);this.readBlock=2===r?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const s=this.colors=a.get("Colors")||1,o=this.bits=a.get("BPC","BitsPerComponent")||8,c=this.columns=a.get("Columns")||1;this.pixBytes=s*o+7>>3;this.rowBytes=c*s*o+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,a=this.ensureBuffer(t+e),r=this.bits,n=this.colors,i=this.str.getBytes(e);this.eof=!i.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===r&&1===n)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;a[u++]=e}else if(8===r){for(s=0;s>8&255;a[u++]=255&e}}else{const e=new Uint8Array(n+1),u=(1<>l-r)&u;l-=r;c=c<=8){a[f++]=c>>h-8&255;h-=8}}h>0&&(a[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,a=this.str.getByte(),r=this.str.getBytes(e);this.eof=!r.length;if(this.eof)return;const n=this.bufferLength,s=this.ensureBuffer(n+e);let o=s.subarray(n-e,n);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=n;switch(a){case 0:for(c=0;c>1)+r[c];for(;c>1)+r[c]&255;u++}break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0});t.RunLengthStream=void 0;var r=a(18);class RunLengthStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0]){this.eof=!0;return}let t,a=this.bufferLength,r=e[0];if(r<128){t=this.ensureBuffer(a+r+1);t[a++]=e[1];if(r>0){const e=this.str.getBytes(r);t.set(e,a);a+=r}}else{r=257-r;const n=e[1];t=this.ensureBuffer(a+r+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Font=t.ErrorFont=void 0;var r=a(2),n=a(35),i=a(38),s=a(40),o=a(39),c=a(37),l=a(41),h=a(42),u=a(43),d=a(44),f=a(45),g=a(46),p=a(14),m=a(47),b=a(3),y=a(8),w=a(48);const S=[[57344,63743],[1048576,1114109]],x=1e3,C=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","systemFontInfo","type","vertical"],k=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===r.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],a=e.widths;for(const e in a)a[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const a in e.fallbackToUnicode)e.toUnicode.has(a)||(t[a]=e.fallbackToUnicode[a]);t.length>0&&e.toUnicode.amend(t)}class Glyph{constructor(e,t,a,r,n,i,s,o,c){this.originalCharCode=e;this.fontChar=t;this.unicode=a;this.accent=r;this.width=n;this.vmetric=i;this.operatorListId=s;this.isSpace=o;this.isInFont=c}get category(){return(0,r.shadow)(this,"category",(0,s.getCharUnicodeCategory)(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,a){e[t+1]=a;e[t]=a>>>8}function signedInt16(e,t){const a=(e<<8)+t;return 32768&a?a-65536:a}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){const t=e.peekBytes(4);return"ttcf"===(0,r.bytesToString)(t)}function getFontFileType(e,{type:t,subtype:a,composite:n}){let i,s;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===(0,b.readUint32)(t,0)||"true"===(0,r.bytesToString)(t)}(e)||isTrueTypeCollectionFile(e))i=n?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){const t=e.peekBytes(4);return"OTTO"===(0,r.bytesToString)(t)}(e))i=n?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))i=n?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(n){i="CIDFontType0";s="CIDFontType0C"}else{i="MMType1"===t?"MMType1":"Type1";s="Type1C"}else{(0,r.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");i=t;s=a}return[i,s]}function applyStandardFontGlyphMap(e,t){for(const a in t)e[+a]=t[a]}function buildToFontChar(e,t,a){const r=[];let n;for(let a=0,i=e.length;au){l++;if(l>=S.length){(0,r.warn)("Ran out of space in font private use area.");break}h=S[l][0];u=S[l][1]}const p=h++;0===g&&(g=a);let m=n.get(f);"string"==typeof m&&(m=m.codePointAt(0));if(m&&!(d=m,S[0][0]<=d&&d<=S[0][1]||S[1][0]<=d&&d<=S[1][1])&&!c.has(g)){s.set(m,g);c.add(g)}i[p]=g;o[f]=p}var d;return{toFontChar:o,charCodeToGlyphId:i,toUnicodeExtraMap:s,nextAvailableFontCharCode:h}}function createCmapTable(e,t,a){const n=function getRanges(e,t,a){const r=[];for(const t in e)e[t]>=a||r.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,n]of t)n>=a||r.push({fontCharCode:e,glyphId:n});0===r.length&&r.push({fontCharCode:0,glyphId:0});r.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const n=[],i=r.length;for(let e=0;e65535?2:1;let s,o,c,l,h="\0\0"+string16(i)+"\0\0"+(0,r.string32)(4+8*i);for(s=n.length-1;s>=0&&!(n[s][0]<=65535);--s);const u=s+1;n[s][0]<65535&&65535===n[s][1]&&(n[s][1]=65534);const d=n[s][1]<65535?1:0,f=u+d,g=m.OpenTypeFileBuilder.getSearchParams(f,2);let p,b,y,w,S="",x="",C="",k="",v="",F=0;for(s=0,o=u;s0){x+="ÿÿ";S+="ÿÿ";C+="\0";k+="\0\0"}const O="\0\0"+string16(2*f)+string16(g.range)+string16(g.entry)+string16(g.rangeShift)+x+"\0\0"+S+C+k+v;let T="",M="";if(i>1){h+="\0\0\n"+(0,r.string32)(4+8*i+4+O.length);T="";for(s=0,o=n.length;se||!l)&&(l=e);h 123 are reserved for internal usage");c|=1<65535&&(h=65535)}else{l=0;h=255}const d=e.bbox||[0,0,0,0],f=a.unitsPerEm||1/(e.fontMatrix||r.FONT_IDENTITY_MATRIX)[0],g=e.ascentScaled?1:f/x,p=a.ascent||Math.round(g*(e.ascent||d[3]));let m=a.descent||Math.round(g*(e.descent||d[1]));m>0&&e.descent>0&&d[1]<0&&(m=-m);const b=a.yMax||p,y=-a.yMin||-m;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+(0,r.string32)(n)+(0,r.string32)(i)+(0,r.string32)(o)+(0,r.string32)(c)+"*21*"+string16(e.italicAngle?1:0)+string16(l||e.firstChar)+string16(h||e.lastChar)+string16(p)+string16(m)+"\0d"+string16(b)+string16(y)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(l||e.firstChar)+"\0"}function createPostTable(e){const t=Math.floor(65536*e.italicAngle);return"\0\0\0"+(0,r.string32)(t)+"\0\0\0\0"+(0,r.string32)(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const a=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],r=[];let n,i,s,o,c;for(n=0,i=a.length;n0;if((d||g)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){const a=e.cidToGidMap,r=[];applyStandardFontGlyphMap(r,(0,l.getGlyphMapForStandardFonts)());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForCalibri)());if(a){for(const e in r){const t=r[e];void 0!==a[t]&&(r[+e]=a[t])}a.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof h.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const n=r[e];void 0===a[n]&&(r[+e]=t)}))}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){r[+e]=t}));this.toFontChar=r;this.toUnicode=new h.ToUnicodeMap(r)}else if(/Symbol/i.test(r))this.toFontChar=buildToFontChar(c.SymbolSetEncoding,(0,o.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(r))this.toFontChar=buildToFontChar(c.ZapfDingbatsEncoding,(0,o.getDingbatsGlyphsUnicode)(),this.differences);else if(d){const e=buildToFontChar(this.defaultEncoding,(0,o.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(t,a){e[+t]=a}));this.toFontChar=e}else{const e=(0,o.getGlyphsUnicode)(),a=[];this.toUnicode.forEach(((t,r)=>{if(!this.composite){const a=this.differences[t]||this.defaultEncoding[t],n=(0,s.getUnicodeForGlyph)(a,e);-1!==n&&(r=n)}a[+t]=r}));this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(a,(0,l.getGlyphMapForStandardFonts)());this.toFontChar=a}amendFallbackToUnicode(e);this.loadedName=r.split("-")[0]}checkAndRepair(e,t,a){const s=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const a=Object.create(null);a["OS/2"]=null;a.cmap=null;a.head=null;a.hhea=null;a.hmtx=null;a.maxp=null;a.name=null;a.post=null;for(let r=0;r>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0,i=e.pos;e.pos=e.start||0;e.skip(r);const s=e.getBytes(n);e.pos=i;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:a,length:n,offset:r,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,a,r,n,i){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||a>e.length||a-t<=12)return s;const o=e.subarray(t,a),c=signedInt16(o[2],o[3]),l=signedInt16(o[4],o[5]),h=signedInt16(o[6],o[7]),u=signedInt16(o[8],o[9]);if(c>h){writeSignedInt16(o,2,h);writeSignedInt16(o,6,c)}if(l>u){writeSignedInt16(o,4,u);writeSignedInt16(o,8,l)}const d=signedInt16(o[0],o[1]);if(d<0){if(d<-1)return s;r.set(o,n);s.length=o.length;return s}let f,g=10,p=0;for(f=0;fo.length)return s;if(!i&&b>0){r.set(o.subarray(0,m),n);r.set([0,0],n+m);r.set(o.subarray(y,S),n+m+2);S-=b;o.length-S>3&&(S=S+3&-4);s.length=S;return s}if(o.length-S>3){S=S+3&-4;r.set(o.subarray(0,S),n);s.length=S;return s}r.set(o,n);s.length=o.length;return s}function readNameTable(e){const a=(t.start||0)+e.offset;t.pos=a;const r=[[],[]],n=[],i=e.length,s=a+i;if(0!==t.getUint16()||i<6)return[r,n];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=i;const o=e.name;if(e.encoding){let a="";for(let r=0,n=e.length;r0&&(h+=e-1)}}else{if(b||w){(0,r.warn)("TT: nested FDEFs not allowed");m=!0}b=!0;d=h;s=f.pop();t.functionsDefined[s]={data:c,i:h}}else if(!b&&!w){s=f.at(-1);if(isNaN(s))(0,r.info)("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=f.length+t.functionsStackDeltas[s];if(e<0){(0,r.warn)("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}f.length=e}else if(s in t.functionsDefined&&!p.includes(s)){g.push({data:c,i:h,stackTop:f.length-1});p.push(s);o=t.functionsDefined[s];if(!o){(0,r.warn)("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;h=o.i}}}if(!b&&!w){let t=0;e<=142?t=l[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){n=f.pop();isNaN(n)||(t=2*-n)}for(;t<0&&f.length>0;){f.pop();t++}for(;t>0;){f.push(NaN);t--}}}t.tooComplexToFollowFunctions=m;const S=[c];h>c.length&&S.push(new Uint8Array(h-c.length));if(d>u){(0,r.warn)("TT: complementing a missing function tail");S.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let a,r,n=0;for(a=0,r=t.length;a>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:a,minorVersion:n,numFonts:i,offsetTable:s};switch(a){case 1:return o;case 2:o.dsigTag=e.getInt32()>>>0;o.dsigLength=e.getInt32()>>>0;o.dsigOffset=e.getInt32()>>>0;return o}throw new r.FormatError(`Invalid TrueType Collection majorVersion: ${a}.`)}(e),i=t.split("+");let s;for(let o=0;o0||!(a.cMap instanceof p.IdentityCMap));if("OTTO"===d.version&&!t||!f.head||!f.hhea||!f.maxp||!f.post){w=new y.Stream(f["CFF "].data);b=new u.CFFFont(w,a);adjustWidths(a);return this.convert(e,b,a)}delete f.glyf;delete f.loca;delete f.fpgm;delete f.prep;delete f["cvt "];this.isOpenType=!0}if(!f.maxp)throw new r.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+f.maxp.offset;const x=t.getInt32(),C=t.getUint16();if(a.scaleFactors?.length===C&&S){const{scaleFactors:e}=a,t=int16(f.head.data[50],f.head.data[51]),r=new g.GlyfTable({glyfTable:f.glyf.data,isGlyphLocationsLong:t,locaTable:f.loca.data,numGlyphs:C});r.scale(e);const{glyf:n,loca:i,isLocationLong:s}=r.write();f.glyf.data=n;f.loca.data=i;if(s!==!!t){f.head.data[50]=0;f.head.data[51]=s?1:0}const o=f.hmtx.data;for(let t=0;t>8&255;o[a+1]=255&r;writeSignedInt16(o,a+2,Math.round(e[t]*signedInt16(o[a+2],o[a+3])))}}let k=C+1,v=!0;if(k>65535){v=!1;k=C;(0,r.warn)("Not enough space in glyfs to duplicate first glyph.")}let F=0,O=0;if(x>=65536&&f.maxp.length>=22){t.pos+=8;if(t.getUint16()>2){f.maxp.data[14]=0;f.maxp.data[15]=2}t.pos+=4;F=t.getUint16();t.pos+=4;O=t.getUint16()}f.maxp.data[4]=k>>8;f.maxp.data[5]=255&k;const T=function sanitizeTTPrograms(e,t,a,n){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,i);t&&sanitizeTTProgram(t,i);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){(0,r.warn)("TT: more functions defined than expected");e.hintsValid=!1}else for(let a=0,n=e.functionsUsed.length;at){(0,r.warn)("TT: invalid function id: "+a);e.hintsValid=!1;return}if(e.functionsUsed[a]&&!e.functionsDefined[a]){(0,r.warn)("TT: undefined function: "+a);e.hintsValid=!1;return}}}(i,n);if(a&&1&a.length){const e=new Uint8Array(a.length+1);e.set(a.data);a.data=e}return i.hintsValid}(f.fpgm,f.prep,f["cvt "],F);if(!T){delete f.fpgm;delete f.prep;delete f["cvt "]}!function sanitizeMetrics(e,t,a,n,i,s){if(!t){a&&(a.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const o=e.getUint16();e.pos+=8;e.pos+=2;let c=e.getUint16();if(0!==o){if(!(2&int16(n.data[44],n.data[45]))){t.data[22]=0;t.data[23]=0}}if(c>i){(0,r.info)(`The numOfMetrics (${c}) should not be greater than the numGlyphs (${i}).`);c=i;t.data[34]=(65280&c)>>8;t.data[35]=255&c}const l=i-c-(a.length-4*c>>1);if(l>0){const e=new Uint8Array(a.length+2*l);e.set(a.data);if(s){e[a.length]=a.data[2];e[a.length+1]=a.data[3]}a.data=e}}(t,f.hhea,f.hmtx,f.head,k,v);if(!f.head)throw new r.FormatError('Required "head" table is not found');!function sanitizeHead(e,t,a){const n=e.data,i=function int32(e,t,a,r){return(e<<24)+(t<<16)+(a<<8)+r}(n[0],n[1],n[2],n[3]);if(i>>16!=1){(0,r.info)("Attempting to fix invalid version in head table: "+i);n[0]=0;n[1]=1;n[2]=0;n[3]=0}const s=int16(n[50],n[51]);if(s<0||s>1){(0,r.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(a===e<<1){n[50]=0;n[51]=0}else{if(a!==e<<2)throw new r.FormatError("Could not fix indexToLocFormat: "+s);n[50]=0;n[51]=1}}}(f.head,C,S?f.loca.length:0);let M=Object.create(null);if(S){const e=int16(f.head.data[50],f.head.data[51]),t=function sanitizeGlyphLocations(e,t,a,r,n,i,s){let o,c,l;if(r){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,a){e[t]=a>>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,a){e[t]=a>>9&255;e[t+1]=a>>1&255}}const h=i?a+1:a,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort(((e,t)=>e.offset-t.offset));for(m=0;me.index-t.index));for(m=0;ms&&(s=e.sizeOfInstructions);S+=t;l(d,b,S)}if(0===S){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;ma+S)t.data=p.subarray(0,a+S);else{t.data=new Uint8Array(a+S);t.data.set(p.subarray(0,S))}t.data.set(p.subarray(0,a),S);l(e.data,d.length-o,S+a)}else t.data=p.subarray(0,S);return{missingGlyphs:w,maxSizeOfInstructions:s}}(f.loca,f.glyf,C,e,T,v,O);M=t.missingGlyphs;if(x>=65536&&f.maxp.length>=22){f.maxp.data[26]=t.maxSizeOfInstructions>>8;f.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!f.hhea)throw new r.FormatError('Required "hhea" table is not found');if(0===f.hhea.data[10]&&0===f.hhea.data[11]){f.hhea.data[10]=255;f.hhea.data[11]=255}const D={unitsPerEm:int16(f.head.data[18],f.head.data[19]),yMax:signedInt16(f.head.data[42],f.head.data[43]),yMin:signedInt16(f.head.data[38],f.head.data[39]),ascent:signedInt16(f.hhea.data[4],f.hhea.data[5]),descent:signedInt16(f.hhea.data[6],f.hhea.data[7]),lineGap:signedInt16(f.hhea.data[8],f.hhea.data[9])};this.ascent=D.ascent/D.unitsPerEm;this.descent=D.descent/D.unitsPerEm;this.lineGap=D.lineGap/D.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;f.post&&function readPostScriptTable(e,a,n){const s=(t.start||0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=i.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==n){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new r.FormatError("Max size of CID is 65,535");let i=-1;t?i=n:void 0!==e[n]&&(i=e[n]);i>=0&&i>>0;let h=!1;if(c?.platformId!==r||c?.encodingId!==i){if(0!==r||0!==i&&1!==i&&3!==i)if(1===r&&0===i)h=!0;else if(3!==r||1!==i||!n&&c){if(a&&3===r&&0===i){h=!0;let a=!0;if(e>3;e.push(r);a=Math.max(r,a)}const r=[];for(let e=0;e<=a;e++)r.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let a=0;a<256;a++)if(0===e[a]){t.pos=r[0].idRangePos+2*a;g=t.getUint16();d.push({charCode:a,glyphId:g})}else{const n=r[e[a]];for(f=0;f>1;t.skip(6);const a=[];let r;for(r=0;r>1)-(e-r);i.offsetIndex=n;o=Math.max(o,n+i.end-i.start+1)}else i.offsetIndex=-1}const c=[];for(f=0;f>>0;for(f=0;f>>0,a=t.getInt32()>>>0;let r=t.getInt32()>>>0;for(let t=e;t<=a;t++)d.push({charCode:t,glyphId:r++})}}}d.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255);E[t]=e.glyphId}if(a.glyphNames&&(u.length||this.differences.length))for(let e=0;e<256;++e){if(!d&&void 0!==E[e])continue;const t=this.differences[e]||u[e];if(!t)continue;const r=a.glyphNames.indexOf(t);r>0&&hasGlyph(r)&&(E[e]=r)}}0===E.length&&(E[0]=0);let N=k-1;v||(N=0);if(!a.cssFontInfo){const e=adjustMapping(E,hasGlyph,N,this.toUnicode);this.toFontChar=e.toFontChar;f.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,k)};f["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const a=t.getUint16();t.skip(60);const r=t.getUint16();if(a<4&&768&r)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(f["OS/2"],t)||(f["OS/2"]={tag:"OS/2",data:createOS2Table(a,e.charCodeToGlyphId,D)})}if(!S)try{w=new y.Stream(f["CFF "].data);b=new n.CFFParser(w,a,i.SEAC_ANALYSIS_ENABLED).parse();b.duplicateFirstGlyph();const e=new n.CFFCompiler(b);f["CFF "].data=e.compile()}catch{(0,r.warn)("Failed to compile font "+a.loadedName)}if(f.name){const[t,r]=readNameTable(f.name);f.name.data=createNameTable(e,t);this.psName=t[0][6]||null;a.composite||function adjustTrueTypeToUnicode(e,t,a){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;if(!t)return;if(0===a.length)return;if(e.defaultEncoding===c.WinAnsiEncoding)return;for(const e of a)if(!isWinNameRecord(e))return;const r=c.WinAnsiEncoding,n=[],i=(0,o.getGlyphsUnicode)();for(const e in r){const t=r[e];if(""===t)continue;const a=i[t];void 0!==a&&(n[e]=String.fromCharCode(a))}n.length>0&&e.toUnicode.amend(n)}(a,this.isSymbolicFont,r)}else f.name={tag:"name",data:createNameTable(this.name)};const R=new m.OpenTypeFileBuilder(d.version);for(const e in f)R.addTable(e,f[e].data);return R.toArray()}convert(e,t,a){a.fixedPitch=!1;a.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const a=[],r=(0,o.getGlyphsUnicode)();for(const n in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[n]))continue;const i=t[n],o=(0,s.getUnicodeForGlyph)(i,r);-1!==o&&(a[n]=String.fromCharCode(o))}a.length>0&&e.toUnicode.amend(a)}(a,a.builtInEncoding);let n=1;t instanceof u.CFFFont&&(n=t.numGlyphs-1);const l=t.getGlyphMapping(a);let d=null,f=l,g=null;if(!a.cssFontInfo){d=adjustMapping(l,t.hasGlyphId.bind(t),n,this.toUnicode);this.toFontChar=d.toFontChar;f=d.charCodeToGlyphId;g=d.toUnicodeExtraMap}const p=t.numGlyphs;function getCharCodes(e,t){let a=null;for(const r in e)t===e[r]&&(a||=[]).push(0|r);return a}function createCharCode(e,t){for(const a in e)if(t===e[a])return 0|a;d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t;return d.nextAvailableFontCharCode++}const b=t.seacs;if(d&&i.SEAC_ANALYSIS_ENABLED&&b?.length){const e=a.fontMatrix||r.FONT_IDENTITY_MATRIX,n=t.getCharset(),i=Object.create(null);for(let t in b){t|=0;const a=b[t],r=c.StandardEncoding[a[2]],s=c.StandardEncoding[a[3]],o=n.indexOf(r),h=n.indexOf(s);if(o<0||h<0)continue;const u={x:a[0]*e[0]+a[1]*e[2]+e[4],y:a[0]*e[1]+a[1]*e[3]+e[5]},f=getCharCodes(l,t);if(f)for(const e of f){const t=d.charCodeToGlyphId,a=createCharCode(t,o),r=createCharCode(t,h);i[e]={baseFontCharCode:a,accentFontCharCode:r,accentOffset:u}}}a.seacMap=i}const y=1/(a.fontMatrix||r.FONT_IDENTITY_MATRIX)[0],w=new m.OpenTypeFileBuilder("OTTO");w.addTable("CFF ",t.data);w.addTable("OS/2",createOS2Table(a,f));w.addTable("cmap",createCmapTable(f,g,p));w.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(y)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(a.descent)+"ÿ"+safeString16(a.ascent)+string16(a.italicAngle?2:0)+"\0\0\0\0\0\0\0");w.addTable("hhea","\0\0\0"+safeString16(a.ascent)+safeString16(a.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(a.capHeight)+safeString16(Math.tan(a.italicAngle)*a.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(p));w.addTable("hmtx",function fontFieldsHmtx(){const e=t.charstrings,a=t.cff?t.cff.widths:null;let r="\0\0\0\0";for(let t=1,n=p;tt.length%2==1,r=this.toUnicode instanceof h.IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let n=0,i=e.length;n55295&&(i<57344||i>65533)&&n++;if(this.toUnicode){const e=r(i);if(-1!==e){if(hasCurrentBufErrors()){t.push(a.join(""));a.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)a.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(a.join(""));a.length=0}a.push(String.fromCodePoint(i))}t.push(a.join(""));return t}};t.ErrorFont=class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0;var r=a(2),n=a(36),i=a(37);const s=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"];t.CFFStandardStrings=s;const o=391,c=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],l=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];t.CFFParser=class CFFParser{constructor(e,t,a){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!a}parse(){const e=this.properties,t=new CFF;this.cff=t;const a=this.parseHeader(),r=this.parseIndex(a.endPos),n=this.parseIndex(r.endPos),i=this.parseIndex(n.endPos),s=this.parseIndex(i.endPos),o=this.parseDict(n.obj.get(0)),c=this.createDict(CFFTopDict,o,t.strings);t.header=a.obj;t.names=this.parseNameIndex(r.obj);t.strings=this.parseStringIndex(i.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const l=c.getByName("CharStrings"),h=this.parseIndex(l).obj,u=c.getByName("FontMatrix");u&&(e.fontMatrix=u);const d=c.getByName("FontBBox");if(d){e.ascent=Math.max(d[3],d[1]);e.descent=Math.min(d[1],d[3]);e.ascentScaled=!0}let f,g;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let a=0,r=e.count;a=t)throw new r.FormatError("Invalid CFF header");if(0!==a){(0,r.info)("cff data is shifted");e=e.subarray(a);this.bytes=e}const n=e[0],i=e[1],s=e[2],o=e[3];return{obj:new CFFHeader(n,i,s,o),endPos:s}}parseDict(e){let t=0;function parseOperand(){let a=e[t++];if(30===a)return function parseFloatOperand(){let a="";const r=15,n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],i=e.length;for(;t>4,o=15&i;if(s===r)break;a+=n[s];if(o===r)break;a+=n[o]}return parseFloat(a)}();if(28===a){a=e[t++];a=(a<<24|e[t++]<<16)>>16;return a}if(29===a){a=e[t++];a=a<<8|e[t++];a=a<<8|e[t++];a=a<<8|e[t++];return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[t++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[t++]-108;(0,r.warn)('CFFParser_parseDict: "'+a+'" is a reserved command.');return NaN}let a=[];const n=[];t=0;const i=e.length;for(;t10)return!1;let i=e.stackSize;const s=e.stack;let o=t.length;for(let h=0;h>16;h+=2;i++}else if(14===u){if(i>=4){i-=4;if(this.seacAnalysisEnabled){e.seac=s.slice(i,i+4);return!1}}d=c[u]}else if(u>=32&&u<=246){s[i]=u-139;i++}else if(u>=247&&u<=254){s[i]=u<251?(u-247<<8)+t[h]+108:-(u-251<<8)-t[h]-108;h++;i++}else if(255===u){s[i]=(t[h]<<24|t[h+1]<<16|t[h+2]<<8|t[h+3])/65536;h+=4;i++}else if(19===u||20===u){e.hints+=i>>1;if(0===e.hints){t.copyWithin(h-1,h,-1);h-=1;o-=1;continue}h+=e.hints+7>>3;i%=2;d=c[u]}else{if(10===u||29===u){const t=10===u?a:n;if(!t){d=c[u];(0,r.warn)("Missing subrsIndex for "+d.id);return!1}let o=32768;t.count<1240?o=107:t.count<33900&&(o=1131);const l=s[--i]+o;if(l<0||l>=t.count||isNaN(l)){d=c[u];(0,r.warn)("Out of bounds subrIndex for "+d.id);return!1}e.stackSize=i;e.callDepth++;if(!this.parseCharString(e,t.get(l),a,n))return!1;e.callDepth--;i=e.stackSize;continue}if(11===u){e.stackSize=i;return!0}if(0===u&&h===t.length){t[h-1]=14;d=c[14]}else{if(9===u){t.copyWithin(h-1,h,-1);h-=1;o-=1;continue}d=c[u]}}if(d){if(d.stem){e.hints+=i>>1;if(3===u||23===u)e.hasVStems=!0;else if(e.hasVStems&&(1===u||18===u)){(0,r.warn)("CFF stem hints are in wrong order");t[h-1]=1===u?3:23}}if("min"in d&&!e.undefStack&&i=2&&d.stem?i%=2:i>1&&(0,r.warn)("Found too many parameters for stack-clearing command");i>0&&(e.width=s[i-1])}if("stackDelta"in d){"stackFn"in d&&d.stackFn(s,i);i+=d.stackDelta}else if(d.stackClearing)i=0;else if(d.resetStack){i=0;e.undefStack=!1}else if(d.undefStack){i=0;e.undefStack=!0;e.firstStackClearing=!1}}}o=i.length){(0,r.warn)("Invalid fd index for glyph index.");d=!1}if(d){g=i[e].privateDict;f=g.subrsIndex}}else t&&(f=t);d&&(d=this.parseCharString(u,l,f,a));if(null!==u.width){const e=g.getByName("nominalWidthX");c[h]=e+u.width}else{const e=g.getByName("defaultWidthX");c[h]=e}null!==u.seac&&(o[h]=u.seac);d||e.set(h,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:c}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const a=t[0],r=t[1];if(0===a||r>=this.bytes.length){this.emptyPrivateDictionary(e);return}const n=r+a,i=this.bytes.subarray(r,n),s=this.parseDict(i),o=this.createDict(CFFPrivateDict,s,e.strings);e.privateDict=o;0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06);if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=r+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,a,i){if(0===e)return new CFFCharset(!0,d.ISO_ADOBE,n.ISOAdobeCharset);if(1===e)return new CFFCharset(!0,d.EXPERT,n.ExpertCharset);if(2===e)return new CFFCharset(!0,d.EXPERT_SUBSET,n.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[i?0:".notdef"];let h,u,f;t-=1;switch(c){case 0:for(f=0;f=65535){(0,r.warn)("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}t.CFF=CFF;class CFFHeader{constructor(e,t,a,r){this.major=e;this.minor=t;this.hdrSize=a;this.offSize=r}}t.CFFHeader=CFFHeader;class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-o<=this.strings.length?this.strings[e-o]:s[0]}getSID(e){let t=s.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+o:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=CFFStrings;class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=CFFIndex;class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const a of t)if(isNaN(a)){(0,r.warn)(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const a=this.types[e];"num"!==a&&"sid"!==a&&"offset"!==a||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new r.FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new r.FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const a of e){const e=Array.isArray(a[0])?(a[0][0]<<8)+a[0][1]:a[0];t.keyToNameMap[e]=a[1];t.nameToKeyMap[a[1]]=e;t.types[e]=a[2];t.defaults[e]=a[3];t.opcodes[e]=Array.isArray(a[0])?a[0]:[a[0]];t.order.push(e)}return t}}const h=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return(0,r.shadow)(this,"tables",this.createTables(h))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}t.CFFTopDict=CFFTopDict;const u=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return(0,r.shadow)(this,"tables",this.createTables(u))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}t.CFFPrivateDict=CFFPrivateDict;const d={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,a,r){this.predefined=e;this.format=t;this.charset=a;this.raw=r}}t.CFFCharset=CFFCharset;class CFFEncoding{constructor(e,t,a,r){this.predefined=e;this.format=t;this.encoding=a;this.raw=r}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=CFFFDSelect;class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new r.FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,a){if(!(e in this.offsets))throw new r.FormatError(`Not tracking location of ${e}`);const n=a.data,i=this.offsets[e];for(let e=0,a=t.length;e>24&255;n[o]=h>>16&255;n[c]=h>>8&255;n[l]=255&h}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch{this.data=this.data.concat(e)}this.length=this.data.length}},a=this.compileHeader(e.header);t.add(a);const n=this.compileNameIndex(e.names);t.add(n);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const a of e.fdArray){let e=t.slice(0);a.hasName("FontMatrix")&&(e=r.Util.transform(e,a.getByName("FontMatrix")));a.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");i?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);t.add(l);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const a=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t);t.add(a)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t);t.add(h);const u=this.compileCharStrings(e.charStrings);o.setEntryLocation("CharStrings",[t.length],t);t.add(u);if(e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const a=this.compileFDSelect(e.fdSelect);t.add(a);s=this.compileTopDicts(e.fdArray,t.length,!0);o.setEntryLocation("FDArray",[t.length],t);t.add(s.output);const r=s.trackers;this.compilePrivateDicts(e.fdArray,r,t)}this.compilePrivateDicts([e.topDict],[o],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,r.shadow)(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const a=CFFCompiler.EncodeFloatRegExp.exec(t);if(a){const r=parseFloat("1e"+((a[2]?+a[2]:0)+a[1].length));t=(Math.round(e*r)/r).toString()}let r,n,i="";for(r=0,n=t.length;r=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const a of e){const e=Math.min(a.length,127);let n=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");n[t]=e}n=n.join("");""===n&&(n="Bad_Font_Name");t.add((0,r.stringToBytes)(n))}return this.compileIndex(t)}compileTopDicts(e,t,a){const r=[];let n=new CFFIndex;for(const i of e){if(a){i.removeByName("CIDFontVersion");i.removeByName("CIDFontRevision");i.removeByName("CIDFontType");i.removeByName("CIDCount");i.removeByName("UIDBase")}const e=new CFFOffsetTracker,s=this.compileDict(i,e);r.push(e);n.add(s);e.offset(t)}n=this.compileIndex(n,r);return{trackers:r,output:n}}compilePrivateDicts(e,t,a){for(let n=0,i=e.length;n>8&255,255&s]);else{i=new Uint8Array(1+2*s);i[0]=0;let t=0;const n=e.charset.length;let o=!1;for(let s=1;s>8&255;i[s+1]=255&c}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let a,r;switch(t){case 0:a=new Uint8Array(1+e.fdSelect.length);a[0]=t;for(r=0;r>8&255,255&n,i];for(r=1;r>8&255,255&r,t);i=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(r>>8&255,255&r);a=new Uint8Array(s)}return this.compileTypedArray(a)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const a=e.objects,r=a.length;if(0===r)return[0,0];const n=[r>>8&255,255&r];let i,s,o=1;for(i=0;i>8&255,255&c):3===s?n.push(c>>16&255,c>>8&255,255&c):n.push(c>>>24&255,c>>16&255,c>>8&255,255&c);a[i]&&(c+=a[i].length)}for(i=0;i{Object.defineProperty(t,"__esModule",{value:!0});t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0;t.ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"];t.ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0;t.getEncoding=function getEncoding(e){switch(e){case"WinAnsiEncoding":return s;case"StandardEncoding":return i;case"MacRomanEncoding":return n;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return a;case"MacExpertEncoding":return r;default:return null}};const a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertEncoding=a;const r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=n;const i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""];t.StandardEncoding=i;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=o;const c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0;t.normalizeFontName=function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")};t.recoverGlyphName=recoverGlyphName;t.type1FontGlyphMapping=function type1FontGlyphMapping(e,t,a){const i=Object.create(null);let s,c,l;const h=!!(e.flags&o.Symbolic);if(e.isInternalFont){l=t;for(c=0;c=0?s:0}}else if(e.baseEncodingName){l=(0,r.getEncoding)(e.baseEncodingName);for(c=0;c=0?s:0}}else if(h)for(c in t)i[c]=t[c];else{l=r.StandardEncoding;for(c=0;c=0?s:0}}const u=e.differences;let d;if(u)for(c in u){const e=u[c];s=a.indexOf(e);if(-1===s){d||(d=(0,n.getGlyphsUnicode)());const t=recoverGlyphName(e,d);t!==e&&(s=a.indexOf(t))}i[c]=s>=0?s:0}return i};var r=a(37),n=a(39),i=a(40),s=a(2);t.SEAC_ANALYSIS_ENABLED=!0;const o={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};t.FontFlags=o;t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const a=(0,i.getUnicodeForGlyph)(e,t);if(-1!==a)for(const e in t)if(t[e]===a)return e;(0,s.info)("Unable to recover a standard glyph name for: "+e);return e}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getGlyphsUnicode=t.getDingbatsGlyphsUnicode=void 0;var r=a(3);const n=(0,r.getLookupTableFactory)((function(e){e.A=65;e.AE=198;e.AEacute=508;e.AEmacron=482;e.AEsmall=63462;e.Aacute=193;e.Aacutesmall=63457;e.Abreve=258;e.Abreveacute=7854;e.Abrevecyrillic=1232;e.Abrevedotbelow=7862;e.Abrevegrave=7856;e.Abrevehookabove=7858;e.Abrevetilde=7860;e.Acaron=461;e.Acircle=9398;e.Acircumflex=194;e.Acircumflexacute=7844;e.Acircumflexdotbelow=7852;e.Acircumflexgrave=7846;e.Acircumflexhookabove=7848;e.Acircumflexsmall=63458;e.Acircumflextilde=7850;e.Acute=63177;e.Acutesmall=63412;e.Acyrillic=1040;e.Adblgrave=512;e.Adieresis=196;e.Adieresiscyrillic=1234;e.Adieresismacron=478;e.Adieresissmall=63460;e.Adotbelow=7840;e.Adotmacron=480;e.Agrave=192;e.Agravesmall=63456;e.Ahookabove=7842;e.Aiecyrillic=1236;e.Ainvertedbreve=514;e.Alpha=913;e.Alphatonos=902;e.Amacron=256;e.Amonospace=65313;e.Aogonek=260;e.Aring=197;e.Aringacute=506;e.Aringbelow=7680;e.Aringsmall=63461;e.Asmall=63329;e.Atilde=195;e.Atildesmall=63459;e.Aybarmenian=1329;e.B=66;e.Bcircle=9399;e.Bdotaccent=7682;e.Bdotbelow=7684;e.Becyrillic=1041;e.Benarmenian=1330;e.Beta=914;e.Bhook=385;e.Blinebelow=7686;e.Bmonospace=65314;e.Brevesmall=63220;e.Bsmall=63330;e.Btopbar=386;e.C=67;e.Caarmenian=1342;e.Cacute=262;e.Caron=63178;e.Caronsmall=63221;e.Ccaron=268;e.Ccedilla=199;e.Ccedillaacute=7688;e.Ccedillasmall=63463;e.Ccircle=9400;e.Ccircumflex=264;e.Cdot=266;e.Cdotaccent=266;e.Cedillasmall=63416;e.Chaarmenian=1353;e.Cheabkhasiancyrillic=1212;e.Checyrillic=1063;e.Chedescenderabkhasiancyrillic=1214;e.Chedescendercyrillic=1206;e.Chedieresiscyrillic=1268;e.Cheharmenian=1347;e.Chekhakassiancyrillic=1227;e.Cheverticalstrokecyrillic=1208;e.Chi=935;e.Chook=391;e.Circumflexsmall=63222;e.Cmonospace=65315;e.Coarmenian=1361;e.Csmall=63331;e.D=68;e.DZ=497;e.DZcaron=452;e.Daarmenian=1332;e.Dafrican=393;e.Dcaron=270;e.Dcedilla=7696;e.Dcircle=9401;e.Dcircumflexbelow=7698;e.Dcroat=272;e.Ddotaccent=7690;e.Ddotbelow=7692;e.Decyrillic=1044;e.Deicoptic=1006;e.Delta=8710;e.Deltagreek=916;e.Dhook=394;e.Dieresis=63179;e.DieresisAcute=63180;e.DieresisGrave=63181;e.Dieresissmall=63400;e.Digammagreek=988;e.Djecyrillic=1026;e.Dlinebelow=7694;e.Dmonospace=65316;e.Dotaccentsmall=63223;e.Dslash=272;e.Dsmall=63332;e.Dtopbar=395;e.Dz=498;e.Dzcaron=453;e.Dzeabkhasiancyrillic=1248;e.Dzecyrillic=1029;e.Dzhecyrillic=1039;e.E=69;e.Eacute=201;e.Eacutesmall=63465;e.Ebreve=276;e.Ecaron=282;e.Ecedillabreve=7708;e.Echarmenian=1333;e.Ecircle=9402;e.Ecircumflex=202;e.Ecircumflexacute=7870;e.Ecircumflexbelow=7704;e.Ecircumflexdotbelow=7878;e.Ecircumflexgrave=7872;e.Ecircumflexhookabove=7874;e.Ecircumflexsmall=63466;e.Ecircumflextilde=7876;e.Ecyrillic=1028;e.Edblgrave=516;e.Edieresis=203;e.Edieresissmall=63467;e.Edot=278;e.Edotaccent=278;e.Edotbelow=7864;e.Efcyrillic=1060;e.Egrave=200;e.Egravesmall=63464;e.Eharmenian=1335;e.Ehookabove=7866;e.Eightroman=8551;e.Einvertedbreve=518;e.Eiotifiedcyrillic=1124;e.Elcyrillic=1051;e.Elevenroman=8554;e.Emacron=274;e.Emacronacute=7702;e.Emacrongrave=7700;e.Emcyrillic=1052;e.Emonospace=65317;e.Encyrillic=1053;e.Endescendercyrillic=1186;e.Eng=330;e.Enghecyrillic=1188;e.Enhookcyrillic=1223;e.Eogonek=280;e.Eopen=400;e.Epsilon=917;e.Epsilontonos=904;e.Ercyrillic=1056;e.Ereversed=398;e.Ereversedcyrillic=1069;e.Escyrillic=1057;e.Esdescendercyrillic=1194;e.Esh=425;e.Esmall=63333;e.Eta=919;e.Etarmenian=1336;e.Etatonos=905;e.Eth=208;e.Ethsmall=63472;e.Etilde=7868;e.Etildebelow=7706;e.Euro=8364;e.Ezh=439;e.Ezhcaron=494;e.Ezhreversed=440;e.F=70;e.Fcircle=9403;e.Fdotaccent=7710;e.Feharmenian=1366;e.Feicoptic=996;e.Fhook=401;e.Fitacyrillic=1138;e.Fiveroman=8548;e.Fmonospace=65318;e.Fourroman=8547;e.Fsmall=63334;e.G=71;e.GBsquare=13191;e.Gacute=500;e.Gamma=915;e.Gammaafrican=404;e.Gangiacoptic=1002;e.Gbreve=286;e.Gcaron=486;e.Gcedilla=290;e.Gcircle=9404;e.Gcircumflex=284;e.Gcommaaccent=290;e.Gdot=288;e.Gdotaccent=288;e.Gecyrillic=1043;e.Ghadarmenian=1346;e.Ghemiddlehookcyrillic=1172;e.Ghestrokecyrillic=1170;e.Gheupturncyrillic=1168;e.Ghook=403;e.Gimarmenian=1331;e.Gjecyrillic=1027;e.Gmacron=7712;e.Gmonospace=65319;e.Grave=63182;e.Gravesmall=63328;e.Gsmall=63335;e.Gsmallhook=667;e.Gstroke=484;e.H=72;e.H18533=9679;e.H18543=9642;e.H18551=9643;e.H22073=9633;e.HPsquare=13259;e.Haabkhasiancyrillic=1192;e.Hadescendercyrillic=1202;e.Hardsigncyrillic=1066;e.Hbar=294;e.Hbrevebelow=7722;e.Hcedilla=7720;e.Hcircle=9405;e.Hcircumflex=292;e.Hdieresis=7718;e.Hdotaccent=7714;e.Hdotbelow=7716;e.Hmonospace=65320;e.Hoarmenian=1344;e.Horicoptic=1e3;e.Hsmall=63336;e.Hungarumlaut=63183;e.Hungarumlautsmall=63224;e.Hzsquare=13200;e.I=73;e.IAcyrillic=1071;e.IJ=306;e.IUcyrillic=1070;e.Iacute=205;e.Iacutesmall=63469;e.Ibreve=300;e.Icaron=463;e.Icircle=9406;e.Icircumflex=206;e.Icircumflexsmall=63470;e.Icyrillic=1030;e.Idblgrave=520;e.Idieresis=207;e.Idieresisacute=7726;e.Idieresiscyrillic=1252;e.Idieresissmall=63471;e.Idot=304;e.Idotaccent=304;e.Idotbelow=7882;e.Iebrevecyrillic=1238;e.Iecyrillic=1045;e.Ifraktur=8465;e.Igrave=204;e.Igravesmall=63468;e.Ihookabove=7880;e.Iicyrillic=1048;e.Iinvertedbreve=522;e.Iishortcyrillic=1049;e.Imacron=298;e.Imacroncyrillic=1250;e.Imonospace=65321;e.Iniarmenian=1339;e.Iocyrillic=1025;e.Iogonek=302;e.Iota=921;e.Iotaafrican=406;e.Iotadieresis=938;e.Iotatonos=906;e.Ismall=63337;e.Istroke=407;e.Itilde=296;e.Itildebelow=7724;e.Izhitsacyrillic=1140;e.Izhitsadblgravecyrillic=1142;e.J=74;e.Jaarmenian=1345;e.Jcircle=9407;e.Jcircumflex=308;e.Jecyrillic=1032;e.Jheharmenian=1355;e.Jmonospace=65322;e.Jsmall=63338;e.K=75;e.KBsquare=13189;e.KKsquare=13261;e.Kabashkircyrillic=1184;e.Kacute=7728;e.Kacyrillic=1050;e.Kadescendercyrillic=1178;e.Kahookcyrillic=1219;e.Kappa=922;e.Kastrokecyrillic=1182;e.Kaverticalstrokecyrillic=1180;e.Kcaron=488;e.Kcedilla=310;e.Kcircle=9408;e.Kcommaaccent=310;e.Kdotbelow=7730;e.Keharmenian=1364;e.Kenarmenian=1343;e.Khacyrillic=1061;e.Kheicoptic=998;e.Khook=408;e.Kjecyrillic=1036;e.Klinebelow=7732;e.Kmonospace=65323;e.Koppacyrillic=1152;e.Koppagreek=990;e.Ksicyrillic=1134;e.Ksmall=63339;e.L=76;e.LJ=455;e.LL=63167;e.Lacute=313;e.Lambda=923;e.Lcaron=317;e.Lcedilla=315;e.Lcircle=9409;e.Lcircumflexbelow=7740;e.Lcommaaccent=315;e.Ldot=319;e.Ldotaccent=319;e.Ldotbelow=7734;e.Ldotbelowmacron=7736;e.Liwnarmenian=1340;e.Lj=456;e.Ljecyrillic=1033;e.Llinebelow=7738;e.Lmonospace=65324;e.Lslash=321;e.Lslashsmall=63225;e.Lsmall=63340;e.M=77;e.MBsquare=13190;e.Macron=63184;e.Macronsmall=63407;e.Macute=7742;e.Mcircle=9410;e.Mdotaccent=7744;e.Mdotbelow=7746;e.Menarmenian=1348;e.Mmonospace=65325;e.Msmall=63341;e.Mturned=412;e.Mu=924;e.N=78;e.NJ=458;e.Nacute=323;e.Ncaron=327;e.Ncedilla=325;e.Ncircle=9411;e.Ncircumflexbelow=7754;e.Ncommaaccent=325;e.Ndotaccent=7748;e.Ndotbelow=7750;e.Nhookleft=413;e.Nineroman=8552;e.Nj=459;e.Njecyrillic=1034;e.Nlinebelow=7752;e.Nmonospace=65326;e.Nowarmenian=1350;e.Nsmall=63342;e.Ntilde=209;e.Ntildesmall=63473;e.Nu=925;e.O=79;e.OE=338;e.OEsmall=63226;e.Oacute=211;e.Oacutesmall=63475;e.Obarredcyrillic=1256;e.Obarreddieresiscyrillic=1258;e.Obreve=334;e.Ocaron=465;e.Ocenteredtilde=415;e.Ocircle=9412;e.Ocircumflex=212;e.Ocircumflexacute=7888;e.Ocircumflexdotbelow=7896;e.Ocircumflexgrave=7890;e.Ocircumflexhookabove=7892;e.Ocircumflexsmall=63476;e.Ocircumflextilde=7894;e.Ocyrillic=1054;e.Odblacute=336;e.Odblgrave=524;e.Odieresis=214;e.Odieresiscyrillic=1254;e.Odieresissmall=63478;e.Odotbelow=7884;e.Ogoneksmall=63227;e.Ograve=210;e.Ogravesmall=63474;e.Oharmenian=1365;e.Ohm=8486;e.Ohookabove=7886;e.Ohorn=416;e.Ohornacute=7898;e.Ohorndotbelow=7906;e.Ohorngrave=7900;e.Ohornhookabove=7902;e.Ohorntilde=7904;e.Ohungarumlaut=336;e.Oi=418;e.Oinvertedbreve=526;e.Omacron=332;e.Omacronacute=7762;e.Omacrongrave=7760;e.Omega=8486;e.Omegacyrillic=1120;e.Omegagreek=937;e.Omegaroundcyrillic=1146;e.Omegatitlocyrillic=1148;e.Omegatonos=911;e.Omicron=927;e.Omicrontonos=908;e.Omonospace=65327;e.Oneroman=8544;e.Oogonek=490;e.Oogonekmacron=492;e.Oopen=390;e.Oslash=216;e.Oslashacute=510;e.Oslashsmall=63480;e.Osmall=63343;e.Ostrokeacute=510;e.Otcyrillic=1150;e.Otilde=213;e.Otildeacute=7756;e.Otildedieresis=7758;e.Otildesmall=63477;e.P=80;e.Pacute=7764;e.Pcircle=9413;e.Pdotaccent=7766;e.Pecyrillic=1055;e.Peharmenian=1354;e.Pemiddlehookcyrillic=1190;e.Phi=934;e.Phook=420;e.Pi=928;e.Piwrarmenian=1363;e.Pmonospace=65328;e.Psi=936;e.Psicyrillic=1136;e.Psmall=63344;e.Q=81;e.Qcircle=9414;e.Qmonospace=65329;e.Qsmall=63345;e.R=82;e.Raarmenian=1356;e.Racute=340;e.Rcaron=344;e.Rcedilla=342;e.Rcircle=9415;e.Rcommaaccent=342;e.Rdblgrave=528;e.Rdotaccent=7768;e.Rdotbelow=7770;e.Rdotbelowmacron=7772;e.Reharmenian=1360;e.Rfraktur=8476;e.Rho=929;e.Ringsmall=63228;e.Rinvertedbreve=530;e.Rlinebelow=7774;e.Rmonospace=65330;e.Rsmall=63346;e.Rsmallinverted=641;e.Rsmallinvertedsuperior=694;e.S=83;e.SF010000=9484;e.SF020000=9492;e.SF030000=9488;e.SF040000=9496;e.SF050000=9532;e.SF060000=9516;e.SF070000=9524;e.SF080000=9500;e.SF090000=9508;e.SF100000=9472;e.SF110000=9474;e.SF190000=9569;e.SF200000=9570;e.SF210000=9558;e.SF220000=9557;e.SF230000=9571;e.SF240000=9553;e.SF250000=9559;e.SF260000=9565;e.SF270000=9564;e.SF280000=9563;e.SF360000=9566;e.SF370000=9567;e.SF380000=9562;e.SF390000=9556;e.SF400000=9577;e.SF410000=9574;e.SF420000=9568;e.SF430000=9552;e.SF440000=9580;e.SF450000=9575;e.SF460000=9576;e.SF470000=9572;e.SF480000=9573;e.SF490000=9561;e.SF500000=9560;e.SF510000=9554;e.SF520000=9555;e.SF530000=9579;e.SF540000=9578;e.Sacute=346;e.Sacutedotaccent=7780;e.Sampigreek=992;e.Scaron=352;e.Scarondotaccent=7782;e.Scaronsmall=63229;e.Scedilla=350;e.Schwa=399;e.Schwacyrillic=1240;e.Schwadieresiscyrillic=1242;e.Scircle=9416;e.Scircumflex=348;e.Scommaaccent=536;e.Sdotaccent=7776;e.Sdotbelow=7778;e.Sdotbelowdotaccent=7784;e.Seharmenian=1357;e.Sevenroman=8550;e.Shaarmenian=1351;e.Shacyrillic=1064;e.Shchacyrillic=1065;e.Sheicoptic=994;e.Shhacyrillic=1210;e.Shimacoptic=1004;e.Sigma=931;e.Sixroman=8549;e.Smonospace=65331;e.Softsigncyrillic=1068;e.Ssmall=63347;e.Stigmagreek=986;e.T=84;e.Tau=932;e.Tbar=358;e.Tcaron=356;e.Tcedilla=354;e.Tcircle=9417;e.Tcircumflexbelow=7792;e.Tcommaaccent=354;e.Tdotaccent=7786;e.Tdotbelow=7788;e.Tecyrillic=1058;e.Tedescendercyrillic=1196;e.Tenroman=8553;e.Tetsecyrillic=1204;e.Theta=920;e.Thook=428;e.Thorn=222;e.Thornsmall=63486;e.Threeroman=8546;e.Tildesmall=63230;e.Tiwnarmenian=1359;e.Tlinebelow=7790;e.Tmonospace=65332;e.Toarmenian=1337;e.Tonefive=444;e.Tonesix=388;e.Tonetwo=423;e.Tretroflexhook=430;e.Tsecyrillic=1062;e.Tshecyrillic=1035;e.Tsmall=63348;e.Twelveroman=8555;e.Tworoman=8545;e.U=85;e.Uacute=218;e.Uacutesmall=63482;e.Ubreve=364;e.Ucaron=467;e.Ucircle=9418;e.Ucircumflex=219;e.Ucircumflexbelow=7798;e.Ucircumflexsmall=63483;e.Ucyrillic=1059;e.Udblacute=368;e.Udblgrave=532;e.Udieresis=220;e.Udieresisacute=471;e.Udieresisbelow=7794;e.Udieresiscaron=473;e.Udieresiscyrillic=1264;e.Udieresisgrave=475;e.Udieresismacron=469;e.Udieresissmall=63484;e.Udotbelow=7908;e.Ugrave=217;e.Ugravesmall=63481;e.Uhookabove=7910;e.Uhorn=431;e.Uhornacute=7912;e.Uhorndotbelow=7920;e.Uhorngrave=7914;e.Uhornhookabove=7916;e.Uhorntilde=7918;e.Uhungarumlaut=368;e.Uhungarumlautcyrillic=1266;e.Uinvertedbreve=534;e.Ukcyrillic=1144;e.Umacron=362;e.Umacroncyrillic=1262;e.Umacrondieresis=7802;e.Umonospace=65333;e.Uogonek=370;e.Upsilon=933;e.Upsilon1=978;e.Upsilonacutehooksymbolgreek=979;e.Upsilonafrican=433;e.Upsilondieresis=939;e.Upsilondieresishooksymbolgreek=980;e.Upsilonhooksymbol=978;e.Upsilontonos=910;e.Uring=366;e.Ushortcyrillic=1038;e.Usmall=63349;e.Ustraightcyrillic=1198;e.Ustraightstrokecyrillic=1200;e.Utilde=360;e.Utildeacute=7800;e.Utildebelow=7796;e.V=86;e.Vcircle=9419;e.Vdotbelow=7806;e.Vecyrillic=1042;e.Vewarmenian=1358;e.Vhook=434;e.Vmonospace=65334;e.Voarmenian=1352;e.Vsmall=63350;e.Vtilde=7804;e.W=87;e.Wacute=7810;e.Wcircle=9420;e.Wcircumflex=372;e.Wdieresis=7812;e.Wdotaccent=7814;e.Wdotbelow=7816;e.Wgrave=7808;e.Wmonospace=65335;e.Wsmall=63351;e.X=88;e.Xcircle=9421;e.Xdieresis=7820;e.Xdotaccent=7818;e.Xeharmenian=1341;e.Xi=926;e.Xmonospace=65336;e.Xsmall=63352;e.Y=89;e.Yacute=221;e.Yacutesmall=63485;e.Yatcyrillic=1122;e.Ycircle=9422;e.Ycircumflex=374;e.Ydieresis=376;e.Ydieresissmall=63487;e.Ydotaccent=7822;e.Ydotbelow=7924;e.Yericyrillic=1067;e.Yerudieresiscyrillic=1272;e.Ygrave=7922;e.Yhook=435;e.Yhookabove=7926;e.Yiarmenian=1349;e.Yicyrillic=1031;e.Yiwnarmenian=1362;e.Ymonospace=65337;e.Ysmall=63353;e.Ytilde=7928;e.Yusbigcyrillic=1130;e.Yusbigiotifiedcyrillic=1132;e.Yuslittlecyrillic=1126;e.Yuslittleiotifiedcyrillic=1128;e.Z=90;e.Zaarmenian=1334;e.Zacute=377;e.Zcaron=381;e.Zcaronsmall=63231;e.Zcircle=9423;e.Zcircumflex=7824;e.Zdot=379;e.Zdotaccent=379;e.Zdotbelow=7826;e.Zecyrillic=1047;e.Zedescendercyrillic=1176;e.Zedieresiscyrillic=1246;e.Zeta=918;e.Zhearmenian=1338;e.Zhebrevecyrillic=1217;e.Zhecyrillic=1046;e.Zhedescendercyrillic=1174;e.Zhedieresiscyrillic=1244;e.Zlinebelow=7828;e.Zmonospace=65338;e.Zsmall=63354;e.Zstroke=437;e.a=97;e.aabengali=2438;e.aacute=225;e.aadeva=2310;e.aagujarati=2694;e.aagurmukhi=2566;e.aamatragurmukhi=2622;e.aarusquare=13059;e.aavowelsignbengali=2494;e.aavowelsigndeva=2366;e.aavowelsigngujarati=2750;e.abbreviationmarkarmenian=1375;e.abbreviationsigndeva=2416;e.abengali=2437;e.abopomofo=12570;e.abreve=259;e.abreveacute=7855;e.abrevecyrillic=1233;e.abrevedotbelow=7863;e.abrevegrave=7857;e.abrevehookabove=7859;e.abrevetilde=7861;e.acaron=462;e.acircle=9424;e.acircumflex=226;e.acircumflexacute=7845;e.acircumflexdotbelow=7853;e.acircumflexgrave=7847;e.acircumflexhookabove=7849;e.acircumflextilde=7851;e.acute=180;e.acutebelowcmb=791;e.acutecmb=769;e.acutecomb=769;e.acutedeva=2388;e.acutelowmod=719;e.acutetonecmb=833;e.acyrillic=1072;e.adblgrave=513;e.addakgurmukhi=2673;e.adeva=2309;e.adieresis=228;e.adieresiscyrillic=1235;e.adieresismacron=479;e.adotbelow=7841;e.adotmacron=481;e.ae=230;e.aeacute=509;e.aekorean=12624;e.aemacron=483;e.afii00208=8213;e.afii08941=8356;e.afii10017=1040;e.afii10018=1041;e.afii10019=1042;e.afii10020=1043;e.afii10021=1044;e.afii10022=1045;e.afii10023=1025;e.afii10024=1046;e.afii10025=1047;e.afii10026=1048;e.afii10027=1049;e.afii10028=1050;e.afii10029=1051;e.afii10030=1052;e.afii10031=1053;e.afii10032=1054;e.afii10033=1055;e.afii10034=1056;e.afii10035=1057;e.afii10036=1058;e.afii10037=1059;e.afii10038=1060;e.afii10039=1061;e.afii10040=1062;e.afii10041=1063;e.afii10042=1064;e.afii10043=1065;e.afii10044=1066;e.afii10045=1067;e.afii10046=1068;e.afii10047=1069;e.afii10048=1070;e.afii10049=1071;e.afii10050=1168;e.afii10051=1026;e.afii10052=1027;e.afii10053=1028;e.afii10054=1029;e.afii10055=1030;e.afii10056=1031;e.afii10057=1032;e.afii10058=1033;e.afii10059=1034;e.afii10060=1035;e.afii10061=1036;e.afii10062=1038;e.afii10063=63172;e.afii10064=63173;e.afii10065=1072;e.afii10066=1073;e.afii10067=1074;e.afii10068=1075;e.afii10069=1076;e.afii10070=1077;e.afii10071=1105;e.afii10072=1078;e.afii10073=1079;e.afii10074=1080;e.afii10075=1081;e.afii10076=1082;e.afii10077=1083;e.afii10078=1084;e.afii10079=1085;e.afii10080=1086;e.afii10081=1087;e.afii10082=1088;e.afii10083=1089;e.afii10084=1090;e.afii10085=1091;e.afii10086=1092;e.afii10087=1093;e.afii10088=1094;e.afii10089=1095;e.afii10090=1096;e.afii10091=1097;e.afii10092=1098;e.afii10093=1099;e.afii10094=1100;e.afii10095=1101;e.afii10096=1102;e.afii10097=1103;e.afii10098=1169;e.afii10099=1106;e.afii10100=1107;e.afii10101=1108;e.afii10102=1109;e.afii10103=1110;e.afii10104=1111;e.afii10105=1112;e.afii10106=1113;e.afii10107=1114;e.afii10108=1115;e.afii10109=1116;e.afii10110=1118;e.afii10145=1039;e.afii10146=1122;e.afii10147=1138;e.afii10148=1140;e.afii10192=63174;e.afii10193=1119;e.afii10194=1123;e.afii10195=1139;e.afii10196=1141;e.afii10831=63175;e.afii10832=63176;e.afii10846=1241;e.afii299=8206;e.afii300=8207;e.afii301=8205;e.afii57381=1642;e.afii57388=1548;e.afii57392=1632;e.afii57393=1633;e.afii57394=1634;e.afii57395=1635;e.afii57396=1636;e.afii57397=1637;e.afii57398=1638;e.afii57399=1639;e.afii57400=1640;e.afii57401=1641;e.afii57403=1563;e.afii57407=1567;e.afii57409=1569;e.afii57410=1570;e.afii57411=1571;e.afii57412=1572;e.afii57413=1573;e.afii57414=1574;e.afii57415=1575;e.afii57416=1576;e.afii57417=1577;e.afii57418=1578;e.afii57419=1579;e.afii57420=1580;e.afii57421=1581;e.afii57422=1582;e.afii57423=1583;e.afii57424=1584;e.afii57425=1585;e.afii57426=1586;e.afii57427=1587;e.afii57428=1588;e.afii57429=1589;e.afii57430=1590;e.afii57431=1591;e.afii57432=1592;e.afii57433=1593;e.afii57434=1594;e.afii57440=1600;e.afii57441=1601;e.afii57442=1602;e.afii57443=1603;e.afii57444=1604;e.afii57445=1605;e.afii57446=1606;e.afii57448=1608;e.afii57449=1609;e.afii57450=1610;e.afii57451=1611;e.afii57452=1612;e.afii57453=1613;e.afii57454=1614;e.afii57455=1615;e.afii57456=1616;e.afii57457=1617;e.afii57458=1618;e.afii57470=1607;e.afii57505=1700;e.afii57506=1662;e.afii57507=1670;e.afii57508=1688;e.afii57509=1711;e.afii57511=1657;e.afii57512=1672;e.afii57513=1681;e.afii57514=1722;e.afii57519=1746;e.afii57534=1749;e.afii57636=8362;e.afii57645=1470;e.afii57658=1475;e.afii57664=1488;e.afii57665=1489;e.afii57666=1490;e.afii57667=1491;e.afii57668=1492;e.afii57669=1493;e.afii57670=1494;e.afii57671=1495;e.afii57672=1496;e.afii57673=1497;e.afii57674=1498;e.afii57675=1499;e.afii57676=1500;e.afii57677=1501;e.afii57678=1502;e.afii57679=1503;e.afii57680=1504;e.afii57681=1505;e.afii57682=1506;e.afii57683=1507;e.afii57684=1508;e.afii57685=1509;e.afii57686=1510;e.afii57687=1511;e.afii57688=1512;e.afii57689=1513;e.afii57690=1514;e.afii57694=64298;e.afii57695=64299;e.afii57700=64331;e.afii57705=64287;e.afii57716=1520;e.afii57717=1521;e.afii57718=1522;e.afii57723=64309;e.afii57793=1460;e.afii57794=1461;e.afii57795=1462;e.afii57796=1467;e.afii57797=1464;e.afii57798=1463;e.afii57799=1456;e.afii57800=1458;e.afii57801=1457;e.afii57802=1459;e.afii57803=1474;e.afii57804=1473;e.afii57806=1465;e.afii57807=1468;e.afii57839=1469;e.afii57841=1471;e.afii57842=1472;e.afii57929=700;e.afii61248=8453;e.afii61289=8467;e.afii61352=8470;e.afii61573=8236;e.afii61574=8237;e.afii61575=8238;e.afii61664=8204;e.afii63167=1645;e.afii64937=701;e.agrave=224;e.agujarati=2693;e.agurmukhi=2565;e.ahiragana=12354;e.ahookabove=7843;e.aibengali=2448;e.aibopomofo=12574;e.aideva=2320;e.aiecyrillic=1237;e.aigujarati=2704;e.aigurmukhi=2576;e.aimatragurmukhi=2632;e.ainarabic=1593;e.ainfinalarabic=65226;e.aininitialarabic=65227;e.ainmedialarabic=65228;e.ainvertedbreve=515;e.aivowelsignbengali=2504;e.aivowelsigndeva=2376;e.aivowelsigngujarati=2760;e.akatakana=12450;e.akatakanahalfwidth=65393;e.akorean=12623;e.alef=1488;e.alefarabic=1575;e.alefdageshhebrew=64304;e.aleffinalarabic=65166;e.alefhamzaabovearabic=1571;e.alefhamzaabovefinalarabic=65156;e.alefhamzabelowarabic=1573;e.alefhamzabelowfinalarabic=65160;e.alefhebrew=1488;e.aleflamedhebrew=64335;e.alefmaddaabovearabic=1570;e.alefmaddaabovefinalarabic=65154;e.alefmaksuraarabic=1609;e.alefmaksurafinalarabic=65264;e.alefmaksurainitialarabic=65267;e.alefmaksuramedialarabic=65268;e.alefpatahhebrew=64302;e.alefqamatshebrew=64303;e.aleph=8501;e.allequal=8780;e.alpha=945;e.alphatonos=940;e.amacron=257;e.amonospace=65345;e.ampersand=38;e.ampersandmonospace=65286;e.ampersandsmall=63270;e.amsquare=13250;e.anbopomofo=12578;e.angbopomofo=12580;e.angbracketleft=12296;e.angbracketright=12297;e.angkhankhuthai=3674;e.angle=8736;e.anglebracketleft=12296;e.anglebracketleftvertical=65087;e.anglebracketright=12297;e.anglebracketrightvertical=65088;e.angleleft=9001;e.angleright=9002;e.angstrom=8491;e.anoteleia=903;e.anudattadeva=2386;e.anusvarabengali=2434;e.anusvaradeva=2306;e.anusvaragujarati=2690;e.aogonek=261;e.apaatosquare=13056;e.aparen=9372;e.apostrophearmenian=1370;e.apostrophemod=700;e.apple=63743;e.approaches=8784;e.approxequal=8776;e.approxequalorimage=8786;e.approximatelyequal=8773;e.araeaekorean=12686;e.araeakorean=12685;e.arc=8978;e.arighthalfring=7834;e.aring=229;e.aringacute=507;e.aringbelow=7681;e.arrowboth=8596;e.arrowdashdown=8675;e.arrowdashleft=8672;e.arrowdashright=8674;e.arrowdashup=8673;e.arrowdblboth=8660;e.arrowdbldown=8659;e.arrowdblleft=8656;e.arrowdblright=8658;e.arrowdblup=8657;e.arrowdown=8595;e.arrowdownleft=8601;e.arrowdownright=8600;e.arrowdownwhite=8681;e.arrowheaddownmod=709;e.arrowheadleftmod=706;e.arrowheadrightmod=707;e.arrowheadupmod=708;e.arrowhorizex=63719;e.arrowleft=8592;e.arrowleftdbl=8656;e.arrowleftdblstroke=8653;e.arrowleftoverright=8646;e.arrowleftwhite=8678;e.arrowright=8594;e.arrowrightdblstroke=8655;e.arrowrightheavy=10142;e.arrowrightoverleft=8644;e.arrowrightwhite=8680;e.arrowtableft=8676;e.arrowtabright=8677;e.arrowup=8593;e.arrowupdn=8597;e.arrowupdnbse=8616;e.arrowupdownbase=8616;e.arrowupleft=8598;e.arrowupleftofdown=8645;e.arrowupright=8599;e.arrowupwhite=8679;e.arrowvertex=63718;e.asciicircum=94;e.asciicircummonospace=65342;e.asciitilde=126;e.asciitildemonospace=65374;e.ascript=593;e.ascriptturned=594;e.asmallhiragana=12353;e.asmallkatakana=12449;e.asmallkatakanahalfwidth=65383;e.asterisk=42;e.asteriskaltonearabic=1645;e.asteriskarabic=1645;e.asteriskmath=8727;e.asteriskmonospace=65290;e.asterisksmall=65121;e.asterism=8258;e.asuperior=63209;e.asymptoticallyequal=8771;e.at=64;e.atilde=227;e.atmonospace=65312;e.atsmall=65131;e.aturned=592;e.aubengali=2452;e.aubopomofo=12576;e.audeva=2324;e.augujarati=2708;e.augurmukhi=2580;e.aulengthmarkbengali=2519;e.aumatragurmukhi=2636;e.auvowelsignbengali=2508;e.auvowelsigndeva=2380;e.auvowelsigngujarati=2764;e.avagrahadeva=2365;e.aybarmenian=1377;e.ayin=1506;e.ayinaltonehebrew=64288;e.ayinhebrew=1506;e.b=98;e.babengali=2476;e.backslash=92;e.backslashmonospace=65340;e.badeva=2348;e.bagujarati=2732;e.bagurmukhi=2604;e.bahiragana=12400;e.bahtthai=3647;e.bakatakana=12496;e.bar=124;e.barmonospace=65372;e.bbopomofo=12549;e.bcircle=9425;e.bdotaccent=7683;e.bdotbelow=7685;e.beamedsixteenthnotes=9836;e.because=8757;e.becyrillic=1073;e.beharabic=1576;e.behfinalarabic=65168;e.behinitialarabic=65169;e.behiragana=12409;e.behmedialarabic=65170;e.behmeeminitialarabic=64671;e.behmeemisolatedarabic=64520;e.behnoonfinalarabic=64621;e.bekatakana=12505;e.benarmenian=1378;e.bet=1489;e.beta=946;e.betasymbolgreek=976;e.betdagesh=64305;e.betdageshhebrew=64305;e.bethebrew=1489;e.betrafehebrew=64332;e.bhabengali=2477;e.bhadeva=2349;e.bhagujarati=2733;e.bhagurmukhi=2605;e.bhook=595;e.bihiragana=12403;e.bikatakana=12499;e.bilabialclick=664;e.bindigurmukhi=2562;e.birusquare=13105;e.blackcircle=9679;e.blackdiamond=9670;e.blackdownpointingtriangle=9660;e.blackleftpointingpointer=9668;e.blackleftpointingtriangle=9664;e.blacklenticularbracketleft=12304;e.blacklenticularbracketleftvertical=65083;e.blacklenticularbracketright=12305;e.blacklenticularbracketrightvertical=65084;e.blacklowerlefttriangle=9699;e.blacklowerrighttriangle=9698;e.blackrectangle=9644;e.blackrightpointingpointer=9658;e.blackrightpointingtriangle=9654;e.blacksmallsquare=9642;e.blacksmilingface=9787;e.blacksquare=9632;e.blackstar=9733;e.blackupperlefttriangle=9700;e.blackupperrighttriangle=9701;e.blackuppointingsmalltriangle=9652;e.blackuppointingtriangle=9650;e.blank=9251;e.blinebelow=7687;e.block=9608;e.bmonospace=65346;e.bobaimaithai=3610;e.bohiragana=12412;e.bokatakana=12508;e.bparen=9373;e.bqsquare=13251;e.braceex=63732;e.braceleft=123;e.braceleftbt=63731;e.braceleftmid=63730;e.braceleftmonospace=65371;e.braceleftsmall=65115;e.bracelefttp=63729;e.braceleftvertical=65079;e.braceright=125;e.bracerightbt=63742;e.bracerightmid=63741;e.bracerightmonospace=65373;e.bracerightsmall=65116;e.bracerighttp=63740;e.bracerightvertical=65080;e.bracketleft=91;e.bracketleftbt=63728;e.bracketleftex=63727;e.bracketleftmonospace=65339;e.bracketlefttp=63726;e.bracketright=93;e.bracketrightbt=63739;e.bracketrightex=63738;e.bracketrightmonospace=65341;e.bracketrighttp=63737;e.breve=728;e.brevebelowcmb=814;e.brevecmb=774;e.breveinvertedbelowcmb=815;e.breveinvertedcmb=785;e.breveinverteddoublecmb=865;e.bridgebelowcmb=810;e.bridgeinvertedbelowcmb=826;e.brokenbar=166;e.bstroke=384;e.bsuperior=63210;e.btopbar=387;e.buhiragana=12406;e.bukatakana=12502;e.bullet=8226;e.bulletinverse=9688;e.bulletoperator=8729;e.bullseye=9678;e.c=99;e.caarmenian=1390;e.cabengali=2458;e.cacute=263;e.cadeva=2330;e.cagujarati=2714;e.cagurmukhi=2586;e.calsquare=13192;e.candrabindubengali=2433;e.candrabinducmb=784;e.candrabindudeva=2305;e.candrabindugujarati=2689;e.capslock=8682;e.careof=8453;e.caron=711;e.caronbelowcmb=812;e.caroncmb=780;e.carriagereturn=8629;e.cbopomofo=12568;e.ccaron=269;e.ccedilla=231;e.ccedillaacute=7689;e.ccircle=9426;e.ccircumflex=265;e.ccurl=597;e.cdot=267;e.cdotaccent=267;e.cdsquare=13253;e.cedilla=184;e.cedillacmb=807;e.cent=162;e.centigrade=8451;e.centinferior=63199;e.centmonospace=65504;e.centoldstyle=63394;e.centsuperior=63200;e.chaarmenian=1401;e.chabengali=2459;e.chadeva=2331;e.chagujarati=2715;e.chagurmukhi=2587;e.chbopomofo=12564;e.cheabkhasiancyrillic=1213;e.checkmark=10003;e.checyrillic=1095;e.chedescenderabkhasiancyrillic=1215;e.chedescendercyrillic=1207;e.chedieresiscyrillic=1269;e.cheharmenian=1395;e.chekhakassiancyrillic=1228;e.cheverticalstrokecyrillic=1209;e.chi=967;e.chieuchacirclekorean=12919;e.chieuchaparenkorean=12823;e.chieuchcirclekorean=12905;e.chieuchkorean=12618;e.chieuchparenkorean=12809;e.chochangthai=3594;e.chochanthai=3592;e.chochingthai=3593;e.chochoethai=3596;e.chook=392;e.cieucacirclekorean=12918;e.cieucaparenkorean=12822;e.cieuccirclekorean=12904;e.cieuckorean=12616;e.cieucparenkorean=12808;e.cieucuparenkorean=12828;e.circle=9675;e.circlecopyrt=169;e.circlemultiply=8855;e.circleot=8857;e.circleplus=8853;e.circlepostalmark=12342;e.circlewithlefthalfblack=9680;e.circlewithrighthalfblack=9681;e.circumflex=710;e.circumflexbelowcmb=813;e.circumflexcmb=770;e.clear=8999;e.clickalveolar=450;e.clickdental=448;e.clicklateral=449;e.clickretroflex=451;e.club=9827;e.clubsuitblack=9827;e.clubsuitwhite=9831;e.cmcubedsquare=13220;e.cmonospace=65347;e.cmsquaredsquare=13216;e.coarmenian=1409;e.colon=58;e.colonmonetary=8353;e.colonmonospace=65306;e.colonsign=8353;e.colonsmall=65109;e.colontriangularhalfmod=721;e.colontriangularmod=720;e.comma=44;e.commaabovecmb=787;e.commaaboverightcmb=789;e.commaaccent=63171;e.commaarabic=1548;e.commaarmenian=1373;e.commainferior=63201;e.commamonospace=65292;e.commareversedabovecmb=788;e.commareversedmod=701;e.commasmall=65104;e.commasuperior=63202;e.commaturnedabovecmb=786;e.commaturnedmod=699;e.compass=9788;e.congruent=8773;e.contourintegral=8750;e.control=8963;e.controlACK=6;e.controlBEL=7;e.controlBS=8;e.controlCAN=24;e.controlCR=13;e.controlDC1=17;e.controlDC2=18;e.controlDC3=19;e.controlDC4=20;e.controlDEL=127;e.controlDLE=16;e.controlEM=25;e.controlENQ=5;e.controlEOT=4;e.controlESC=27;e.controlETB=23;e.controlETX=3;e.controlFF=12;e.controlFS=28;e.controlGS=29;e.controlHT=9;e.controlLF=10;e.controlNAK=21;e.controlNULL=0;e.controlRS=30;e.controlSI=15;e.controlSO=14;e.controlSOT=2;e.controlSTX=1;e.controlSUB=26;e.controlSYN=22;e.controlUS=31;e.controlVT=11;e.copyright=169;e.copyrightsans=63721;e.copyrightserif=63193;e.cornerbracketleft=12300;e.cornerbracketlefthalfwidth=65378;e.cornerbracketleftvertical=65089;e.cornerbracketright=12301;e.cornerbracketrighthalfwidth=65379;e.cornerbracketrightvertical=65090;e.corporationsquare=13183;e.cosquare=13255;e.coverkgsquare=13254;e.cparen=9374;e.cruzeiro=8354;e.cstretched=663;e.curlyand=8911;e.curlyor=8910;e.currency=164;e.cyrBreve=63185;e.cyrFlex=63186;e.cyrbreve=63188;e.cyrflex=63189;e.d=100;e.daarmenian=1380;e.dabengali=2470;e.dadarabic=1590;e.dadeva=2342;e.dadfinalarabic=65214;e.dadinitialarabic=65215;e.dadmedialarabic=65216;e.dagesh=1468;e.dageshhebrew=1468;e.dagger=8224;e.daggerdbl=8225;e.dagujarati=2726;e.dagurmukhi=2598;e.dahiragana=12384;e.dakatakana=12480;e.dalarabic=1583;e.dalet=1491;e.daletdagesh=64307;e.daletdageshhebrew=64307;e.dalethebrew=1491;e.dalfinalarabic=65194;e.dammaarabic=1615;e.dammalowarabic=1615;e.dammatanaltonearabic=1612;e.dammatanarabic=1612;e.danda=2404;e.dargahebrew=1447;e.dargalefthebrew=1447;e.dasiapneumatacyrilliccmb=1157;e.dblGrave=63187;e.dblanglebracketleft=12298;e.dblanglebracketleftvertical=65085;e.dblanglebracketright=12299;e.dblanglebracketrightvertical=65086;e.dblarchinvertedbelowcmb=811;e.dblarrowleft=8660;e.dblarrowright=8658;e.dbldanda=2405;e.dblgrave=63190;e.dblgravecmb=783;e.dblintegral=8748;e.dbllowline=8215;e.dbllowlinecmb=819;e.dbloverlinecmb=831;e.dblprimemod=698;e.dblverticalbar=8214;e.dblverticallineabovecmb=782;e.dbopomofo=12553;e.dbsquare=13256;e.dcaron=271;e.dcedilla=7697;e.dcircle=9427;e.dcircumflexbelow=7699;e.dcroat=273;e.ddabengali=2465;e.ddadeva=2337;e.ddagujarati=2721;e.ddagurmukhi=2593;e.ddalarabic=1672;e.ddalfinalarabic=64393;e.dddhadeva=2396;e.ddhabengali=2466;e.ddhadeva=2338;e.ddhagujarati=2722;e.ddhagurmukhi=2594;e.ddotaccent=7691;e.ddotbelow=7693;e.decimalseparatorarabic=1643;e.decimalseparatorpersian=1643;e.decyrillic=1076;e.degree=176;e.dehihebrew=1453;e.dehiragana=12391;e.deicoptic=1007;e.dekatakana=12487;e.deleteleft=9003;e.deleteright=8998;e.delta=948;e.deltaturned=397;e.denominatorminusonenumeratorbengali=2552;e.dezh=676;e.dhabengali=2471;e.dhadeva=2343;e.dhagujarati=2727;e.dhagurmukhi=2599;e.dhook=599;e.dialytikatonos=901;e.dialytikatonoscmb=836;e.diamond=9830;e.diamondsuitwhite=9826;e.dieresis=168;e.dieresisacute=63191;e.dieresisbelowcmb=804;e.dieresiscmb=776;e.dieresisgrave=63192;e.dieresistonos=901;e.dihiragana=12386;e.dikatakana=12482;e.dittomark=12291;e.divide=247;e.divides=8739;e.divisionslash=8725;e.djecyrillic=1106;e.dkshade=9619;e.dlinebelow=7695;e.dlsquare=13207;e.dmacron=273;e.dmonospace=65348;e.dnblock=9604;e.dochadathai=3598;e.dodekthai=3604;e.dohiragana=12393;e.dokatakana=12489;e.dollar=36;e.dollarinferior=63203;e.dollarmonospace=65284;e.dollaroldstyle=63268;e.dollarsmall=65129;e.dollarsuperior=63204;e.dong=8363;e.dorusquare=13094;e.dotaccent=729;e.dotaccentcmb=775;e.dotbelowcmb=803;e.dotbelowcomb=803;e.dotkatakana=12539;e.dotlessi=305;e.dotlessj=63166;e.dotlessjstrokehook=644;e.dotmath=8901;e.dottedcircle=9676;e.doubleyodpatah=64287;e.doubleyodpatahhebrew=64287;e.downtackbelowcmb=798;e.downtackmod=725;e.dparen=9375;e.dsuperior=63211;e.dtail=598;e.dtopbar=396;e.duhiragana=12389;e.dukatakana=12485;e.dz=499;e.dzaltone=675;e.dzcaron=454;e.dzcurl=677;e.dzeabkhasiancyrillic=1249;e.dzecyrillic=1109;e.dzhecyrillic=1119;e.e=101;e.eacute=233;e.earth=9793;e.ebengali=2447;e.ebopomofo=12572;e.ebreve=277;e.ecandradeva=2317;e.ecandragujarati=2701;e.ecandravowelsigndeva=2373;e.ecandravowelsigngujarati=2757;e.ecaron=283;e.ecedillabreve=7709;e.echarmenian=1381;e.echyiwnarmenian=1415;e.ecircle=9428;e.ecircumflex=234;e.ecircumflexacute=7871;e.ecircumflexbelow=7705;e.ecircumflexdotbelow=7879;e.ecircumflexgrave=7873;e.ecircumflexhookabove=7875;e.ecircumflextilde=7877;e.ecyrillic=1108;e.edblgrave=517;e.edeva=2319;e.edieresis=235;e.edot=279;e.edotaccent=279;e.edotbelow=7865;e.eegurmukhi=2575;e.eematragurmukhi=2631;e.efcyrillic=1092;e.egrave=232;e.egujarati=2703;e.eharmenian=1383;e.ehbopomofo=12573;e.ehiragana=12360;e.ehookabove=7867;e.eibopomofo=12575;e.eight=56;e.eightarabic=1640;e.eightbengali=2542;e.eightcircle=9319;e.eightcircleinversesansserif=10129;e.eightdeva=2414;e.eighteencircle=9329;e.eighteenparen=9349;e.eighteenperiod=9369;e.eightgujarati=2798;e.eightgurmukhi=2670;e.eighthackarabic=1640;e.eighthangzhou=12328;e.eighthnotebeamed=9835;e.eightideographicparen=12839;e.eightinferior=8328;e.eightmonospace=65304;e.eightoldstyle=63288;e.eightparen=9339;e.eightperiod=9359;e.eightpersian=1784;e.eightroman=8567;e.eightsuperior=8312;e.eightthai=3672;e.einvertedbreve=519;e.eiotifiedcyrillic=1125;e.ekatakana=12456;e.ekatakanahalfwidth=65396;e.ekonkargurmukhi=2676;e.ekorean=12628;e.elcyrillic=1083;e.element=8712;e.elevencircle=9322;e.elevenparen=9342;e.elevenperiod=9362;e.elevenroman=8570;e.ellipsis=8230;e.ellipsisvertical=8942;e.emacron=275;e.emacronacute=7703;e.emacrongrave=7701;e.emcyrillic=1084;e.emdash=8212;e.emdashvertical=65073;e.emonospace=65349;e.emphasismarkarmenian=1371;e.emptyset=8709;e.enbopomofo=12579;e.encyrillic=1085;e.endash=8211;e.endashvertical=65074;e.endescendercyrillic=1187;e.eng=331;e.engbopomofo=12581;e.enghecyrillic=1189;e.enhookcyrillic=1224;e.enspace=8194;e.eogonek=281;e.eokorean=12627;e.eopen=603;e.eopenclosed=666;e.eopenreversed=604;e.eopenreversedclosed=606;e.eopenreversedhook=605;e.eparen=9376;e.epsilon=949;e.epsilontonos=941;e.equal=61;e.equalmonospace=65309;e.equalsmall=65126;e.equalsuperior=8316;e.equivalence=8801;e.erbopomofo=12582;e.ercyrillic=1088;e.ereversed=600;e.ereversedcyrillic=1101;e.escyrillic=1089;e.esdescendercyrillic=1195;e.esh=643;e.eshcurl=646;e.eshortdeva=2318;e.eshortvowelsigndeva=2374;e.eshreversedloop=426;e.eshsquatreversed=645;e.esmallhiragana=12359;e.esmallkatakana=12455;e.esmallkatakanahalfwidth=65386;e.estimated=8494;e.esuperior=63212;e.eta=951;e.etarmenian=1384;e.etatonos=942;e.eth=240;e.etilde=7869;e.etildebelow=7707;e.etnahtafoukhhebrew=1425;e.etnahtafoukhlefthebrew=1425;e.etnahtahebrew=1425;e.etnahtalefthebrew=1425;e.eturned=477;e.eukorean=12641;e.euro=8364;e.evowelsignbengali=2503;e.evowelsigndeva=2375;e.evowelsigngujarati=2759;e.exclam=33;e.exclamarmenian=1372;e.exclamdbl=8252;e.exclamdown=161;e.exclamdownsmall=63393;e.exclammonospace=65281;e.exclamsmall=63265;e.existential=8707;e.ezh=658;e.ezhcaron=495;e.ezhcurl=659;e.ezhreversed=441;e.ezhtail=442;e.f=102;e.fadeva=2398;e.fagurmukhi=2654;e.fahrenheit=8457;e.fathaarabic=1614;e.fathalowarabic=1614;e.fathatanarabic=1611;e.fbopomofo=12552;e.fcircle=9429;e.fdotaccent=7711;e.feharabic=1601;e.feharmenian=1414;e.fehfinalarabic=65234;e.fehinitialarabic=65235;e.fehmedialarabic=65236;e.feicoptic=997;e.female=9792;e.ff=64256;e.f_f=64256;e.ffi=64259;e.f_f_i=64259;e.ffl=64260;e.f_f_l=64260;e.fi=64257;e.f_i=64257;e.fifteencircle=9326;e.fifteenparen=9346;e.fifteenperiod=9366;e.figuredash=8210;e.filledbox=9632;e.filledrect=9644;e.finalkaf=1498;e.finalkafdagesh=64314;e.finalkafdageshhebrew=64314;e.finalkafhebrew=1498;e.finalmem=1501;e.finalmemhebrew=1501;e.finalnun=1503;e.finalnunhebrew=1503;e.finalpe=1507;e.finalpehebrew=1507;e.finaltsadi=1509;e.finaltsadihebrew=1509;e.firsttonechinese=713;e.fisheye=9673;e.fitacyrillic=1139;e.five=53;e.fivearabic=1637;e.fivebengali=2539;e.fivecircle=9316;e.fivecircleinversesansserif=10126;e.fivedeva=2411;e.fiveeighths=8541;e.fivegujarati=2795;e.fivegurmukhi=2667;e.fivehackarabic=1637;e.fivehangzhou=12325;e.fiveideographicparen=12836;e.fiveinferior=8325;e.fivemonospace=65301;e.fiveoldstyle=63285;e.fiveparen=9336;e.fiveperiod=9356;e.fivepersian=1781;e.fiveroman=8564;e.fivesuperior=8309;e.fivethai=3669;e.fl=64258;e.f_l=64258;e.florin=402;e.fmonospace=65350;e.fmsquare=13209;e.fofanthai=3615;e.fofathai=3613;e.fongmanthai=3663;e.forall=8704;e.four=52;e.fourarabic=1636;e.fourbengali=2538;e.fourcircle=9315;e.fourcircleinversesansserif=10125;e.fourdeva=2410;e.fourgujarati=2794;e.fourgurmukhi=2666;e.fourhackarabic=1636;e.fourhangzhou=12324;e.fourideographicparen=12835;e.fourinferior=8324;e.fourmonospace=65300;e.fournumeratorbengali=2551;e.fouroldstyle=63284;e.fourparen=9335;e.fourperiod=9355;e.fourpersian=1780;e.fourroman=8563;e.foursuperior=8308;e.fourteencircle=9325;e.fourteenparen=9345;e.fourteenperiod=9365;e.fourthai=3668;e.fourthtonechinese=715;e.fparen=9377;e.fraction=8260;e.franc=8355;e.g=103;e.gabengali=2455;e.gacute=501;e.gadeva=2327;e.gafarabic=1711;e.gaffinalarabic=64403;e.gafinitialarabic=64404;e.gafmedialarabic=64405;e.gagujarati=2711;e.gagurmukhi=2583;e.gahiragana=12364;e.gakatakana=12460;e.gamma=947;e.gammalatinsmall=611;e.gammasuperior=736;e.gangiacoptic=1003;e.gbopomofo=12557;e.gbreve=287;e.gcaron=487;e.gcedilla=291;e.gcircle=9430;e.gcircumflex=285;e.gcommaaccent=291;e.gdot=289;e.gdotaccent=289;e.gecyrillic=1075;e.gehiragana=12370;e.gekatakana=12466;e.geometricallyequal=8785;e.gereshaccenthebrew=1436;e.gereshhebrew=1523;e.gereshmuqdamhebrew=1437;e.germandbls=223;e.gershayimaccenthebrew=1438;e.gershayimhebrew=1524;e.getamark=12307;e.ghabengali=2456;e.ghadarmenian=1394;e.ghadeva=2328;e.ghagujarati=2712;e.ghagurmukhi=2584;e.ghainarabic=1594;e.ghainfinalarabic=65230;e.ghaininitialarabic=65231;e.ghainmedialarabic=65232;e.ghemiddlehookcyrillic=1173;e.ghestrokecyrillic=1171;e.gheupturncyrillic=1169;e.ghhadeva=2394;e.ghhagurmukhi=2650;e.ghook=608;e.ghzsquare=13203;e.gihiragana=12366;e.gikatakana=12462;e.gimarmenian=1379;e.gimel=1490;e.gimeldagesh=64306;e.gimeldageshhebrew=64306;e.gimelhebrew=1490;e.gjecyrillic=1107;e.glottalinvertedstroke=446;e.glottalstop=660;e.glottalstopinverted=662;e.glottalstopmod=704;e.glottalstopreversed=661;e.glottalstopreversedmod=705;e.glottalstopreversedsuperior=740;e.glottalstopstroke=673;e.glottalstopstrokereversed=674;e.gmacron=7713;e.gmonospace=65351;e.gohiragana=12372;e.gokatakana=12468;e.gparen=9378;e.gpasquare=13228;e.gradient=8711;e.grave=96;e.gravebelowcmb=790;e.gravecmb=768;e.gravecomb=768;e.gravedeva=2387;e.gravelowmod=718;e.gravemonospace=65344;e.gravetonecmb=832;e.greater=62;e.greaterequal=8805;e.greaterequalorless=8923;e.greatermonospace=65310;e.greaterorequivalent=8819;e.greaterorless=8823;e.greateroverequal=8807;e.greatersmall=65125;e.gscript=609;e.gstroke=485;e.guhiragana=12368;e.guillemotleft=171;e.guillemotright=187;e.guilsinglleft=8249;e.guilsinglright=8250;e.gukatakana=12464;e.guramusquare=13080;e.gysquare=13257;e.h=104;e.haabkhasiancyrillic=1193;e.haaltonearabic=1729;e.habengali=2489;e.hadescendercyrillic=1203;e.hadeva=2361;e.hagujarati=2745;e.hagurmukhi=2617;e.haharabic=1581;e.hahfinalarabic=65186;e.hahinitialarabic=65187;e.hahiragana=12399;e.hahmedialarabic=65188;e.haitusquare=13098;e.hakatakana=12495;e.hakatakanahalfwidth=65418;e.halantgurmukhi=2637;e.hamzaarabic=1569;e.hamzalowarabic=1569;e.hangulfiller=12644;e.hardsigncyrillic=1098;e.harpoonleftbarbup=8636;e.harpoonrightbarbup=8640;e.hasquare=13258;e.hatafpatah=1458;e.hatafpatah16=1458;e.hatafpatah23=1458;e.hatafpatah2f=1458;e.hatafpatahhebrew=1458;e.hatafpatahnarrowhebrew=1458;e.hatafpatahquarterhebrew=1458;e.hatafpatahwidehebrew=1458;e.hatafqamats=1459;e.hatafqamats1b=1459;e.hatafqamats28=1459;e.hatafqamats34=1459;e.hatafqamatshebrew=1459;e.hatafqamatsnarrowhebrew=1459;e.hatafqamatsquarterhebrew=1459;e.hatafqamatswidehebrew=1459;e.hatafsegol=1457;e.hatafsegol17=1457;e.hatafsegol24=1457;e.hatafsegol30=1457;e.hatafsegolhebrew=1457;e.hatafsegolnarrowhebrew=1457;e.hatafsegolquarterhebrew=1457;e.hatafsegolwidehebrew=1457;e.hbar=295;e.hbopomofo=12559;e.hbrevebelow=7723;e.hcedilla=7721;e.hcircle=9431;e.hcircumflex=293;e.hdieresis=7719;e.hdotaccent=7715;e.hdotbelow=7717;e.he=1492;e.heart=9829;e.heartsuitblack=9829;e.heartsuitwhite=9825;e.hedagesh=64308;e.hedageshhebrew=64308;e.hehaltonearabic=1729;e.heharabic=1607;e.hehebrew=1492;e.hehfinalaltonearabic=64423;e.hehfinalalttwoarabic=65258;e.hehfinalarabic=65258;e.hehhamzaabovefinalarabic=64421;e.hehhamzaaboveisolatedarabic=64420;e.hehinitialaltonearabic=64424;e.hehinitialarabic=65259;e.hehiragana=12408;e.hehmedialaltonearabic=64425;e.hehmedialarabic=65260;e.heiseierasquare=13179;e.hekatakana=12504;e.hekatakanahalfwidth=65421;e.hekutaarusquare=13110;e.henghook=615;e.herutusquare=13113;e.het=1495;e.hethebrew=1495;e.hhook=614;e.hhooksuperior=689;e.hieuhacirclekorean=12923;e.hieuhaparenkorean=12827;e.hieuhcirclekorean=12909;e.hieuhkorean=12622;e.hieuhparenkorean=12813;e.hihiragana=12402;e.hikatakana=12498;e.hikatakanahalfwidth=65419;e.hiriq=1460;e.hiriq14=1460;e.hiriq21=1460;e.hiriq2d=1460;e.hiriqhebrew=1460;e.hiriqnarrowhebrew=1460;e.hiriqquarterhebrew=1460;e.hiriqwidehebrew=1460;e.hlinebelow=7830;e.hmonospace=65352;e.hoarmenian=1392;e.hohipthai=3627;e.hohiragana=12411;e.hokatakana=12507;e.hokatakanahalfwidth=65422;e.holam=1465;e.holam19=1465;e.holam26=1465;e.holam32=1465;e.holamhebrew=1465;e.holamnarrowhebrew=1465;e.holamquarterhebrew=1465;e.holamwidehebrew=1465;e.honokhukthai=3630;e.hookabovecomb=777;e.hookcmb=777;e.hookpalatalizedbelowcmb=801;e.hookretroflexbelowcmb=802;e.hoonsquare=13122;e.horicoptic=1001;e.horizontalbar=8213;e.horncmb=795;e.hotsprings=9832;e.house=8962;e.hparen=9379;e.hsuperior=688;e.hturned=613;e.huhiragana=12405;e.huiitosquare=13107;e.hukatakana=12501;e.hukatakanahalfwidth=65420;e.hungarumlaut=733;e.hungarumlautcmb=779;e.hv=405;e.hyphen=45;e.hypheninferior=63205;e.hyphenmonospace=65293;e.hyphensmall=65123;e.hyphensuperior=63206;e.hyphentwo=8208;e.i=105;e.iacute=237;e.iacyrillic=1103;e.ibengali=2439;e.ibopomofo=12583;e.ibreve=301;e.icaron=464;e.icircle=9432;e.icircumflex=238;e.icyrillic=1110;e.idblgrave=521;e.ideographearthcircle=12943;e.ideographfirecircle=12939;e.ideographicallianceparen=12863;e.ideographiccallparen=12858;e.ideographiccentrecircle=12965;e.ideographicclose=12294;e.ideographiccomma=12289;e.ideographiccommaleft=65380;e.ideographiccongratulationparen=12855;e.ideographiccorrectcircle=12963;e.ideographicearthparen=12847;e.ideographicenterpriseparen=12861;e.ideographicexcellentcircle=12957;e.ideographicfestivalparen=12864;e.ideographicfinancialcircle=12950;e.ideographicfinancialparen=12854;e.ideographicfireparen=12843;e.ideographichaveparen=12850;e.ideographichighcircle=12964;e.ideographiciterationmark=12293;e.ideographiclaborcircle=12952;e.ideographiclaborparen=12856;e.ideographicleftcircle=12967;e.ideographiclowcircle=12966;e.ideographicmedicinecircle=12969;e.ideographicmetalparen=12846;e.ideographicmoonparen=12842;e.ideographicnameparen=12852;e.ideographicperiod=12290;e.ideographicprintcircle=12958;e.ideographicreachparen=12867;e.ideographicrepresentparen=12857;e.ideographicresourceparen=12862;e.ideographicrightcircle=12968;e.ideographicsecretcircle=12953;e.ideographicselfparen=12866;e.ideographicsocietyparen=12851;e.ideographicspace=12288;e.ideographicspecialparen=12853;e.ideographicstockparen=12849;e.ideographicstudyparen=12859;e.ideographicsunparen=12848;e.ideographicsuperviseparen=12860;e.ideographicwaterparen=12844;e.ideographicwoodparen=12845;e.ideographiczero=12295;e.ideographmetalcircle=12942;e.ideographmooncircle=12938;e.ideographnamecircle=12948;e.ideographsuncircle=12944;e.ideographwatercircle=12940;e.ideographwoodcircle=12941;e.ideva=2311;e.idieresis=239;e.idieresisacute=7727;e.idieresiscyrillic=1253;e.idotbelow=7883;e.iebrevecyrillic=1239;e.iecyrillic=1077;e.ieungacirclekorean=12917;e.ieungaparenkorean=12821;e.ieungcirclekorean=12903;e.ieungkorean=12615;e.ieungparenkorean=12807;e.igrave=236;e.igujarati=2695;e.igurmukhi=2567;e.ihiragana=12356;e.ihookabove=7881;e.iibengali=2440;e.iicyrillic=1080;e.iideva=2312;e.iigujarati=2696;e.iigurmukhi=2568;e.iimatragurmukhi=2624;e.iinvertedbreve=523;e.iishortcyrillic=1081;e.iivowelsignbengali=2496;e.iivowelsigndeva=2368;e.iivowelsigngujarati=2752;e.ij=307;e.ikatakana=12452;e.ikatakanahalfwidth=65394;e.ikorean=12643;e.ilde=732;e.iluyhebrew=1452;e.imacron=299;e.imacroncyrillic=1251;e.imageorapproximatelyequal=8787;e.imatragurmukhi=2623;e.imonospace=65353;e.increment=8710;e.infinity=8734;e.iniarmenian=1387;e.integral=8747;e.integralbottom=8993;e.integralbt=8993;e.integralex=63733;e.integraltop=8992;e.integraltp=8992;e.intersection=8745;e.intisquare=13061;e.invbullet=9688;e.invcircle=9689;e.invsmileface=9787;e.iocyrillic=1105;e.iogonek=303;e.iota=953;e.iotadieresis=970;e.iotadieresistonos=912;e.iotalatin=617;e.iotatonos=943;e.iparen=9380;e.irigurmukhi=2674;e.ismallhiragana=12355;e.ismallkatakana=12451;e.ismallkatakanahalfwidth=65384;e.issharbengali=2554;e.istroke=616;e.isuperior=63213;e.iterationhiragana=12445;e.iterationkatakana=12541;e.itilde=297;e.itildebelow=7725;e.iubopomofo=12585;e.iucyrillic=1102;e.ivowelsignbengali=2495;e.ivowelsigndeva=2367;e.ivowelsigngujarati=2751;e.izhitsacyrillic=1141;e.izhitsadblgravecyrillic=1143;e.j=106;e.jaarmenian=1393;e.jabengali=2460;e.jadeva=2332;e.jagujarati=2716;e.jagurmukhi=2588;e.jbopomofo=12560;e.jcaron=496;e.jcircle=9433;e.jcircumflex=309;e.jcrossedtail=669;e.jdotlessstroke=607;e.jecyrillic=1112;e.jeemarabic=1580;e.jeemfinalarabic=65182;e.jeeminitialarabic=65183;e.jeemmedialarabic=65184;e.jeharabic=1688;e.jehfinalarabic=64395;e.jhabengali=2461;e.jhadeva=2333;e.jhagujarati=2717;e.jhagurmukhi=2589;e.jheharmenian=1403;e.jis=12292;e.jmonospace=65354;e.jparen=9381;e.jsuperior=690;e.k=107;e.kabashkircyrillic=1185;e.kabengali=2453;e.kacute=7729;e.kacyrillic=1082;e.kadescendercyrillic=1179;e.kadeva=2325;e.kaf=1499;e.kafarabic=1603;e.kafdagesh=64315;e.kafdageshhebrew=64315;e.kaffinalarabic=65242;e.kafhebrew=1499;e.kafinitialarabic=65243;e.kafmedialarabic=65244;e.kafrafehebrew=64333;e.kagujarati=2709;e.kagurmukhi=2581;e.kahiragana=12363;e.kahookcyrillic=1220;e.kakatakana=12459;e.kakatakanahalfwidth=65398;e.kappa=954;e.kappasymbolgreek=1008;e.kapyeounmieumkorean=12657;e.kapyeounphieuphkorean=12676;e.kapyeounpieupkorean=12664;e.kapyeounssangpieupkorean=12665;e.karoriisquare=13069;e.kashidaautoarabic=1600;e.kashidaautonosidebearingarabic=1600;e.kasmallkatakana=12533;e.kasquare=13188;e.kasraarabic=1616;e.kasratanarabic=1613;e.kastrokecyrillic=1183;e.katahiraprolongmarkhalfwidth=65392;e.kaverticalstrokecyrillic=1181;e.kbopomofo=12558;e.kcalsquare=13193;e.kcaron=489;e.kcedilla=311;e.kcircle=9434;e.kcommaaccent=311;e.kdotbelow=7731;e.keharmenian=1412;e.kehiragana=12369;e.kekatakana=12465;e.kekatakanahalfwidth=65401;e.kenarmenian=1391;e.kesmallkatakana=12534;e.kgreenlandic=312;e.khabengali=2454;e.khacyrillic=1093;e.khadeva=2326;e.khagujarati=2710;e.khagurmukhi=2582;e.khaharabic=1582;e.khahfinalarabic=65190;e.khahinitialarabic=65191;e.khahmedialarabic=65192;e.kheicoptic=999;e.khhadeva=2393;e.khhagurmukhi=2649;e.khieukhacirclekorean=12920;e.khieukhaparenkorean=12824;e.khieukhcirclekorean=12906;e.khieukhkorean=12619;e.khieukhparenkorean=12810;e.khokhaithai=3586;e.khokhonthai=3589;e.khokhuatthai=3587;e.khokhwaithai=3588;e.khomutthai=3675;e.khook=409;e.khorakhangthai=3590;e.khzsquare=13201;e.kihiragana=12365;e.kikatakana=12461;e.kikatakanahalfwidth=65399;e.kiroguramusquare=13077;e.kiromeetorusquare=13078;e.kirosquare=13076;e.kiyeokacirclekorean=12910;e.kiyeokaparenkorean=12814;e.kiyeokcirclekorean=12896;e.kiyeokkorean=12593;e.kiyeokparenkorean=12800;e.kiyeoksioskorean=12595;e.kjecyrillic=1116;e.klinebelow=7733;e.klsquare=13208;e.kmcubedsquare=13222;e.kmonospace=65355;e.kmsquaredsquare=13218;e.kohiragana=12371;e.kohmsquare=13248;e.kokaithai=3585;e.kokatakana=12467;e.kokatakanahalfwidth=65402;e.kooposquare=13086;e.koppacyrillic=1153;e.koreanstandardsymbol=12927;e.koroniscmb=835;e.kparen=9382;e.kpasquare=13226;e.ksicyrillic=1135;e.ktsquare=13263;e.kturned=670;e.kuhiragana=12367;e.kukatakana=12463;e.kukatakanahalfwidth=65400;e.kvsquare=13240;e.kwsquare=13246;e.l=108;e.labengali=2482;e.lacute=314;e.ladeva=2354;e.lagujarati=2738;e.lagurmukhi=2610;e.lakkhangyaothai=3653;e.lamaleffinalarabic=65276;e.lamalefhamzaabovefinalarabic=65272;e.lamalefhamzaaboveisolatedarabic=65271;e.lamalefhamzabelowfinalarabic=65274;e.lamalefhamzabelowisolatedarabic=65273;e.lamalefisolatedarabic=65275;e.lamalefmaddaabovefinalarabic=65270;e.lamalefmaddaaboveisolatedarabic=65269;e.lamarabic=1604;e.lambda=955;e.lambdastroke=411;e.lamed=1500;e.lameddagesh=64316;e.lameddageshhebrew=64316;e.lamedhebrew=1500;e.lamfinalarabic=65246;e.lamhahinitialarabic=64714;e.laminitialarabic=65247;e.lamjeeminitialarabic=64713;e.lamkhahinitialarabic=64715;e.lamlamhehisolatedarabic=65010;e.lammedialarabic=65248;e.lammeemhahinitialarabic=64904;e.lammeeminitialarabic=64716;e.largecircle=9711;e.lbar=410;e.lbelt=620;e.lbopomofo=12556;e.lcaron=318;e.lcedilla=316;e.lcircle=9435;e.lcircumflexbelow=7741;e.lcommaaccent=316;e.ldot=320;e.ldotaccent=320;e.ldotbelow=7735;e.ldotbelowmacron=7737;e.leftangleabovecmb=794;e.lefttackbelowcmb=792;e.less=60;e.lessequal=8804;e.lessequalorgreater=8922;e.lessmonospace=65308;e.lessorequivalent=8818;e.lessorgreater=8822;e.lessoverequal=8806;e.lesssmall=65124;e.lezh=622;e.lfblock=9612;e.lhookretroflex=621;e.lira=8356;e.liwnarmenian=1388;e.lj=457;e.ljecyrillic=1113;e.ll=63168;e.lladeva=2355;e.llagujarati=2739;e.llinebelow=7739;e.llladeva=2356;e.llvocalicbengali=2529;e.llvocalicdeva=2401;e.llvocalicvowelsignbengali=2531;e.llvocalicvowelsigndeva=2403;e.lmiddletilde=619;e.lmonospace=65356;e.lmsquare=13264;e.lochulathai=3628;e.logicaland=8743;e.logicalnot=172;e.logicalnotreversed=8976;e.logicalor=8744;e.lolingthai=3621;e.longs=383;e.lowlinecenterline=65102;e.lowlinecmb=818;e.lowlinedashed=65101;e.lozenge=9674;e.lparen=9383;e.lslash=322;e.lsquare=8467;e.lsuperior=63214;e.ltshade=9617;e.luthai=3622;e.lvocalicbengali=2444;e.lvocalicdeva=2316;e.lvocalicvowelsignbengali=2530;e.lvocalicvowelsigndeva=2402;e.lxsquare=13267;e.m=109;e.mabengali=2478;e.macron=175;e.macronbelowcmb=817;e.macroncmb=772;e.macronlowmod=717;e.macronmonospace=65507;e.macute=7743;e.madeva=2350;e.magujarati=2734;e.magurmukhi=2606;e.mahapakhhebrew=1444;e.mahapakhlefthebrew=1444;e.mahiragana=12414;e.maichattawalowleftthai=63637;e.maichattawalowrightthai=63636;e.maichattawathai=3659;e.maichattawaupperleftthai=63635;e.maieklowleftthai=63628;e.maieklowrightthai=63627;e.maiekthai=3656;e.maiekupperleftthai=63626;e.maihanakatleftthai=63620;e.maihanakatthai=3633;e.maitaikhuleftthai=63625;e.maitaikhuthai=3655;e.maitholowleftthai=63631;e.maitholowrightthai=63630;e.maithothai=3657;e.maithoupperleftthai=63629;e.maitrilowleftthai=63634;e.maitrilowrightthai=63633;e.maitrithai=3658;e.maitriupperleftthai=63632;e.maiyamokthai=3654;e.makatakana=12510;e.makatakanahalfwidth=65423;e.male=9794;e.mansyonsquare=13127;e.maqafhebrew=1470;e.mars=9794;e.masoracirclehebrew=1455;e.masquare=13187;e.mbopomofo=12551;e.mbsquare=13268;e.mcircle=9436;e.mcubedsquare=13221;e.mdotaccent=7745;e.mdotbelow=7747;e.meemarabic=1605;e.meemfinalarabic=65250;e.meeminitialarabic=65251;e.meemmedialarabic=65252;e.meemmeeminitialarabic=64721;e.meemmeemisolatedarabic=64584;e.meetorusquare=13133;e.mehiragana=12417;e.meizierasquare=13182;e.mekatakana=12513;e.mekatakanahalfwidth=65426;e.mem=1502;e.memdagesh=64318;e.memdageshhebrew=64318;e.memhebrew=1502;e.menarmenian=1396;e.merkhahebrew=1445;e.merkhakefulahebrew=1446;e.merkhakefulalefthebrew=1446;e.merkhalefthebrew=1445;e.mhook=625;e.mhzsquare=13202;e.middledotkatakanahalfwidth=65381;e.middot=183;e.mieumacirclekorean=12914;e.mieumaparenkorean=12818;e.mieumcirclekorean=12900;e.mieumkorean=12609;e.mieumpansioskorean=12656;e.mieumparenkorean=12804;e.mieumpieupkorean=12654;e.mieumsioskorean=12655;e.mihiragana=12415;e.mikatakana=12511;e.mikatakanahalfwidth=65424;e.minus=8722;e.minusbelowcmb=800;e.minuscircle=8854;e.minusmod=727;e.minusplus=8723;e.minute=8242;e.miribaarusquare=13130;e.mirisquare=13129;e.mlonglegturned=624;e.mlsquare=13206;e.mmcubedsquare=13219;e.mmonospace=65357;e.mmsquaredsquare=13215;e.mohiragana=12418;e.mohmsquare=13249;e.mokatakana=12514;e.mokatakanahalfwidth=65427;e.molsquare=13270;e.momathai=3617;e.moverssquare=13223;e.moverssquaredsquare=13224;e.mparen=9384;e.mpasquare=13227;e.mssquare=13235;e.msuperior=63215;e.mturned=623;e.mu=181;e.mu1=181;e.muasquare=13186;e.muchgreater=8811;e.muchless=8810;e.mufsquare=13196;e.mugreek=956;e.mugsquare=13197;e.muhiragana=12416;e.mukatakana=12512;e.mukatakanahalfwidth=65425;e.mulsquare=13205;e.multiply=215;e.mumsquare=13211;e.munahhebrew=1443;e.munahlefthebrew=1443;e.musicalnote=9834;e.musicalnotedbl=9835;e.musicflatsign=9837;e.musicsharpsign=9839;e.mussquare=13234;e.muvsquare=13238;e.muwsquare=13244;e.mvmegasquare=13241;e.mvsquare=13239;e.mwmegasquare=13247;e.mwsquare=13245;e.n=110;e.nabengali=2472;e.nabla=8711;e.nacute=324;e.nadeva=2344;e.nagujarati=2728;e.nagurmukhi=2600;e.nahiragana=12394;e.nakatakana=12490;e.nakatakanahalfwidth=65413;e.napostrophe=329;e.nasquare=13185;e.nbopomofo=12555;e.nbspace=160;e.ncaron=328;e.ncedilla=326;e.ncircle=9437;e.ncircumflexbelow=7755;e.ncommaaccent=326;e.ndotaccent=7749;e.ndotbelow=7751;e.nehiragana=12397;e.nekatakana=12493;e.nekatakanahalfwidth=65416;e.newsheqelsign=8362;e.nfsquare=13195;e.ngabengali=2457;e.ngadeva=2329;e.ngagujarati=2713;e.ngagurmukhi=2585;e.ngonguthai=3591;e.nhiragana=12435;e.nhookleft=626;e.nhookretroflex=627;e.nieunacirclekorean=12911;e.nieunaparenkorean=12815;e.nieuncieuckorean=12597;e.nieuncirclekorean=12897;e.nieunhieuhkorean=12598;e.nieunkorean=12596;e.nieunpansioskorean=12648;e.nieunparenkorean=12801;e.nieunsioskorean=12647;e.nieuntikeutkorean=12646;e.nihiragana=12395;e.nikatakana=12491;e.nikatakanahalfwidth=65414;e.nikhahitleftthai=63641;e.nikhahitthai=3661;e.nine=57;e.ninearabic=1641;e.ninebengali=2543;e.ninecircle=9320;e.ninecircleinversesansserif=10130;e.ninedeva=2415;e.ninegujarati=2799;e.ninegurmukhi=2671;e.ninehackarabic=1641;e.ninehangzhou=12329;e.nineideographicparen=12840;e.nineinferior=8329;e.ninemonospace=65305;e.nineoldstyle=63289;e.nineparen=9340;e.nineperiod=9360;e.ninepersian=1785;e.nineroman=8568;e.ninesuperior=8313;e.nineteencircle=9330;e.nineteenparen=9350;e.nineteenperiod=9370;e.ninethai=3673;e.nj=460;e.njecyrillic=1114;e.nkatakana=12531;e.nkatakanahalfwidth=65437;e.nlegrightlong=414;e.nlinebelow=7753;e.nmonospace=65358;e.nmsquare=13210;e.nnabengali=2467;e.nnadeva=2339;e.nnagujarati=2723;e.nnagurmukhi=2595;e.nnnadeva=2345;e.nohiragana=12398;e.nokatakana=12494;e.nokatakanahalfwidth=65417;e.nonbreakingspace=160;e.nonenthai=3603;e.nonuthai=3609;e.noonarabic=1606;e.noonfinalarabic=65254;e.noonghunnaarabic=1722;e.noonghunnafinalarabic=64415;e.nooninitialarabic=65255;e.noonjeeminitialarabic=64722;e.noonjeemisolatedarabic=64587;e.noonmedialarabic=65256;e.noonmeeminitialarabic=64725;e.noonmeemisolatedarabic=64590;e.noonnoonfinalarabic=64653;e.notcontains=8716;e.notelement=8713;e.notelementof=8713;e.notequal=8800;e.notgreater=8815;e.notgreaternorequal=8817;e.notgreaternorless=8825;e.notidentical=8802;e.notless=8814;e.notlessnorequal=8816;e.notparallel=8742;e.notprecedes=8832;e.notsubset=8836;e.notsucceeds=8833;e.notsuperset=8837;e.nowarmenian=1398;e.nparen=9385;e.nssquare=13233;e.nsuperior=8319;e.ntilde=241;e.nu=957;e.nuhiragana=12396;e.nukatakana=12492;e.nukatakanahalfwidth=65415;e.nuktabengali=2492;e.nuktadeva=2364;e.nuktagujarati=2748;e.nuktagurmukhi=2620;e.numbersign=35;e.numbersignmonospace=65283;e.numbersignsmall=65119;e.numeralsigngreek=884;e.numeralsignlowergreek=885;e.numero=8470;e.nun=1504;e.nundagesh=64320;e.nundageshhebrew=64320;e.nunhebrew=1504;e.nvsquare=13237;e.nwsquare=13243;e.nyabengali=2462;e.nyadeva=2334;e.nyagujarati=2718;e.nyagurmukhi=2590;e.o=111;e.oacute=243;e.oangthai=3629;e.obarred=629;e.obarredcyrillic=1257;e.obarreddieresiscyrillic=1259;e.obengali=2451;e.obopomofo=12571;e.obreve=335;e.ocandradeva=2321;e.ocandragujarati=2705;e.ocandravowelsigndeva=2377;e.ocandravowelsigngujarati=2761;e.ocaron=466;e.ocircle=9438;e.ocircumflex=244;e.ocircumflexacute=7889;e.ocircumflexdotbelow=7897;e.ocircumflexgrave=7891;e.ocircumflexhookabove=7893;e.ocircumflextilde=7895;e.ocyrillic=1086;e.odblacute=337;e.odblgrave=525;e.odeva=2323;e.odieresis=246;e.odieresiscyrillic=1255;e.odotbelow=7885;e.oe=339;e.oekorean=12634;e.ogonek=731;e.ogonekcmb=808;e.ograve=242;e.ogujarati=2707;e.oharmenian=1413;e.ohiragana=12362;e.ohookabove=7887;e.ohorn=417;e.ohornacute=7899;e.ohorndotbelow=7907;e.ohorngrave=7901;e.ohornhookabove=7903;e.ohorntilde=7905;e.ohungarumlaut=337;e.oi=419;e.oinvertedbreve=527;e.okatakana=12458;e.okatakanahalfwidth=65397;e.okorean=12631;e.olehebrew=1451;e.omacron=333;e.omacronacute=7763;e.omacrongrave=7761;e.omdeva=2384;e.omega=969;e.omega1=982;e.omegacyrillic=1121;e.omegalatinclosed=631;e.omegaroundcyrillic=1147;e.omegatitlocyrillic=1149;e.omegatonos=974;e.omgujarati=2768;e.omicron=959;e.omicrontonos=972;e.omonospace=65359;e.one=49;e.onearabic=1633;e.onebengali=2535;e.onecircle=9312;e.onecircleinversesansserif=10122;e.onedeva=2407;e.onedotenleader=8228;e.oneeighth=8539;e.onefitted=63196;e.onegujarati=2791;e.onegurmukhi=2663;e.onehackarabic=1633;e.onehalf=189;e.onehangzhou=12321;e.oneideographicparen=12832;e.oneinferior=8321;e.onemonospace=65297;e.onenumeratorbengali=2548;e.oneoldstyle=63281;e.oneparen=9332;e.oneperiod=9352;e.onepersian=1777;e.onequarter=188;e.oneroman=8560;e.onesuperior=185;e.onethai=3665;e.onethird=8531;e.oogonek=491;e.oogonekmacron=493;e.oogurmukhi=2579;e.oomatragurmukhi=2635;e.oopen=596;e.oparen=9386;e.openbullet=9702;e.option=8997;e.ordfeminine=170;e.ordmasculine=186;e.orthogonal=8735;e.oshortdeva=2322;e.oshortvowelsigndeva=2378;e.oslash=248;e.oslashacute=511;e.osmallhiragana=12361;e.osmallkatakana=12457;e.osmallkatakanahalfwidth=65387;e.ostrokeacute=511;e.osuperior=63216;e.otcyrillic=1151;e.otilde=245;e.otildeacute=7757;e.otildedieresis=7759;e.oubopomofo=12577;e.overline=8254;e.overlinecenterline=65098;e.overlinecmb=773;e.overlinedashed=65097;e.overlinedblwavy=65100;e.overlinewavy=65099;e.overscore=175;e.ovowelsignbengali=2507;e.ovowelsigndeva=2379;e.ovowelsigngujarati=2763;e.p=112;e.paampssquare=13184;e.paasentosquare=13099;e.pabengali=2474;e.pacute=7765;e.padeva=2346;e.pagedown=8671;e.pageup=8670;e.pagujarati=2730;e.pagurmukhi=2602;e.pahiragana=12401;e.paiyannoithai=3631;e.pakatakana=12497;e.palatalizationcyrilliccmb=1156;e.palochkacyrillic=1216;e.pansioskorean=12671;e.paragraph=182;e.parallel=8741;e.parenleft=40;e.parenleftaltonearabic=64830;e.parenleftbt=63725;e.parenleftex=63724;e.parenleftinferior=8333;e.parenleftmonospace=65288;e.parenleftsmall=65113;e.parenleftsuperior=8317;e.parenlefttp=63723;e.parenleftvertical=65077;e.parenright=41;e.parenrightaltonearabic=64831;e.parenrightbt=63736;e.parenrightex=63735;e.parenrightinferior=8334;e.parenrightmonospace=65289;e.parenrightsmall=65114;e.parenrightsuperior=8318;e.parenrighttp=63734;e.parenrightvertical=65078;e.partialdiff=8706;e.paseqhebrew=1472;e.pashtahebrew=1433;e.pasquare=13225;e.patah=1463;e.patah11=1463;e.patah1d=1463;e.patah2a=1463;e.patahhebrew=1463;e.patahnarrowhebrew=1463;e.patahquarterhebrew=1463;e.patahwidehebrew=1463;e.pazerhebrew=1441;e.pbopomofo=12550;e.pcircle=9439;e.pdotaccent=7767;e.pe=1508;e.pecyrillic=1087;e.pedagesh=64324;e.pedageshhebrew=64324;e.peezisquare=13115;e.pefinaldageshhebrew=64323;e.peharabic=1662;e.peharmenian=1402;e.pehebrew=1508;e.pehfinalarabic=64343;e.pehinitialarabic=64344;e.pehiragana=12410;e.pehmedialarabic=64345;e.pekatakana=12506;e.pemiddlehookcyrillic=1191;e.perafehebrew=64334;e.percent=37;e.percentarabic=1642;e.percentmonospace=65285;e.percentsmall=65130;e.period=46;e.periodarmenian=1417;e.periodcentered=183;e.periodhalfwidth=65377;e.periodinferior=63207;e.periodmonospace=65294;e.periodsmall=65106;e.periodsuperior=63208;e.perispomenigreekcmb=834;e.perpendicular=8869;e.perthousand=8240;e.peseta=8359;e.pfsquare=13194;e.phabengali=2475;e.phadeva=2347;e.phagujarati=2731;e.phagurmukhi=2603;e.phi=966;e.phi1=981;e.phieuphacirclekorean=12922;e.phieuphaparenkorean=12826;e.phieuphcirclekorean=12908;e.phieuphkorean=12621;e.phieuphparenkorean=12812;e.philatin=632;e.phinthuthai=3642;e.phisymbolgreek=981;e.phook=421;e.phophanthai=3614;e.phophungthai=3612;e.phosamphaothai=3616;e.pi=960;e.pieupacirclekorean=12915;e.pieupaparenkorean=12819;e.pieupcieuckorean=12662;e.pieupcirclekorean=12901;e.pieupkiyeokkorean=12658;e.pieupkorean=12610;e.pieupparenkorean=12805;e.pieupsioskiyeokkorean=12660;e.pieupsioskorean=12612;e.pieupsiostikeutkorean=12661;e.pieupthieuthkorean=12663;e.pieuptikeutkorean=12659;e.pihiragana=12404;e.pikatakana=12500;e.pisymbolgreek=982;e.piwrarmenian=1411;e.planckover2pi=8463;e.planckover2pi1=8463;e.plus=43;e.plusbelowcmb=799;e.pluscircle=8853;e.plusminus=177;e.plusmod=726;e.plusmonospace=65291;e.plussmall=65122;e.plussuperior=8314;e.pmonospace=65360;e.pmsquare=13272;e.pohiragana=12413;e.pointingindexdownwhite=9759;e.pointingindexleftwhite=9756;e.pointingindexrightwhite=9758;e.pointingindexupwhite=9757;e.pokatakana=12509;e.poplathai=3611;e.postalmark=12306;e.postalmarkface=12320;e.pparen=9387;e.precedes=8826;e.prescription=8478;e.primemod=697;e.primereversed=8245;e.product=8719;e.projective=8965;e.prolongedkana=12540;e.propellor=8984;e.propersubset=8834;e.propersuperset=8835;e.proportion=8759;e.proportional=8733;e.psi=968;e.psicyrillic=1137;e.psilipneumatacyrilliccmb=1158;e.pssquare=13232;e.puhiragana=12407;e.pukatakana=12503;e.pvsquare=13236;e.pwsquare=13242;e.q=113;e.qadeva=2392;e.qadmahebrew=1448;e.qafarabic=1602;e.qaffinalarabic=65238;e.qafinitialarabic=65239;e.qafmedialarabic=65240;e.qamats=1464;e.qamats10=1464;e.qamats1a=1464;e.qamats1c=1464;e.qamats27=1464;e.qamats29=1464;e.qamats33=1464;e.qamatsde=1464;e.qamatshebrew=1464;e.qamatsnarrowhebrew=1464;e.qamatsqatanhebrew=1464;e.qamatsqatannarrowhebrew=1464;e.qamatsqatanquarterhebrew=1464;e.qamatsqatanwidehebrew=1464;e.qamatsquarterhebrew=1464;e.qamatswidehebrew=1464;e.qarneyparahebrew=1439;e.qbopomofo=12561;e.qcircle=9440;e.qhook=672;e.qmonospace=65361;e.qof=1511;e.qofdagesh=64327;e.qofdageshhebrew=64327;e.qofhebrew=1511;e.qparen=9388;e.quarternote=9833;e.qubuts=1467;e.qubuts18=1467;e.qubuts25=1467;e.qubuts31=1467;e.qubutshebrew=1467;e.qubutsnarrowhebrew=1467;e.qubutsquarterhebrew=1467;e.qubutswidehebrew=1467;e.question=63;e.questionarabic=1567;e.questionarmenian=1374;e.questiondown=191;e.questiondownsmall=63423;e.questiongreek=894;e.questionmonospace=65311;e.questionsmall=63295;e.quotedbl=34;e.quotedblbase=8222;e.quotedblleft=8220;e.quotedblmonospace=65282;e.quotedblprime=12318;e.quotedblprimereversed=12317;e.quotedblright=8221;e.quoteleft=8216;e.quoteleftreversed=8219;e.quotereversed=8219;e.quoteright=8217;e.quoterightn=329;e.quotesinglbase=8218;e.quotesingle=39;e.quotesinglemonospace=65287;e.r=114;e.raarmenian=1404;e.rabengali=2480;e.racute=341;e.radeva=2352;e.radical=8730;e.radicalex=63717;e.radoverssquare=13230;e.radoverssquaredsquare=13231;e.radsquare=13229;e.rafe=1471;e.rafehebrew=1471;e.ragujarati=2736;e.ragurmukhi=2608;e.rahiragana=12425;e.rakatakana=12521;e.rakatakanahalfwidth=65431;e.ralowerdiagonalbengali=2545;e.ramiddlediagonalbengali=2544;e.ramshorn=612;e.ratio=8758;e.rbopomofo=12566;e.rcaron=345;e.rcedilla=343;e.rcircle=9441;e.rcommaaccent=343;e.rdblgrave=529;e.rdotaccent=7769;e.rdotbelow=7771;e.rdotbelowmacron=7773;e.referencemark=8251;e.reflexsubset=8838;e.reflexsuperset=8839;e.registered=174;e.registersans=63720;e.registerserif=63194;e.reharabic=1585;e.reharmenian=1408;e.rehfinalarabic=65198;e.rehiragana=12428;e.rekatakana=12524;e.rekatakanahalfwidth=65434;e.resh=1512;e.reshdageshhebrew=64328;e.reshhebrew=1512;e.reversedtilde=8765;e.reviahebrew=1431;e.reviamugrashhebrew=1431;e.revlogicalnot=8976;e.rfishhook=638;e.rfishhookreversed=639;e.rhabengali=2525;e.rhadeva=2397;e.rho=961;e.rhook=637;e.rhookturned=635;e.rhookturnedsuperior=693;e.rhosymbolgreek=1009;e.rhotichookmod=734;e.rieulacirclekorean=12913;e.rieulaparenkorean=12817;e.rieulcirclekorean=12899;e.rieulhieuhkorean=12608;e.rieulkiyeokkorean=12602;e.rieulkiyeoksioskorean=12649;e.rieulkorean=12601;e.rieulmieumkorean=12603;e.rieulpansioskorean=12652;e.rieulparenkorean=12803;e.rieulphieuphkorean=12607;e.rieulpieupkorean=12604;e.rieulpieupsioskorean=12651;e.rieulsioskorean=12605;e.rieulthieuthkorean=12606;e.rieultikeutkorean=12650;e.rieulyeorinhieuhkorean=12653;e.rightangle=8735;e.righttackbelowcmb=793;e.righttriangle=8895;e.rihiragana=12426;e.rikatakana=12522;e.rikatakanahalfwidth=65432;e.ring=730;e.ringbelowcmb=805;e.ringcmb=778;e.ringhalfleft=703;e.ringhalfleftarmenian=1369;e.ringhalfleftbelowcmb=796;e.ringhalfleftcentered=723;e.ringhalfright=702;e.ringhalfrightbelowcmb=825;e.ringhalfrightcentered=722;e.rinvertedbreve=531;e.rittorusquare=13137;e.rlinebelow=7775;e.rlongleg=636;e.rlonglegturned=634;e.rmonospace=65362;e.rohiragana=12429;e.rokatakana=12525;e.rokatakanahalfwidth=65435;e.roruathai=3619;e.rparen=9389;e.rrabengali=2524;e.rradeva=2353;e.rragurmukhi=2652;e.rreharabic=1681;e.rrehfinalarabic=64397;e.rrvocalicbengali=2528;e.rrvocalicdeva=2400;e.rrvocalicgujarati=2784;e.rrvocalicvowelsignbengali=2500;e.rrvocalicvowelsigndeva=2372;e.rrvocalicvowelsigngujarati=2756;e.rsuperior=63217;e.rtblock=9616;e.rturned=633;e.rturnedsuperior=692;e.ruhiragana=12427;e.rukatakana=12523;e.rukatakanahalfwidth=65433;e.rupeemarkbengali=2546;e.rupeesignbengali=2547;e.rupiah=63197;e.ruthai=3620;e.rvocalicbengali=2443;e.rvocalicdeva=2315;e.rvocalicgujarati=2699;e.rvocalicvowelsignbengali=2499;e.rvocalicvowelsigndeva=2371;e.rvocalicvowelsigngujarati=2755;e.s=115;e.sabengali=2488;e.sacute=347;e.sacutedotaccent=7781;e.sadarabic=1589;e.sadeva=2360;e.sadfinalarabic=65210;e.sadinitialarabic=65211;e.sadmedialarabic=65212;e.sagujarati=2744;e.sagurmukhi=2616;e.sahiragana=12373;e.sakatakana=12469;e.sakatakanahalfwidth=65403;e.sallallahoualayhewasallamarabic=65018;e.samekh=1505;e.samekhdagesh=64321;e.samekhdageshhebrew=64321;e.samekhhebrew=1505;e.saraaathai=3634;e.saraaethai=3649;e.saraaimaimalaithai=3652;e.saraaimaimuanthai=3651;e.saraamthai=3635;e.saraathai=3632;e.saraethai=3648;e.saraiileftthai=63622;e.saraiithai=3637;e.saraileftthai=63621;e.saraithai=3636;e.saraothai=3650;e.saraueeleftthai=63624;e.saraueethai=3639;e.saraueleftthai=63623;e.sarauethai=3638;e.sarauthai=3640;e.sarauuthai=3641;e.sbopomofo=12569;e.scaron=353;e.scarondotaccent=7783;e.scedilla=351;e.schwa=601;e.schwacyrillic=1241;e.schwadieresiscyrillic=1243;e.schwahook=602;e.scircle=9442;e.scircumflex=349;e.scommaaccent=537;e.sdotaccent=7777;e.sdotbelow=7779;e.sdotbelowdotaccent=7785;e.seagullbelowcmb=828;e.second=8243;e.secondtonechinese=714;e.section=167;e.seenarabic=1587;e.seenfinalarabic=65202;e.seeninitialarabic=65203;e.seenmedialarabic=65204;e.segol=1462;e.segol13=1462;e.segol1f=1462;e.segol2c=1462;e.segolhebrew=1462;e.segolnarrowhebrew=1462;e.segolquarterhebrew=1462;e.segoltahebrew=1426;e.segolwidehebrew=1462;e.seharmenian=1405;e.sehiragana=12379;e.sekatakana=12475;e.sekatakanahalfwidth=65406;e.semicolon=59;e.semicolonarabic=1563;e.semicolonmonospace=65307;e.semicolonsmall=65108;e.semivoicedmarkkana=12444;e.semivoicedmarkkanahalfwidth=65439;e.sentisquare=13090;e.sentosquare=13091;e.seven=55;e.sevenarabic=1639;e.sevenbengali=2541;e.sevencircle=9318;e.sevencircleinversesansserif=10128;e.sevendeva=2413;e.seveneighths=8542;e.sevengujarati=2797;e.sevengurmukhi=2669;e.sevenhackarabic=1639;e.sevenhangzhou=12327;e.sevenideographicparen=12838;e.seveninferior=8327;e.sevenmonospace=65303;e.sevenoldstyle=63287;e.sevenparen=9338;e.sevenperiod=9358;e.sevenpersian=1783;e.sevenroman=8566;e.sevensuperior=8311;e.seventeencircle=9328;e.seventeenparen=9348;e.seventeenperiod=9368;e.seventhai=3671;e.sfthyphen=173;e.shaarmenian=1399;e.shabengali=2486;e.shacyrillic=1096;e.shaddaarabic=1617;e.shaddadammaarabic=64609;e.shaddadammatanarabic=64606;e.shaddafathaarabic=64608;e.shaddakasraarabic=64610;e.shaddakasratanarabic=64607;e.shade=9618;e.shadedark=9619;e.shadelight=9617;e.shademedium=9618;e.shadeva=2358;e.shagujarati=2742;e.shagurmukhi=2614;e.shalshelethebrew=1427;e.shbopomofo=12565;e.shchacyrillic=1097;e.sheenarabic=1588;e.sheenfinalarabic=65206;e.sheeninitialarabic=65207;e.sheenmedialarabic=65208;e.sheicoptic=995;e.sheqel=8362;e.sheqelhebrew=8362;e.sheva=1456;e.sheva115=1456;e.sheva15=1456;e.sheva22=1456;e.sheva2e=1456;e.shevahebrew=1456;e.shevanarrowhebrew=1456;e.shevaquarterhebrew=1456;e.shevawidehebrew=1456;e.shhacyrillic=1211;e.shimacoptic=1005;e.shin=1513;e.shindagesh=64329;e.shindageshhebrew=64329;e.shindageshshindot=64300;e.shindageshshindothebrew=64300;e.shindageshsindot=64301;e.shindageshsindothebrew=64301;e.shindothebrew=1473;e.shinhebrew=1513;e.shinshindot=64298;e.shinshindothebrew=64298;e.shinsindot=64299;e.shinsindothebrew=64299;e.shook=642;e.sigma=963;e.sigma1=962;e.sigmafinal=962;e.sigmalunatesymbolgreek=1010;e.sihiragana=12375;e.sikatakana=12471;e.sikatakanahalfwidth=65404;e.siluqhebrew=1469;e.siluqlefthebrew=1469;e.similar=8764;e.sindothebrew=1474;e.siosacirclekorean=12916;e.siosaparenkorean=12820;e.sioscieuckorean=12670;e.sioscirclekorean=12902;e.sioskiyeokkorean=12666;e.sioskorean=12613;e.siosnieunkorean=12667;e.siosparenkorean=12806;e.siospieupkorean=12669;e.siostikeutkorean=12668;e.six=54;e.sixarabic=1638;e.sixbengali=2540;e.sixcircle=9317;e.sixcircleinversesansserif=10127;e.sixdeva=2412;e.sixgujarati=2796;e.sixgurmukhi=2668;e.sixhackarabic=1638;e.sixhangzhou=12326;e.sixideographicparen=12837;e.sixinferior=8326;e.sixmonospace=65302;e.sixoldstyle=63286;e.sixparen=9337;e.sixperiod=9357;e.sixpersian=1782;e.sixroman=8565;e.sixsuperior=8310;e.sixteencircle=9327;e.sixteencurrencydenominatorbengali=2553;e.sixteenparen=9347;e.sixteenperiod=9367;e.sixthai=3670;e.slash=47;e.slashmonospace=65295;e.slong=383;e.slongdotaccent=7835;e.smileface=9786;e.smonospace=65363;e.sofpasuqhebrew=1475;e.softhyphen=173;e.softsigncyrillic=1100;e.sohiragana=12381;e.sokatakana=12477;e.sokatakanahalfwidth=65407;e.soliduslongoverlaycmb=824;e.solidusshortoverlaycmb=823;e.sorusithai=3625;e.sosalathai=3624;e.sosothai=3595;e.sosuathai=3626;e.space=32;e.spacehackarabic=32;e.spade=9824;e.spadesuitblack=9824;e.spadesuitwhite=9828;e.sparen=9390;e.squarebelowcmb=827;e.squarecc=13252;e.squarecm=13213;e.squarediagonalcrosshatchfill=9641;e.squarehorizontalfill=9636;e.squarekg=13199;e.squarekm=13214;e.squarekmcapital=13262;e.squareln=13265;e.squarelog=13266;e.squaremg=13198;e.squaremil=13269;e.squaremm=13212;e.squaremsquared=13217;e.squareorthogonalcrosshatchfill=9638;e.squareupperlefttolowerrightfill=9639;e.squareupperrighttolowerleftfill=9640;e.squareverticalfill=9637;e.squarewhitewithsmallblack=9635;e.srsquare=13275;e.ssabengali=2487;e.ssadeva=2359;e.ssagujarati=2743;e.ssangcieuckorean=12617;e.ssanghieuhkorean=12677;e.ssangieungkorean=12672;e.ssangkiyeokkorean=12594;e.ssangnieunkorean=12645;e.ssangpieupkorean=12611;e.ssangsioskorean=12614;e.ssangtikeutkorean=12600;e.ssuperior=63218;e.sterling=163;e.sterlingmonospace=65505;e.strokelongoverlaycmb=822;e.strokeshortoverlaycmb=821;e.subset=8834;e.subsetnotequal=8842;e.subsetorequal=8838;e.succeeds=8827;e.suchthat=8715;e.suhiragana=12377;e.sukatakana=12473;e.sukatakanahalfwidth=65405;e.sukunarabic=1618;e.summation=8721;e.sun=9788;e.superset=8835;e.supersetnotequal=8843;e.supersetorequal=8839;e.svsquare=13276;e.syouwaerasquare=13180;e.t=116;e.tabengali=2468;e.tackdown=8868;e.tackleft=8867;e.tadeva=2340;e.tagujarati=2724;e.tagurmukhi=2596;e.taharabic=1591;e.tahfinalarabic=65218;e.tahinitialarabic=65219;e.tahiragana=12383;e.tahmedialarabic=65220;e.taisyouerasquare=13181;e.takatakana=12479;e.takatakanahalfwidth=65408;e.tatweelarabic=1600;e.tau=964;e.tav=1514;e.tavdages=64330;e.tavdagesh=64330;e.tavdageshhebrew=64330;e.tavhebrew=1514;e.tbar=359;e.tbopomofo=12554;e.tcaron=357;e.tccurl=680;e.tcedilla=355;e.tcheharabic=1670;e.tchehfinalarabic=64379;e.tchehinitialarabic=64380;e.tchehmedialarabic=64381;e.tcircle=9443;e.tcircumflexbelow=7793;e.tcommaaccent=355;e.tdieresis=7831;e.tdotaccent=7787;e.tdotbelow=7789;e.tecyrillic=1090;e.tedescendercyrillic=1197;e.teharabic=1578;e.tehfinalarabic=65174;e.tehhahinitialarabic=64674;e.tehhahisolatedarabic=64524;e.tehinitialarabic=65175;e.tehiragana=12390;e.tehjeeminitialarabic=64673;e.tehjeemisolatedarabic=64523;e.tehmarbutaarabic=1577;e.tehmarbutafinalarabic=65172;e.tehmedialarabic=65176;e.tehmeeminitialarabic=64676;e.tehmeemisolatedarabic=64526;e.tehnoonfinalarabic=64627;e.tekatakana=12486;e.tekatakanahalfwidth=65411;e.telephone=8481;e.telephoneblack=9742;e.telishagedolahebrew=1440;e.telishaqetanahebrew=1449;e.tencircle=9321;e.tenideographicparen=12841;e.tenparen=9341;e.tenperiod=9361;e.tenroman=8569;e.tesh=679;e.tet=1496;e.tetdagesh=64312;e.tetdageshhebrew=64312;e.tethebrew=1496;e.tetsecyrillic=1205;e.tevirhebrew=1435;e.tevirlefthebrew=1435;e.thabengali=2469;e.thadeva=2341;e.thagujarati=2725;e.thagurmukhi=2597;e.thalarabic=1584;e.thalfinalarabic=65196;e.thanthakhatlowleftthai=63640;e.thanthakhatlowrightthai=63639;e.thanthakhatthai=3660;e.thanthakhatupperleftthai=63638;e.theharabic=1579;e.thehfinalarabic=65178;e.thehinitialarabic=65179;e.thehmedialarabic=65180;e.thereexists=8707;e.therefore=8756;e.theta=952;e.theta1=977;e.thetasymbolgreek=977;e.thieuthacirclekorean=12921;e.thieuthaparenkorean=12825;e.thieuthcirclekorean=12907;e.thieuthkorean=12620;e.thieuthparenkorean=12811;e.thirteencircle=9324;e.thirteenparen=9344;e.thirteenperiod=9364;e.thonangmonthothai=3601;e.thook=429;e.thophuthaothai=3602;e.thorn=254;e.thothahanthai=3607;e.thothanthai=3600;e.thothongthai=3608;e.thothungthai=3606;e.thousandcyrillic=1154;e.thousandsseparatorarabic=1644;e.thousandsseparatorpersian=1644;e.three=51;e.threearabic=1635;e.threebengali=2537;e.threecircle=9314;e.threecircleinversesansserif=10124;e.threedeva=2409;e.threeeighths=8540;e.threegujarati=2793;e.threegurmukhi=2665;e.threehackarabic=1635;e.threehangzhou=12323;e.threeideographicparen=12834;e.threeinferior=8323;e.threemonospace=65299;e.threenumeratorbengali=2550;e.threeoldstyle=63283;e.threeparen=9334;e.threeperiod=9354;e.threepersian=1779;e.threequarters=190;e.threequartersemdash=63198;e.threeroman=8562;e.threesuperior=179;e.threethai=3667;e.thzsquare=13204;e.tihiragana=12385;e.tikatakana=12481;e.tikatakanahalfwidth=65409;e.tikeutacirclekorean=12912;e.tikeutaparenkorean=12816;e.tikeutcirclekorean=12898;e.tikeutkorean=12599;e.tikeutparenkorean=12802;e.tilde=732;e.tildebelowcmb=816;e.tildecmb=771;e.tildecomb=771;e.tildedoublecmb=864;e.tildeoperator=8764;e.tildeoverlaycmb=820;e.tildeverticalcmb=830;e.timescircle=8855;e.tipehahebrew=1430;e.tipehalefthebrew=1430;e.tippigurmukhi=2672;e.titlocyrilliccmb=1155;e.tiwnarmenian=1407;e.tlinebelow=7791;e.tmonospace=65364;e.toarmenian=1385;e.tohiragana=12392;e.tokatakana=12488;e.tokatakanahalfwidth=65412;e.tonebarextrahighmod=741;e.tonebarextralowmod=745;e.tonebarhighmod=742;e.tonebarlowmod=744;e.tonebarmidmod=743;e.tonefive=445;e.tonesix=389;e.tonetwo=424;e.tonos=900;e.tonsquare=13095;e.topatakthai=3599;e.tortoiseshellbracketleft=12308;e.tortoiseshellbracketleftsmall=65117;e.tortoiseshellbracketleftvertical=65081;e.tortoiseshellbracketright=12309;e.tortoiseshellbracketrightsmall=65118;e.tortoiseshellbracketrightvertical=65082;e.totaothai=3605;e.tpalatalhook=427;e.tparen=9391;e.trademark=8482;e.trademarksans=63722;e.trademarkserif=63195;e.tretroflexhook=648;e.triagdn=9660;e.triaglf=9668;e.triagrt=9658;e.triagup=9650;e.ts=678;e.tsadi=1510;e.tsadidagesh=64326;e.tsadidageshhebrew=64326;e.tsadihebrew=1510;e.tsecyrillic=1094;e.tsere=1461;e.tsere12=1461;e.tsere1e=1461;e.tsere2b=1461;e.tserehebrew=1461;e.tserenarrowhebrew=1461;e.tserequarterhebrew=1461;e.tserewidehebrew=1461;e.tshecyrillic=1115;e.tsuperior=63219;e.ttabengali=2463;e.ttadeva=2335;e.ttagujarati=2719;e.ttagurmukhi=2591;e.tteharabic=1657;e.ttehfinalarabic=64359;e.ttehinitialarabic=64360;e.ttehmedialarabic=64361;e.tthabengali=2464;e.tthadeva=2336;e.tthagujarati=2720;e.tthagurmukhi=2592;e.tturned=647;e.tuhiragana=12388;e.tukatakana=12484;e.tukatakanahalfwidth=65410;e.tusmallhiragana=12387;e.tusmallkatakana=12483;e.tusmallkatakanahalfwidth=65391;e.twelvecircle=9323;e.twelveparen=9343;e.twelveperiod=9363;e.twelveroman=8571;e.twentycircle=9331;e.twentyhangzhou=21316;e.twentyparen=9351;e.twentyperiod=9371;e.two=50;e.twoarabic=1634;e.twobengali=2536;e.twocircle=9313;e.twocircleinversesansserif=10123;e.twodeva=2408;e.twodotenleader=8229;e.twodotleader=8229;e.twodotleadervertical=65072;e.twogujarati=2792;e.twogurmukhi=2664;e.twohackarabic=1634;e.twohangzhou=12322;e.twoideographicparen=12833;e.twoinferior=8322;e.twomonospace=65298;e.twonumeratorbengali=2549;e.twooldstyle=63282;e.twoparen=9333;e.twoperiod=9353;e.twopersian=1778;e.tworoman=8561;e.twostroke=443;e.twosuperior=178;e.twothai=3666;e.twothirds=8532;e.u=117;e.uacute=250;e.ubar=649;e.ubengali=2441;e.ubopomofo=12584;e.ubreve=365;e.ucaron=468;e.ucircle=9444;e.ucircumflex=251;e.ucircumflexbelow=7799;e.ucyrillic=1091;e.udattadeva=2385;e.udblacute=369;e.udblgrave=533;e.udeva=2313;e.udieresis=252;e.udieresisacute=472;e.udieresisbelow=7795;e.udieresiscaron=474;e.udieresiscyrillic=1265;e.udieresisgrave=476;e.udieresismacron=470;e.udotbelow=7909;e.ugrave=249;e.ugujarati=2697;e.ugurmukhi=2569;e.uhiragana=12358;e.uhookabove=7911;e.uhorn=432;e.uhornacute=7913;e.uhorndotbelow=7921;e.uhorngrave=7915;e.uhornhookabove=7917;e.uhorntilde=7919;e.uhungarumlaut=369;e.uhungarumlautcyrillic=1267;e.uinvertedbreve=535;e.ukatakana=12454;e.ukatakanahalfwidth=65395;e.ukcyrillic=1145;e.ukorean=12636;e.umacron=363;e.umacroncyrillic=1263;e.umacrondieresis=7803;e.umatragurmukhi=2625;e.umonospace=65365;e.underscore=95;e.underscoredbl=8215;e.underscoremonospace=65343;e.underscorevertical=65075;e.underscorewavy=65103;e.union=8746;e.universal=8704;e.uogonek=371;e.uparen=9392;e.upblock=9600;e.upperdothebrew=1476;e.upsilon=965;e.upsilondieresis=971;e.upsilondieresistonos=944;e.upsilonlatin=650;e.upsilontonos=973;e.uptackbelowcmb=797;e.uptackmod=724;e.uragurmukhi=2675;e.uring=367;e.ushortcyrillic=1118;e.usmallhiragana=12357;e.usmallkatakana=12453;e.usmallkatakanahalfwidth=65385;e.ustraightcyrillic=1199;e.ustraightstrokecyrillic=1201;e.utilde=361;e.utildeacute=7801;e.utildebelow=7797;e.uubengali=2442;e.uudeva=2314;e.uugujarati=2698;e.uugurmukhi=2570;e.uumatragurmukhi=2626;e.uuvowelsignbengali=2498;e.uuvowelsigndeva=2370;e.uuvowelsigngujarati=2754;e.uvowelsignbengali=2497;e.uvowelsigndeva=2369;e.uvowelsigngujarati=2753;e.v=118;e.vadeva=2357;e.vagujarati=2741;e.vagurmukhi=2613;e.vakatakana=12535;e.vav=1493;e.vavdagesh=64309;e.vavdagesh65=64309;e.vavdageshhebrew=64309;e.vavhebrew=1493;e.vavholam=64331;e.vavholamhebrew=64331;e.vavvavhebrew=1520;e.vavyodhebrew=1521;e.vcircle=9445;e.vdotbelow=7807;e.vecyrillic=1074;e.veharabic=1700;e.vehfinalarabic=64363;e.vehinitialarabic=64364;e.vehmedialarabic=64365;e.vekatakana=12537;e.venus=9792;e.verticalbar=124;e.verticallineabovecmb=781;e.verticallinebelowcmb=809;e.verticallinelowmod=716;e.verticallinemod=712;e.vewarmenian=1406;e.vhook=651;e.vikatakana=12536;e.viramabengali=2509;e.viramadeva=2381;e.viramagujarati=2765;e.visargabengali=2435;e.visargadeva=2307;e.visargagujarati=2691;e.vmonospace=65366;e.voarmenian=1400;e.voicediterationhiragana=12446;e.voicediterationkatakana=12542;e.voicedmarkkana=12443;e.voicedmarkkanahalfwidth=65438;e.vokatakana=12538;e.vparen=9393;e.vtilde=7805;e.vturned=652;e.vuhiragana=12436;e.vukatakana=12532;e.w=119;e.wacute=7811;e.waekorean=12633;e.wahiragana=12431;e.wakatakana=12527;e.wakatakanahalfwidth=65436;e.wakorean=12632;e.wasmallhiragana=12430;e.wasmallkatakana=12526;e.wattosquare=13143;e.wavedash=12316;e.wavyunderscorevertical=65076;e.wawarabic=1608;e.wawfinalarabic=65262;e.wawhamzaabovearabic=1572;e.wawhamzaabovefinalarabic=65158;e.wbsquare=13277;e.wcircle=9446;e.wcircumflex=373;e.wdieresis=7813;e.wdotaccent=7815;e.wdotbelow=7817;e.wehiragana=12433;e.weierstrass=8472;e.wekatakana=12529;e.wekorean=12638;e.weokorean=12637;e.wgrave=7809;e.whitebullet=9702;e.whitecircle=9675;e.whitecircleinverse=9689;e.whitecornerbracketleft=12302;e.whitecornerbracketleftvertical=65091;e.whitecornerbracketright=12303;e.whitecornerbracketrightvertical=65092;e.whitediamond=9671;e.whitediamondcontainingblacksmalldiamond=9672;e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661;e.whiteleftpointingsmalltriangle=9667;e.whiteleftpointingtriangle=9665;e.whitelenticularbracketleft=12310;e.whitelenticularbracketright=12311;e.whiterightpointingsmalltriangle=9657;e.whiterightpointingtriangle=9655;e.whitesmallsquare=9643;e.whitesmilingface=9786;e.whitesquare=9633;e.whitestar=9734;e.whitetelephone=9743;e.whitetortoiseshellbracketleft=12312;e.whitetortoiseshellbracketright=12313;e.whiteuppointingsmalltriangle=9653;e.whiteuppointingtriangle=9651;e.wihiragana=12432;e.wikatakana=12528;e.wikorean=12639;e.wmonospace=65367;e.wohiragana=12434;e.wokatakana=12530;e.wokatakanahalfwidth=65382;e.won=8361;e.wonmonospace=65510;e.wowaenthai=3623;e.wparen=9394;e.wring=7832;e.wsuperior=695;e.wturned=653;e.wynn=447;e.x=120;e.xabovecmb=829;e.xbopomofo=12562;e.xcircle=9447;e.xdieresis=7821;e.xdotaccent=7819;e.xeharmenian=1389;e.xi=958;e.xmonospace=65368;e.xparen=9395;e.xsuperior=739;e.y=121;e.yaadosquare=13134;e.yabengali=2479;e.yacute=253;e.yadeva=2351;e.yaekorean=12626;e.yagujarati=2735;e.yagurmukhi=2607;e.yahiragana=12420;e.yakatakana=12516;e.yakatakanahalfwidth=65428;e.yakorean=12625;e.yamakkanthai=3662;e.yasmallhiragana=12419;e.yasmallkatakana=12515;e.yasmallkatakanahalfwidth=65388;e.yatcyrillic=1123;e.ycircle=9448;e.ycircumflex=375;e.ydieresis=255;e.ydotaccent=7823;e.ydotbelow=7925;e.yeharabic=1610;e.yehbarreearabic=1746;e.yehbarreefinalarabic=64431;e.yehfinalarabic=65266;e.yehhamzaabovearabic=1574;e.yehhamzaabovefinalarabic=65162;e.yehhamzaaboveinitialarabic=65163;e.yehhamzaabovemedialarabic=65164;e.yehinitialarabic=65267;e.yehmedialarabic=65268;e.yehmeeminitialarabic=64733;e.yehmeemisolatedarabic=64600;e.yehnoonfinalarabic=64660;e.yehthreedotsbelowarabic=1745;e.yekorean=12630;e.yen=165;e.yenmonospace=65509;e.yeokorean=12629;e.yeorinhieuhkorean=12678;e.yerahbenyomohebrew=1450;e.yerahbenyomolefthebrew=1450;e.yericyrillic=1099;e.yerudieresiscyrillic=1273;e.yesieungkorean=12673;e.yesieungpansioskorean=12675;e.yesieungsioskorean=12674;e.yetivhebrew=1434;e.ygrave=7923;e.yhook=436;e.yhookabove=7927;e.yiarmenian=1397;e.yicyrillic=1111;e.yikorean=12642;e.yinyang=9775;e.yiwnarmenian=1410;e.ymonospace=65369;e.yod=1497;e.yoddagesh=64313;e.yoddageshhebrew=64313;e.yodhebrew=1497;e.yodyodhebrew=1522;e.yodyodpatahhebrew=64287;e.yohiragana=12424;e.yoikorean=12681;e.yokatakana=12520;e.yokatakanahalfwidth=65430;e.yokorean=12635;e.yosmallhiragana=12423;e.yosmallkatakana=12519;e.yosmallkatakanahalfwidth=65390;e.yotgreek=1011;e.yoyaekorean=12680;e.yoyakorean=12679;e.yoyakthai=3618;e.yoyingthai=3597;e.yparen=9396;e.ypogegrammeni=890;e.ypogegrammenigreekcmb=837;e.yr=422;e.yring=7833;e.ysuperior=696;e.ytilde=7929;e.yturned=654;e.yuhiragana=12422;e.yuikorean=12684;e.yukatakana=12518;e.yukatakanahalfwidth=65429;e.yukorean=12640;e.yusbigcyrillic=1131;e.yusbigiotifiedcyrillic=1133;e.yuslittlecyrillic=1127;e.yuslittleiotifiedcyrillic=1129;e.yusmallhiragana=12421;e.yusmallkatakana=12517;e.yusmallkatakanahalfwidth=65389;e.yuyekorean=12683;e.yuyeokorean=12682;e.yyabengali=2527;e.yyadeva=2399;e.z=122;e.zaarmenian=1382;e.zacute=378;e.zadeva=2395;e.zagurmukhi=2651;e.zaharabic=1592;e.zahfinalarabic=65222;e.zahinitialarabic=65223;e.zahiragana=12374;e.zahmedialarabic=65224;e.zainarabic=1586;e.zainfinalarabic=65200;e.zakatakana=12470;e.zaqefgadolhebrew=1429;e.zaqefqatanhebrew=1428;e.zarqahebrew=1432;e.zayin=1494;e.zayindagesh=64310;e.zayindageshhebrew=64310;e.zayinhebrew=1494;e.zbopomofo=12567;e.zcaron=382;e.zcircle=9449;e.zcircumflex=7825;e.zcurl=657;e.zdot=380;e.zdotaccent=380;e.zdotbelow=7827;e.zecyrillic=1079;e.zedescendercyrillic=1177;e.zedieresiscyrillic=1247;e.zehiragana=12380;e.zekatakana=12476;e.zero=48;e.zeroarabic=1632;e.zerobengali=2534;e.zerodeva=2406;e.zerogujarati=2790;e.zerogurmukhi=2662;e.zerohackarabic=1632;e.zeroinferior=8320;e.zeromonospace=65296;e.zerooldstyle=63280;e.zeropersian=1776;e.zerosuperior=8304;e.zerothai=3664;e.zerowidthjoiner=65279;e.zerowidthnonjoiner=8204;e.zerowidthspace=8203;e.zeta=950;e.zhbopomofo=12563;e.zhearmenian=1386;e.zhebrevecyrillic=1218;e.zhecyrillic=1078;e.zhedescendercyrillic=1175;e.zhedieresiscyrillic=1245;e.zihiragana=12376;e.zikatakana=12472;e.zinorhebrew=1454;e.zlinebelow=7829;e.zmonospace=65370;e.zohiragana=12382;e.zokatakana=12478;e.zparen=9397;e.zretroflexhook=656;e.zstroke=438;e.zuhiragana=12378;e.zukatakana=12474;e[".notdef"]=0;e.angbracketleftbig=9001;e.angbracketleftBig=9001;e.angbracketleftbigg=9001;e.angbracketleftBigg=9001;e.angbracketrightBig=9002;e.angbracketrightbig=9002;e.angbracketrightBigg=9002;e.angbracketrightbigg=9002;e.arrowhookleft=8618;e.arrowhookright=8617;e.arrowlefttophalf=8636;e.arrowleftbothalf=8637;e.arrownortheast=8599;e.arrownorthwest=8598;e.arrowrighttophalf=8640;e.arrowrightbothalf=8641;e.arrowsoutheast=8600;e.arrowsouthwest=8601;e.backslashbig=8726;e.backslashBig=8726;e.backslashBigg=8726;e.backslashbigg=8726;e.bardbl=8214;e.bracehtipdownleft=65079;e.bracehtipdownright=65079;e.bracehtipupleft=65080;e.bracehtipupright=65080;e.braceleftBig=123;e.braceleftbig=123;e.braceleftbigg=123;e.braceleftBigg=123;e.bracerightBig=125;e.bracerightbig=125;e.bracerightbigg=125;e.bracerightBigg=125;e.bracketleftbig=91;e.bracketleftBig=91;e.bracketleftbigg=91;e.bracketleftBigg=91;e.bracketrightBig=93;e.bracketrightbig=93;e.bracketrightbigg=93;e.bracketrightBigg=93;e.ceilingleftbig=8968;e.ceilingleftBig=8968;e.ceilingleftBigg=8968;e.ceilingleftbigg=8968;e.ceilingrightbig=8969;e.ceilingrightBig=8969;e.ceilingrightbigg=8969;e.ceilingrightBigg=8969;e.circledotdisplay=8857;e.circledottext=8857;e.circlemultiplydisplay=8855;e.circlemultiplytext=8855;e.circleplusdisplay=8853;e.circleplustext=8853;e.contintegraldisplay=8750;e.contintegraltext=8750;e.coproductdisplay=8720;e.coproducttext=8720;e.floorleftBig=8970;e.floorleftbig=8970;e.floorleftbigg=8970;e.floorleftBigg=8970;e.floorrightbig=8971;e.floorrightBig=8971;e.floorrightBigg=8971;e.floorrightbigg=8971;e.hatwide=770;e.hatwider=770;e.hatwidest=770;e.intercal=7488;e.integraldisplay=8747;e.integraltext=8747;e.intersectiondisplay=8898;e.intersectiontext=8898;e.logicalanddisplay=8743;e.logicalandtext=8743;e.logicalordisplay=8744;e.logicalortext=8744;e.parenleftBig=40;e.parenleftbig=40;e.parenleftBigg=40;e.parenleftbigg=40;e.parenrightBig=41;e.parenrightbig=41;e.parenrightBigg=41;e.parenrightbigg=41;e.prime=8242;e.productdisplay=8719;e.producttext=8719;e.radicalbig=8730;e.radicalBig=8730;e.radicalBigg=8730;e.radicalbigg=8730;e.radicalbt=8730;e.radicaltp=8730;e.radicalvertex=8730;e.slashbig=47;e.slashBig=47;e.slashBigg=47;e.slashbigg=47;e.summationdisplay=8721;e.summationtext=8721;e.tildewide=732;e.tildewider=732;e.tildewidest=732;e.uniondisplay=8899;e.unionmultidisplay=8846;e.unionmultitext=8846;e.unionsqdisplay=8852;e.unionsqtext=8852;e.uniontext=8899;e.vextenddouble=8741;e.vextendsingle=8739}));t.getGlyphsUnicode=n;const i=(0,r.getLookupTableFactory)((function(e){e.space=32;e.a1=9985;e.a2=9986;e.a202=9987;e.a3=9988;e.a4=9742;e.a5=9990;e.a119=9991;e.a118=9992;e.a117=9993;e.a11=9755;e.a12=9758;e.a13=9996;e.a14=9997;e.a15=9998;e.a16=9999;e.a105=1e4;e.a17=10001;e.a18=10002;e.a19=10003;e.a20=10004;e.a21=10005;e.a22=10006;e.a23=10007;e.a24=10008;e.a25=10009;e.a26=10010;e.a27=10011;e.a28=10012;e.a6=10013;e.a7=10014;e.a8=10015;e.a9=10016;e.a10=10017;e.a29=10018;e.a30=10019;e.a31=10020;e.a32=10021;e.a33=10022;e.a34=10023;e.a35=9733;e.a36=10025;e.a37=10026;e.a38=10027;e.a39=10028;e.a40=10029;e.a41=10030;e.a42=10031;e.a43=10032;e.a44=10033;e.a45=10034;e.a46=10035;e.a47=10036;e.a48=10037;e.a49=10038;e.a50=10039;e.a51=10040;e.a52=10041;e.a53=10042;e.a54=10043;e.a55=10044;e.a56=10045;e.a57=10046;e.a58=10047;e.a59=10048;e.a60=10049;e.a61=10050;e.a62=10051;e.a63=10052;e.a64=10053;e.a65=10054;e.a66=10055;e.a67=10056;e.a68=10057;e.a69=10058;e.a70=10059;e.a71=9679;e.a72=10061;e.a73=9632;e.a74=10063;e.a203=10064;e.a75=10065;e.a204=10066;e.a76=9650;e.a77=9660;e.a78=9670;e.a79=10070;e.a81=9687;e.a82=10072;e.a83=10073;e.a84=10074;e.a97=10075;e.a98=10076;e.a99=10077;e.a100=10078;e.a101=10081;e.a102=10082;e.a103=10083;e.a104=10084;e.a106=10085;e.a107=10086;e.a108=10087;e.a112=9827;e.a111=9830;e.a110=9829;e.a109=9824;e.a120=9312;e.a121=9313;e.a122=9314;e.a123=9315;e.a124=9316;e.a125=9317;e.a126=9318;e.a127=9319;e.a128=9320;e.a129=9321;e.a130=10102;e.a131=10103;e.a132=10104;e.a133=10105;e.a134=10106;e.a135=10107;e.a136=10108;e.a137=10109;e.a138=10110;e.a139=10111;e.a140=10112;e.a141=10113;e.a142=10114;e.a143=10115;e.a144=10116;e.a145=10117;e.a146=10118;e.a147=10119;e.a148=10120;e.a149=10121;e.a150=10122;e.a151=10123;e.a152=10124;e.a153=10125;e.a154=10126;e.a155=10127;e.a156=10128;e.a157=10129;e.a158=10130;e.a159=10131;e.a160=10132;e.a161=8594;e.a163=8596;e.a164=8597;e.a196=10136;e.a165=10137;e.a192=10138;e.a166=10139;e.a167=10140;e.a168=10141;e.a169=10142;e.a170=10143;e.a171=10144;e.a172=10145;e.a173=10146;e.a162=10147;e.a174=10148;e.a175=10149;e.a176=10150;e.a177=10151;e.a178=10152;e.a179=10153;e.a193=10154;e.a180=10155;e.a199=10156;e.a181=10157;e.a200=10158;e.a182=10159;e.a201=10161;e.a183=10162;e.a184=10163;e.a197=10164;e.a185=10165;e.a194=10166;e.a198=10167;e.a186=10168;e.a195=10169;e.a187=10170;e.a188=10171;e.a189=10172;e.a190=10173;e.a191=10174;e.a89=10088;e.a90=10089;e.a93=10090;e.a94=10091;e.a91=10092;e.a92=10093;e.a205=10094;e.a85=10095;e.a206=10096;e.a86=10097;e.a87=10098;e.a88=10099;e.a95=10100;e.a96=10101;e[".notdef"]=0}));t.getDingbatsGlyphsUnicode=i},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearUnicodeCaches=function clearUnicodeCaches(){s.clear()};t.getCharUnicodeCategory=function getCharUnicodeCategory(e){const t=s.get(e);if(t)return t;const a=e.match(i),r={isWhitespace:!!a?.[1],isZeroWidthDiacritic:!!a?.[2],isInvisibleFormatMark:!!a?.[3]};s.set(e,r);return r};t.getUnicodeForGlyph=function getUnicodeForGlyph(e,t){let a=t[e];if(void 0!==a)return a;if(!e)return-1;if("u"===e[0]){const t=e.length;let r;if(7===t&&"n"===e[1]&&"i"===e[2])r=e.substring(3);else{if(!(t>=5&&t<=7))return-1;r=e.substring(1)}if(r===r.toUpperCase()){a=parseInt(r,16);if(a>=0)return a}}return-1};t.getUnicodeRangeFor=function getUnicodeRangeFor(e,t=-1){if(-1!==t){const a=n[t];for(let r=0,n=a.length;r=a[r]&&e<=a[r+1])return t}for(let t=0,a=n.length;t=a[r]&&e<=a[r+1])return t}return-1};t.mapSpecialUnicodeValues=function mapSpecialUnicodeValues(e){if(e>=65520&&e<=65535)return 0;if(e>=62976&&e<=63743)return r()[e]||e;if(173===e)return 45;return e};const r=(0,a(3).getLookupTableFactory)((function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120}));const n=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];const i=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),s=new Map},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0;t.getStandardFontName=function getStandardFontName(e){const t=(0,n.normalizeFontName)(e);return i()[t]};t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0;t.isKnownFontName=function isKnownFontName(e){const t=(0,n.normalizeFontName)(e);return!!(i()[t]||o()[t]||c()[t]||l()[t])};var r=a(3),n=a(38);const i=(0,r.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique";e["Arial-BoldMT-Bold"]="Helvetica-Bold";e["Arial-ItalicMT-Italic"]="Helvetica-Oblique";e.ArialUnicodeMS="Helvetica";e["ArialUnicodeMS-Bold"]="Helvetica-Bold";e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique";e["ArialUnicodeMS-Italic"]="Helvetica-Oblique";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=i;const s=(0,r.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="LiberationSans-Regular.ttf";e["Helvetica-Bold"]="LiberationSans-Bold.ttf";e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf";e["Helvetica-Oblique"]="LiberationSans-Italic.ttf";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=s;const o=(0,r.getLookupTableFactory)((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.Impact="Helvetica";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica"}));t.getNonStdFontMap=o;const c=(0,r.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0}));t.getSerifFonts=c;const l=(0,r.getLookupTableFactory)((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0;e.Wingdings=!0;e["Wingdings-Bold"]=!0;e["Wingdings-Regular"]=!0}));t.getSymbolsFonts=l;const h=(0,r.getLookupTableFactory)((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[179]=8220;e[180]=8221;e[181]=8216;e[182]=8217;e[200]=193;e[203]=205;e[207]=211;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[672]=1488;e[673]=1489;e[674]=1490;e[675]=1491;e[676]=1492;e[677]=1493;e[678]=1494;e[679]=1495;e[680]=1496;e[681]=1497;e[682]=1498;e[683]=1499;e[684]=1500;e[685]=1501;e[686]=1502;e[687]=1503;e[688]=1504;e[689]=1505;e[690]=1506;e[691]=1507;e[692]=1508;e[693]=1509;e[694]=1510;e[695]=1511;e[696]=1512;e[697]=1513;e[698]=1514;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377}));t.getGlyphMapForStandardFonts=h;const u=(0,r.getLookupTableFactory)((function(e){e[227]=322;e[264]=261;e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(0,r.getLookupTableFactory)((function(e){e[1]=32;e[4]=65;e[5]=192;e[6]=193;e[9]=196;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[29]=200;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[48]=204;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[76]=210;e[80]=214;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[109]=220;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[259]=224;e[260]=225;e[263]=228;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[287]=232;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[350]=236;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[382]=242;e[383]=243;e[386]=246;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[442]=252;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));t.getSupplementalGlyphMapForCalibri=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var r=a(2);t.ToUnicodeMap=class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const a in t)if(t[a]===e)return 0|a;return-1}amend(e){for(const t in e)this._map[t]=e[t]}};t.IdentityToUnicodeMap=class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,a=this.lastChar;t<=a;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,r.unreachable)("Should not call amend()")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFFont=void 0;var r=a(35),n=a(38),i=a(2);t.CFFFont=class CFFFont{constructor(e,t){this.properties=t;const a=new r.CFFParser(e,t,n.SEAC_ANALYSIS_ENABLED);this.cff=a.parse();this.cff.duplicateFirstGlyph();const s=new r.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch{(0,i.warn)("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:a,cMap:r}=t,i=e.charset.charset;let s,o;if(t.composite){let t,n;if(a?.length>0){t=Object.create(null);for(let e=0,r=a.length;e=0){const r=a[t];r&&(n[e]=r)}}n.length>0&&(this.properties.builtInEncoding=n)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontRendererFactory=void 0;var r=a(2),n=a(35),i=a(39),s=a(37),o=a(8);function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let a=32768;t<1240?a=107:t<33900&&(a=1131);return a}function parseCmap(e,t,a){const n=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),i=getUint16(e,t+n);let s,o,c;if(4===i){getUint16(e,t+n+2);const a=getUint16(e,t+n+6)>>1;o=t+n+14;s=[];for(c=0;c>1;a0;)h.push({flags:i})}for(a=0;a>1;S=!0;break;case 4:c+=i.pop();moveTo(o,c);S=!0;break;case 5:for(;i.length>0;){o+=i.shift();c+=i.shift();lineTo(o,c)}break;case 6:for(;i.length>0;){o+=i.shift();lineTo(o,c);if(0===i.length)break;c+=i.shift();lineTo(o,c)}break;case 7:for(;i.length>0;){c+=i.shift();lineTo(o,c);if(0===i.length)break;o+=i.shift();lineTo(o,c)}break;case 8:for(;i.length>0;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 10:y=i.pop();w=null;if(a.isCFFCIDFont){const e=a.fdSelect.getFDIndex(n);if(e>=0&&eMath.abs(c-t)?o+=i.shift():c+=i.shift();bezierCurveTo(u,f,d,g,o,c);break;default:throw new r.FormatError(`unknown operator: 12 ${x}`)}break;case 14:if(i.length>=4){const e=i.pop(),r=i.pop();c=i.pop();o=i.pop();t.push({cmd:"save"},{cmd:"translate",args:[o,c]});let n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[e]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId);t.push({cmd:"restore"});n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[r]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId)}return;case 19:case 20:l+=i.length>>1;h+=l+7>>3;S=!0;break;case 21:c+=i.pop();o+=i.pop();moveTo(o,c);S=!0;break;case 22:o+=i.pop();moveTo(o,c);S=!0;break;case 24:for(;i.length>2;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}o+=i.shift();c+=i.shift();lineTo(o,c);break;case 25:for(;i.length>6;){o+=i.shift();c+=i.shift();lineTo(o,c)}u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c);break;case 26:i.length%2&&(o+=i.shift());for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d;c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 27:i.length%2&&(c+=i.shift());for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g;bezierCurveTo(u,f,d,g,o,c)}break;case 28:i.push((e[h]<<24|e[h+1]<<16)>>16);h+=2;break;case 29:y=i.pop()+a.gsubrsBias;w=a.gsubrs[y];w&&parse(w);break;case 30:for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;case 31:for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;default:if(x<32)throw new r.FormatError(`unknown operator: ${x}`);if(x<247)i.push(x-139);else if(x<251)i.push(256*(x-247)+e[h++]+108);else if(x<255)i.push(256*-(x-251)-e[h++]-108);else{i.push((e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3])/65536);h+=4}}S&&(i.length=0)}}(e)}const c=[];class CompiledFont{constructor(e){this.constructor===CompiledFont&&(0,r.unreachable)("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:a}=lookupCmap(this.cmap,e);let r=this.compiledGlyphs[a];if(!r)try{r=this.compileGlyph(this.glyphs[a],a);this.compiledGlyphs[a]=r}catch(e){this.compiledGlyphs[a]=c;void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);throw e}void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);return r}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return c;let a=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e2*getUint16(e,t)}const i=[];let s=n(t,0);for(let a=r;a{Object.defineProperty(t,"__esModule",{value:!0});t.getMetrics=t.getFontBasicMetrics=void 0;var r=a(3);const n=(0,r.getLookupTableFactory)((function(e){e.Courier=600;e["Courier-Bold"]=600;e["Courier-BoldOblique"]=600;e["Courier-Oblique"]=600;e.Helvetica=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-BoldOblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Oblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e.Symbol=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.universal=713;e.numbersign=500;e.existential=549;e.percent=833;e.ampersand=778;e.suchthat=439;e.parenleft=333;e.parenright=333;e.asteriskmath=500;e.plus=549;e.comma=250;e.minus=549;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=549;e.equal=549;e.greater=549;e.question=444;e.congruent=549;e.Alpha=722;e.Beta=667;e.Chi=722;e.Delta=612;e.Epsilon=611;e.Phi=763;e.Gamma=603;e.Eta=722;e.Iota=333;e.theta1=631;e.Kappa=722;e.Lambda=686;e.Mu=889;e.Nu=722;e.Omicron=722;e.Pi=768;e.Theta=741;e.Rho=556;e.Sigma=592;e.Tau=611;e.Upsilon=690;e.sigma1=439;e.Omega=768;e.Xi=645;e.Psi=795;e.Zeta=611;e.bracketleft=333;e.therefore=863;e.bracketright=333;e.perpendicular=658;e.underscore=500;e.radicalex=500;e.alpha=631;e.beta=549;e.chi=549;e.delta=494;e.epsilon=439;e.phi=521;e.gamma=411;e.eta=603;e.iota=329;e.phi1=603;e.kappa=549;e.lambda=549;e.mu=576;e.nu=521;e.omicron=549;e.pi=549;e.theta=521;e.rho=549;e.sigma=603;e.tau=439;e.upsilon=576;e.omega1=713;e.omega=686;e.xi=493;e.psi=686;e.zeta=494;e.braceleft=480;e.bar=200;e.braceright=480;e.similar=549;e.Euro=750;e.Upsilon1=620;e.minute=247;e.lessequal=549;e.fraction=167;e.infinity=713;e.florin=500;e.club=753;e.diamond=753;e.heart=753;e.spade=753;e.arrowboth=1042;e.arrowleft=987;e.arrowup=603;e.arrowright=987;e.arrowdown=603;e.degree=400;e.plusminus=549;e.second=411;e.greaterequal=549;e.multiply=549;e.proportional=713;e.partialdiff=494;e.bullet=460;e.divide=549;e.notequal=549;e.equivalence=549;e.approxequal=549;e.ellipsis=1e3;e.arrowvertex=603;e.arrowhorizex=1e3;e.carriagereturn=658;e.aleph=823;e.Ifraktur=686;e.Rfraktur=795;e.weierstrass=987;e.circlemultiply=768;e.circleplus=768;e.emptyset=823;e.intersection=768;e.union=768;e.propersuperset=713;e.reflexsuperset=713;e.notsubset=713;e.propersubset=713;e.reflexsubset=713;e.element=713;e.notelement=713;e.angle=768;e.gradient=713;e.registerserif=790;e.copyrightserif=790;e.trademarkserif=890;e.product=823;e.radical=549;e.dotmath=250;e.logicalnot=713;e.logicaland=603;e.logicalor=603;e.arrowdblboth=1042;e.arrowdblleft=987;e.arrowdblup=603;e.arrowdblright=987;e.arrowdbldown=603;e.lozenge=494;e.angleleft=329;e.registersans=790;e.copyrightsans=790;e.trademarksans=786;e.summation=713;e.parenlefttp=384;e.parenleftex=384;e.parenleftbt=384;e.bracketlefttp=384;e.bracketleftex=384;e.bracketleftbt=384;e.bracelefttp=494;e.braceleftmid=494;e.braceleftbt=494;e.braceex=494;e.angleright=329;e.integral=274;e.integraltp=686;e.integralex=686;e.integralbt=686;e.parenrighttp=384;e.parenrightex=384;e.parenrightbt=384;e.bracketrighttp=384;e.bracketrightex=384;e.bracketrightbt=384;e.bracerighttp=494;e.bracerightmid=494;e.bracerightbt=494;e.apple=790}));e["Times-Roman"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=408;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=564;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=564;e.equal=564;e.greater=564;e.question=444;e.at=921;e.A=722;e.B=667;e.C=667;e.D=722;e.E=611;e.F=556;e.G=722;e.H=722;e.I=333;e.J=389;e.K=722;e.L=611;e.M=889;e.N=722;e.O=722;e.P=556;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=722;e.W=944;e.X=722;e.Y=722;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=469;e.underscore=500;e.quoteleft=333;e.a=444;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=500;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=500;e.o=500;e.p=500;e.q=500;e.r=333;e.s=389;e.t=278;e.u=500;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=480;e.bar=200;e.braceright=480;e.asciitilde=541;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=180;e.quotedblleft=444;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=453;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=444;e.quotedblright=444;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=444;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=889;e.ordfeminine=276;e.Lslash=611;e.Oslash=722;e.OE=889;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=444;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=722;e.divide=564;e.Yacute=722;e.Acircumflex=722;e.aacute=444;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=444;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=444;e.Ncommaaccent=722;e.lacute=278;e.agrave=444;e.Tcommaaccent=611;e.Cacute=667;e.atilde=444;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=444;e.Amacron=722;e.rcaron=333;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=556;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=588;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=722;e.Abreve=722;e.multiply=564;e.uacute=500;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=444;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=722;e.Iacute=333;e.plusminus=564;e.brokenbar=200;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=333;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=326;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=444;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=344;e.Kcommaaccent=722;e.Lacute=611;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=722;e.zdotaccent=444;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=500;e.minus=564;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=564;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=1e3;e.ampersand=833;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=930;e.A=722;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=778;e.I=389;e.J=500;e.K=778;e.L=667;e.M=944;e.N=722;e.O=778;e.P=611;e.Q=778;e.R=722;e.S=556;e.T=667;e.U=722;e.V=722;e.W=1e3;e.X=722;e.Y=722;e.Z=667;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=581;e.underscore=500;e.quoteleft=333;e.a=500;e.b=556;e.c=444;e.d=556;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=333;e.k=556;e.l=278;e.m=833;e.n=556;e.o=500;e.p=556;e.q=556;e.r=444;e.s=389;e.t=333;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=394;e.bar=220;e.braceright=394;e.asciitilde=520;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=540;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=300;e.Lslash=667;e.Oslash=778;e.OE=1e3;e.ordmasculine=330;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=556;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=722;e.divide=570;e.Yacute=722;e.Acircumflex=722;e.aacute=500;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=667;e.Cacute=722;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=500;e.Amacron=722;e.rcaron=444;e.ccedilla=444;e.Zdotaccent=667;e.Thorn=611;e.Omacron=778;e.Racute=722;e.Sacute=556;e.dcaron=672;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=570;e.uacute=556;e.Tcaron=667;e.partialdiff=494;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=778;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=444;e.omacron=500;e.Zacute=667;e.Zcaron=667;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=416;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=778;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=300;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=556;e.threequarters=750;e.Scedilla=556;e.lcaron=394;e.Kcommaaccent=778;e.Lacute=667;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=667;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=778;e.degree=400;e.ograve=500;e.Ccaron=722;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=444;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=722;e.Lcommaaccent=667;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=444;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=556;e.minus=570;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=333;e.logicalnot=570;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-BoldItalic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=389;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=832;e.A=667;e.B=667;e.C=667;e.D=722;e.E=667;e.F=667;e.G=722;e.H=778;e.I=389;e.J=500;e.K=667;e.L=611;e.M=889;e.N=722;e.O=722;e.P=611;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=667;e.W=889;e.X=667;e.Y=611;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=570;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=556;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=556;e.v=444;e.w=667;e.x=500;e.y=444;e.z=389;e.braceleft=348;e.bar=220;e.braceright=348;e.asciitilde=570;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=500;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=944;e.ordfeminine=266;e.Lslash=611;e.Oslash=722;e.OE=944;e.ordmasculine=300;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=611;e.divide=570;e.Yacute=611;e.Acircumflex=667;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=611;e.Cacute=667;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=556;e.acircumflex=500;e.Amacron=667;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=611;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=608;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=722;e.Agrave=667;e.Abreve=667;e.multiply=570;e.uacute=556;e.Tcaron=611;e.partialdiff=494;e.ydieresis=444;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=722;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=366;e.eogonek=444;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=576;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=382;e.Kcommaaccent=667;e.Lacute=611;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=722;e.zdotaccent=389;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=500;e.minus=606;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=606;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Italic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=420;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=675;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=675;e.equal=675;e.greater=675;e.question=500;e.at=920;e.A=611;e.B=611;e.C=667;e.D=722;e.E=611;e.F=611;e.G=722;e.H=722;e.I=333;e.J=444;e.K=667;e.L=556;e.M=833;e.N=667;e.O=722;e.P=611;e.Q=722;e.R=611;e.S=500;e.T=556;e.U=722;e.V=611;e.W=833;e.X=611;e.Y=556;e.Z=556;e.bracketleft=389;e.backslash=278;e.bracketright=389;e.asciicircum=422;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=278;e.g=500;e.h=500;e.i=278;e.j=278;e.k=444;e.l=278;e.m=722;e.n=500;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=500;e.v=444;e.w=667;e.x=444;e.y=444;e.z=389;e.braceleft=400;e.bar=275;e.braceright=400;e.asciitilde=541;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=214;e.quotedblleft=556;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=523;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=556;e.quotedblright=556;e.guillemotright=500;e.ellipsis=889;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=889;e.AE=889;e.ordfeminine=276;e.Lslash=556;e.Oslash=722;e.OE=944;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=667;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=500;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=556;e.divide=675;e.Yacute=556;e.Acircumflex=611;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=500;e.Ncommaaccent=667;e.lacute=278;e.agrave=500;e.Tcommaaccent=556;e.Cacute=667;e.atilde=500;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=611;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=500;e.Amacron=611;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=556;e.Thorn=611;e.Omacron=722;e.Racute=611;e.Sacute=500;e.dcaron=544;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=611;e.Abreve=611;e.multiply=675;e.uacute=500;e.Tcaron=556;e.partialdiff=476;e.ydieresis=444;e.Nacute=667;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=667;e.Iacute=333;e.plusminus=675;e.brokenbar=275;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=389;e.omacron=500;e.Zacute=556;e.Zcaron=556;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=300;e.eogonek=444;e.Uogonek=722;e.Aacute=611;e.Adieresis=611;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=500;e.lcaron=300;e.Kcommaaccent=667;e.Lacute=556;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=500;e.Scommaaccent=500;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=667;e.otilde=500;e.Rcommaaccent=611;e.Lcommaaccent=556;e.Atilde=611;e.Aogonek=611;e.Aring=611;e.Otilde=722;e.zdotaccent=389;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=444;e.minus=675;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=675;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e.ZapfDingbats=(0,r.getLookupTableFactory)((function(e){e.space=278;e.a1=974;e.a2=961;e.a202=974;e.a3=980;e.a4=719;e.a5=789;e.a119=790;e.a118=791;e.a117=690;e.a11=960;e.a12=939;e.a13=549;e.a14=855;e.a15=911;e.a16=933;e.a105=911;e.a17=945;e.a18=974;e.a19=755;e.a20=846;e.a21=762;e.a22=761;e.a23=571;e.a24=677;e.a25=763;e.a26=760;e.a27=759;e.a28=754;e.a6=494;e.a7=552;e.a8=537;e.a9=577;e.a10=692;e.a29=786;e.a30=788;e.a31=788;e.a32=790;e.a33=793;e.a34=794;e.a35=816;e.a36=823;e.a37=789;e.a38=841;e.a39=823;e.a40=833;e.a41=816;e.a42=831;e.a43=923;e.a44=744;e.a45=723;e.a46=749;e.a47=790;e.a48=792;e.a49=695;e.a50=776;e.a51=768;e.a52=792;e.a53=759;e.a54=707;e.a55=708;e.a56=682;e.a57=701;e.a58=826;e.a59=815;e.a60=789;e.a61=789;e.a62=707;e.a63=687;e.a64=696;e.a65=689;e.a66=786;e.a67=787;e.a68=713;e.a69=791;e.a70=785;e.a71=791;e.a72=873;e.a73=761;e.a74=762;e.a203=762;e.a75=759;e.a204=759;e.a76=892;e.a77=892;e.a78=788;e.a79=784;e.a81=438;e.a82=138;e.a83=277;e.a84=415;e.a97=392;e.a98=392;e.a99=668;e.a100=668;e.a89=390;e.a90=390;e.a93=317;e.a94=317;e.a91=276;e.a92=276;e.a205=509;e.a85=509;e.a206=410;e.a86=410;e.a87=234;e.a88=234;e.a95=334;e.a96=334;e.a101=732;e.a102=544;e.a103=544;e.a104=910;e.a106=667;e.a107=760;e.a108=760;e.a112=776;e.a111=595;e.a110=694;e.a109=626;e.a120=788;e.a121=788;e.a122=788;e.a123=788;e.a124=788;e.a125=788;e.a126=788;e.a127=788;e.a128=788;e.a129=788;e.a130=788;e.a131=788;e.a132=788;e.a133=788;e.a134=788;e.a135=788;e.a136=788;e.a137=788;e.a138=788;e.a139=788;e.a140=788;e.a141=788;e.a142=788;e.a143=788;e.a144=788;e.a145=788;e.a146=788;e.a147=788;e.a148=788;e.a149=788;e.a150=788;e.a151=788;e.a152=788;e.a153=788;e.a154=788;e.a155=788;e.a156=788;e.a157=788;e.a158=788;e.a159=788;e.a160=894;e.a161=838;e.a163=1016;e.a164=458;e.a196=748;e.a165=924;e.a192=748;e.a166=918;e.a167=927;e.a168=928;e.a169=928;e.a170=834;e.a171=873;e.a172=828;e.a173=924;e.a162=924;e.a174=917;e.a175=930;e.a176=931;e.a177=463;e.a178=883;e.a179=836;e.a193=836;e.a180=867;e.a199=867;e.a181=696;e.a200=696;e.a182=874;e.a201=874;e.a183=760;e.a184=946;e.a197=771;e.a185=865;e.a194=771;e.a198=888;e.a186=967;e.a195=888;e.a187=831;e.a188=873;e.a189=927;e.a190=970;e.a191=918}))}));t.getMetrics=n;const i=(0,r.getLookupTableFactory)((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426};e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439};e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450};e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461};e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441};e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462};e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN};e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));t.getFontBasicMetrics=i},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.GlyfTable=void 0;t.GlyfTable=class GlyfTable{constructor({glyfTable:e,isGlyphLocationsLong:t,locaTable:a,numGlyphs:r}){this.glyphs=[];const n=new DataView(a.buffer,a.byteOffset,a.byteLength),i=new DataView(e.buffer,e.byteOffset,e.byteLength),s=t?4:2;let o=t?n.getUint32(0):2*n.getUint16(0),c=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),a=e>131070,r=a?4:2,n=new DataView(new ArrayBuffer((this.glyphs.length+1)*r));a?n.setUint32(0,0):n.setUint16(0,0);let i=0,s=0;for(const e of this.glyphs){i+=e.write(i,t);i=i+3&-4;s+=r;a?n.setUint32(s,i):n.setUint16(s,i>>1)}return{isLocationLong:a,loca:new Uint8Array(n.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,a=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const a=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const a of this.composites)e+=a.write(e,t);return e-a}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const a of this.composites)a.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:a,xMax:r,yMax:n}){this.numberOfContours=e;this.xMin=t;this.yMin=a;this.xMax=r;this.yMax=n}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:a}){this.xCoordinates=t;this.yCoordinates=a;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,a){const r=[];for(let n=0;n255?e+=2:o>0&&(e+=1);t=i;o=Math.abs(s-a);o>255?e+=2:o>0&&(e+=1);a=s}}return e}write(e,t){const a=e,r=[],n=[],i=[];let s=0,o=0;for(const a of this.contours){for(let e=0,t=a.xCoordinates.length;e=0?18:2;r.push(e)}else r.push(l)}s=c;const h=a.yCoordinates[e];l=h-o;if(0===l){t|=32;n.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;n.push(e)}else n.push(l)}o=h;i.push(t)}t.setUint16(e,r.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const a of i)t.setUint8(e++,a);for(let a=0,n=r.length;a=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const a=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-a}scale(e,t){}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OpenTypeFileBuilder=void 0;var r=a(3),n=a(2);function writeInt16(e,t,a){e[t]=a>>8&255;e[t+1]=255&a}function writeInt32(e,t,a){e[t]=a>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}function writeData(e,t,a){if(a instanceof Uint8Array)e.set(a,t);else if("string"==typeof a)for(let r=0,n=a.length;ra;){a<<=1;r++}const n=a*t;return{range:n,entry:r,rangeShift:t*e-n}}toArray(){let e=this.sfnt;const t=this.tables,a=Object.keys(t);a.sort();const i=a.length;let s,o,c,l,h,u=12+16*i;const d=[u];for(s=0;s>>0;d.push(u)}const f=new Uint8Array(u);for(s=0;s>>0}writeInt32(f,u+4,e);writeInt32(f,u+8,d[s]);writeInt32(f,u+12,t[h].length);u+=16}return f}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=OpenTypeFileBuilder},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Font=void 0;var r=a(35),n=a(2),i=a(38),s=a(3),o=a(8),c=a(49);function findBlock(e,t,a){const r=e.length,n=t.length,i=r-n;let o=a,c=!1;for(;o=n){o+=a;for(;o=0&&(r[e]=n)}}return(0,i.type1FontGlyphMapping)(e,r,a)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let a=0,r=e.length;a0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new r.CFFIndex;for(u=0,d=n.length;u{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Parser=void 0;var r=a(37),n=a(3),i=a(8),s=a(2);const o=[4],c=[5],l=[6],h=[7],u=[8],d=[12,35],f=[14],g=[21],p=[22],m=[30],b=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,a){const r=e.length;let n,i,y,w=!1;for(let S=0;Sr)return!0;const n=r-e;for(let e=n;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);a?this.stack.splice(n,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,a){if(a>=e.length)return new Uint8Array(0);let r,n,i=0|t;for(r=0;r>8;i=52845*(t+i)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}t.Type1Parser=class Type1Parser{constructor(e,t,a){if(t){const t=e.getBytes(),a=!((isHexDigit(t[0])||(0,n.isWhiteSpace)(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new i.Stream(a?decrypt(t,55665,4):function decryptAscii(e,t,a){let r=0|t;const n=e.length,i=new Uint8Array(n>>>1);let s,o;for(s=0,o=0;s>8;r=52845*(e+r)+22719&65535}}return i.slice(a,o)}(t,55665,4))}this.seacAnalysisEnabled=!!a;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,n.isWhiteSpace)(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let a="";do{a+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!(0,n.isWhiteSpace)(t)&&!isSpecial(t));return a}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,a=[],r=[],n=Object.create(null);n.lenIV=4;const i={subrs:[],charstrings:[],properties:{privateData:n}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=i.properties.privateData.lenIV;const a=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s?this.getToken():"/"===s&&this.prevChar();r.push({glyph:e,encoded:a})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=i.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a[e]=r}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":i.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":i.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":i.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":i.properties.privateData[s]=this.readBoolean()}}for(const{encoded:t,glyph:n}of r){const r=new Type1CharString,s=r.convert(t,a,this.seacAnalysisEnabled);let o=r.output;s&&(o=[14]);const c={glyphName:n,charstring:o,width:r.width,lsb:r.lsb,seac:r.seac};".notdef"===n?i.charstrings.unshift(c):i.charstrings.push(c);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(n);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=r.width)}}return i}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const a=this.readNumberArray();e.fontMatrix=a;break;case"Encoding":const n=this.getToken();let i;if(/^\d+$/.test(n)){i=[];const e=0|parseInt(n,10);this.getToken();for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Pattern=void 0;t.clearPatternCaches=function clearPatternCaches(){f=Object.create(null)};t.getTilingPatternIR=function getTilingPatternIR(e,t,a){const n=t.getArray("Matrix"),i=r.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=t.get("TilingType");if(i[2]-i[0]==0||i[3]-i[1]==0)throw new r.FormatError(`Invalid getTilingPatternIR /BBox array: [${i}].`);return["TilingPattern",a,e,n,i,s,o,c,l]};var r=a(2),n=a(5),i=a(12),s=a(3);const o=2,c=3,l=4,h=5,u=6,d=7;t.Pattern=class Pattern{constructor(){(0,r.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,a,i,f){const g=e instanceof n.BaseStream?e.dict:e,p=g.get("ShadingType");try{switch(p){case o:case c:return new RadialAxialShading(g,t,a,i,f);case l:case h:case u:case d:return new MeshShading(e,t,a,i,f);default:throw new r.FormatError("Unsupported ShadingType: "+p)}}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(e);return new DummyShading}}};class BaseShading{static SMALL_NUMBER=1e-6;constructor(){this.constructor===BaseShading&&(0,r.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,r.unreachable)("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,a,n,s){super();this.coordsArr=e.getArray("Coords");this.shadingType=e.get("ShadingType");const o=i.ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:a,pdfFunctionFactory:n,localColorSpaceCache:s}),l=e.getArray("BBox");this.bbox=Array.isArray(l)&&4===l.length?r.Util.normalizeRect(l):null;let h=0,u=1;if(e.has("Domain")){const t=e.getArray("Domain");h=t[0];u=t[1]}let d=!1,f=!1;if(e.has("Extend")){const t=e.getArray("Extend");d=t[0];f=t[1]}if(!(this.shadingType!==c||d&&f)){const[e,t,a,n,i,s]=this.coordsArr,o=Math.hypot(e-n,t-i);a<=s+o&&s<=a+o&&(0,r.warn)("Unsupported radial gradient.")}this.extendStart=d;this.extendEnd=f;const g=e.getRaw("Function"),p=n.createFromArray(g),m=(u-h)/840,b=this.colorStops=[];if(h>=u||m<=0){(0,r.info)("Bad shading domain.");return}const y=new Float32Array(o.numComps),w=new Float32Array(1);let S,x=0;w[0]=h;p(w,0,y,0);let C=o.getRgb(y,0);const k=r.Util.makeHexColor(C[0],C[1],C[2]);b.push([0,k]);let v=1;w[0]=h+m;p(w,0,y,0);let F=o.getRgb(y,0),O=F[0]-C[0]+1,T=F[1]-C[1]+1,M=F[2]-C[2]+1,D=F[0]-C[0]-1,E=F[1]-C[1]-1,N=F[2]-C[2]-1;for(let e=2;e<840;e++){w[0]=h+e*m;p(w,0,y,0);S=o.getRgb(y,0);const t=e-x;O=Math.min(O,(S[0]-C[0]+1)/t);T=Math.min(T,(S[1]-C[1]+1)/t);M=Math.min(M,(S[2]-C[2]+1)/t);D=Math.max(D,(S[0]-C[0]-1)/t);E=Math.max(E,(S[1]-C[1]-1)/t);N=Math.max(N,(S[2]-C[2]-1)/t);if(!(D<=O&&E<=T&&N<=M)){const e=r.Util.makeHexColor(F[0],F[1],F[2]);b.push([v/840,e]);O=S[0]-F[0]+1;T=S[1]-F[1]+1;M=S[2]-F[2]+1;D=S[0]-F[0]-1;E=S[1]-F[1]-1;N=S[2]-F[2]-1;x=v;C=F}v=e;F=S}const R=r.Util.makeHexColor(F[0],F[1],F[2]);b.push([1,R]);let L="transparent";if(e.has("Background")){S=o.getRgb(e.get("Background"),0);L=r.Util.makeHexColor(S[0],S[1],S[2])}if(!d){b.unshift([0,L]);b[1][0]+=BaseShading.SMALL_NUMBER}if(!f){b.at(-1)[0]-=BaseShading.SMALL_NUMBER;b.push([1,L])}this.colorStops=b}getIR(){const e=this.coordsArr,t=this.shadingType;let a,n,i,s,l;if(t===o){n=[e[0],e[1]];i=[e[2],e[3]];s=null;l=null;a="axial"}else if(t===c){n=[e[0],e[1]];i=[e[3],e[4]];s=e[2];l=e[5];a="radial"}else(0,r.unreachable)(`getPattern type unknown: ${t}`);return["RadialAxial",a,this.bbox,this.colorStops,n,i,s,l]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const a=t.numComps;this.tmpCompsBuf=new Float32Array(a);const r=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(r):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,a=this.bufferLength;if(32===e){if(0===a)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>a)>>>0}if(8===e&&0===a)return this.stream.getByte();for(;a>a}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),a=this.readBits(e),r=this.context.decode,n=e<32?1/((1<i?i:e;t=t>s?s:t;a=a{Object.defineProperty(t,"__esModule",{value:!0});t.getXfaFontDict=function getXfaFontDict(e){const t=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:a,baseMapping:r,factors:n}=t,i=n?a.map(((e,t)=>e*n[t])):a;let s,o=-2;const c=[];for(const[e,t]of r.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===o+1){s.push(i[t]);o+=1}else{o=e;s=[i[t]];c.push(e,s)}return c}(e),a=new n.Dict(null);a.set("BaseFont",n.Name.get(e));a.set("Type",n.Name.get("Font"));a.set("Subtype",n.Name.get("CIDFontType2"));a.set("Encoding",n.Name.get("Identity-H"));a.set("CIDToGIDMap",n.Name.get("Identity"));a.set("W",t);a.set("FirstChar",t[0]);a.set("LastChar",t.at(-2)+t.at(-1).length-1);const r=new n.Dict(null);a.set("FontDescriptor",r);const i=new n.Dict(null);i.set("Ordering","Identity");i.set("Registry","Adobe");i.set("Supplement",0);a.set("CIDSystemInfo",i);return a};t.getXfaFontName=getXfaFontName;var r=a(52),n=a(4),i=a(53),s=a(54),o=a(55),c=a(56),l=a(3),h=a(38);const u=(0,l.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:o.MyriadProRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:o.MyriadProRegularMetrics};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:o.MyriadProBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:o.MyriadProBoldMetrics};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:o.MyriadProItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:o.MyriadProItalicMetrics};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.MyriadProBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:o.MyriadProBoldItalicMetrics};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:r.CalibriRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:r.CalibriRegularMetrics};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:r.CalibriBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:r.CalibriBoldMetrics};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:r.CalibriItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:r.CalibriItalicMetrics};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:r.CalibriBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:r.CalibriBoldItalicMetrics};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:c.SegoeuiRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:c.SegoeuiRegularMetrics};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:c.SegoeuiBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:c.SegoeuiBoldMetrics};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:c.SegoeuiItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:c.SegoeuiItalicMetrics};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:c.SegoeuiBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:c.SegoeuiBoldItalicMetrics};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:i.HelveticaRegularMetrics};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:i.HelveticaBoldMetrics};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:i.HelveticaItalicMetrics};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:i.HelveticaBoldItalicMetrics}}));function getXfaFontName(e){const t=(0,h.normalizeFontName)(e);return u()[t]}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CalibriRegularMetrics=t.CalibriRegularFactors=t.CalibriItalicMetrics=t.CalibriItalicFactors=t.CalibriBoldMetrics=t.CalibriBoldItalicMetrics=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0;t.CalibriBoldFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriBoldItalicFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriItalicFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriRegularFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1];t.CalibriRegularMetrics={lineHeight:1.2207,lineGap:.2207}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HelveticaRegularMetrics=t.HelveticaRegularFactors=t.HelveticaItalicMetrics=t.HelveticaItalicFactors=t.HelveticaBoldMetrics=t.HelveticaBoldItalicMetrics=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0;t.HelveticaBoldFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldMetrics={lineHeight:1.2,lineGap:.2};t.HelveticaBoldItalicFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaItalicFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaRegularFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LiberationSansRegularWidths=t.LiberationSansRegularMapping=t.LiberationSansItalicWidths=t.LiberationSansItalicMapping=t.LiberationSansBoldWidths=t.LiberationSansBoldMapping=t.LiberationSansBoldItalicWidths=t.LiberationSansBoldItalicMapping=void 0;t.LiberationSansBoldWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansBoldItalicWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansItalicWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansRegularWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansRegularMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MyriadProRegularMetrics=t.MyriadProRegularFactors=t.MyriadProItalicMetrics=t.MyriadProItalicFactors=t.MyriadProBoldMetrics=t.MyriadProBoldItalicMetrics=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0;t.MyriadProBoldFactors=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProBoldItalicFactors=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProItalicFactors=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProRegularFactors=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SegoeuiRegularMetrics=t.SegoeuiRegularFactors=t.SegoeuiItalicMetrics=t.SegoeuiItalicFactors=t.SegoeuiBoldMetrics=t.SegoeuiBoldItalicMetrics=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0;t.SegoeuiBoldFactors=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiBoldItalicFactors=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiItalicFactors=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiRegularFactors=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiRegularMetrics={lineHeight:1.33008,lineGap:0}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0;t.isPDFFunction=function isPDFFunction(e){let t;if(e instanceof r.Dict)t=e;else{if(!(e instanceof s.BaseStream))return!1;t=e.dict}return t.has("FunctionType")};var r=a(4),n=a(2),i=a(58),s=a(5),o=a(59);t.PDFFunctionFactory=class PDFFunctionFactory{constructor({xref:e,isEvalSupported:t=!0}){this.xref=e;this.isEvalSupported=!1!==t}create(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parse({xref:this.xref,isEvalSupported:this.isEvalSupported,fn:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}createFromArray(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parseArray({xref:this.xref,isEvalSupported:this.isEvalSupported,fnObj:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}getCached(e){let t;e instanceof r.Ref?t=e:e instanceof r.Dict?t=e.objId:e instanceof s.BaseStream&&(t=e.dict?.objId);if(t){const e=this._localFunctionCache.getByRef(t);if(e)return e}return null}_cache(e,t){if(!t)throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.');let a;e instanceof r.Ref?a=e:e instanceof r.Dict?a=e.objId:e instanceof s.BaseStream&&(a=e.dict?.objId);a&&this._localFunctionCache.set(null,a,t)}get _localFunctionCache(){return(0,n.shadow)(this,"_localFunctionCache",new o.LocalFunctionCache)}};function toNumberArray(e){if(!Array.isArray(e))return null;const t=e.length;for(let a=0;a>c)*h;l&=(1<a?e=a:e0&&(d=s[u-1]);let f=r[1];u>1,u=s.length>>1,d=new PostScriptEvaluator(l),f=Object.create(null);let g=8192;const p=new Float32Array(u);return function constructPostScriptFn(e,t,a,r){let n,i,s="";const c=p;for(n=0;ne&&(i=e)}m[n]=i}if(g>0){g--;f[s]=m}a.set(m,r)}}}class PostScriptStack{static MAX_STACK_SIZE=100;constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let a=t.length-e,r=e-1;r>=0;r--,a++)t.push(t[a])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const a=this.stack,r=a.length-e,n=a.length-1,i=r+(t-Math.floor(t/e)*e);for(let e=r,t=n;e0?t.push(o<>c);break;case"ceiling":o=t.pop();t.push(Math.ceil(o));break;case"copy":o=t.pop();t.copy(o);break;case"cos":o=t.pop();t.push(Math.cos(o%360/180*Math.PI));break;case"cvi":o=0|t.pop();t.push(o);break;case"cvr":break;case"div":c=t.pop();o=t.pop();t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop();o=t.pop();t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop();o=t.pop();t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop();t.push(Math.floor(o));break;case"ge":c=t.pop();o=t.pop();t.push(o>=c);break;case"gt":c=t.pop();o=t.pop();t.push(o>c);break;case"idiv":c=t.pop();o=t.pop();t.push(o/c|0);break;case"index":o=t.pop();t.index(o);break;case"le":c=t.pop();o=t.pop();t.push(o<=c);break;case"ln":o=t.pop();t.push(Math.log(o));break;case"log":o=t.pop();t.push(Math.log10(o));break;case"lt":c=t.pop();o=t.pop();t.push(o=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,a){const r=[],n=[],i=t.length>>1,s=a.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",i,", ");o.push(")")}if(s{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptParser=t.PostScriptLexer=void 0;var r=a(2),n=a(4),i=a(3);t.PostScriptParser=class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new r.FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(s.LBRACE);this.parseBlock();this.expect(s.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(s.RBRACE);if(this.accept(s.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(s.LBRACE))throw new r.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const a=this.operators.length;this.parseBlock();this.expect(s.RBRACE);this.expect(s.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=a;this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return(0,r.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){return PostScriptToken.opCache[e]||=new PostScriptToken(s.OPERATOR,e)}static get LBRACE(){return(0,r.shadow)(this,"LBRACE",new PostScriptToken(s.LBRACE,"{"))}static get RBRACE(){return(0,r.shadow)(this,"RBRACE",new PostScriptToken(s.RBRACE,"}"))}static get IF(){return(0,r.shadow)(this,"IF",new PostScriptToken(s.IF,"IF"))}static get IFELSE(){return(0,r.shadow)(this,"IFELSE",new PostScriptToken(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(s.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const a=this.strBuf;a.length=0;a[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)a.push(String.fromCharCode(t));const r=a.join("");switch(r.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(r)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const a=parseFloat(t.join(""));if(isNaN(a))throw new r.FormatError(`Invalid floating point number: ${a}`);return a}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.RegionalImageCache=t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0;var r=a(2),n=a(4);class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&(0,r.unreachable)("Cannot initialize BaseLocalCache.");this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new n.RefSetCache}getByName(e){this._onlyRefs&&(0,r.unreachable)("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,a){(0,r.unreachable)("Abstract method `set` called.")}}t.LocalImageCache=class LocalImageCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalColorSpaceCache=class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,a){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalFunctionCache=class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};t.LocalGStateCache=class LocalGStateCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalTilingPatternCache=class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};t.RegionalImageCache=class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5*r.MAX_IMAGE_SIZE_TO_CACHE;constructor(){this._refCache=new n.RefSetCache;this._imageCache=new n.RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size{Object.defineProperty(t,"__esModule",{value:!0});t.bidi=function bidi(e,t=-1,a=!1){let c=!0;const l=e.length;if(0===l||a)return createBidiText(e,c,a);s.length=l;o.length=l;let h,u,d=0;for(h=0;h4){c=!0;t=0}else{c=!1;t=1}const f=[];for(h=0;h=0&&"ET"===o[e];--e)o[e]="EN";for(let e=h+1;e0&&(t=o[h-1]);let a=m;e+1w&&isOdd(w)&&(x=w)}for(w=S;w>=x;--w){let e=-1;for(h=0,u=f.length;h=0){reverseValues(s,e,h);e=-1}}else e<0&&(e=h);e>=0&&reverseValues(s,e,f.length)}for(h=0,u=s.length;h"!==e||(s[h]="")}return createBidiText(s.join(""),c)};var r=a(2);const n=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],i=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return 0!=(1&e)}function isEven(e){return 0==(1&e)}function findUnequal(e,t,a){let r,n;for(r=t,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.getFontSubstitution=function getFontSubstitution(e,t,a,u,d){const f=u=(0,r.normalizeFontName)(u);let g=e.get(f);if(g)return g;let p=l.get(u);if(!p)for(const[e,t]of h)if(u.startsWith(e)){u=`${t}${u.substring(e.length)}`;p=l.get(u);break}let m=!1;if(!p){p=l.get(d);m=!0}const b=`${t.getDocId()}_s${t.createFontId()}`;if(!p){if(!(0,n.validateFontName)(u)){e.set(f,null);return null}const t=/bold/gi.test(u),a=/oblique|italic/gi.test(u);g={css:b,guessFallback:!0,loadedName:b,baseFontName:u,src:`local(${u})`,style:t&&a&&c||t&&s||a&&o||i};e.set(f,g);return g}const y=[];m&&(0,n.validateFontName)(u)&&y.push(`local(${u})`);const{style:w,ultimate:S}=generateFont(p,y,a),x=null===S;g={css:`${b}${x?"":`,${S}`}`,guessFallback:x,loadedName:b,baseFontName:u,src:y.join(","),style:w};e.set(f,g);return g};var r=a(38),n=a(3);const i={style:"normal",weight:"normal"},s={style:"normal",weight:"bold"},o={style:"italic",weight:"normal"},c={style:"italic",weight:"bold"},l=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:i,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:s,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:o,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:c,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:i,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:s,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:o,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:c,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono"],style:i,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:s,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:o,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:c,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:i,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:s,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:o,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:c,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:i,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:s,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:o,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:c,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:i}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),h=new Map([["Arial-Black","ArialBlack"]]);function generateFont({alias:e,local:t,path:a,fallback:r,style:n,ultimate:i},h,u,d=!0,f=!0,g=""){const p={style:null,ultimate:null};if(t){const e=g?` ${g}`:"";for(const a of t)h.push(`local(${a}${e})`)}if(e){const t=l.get(e),i=g||function getStyleToAppend(e){switch(e){case s:return"Bold";case o:return"Italic";case c:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(n);Object.assign(p,generateFont(t,h,u,d&&!r,f&&!a,i))}n&&(p.style=n);i&&(p.ultimate=i);if(d&&r){const e=l.get(r),{ultimate:t}=generateFont(e,h,u,d,f&&!a,g);p.ultimate||=t}f&&a&&u&&h.push(`url(${u}${a})`);return p}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ImageResizer=void 0;var r=a(2);class ImageResizer{constructor(e,t){this._imgData=e;this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:a}=this;if(e>a||t>a)return!0;const r=e*t;if(this._hasMaxArea)return r>this.MAX_AREA;if(r(this.MAX_AREA=this._goodSquareLength**2)}static get MAX_DIM(){return(0,r.shadow)(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return(0,r.shadow)(this,"MAX_AREA",this._guessMax(ImageResizer._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;(0,r.shadow)(this,"MAX_AREA",e)}}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const a=new OffscreenCanvas(e,t),r=a.getContext("2d");r.fillRect(0,0,1,1);const n=r.getImageData(0,0,1,1).data[3];a.width=a.height=1;return 0!==n}catch{return!1}}static _guessMax(e,t,a,r){for(;e+a+1>3,r=a+3&-4;if(a!==r){const e=new Uint8Array(r*t);let n=0;for(let s=0,o=t*a;s{Object.defineProperty(t,"__esModule",{value:!0});t.MurmurHash3_64=void 0;var r=a(2);const n=3285377520,i=4294901760,s=65535;t.MurmurHash3_64=class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:n;this.h2=e?4294967295&e:n}update(e){let t,a;if("string"==typeof e){t=new Uint8Array(2*e.length);a=0;for(let r=0,n=e.length;r>>8;t[a++]=255&n}}}else{if(!(0,r.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice();a=t.byteLength}const n=a>>2,o=a-4*n,c=new Uint32Array(t.buffer,0,n);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17;l=l*g&i|l*m&s;u^=l;u=u<<13|u>>>19;u=5*u+3864292196}else{h=c[e];h=h*f&i|h*p&s;h=h<<15|h>>>17;h=h*g&i|h*m&s;d^=h;d=d<<13|d>>>19;d=5*d+3864292196}l=0;switch(o){case 3:l^=t[4*n+2]<<16;case 2:l^=t[4*n+1]<<8;case 1:l^=t[4*n];l=l*f&i|l*p&s;l=l<<15|l>>>17;l=l*g&i|l*m&s;1&n?u^=l:d^=l}this.h1=u;this.h2=d}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&i|36045*e&s;t=4283543511*t&i|(2950163797*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;e=444984403*e&i|60499*e&s;t=3301882366*t&i|(3120437893*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OperatorList=void 0;var r=a(2);function addState(e,t,a,r,n){let i=e;for(let e=0,a=t.length-1;e1e3){h=Math.max(h,f);g+=d+2;f=0;d=0}u.push({transform:t,x:f,y:g,w:a.width,h:a.height});f+=a.width+2;d=Math.max(d,a.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8Array(p*m*4),y=p<<2;for(let e=0;e=0;){t[i-4]=t[i];t[i-3]=t[i+1];t[i-2]=t[i+2];t[i-1]=t[i+3];t[i+a]=t[i+a-4];t[i+a+1]=t[i+a-3];t[i+a+2]=t[i+a-2];t[i+a+3]=t[i+a-1];i-=y}}const w={width:p,height:m};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(p,m);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(b.buffer),p,m),0,0);w.bitmap=e.transferToImageBitmap();w.data=null}else{w.kind=r.ImageKind.RGBA_32BPP;w.data=b}a.splice(s,4*l,r.OPS.paintInlineImageXObjectGroup);n.splice(s,4*l,[w,u]);return s+1}));addState(n,[r.OPS.save,r.OPS.transform,r.OPS.paintImageMaskXObject,r.OPS.restore],null,(function iterateImageMaskGroup(e,t){const a=e.fnArray,n=(t-(e.iCurr-3))%4;switch(n){case 0:return a[t]===r.OPS.save;case 1:return a[t]===r.OPS.transform;case 2:return a[t]===r.OPS.paintImageMaskXObject;case 3:return a[t]===r.OPS.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${n}`)}),(function foundImageMaskGroup(e,t){const a=e.fnArray,n=e.argsArray,i=e.iCurr,s=i-3,o=i-2,c=i-1;let l=Math.floor((t-s)/4);if(l<10)return t-(t-s)%4;let h,u,d=!1;const f=n[c][0],g=n[o][0],p=n[o][1],m=n[o][2],b=n[o][3];if(p===m){d=!0;h=o+4;let e=c+4;for(let t=1;t=4&&a[i-4]===a[s]&&a[i-3]===a[o]&&a[i-2]===a[c]&&a[i-1]===a[l]&&r[i-4][0]===h&&r[i-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e=a)break}r=(r||n)[e[t]];if(r&&!Array.isArray(r)){s.iCurr=t;t++;if(!r.checkFn||(0,r.checkFn)(s)){i=r;r=null}else r=null}else t++}this.state=r;this.match=i;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&r.RenderingIntentFlag.OPLIST?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===r.OPS.restore||e===r.OPS.endText))&&this.flush()}addImageOps(e,t,a){void 0!==a&&this.addOp(r.OPS.beginMarkedContentProps,["OC",a]);this.addOp(e,t);void 0!==a&&this.addOp(r.OPS.endMarkedContent,[])}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(r.OPS.dependency,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.PDFImage=void 0;var r=a(2),n=a(28),i=a(5),s=a(12),o=a(18),c=a(62),l=a(26),h=a(30),u=a(4);function decodeAndClamp(e,t,a,r){(e=t+e*a)<0?e=0:e>r&&(e=r);return e}function resizeImageMask(e,t,a,r,n,i){const s=n*i;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=a/n,l=r/i;let h,u,d,f,g=0;const p=new Uint16Array(n),m=a;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==b||a.height!==y)){(0,r.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");b=a.width;y=a.height}if(b<1||y<1)throw new r.FormatError(`Invalid image width: ${b} or height: ${y}`);this.width=b;this.height=y;this.interpolate=g.get("I","Interpolate");this.imageMask=g.get("IM","ImageMask")||!1;this.matte=g.get("Matte")||!1;let w=a.bitsPerComponent;if(!w){w=g.get("BPC","BitsPerComponent");if(!w){if(!this.imageMask)throw new r.FormatError(`Bits per component missing in image: ${this.imageMask}`);w=1}}this.bpc=w;if(!this.imageMask){let i=g.getRaw("CS")||g.getRaw("ColorSpace");if(!i){(0,r.info)("JPX images (which do not require color spaces)");switch(a.numComps){case 1:i=u.Name.get("DeviceGray");break;case 3:i=u.Name.get("DeviceRGB");break;case 4:i=u.Name.get("DeviceCMYK");break;default:throw new Error(`JPX images with ${a.numComps} color components not supported.`)}}this.colorSpace=s.ColorSpace.parse({cs:i,xref:e,resources:n?t:null,pdfFunctionFactory:d,localColorSpaceCache:f});this.numComps=this.colorSpace.numComps}this.decode=g.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,w)||l&&!s.ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*a,o=e.byteLength;let c,l;if(!r||n&&!(s===o))if(n){c=new Uint8Array(s);c.set(e);c.fill(255,o)}else c=new Uint8Array(e);else c=e;if(n)for(l=0;l>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let a=0;u=0;for(d=0,h=i;d>r;n<0?n=0:n>l&&(n=l);s[d]=n;u&=(1<o[r+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,f=3,d=t*n;u>3,f=t&&c.ImageResizer.needsToBeResized(a,n);if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===u?e=r.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==u||this.needsDecode||(e=r.ImageKind.RGB_24BPP);if(e&&!this.smask&&!this.mask&&a===o&&n===h){const s=this.getImageBytes(h*d,{});if(t)return f?c.ImageResizer.createImage({data:s,kind:e,width:a,height:n,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,o,h,s);i.kind=e;i.data=s;if(this.needsDecode){(0,r.assert)(e===r.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,a=t.length;e>3,o=this.getImageBytes(n*s,{internal:!0}),c=this.getComponents(o);let l,h;if(1===i){h=a*n;if(this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0});t.Catalog=void 0;var r=a(3),n=a(2),i=a(4),s=a(67),o=a(5),c=a(68),l=a(12),h=a(69),u=a(59),d=a(70),f=a(72);function fetchDestination(e){e instanceof i.Dict&&(e=e.get("D"));return Array.isArray(e)?e:null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof i.Dict))throw new n.FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new i.RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new u.GlobalImageCache;this.pageKidsCountCache=new i.RefSetCache;this.pageIndexCache=new i.RefSetCache;this.nonBlendModesSet=new i.RefSet;this.systemFontCache=new Map}cloneDict(){return this._catDict.clone()}get version(){const e=this._catDict.get("Version");if(e instanceof i.Name){if(r.PDF_VERSION_REGEXP.test(e.name))return(0,n.shadow)(this,"version",e.name);(0,n.warn)(`Invalid PDF catalog version: ${e.name}`)}return(0,n.shadow)(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return(0,n.shadow)(this,"lang","string"==typeof e?(0,n.stringToPDFString)(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return(0,n.shadow)(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,n.shadow)(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,n.shadow)(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return(0,n.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,n.shadow)(this,"metadata",null);let t=null;try{const a=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(a instanceof o.BaseStream&&a.dict instanceof i.Dict){const e=a.dict.get("Type"),r=a.dict.get("Subtype");if((0,i.isName)(e,"Metadata")&&(0,i.isName)(r,"XML")){const e=(0,n.stringToUTF8String)(a.getString());e&&(t=new d.MetadataParser(e).serializable)}}}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)(`Skipping invalid Metadata: "${e}".`)}return(0,n.shadow)(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read mark info.")}return(0,n.shadow)(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const a in t){const r=e.get(a);"boolean"==typeof r&&(t[a]=r)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable read to structTreeRoot info.")}return(0,n.shadow)(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof i.Dict))return null;const a=new f.StructTreeRoot(t,e);a.init();return a}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof i.Dict))throw new n.FormatError("Invalid top-level pages dictionary.");return(0,n.shadow)(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read document outline.")}return(0,n.shadow)(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof i.Dict))return null;e=e.getRaw("First");if(!(e instanceof i.Ref))return null;const t={items:[]},a=[{obj:e,parent:t}],r=new i.RefSet;r.put(e);const s=this.xref,o=new Uint8ClampedArray(3);for(;a.length>0;){const t=a.shift(),c=s.fetchIfRef(t.obj);if(null===c)continue;if(!c.has("Title"))throw new n.FormatError("Invalid outline item encountered.");const h={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:c,resultObj:h,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const u=c.get("Title"),d=c.get("F")||0,f=c.getArray("C"),g=c.get("Count");let p=o;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(p=l.ColorSpace.singletons.rgb.getRgb(f,0));const m={action:h.action,attachment:h.attachment,dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,setOCGState:h.setOCGState,title:(0,n.stringToPDFString)(u),color:p,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(m);e=c.getRaw("First");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:m});r.put(e)}e=c.getRaw("Next");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:t.parent});r.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read permissions.")}return(0,n.shadow)(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const a=[];for(const e in n.PermissionFlag){const r=n.PermissionFlag[e];t&r&&a.push(r)}return a}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,n.shadow)(this,"optionalContentConfig",null);const a=t.get("D");if(!a)return(0,n.shadow)(this,"optionalContentConfig",null);const r=t.get("OCGs");if(!Array.isArray(r))return(0,n.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of r){if(!(e instanceof i.Ref))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:"string"==typeof t.get("Name")?(0,n.stringToPDFString)(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?(0,n.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(a,o);e.groups=s}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)(`Unable to read optional content config: ${e}`)}return(0,n.shadow)(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function parseOnOff(e){const a=[];if(Array.isArray(e))for(const r of e)r instanceof i.Ref&&t.includes(r)&&a.push(r.toString());return a}function parseOrder(e,a=0){if(!Array.isArray(e))return null;const n=[];for(const s of e){if(s instanceof i.Ref&&t.includes(s)){r.put(s);n.push(s.toString());continue}const e=parseNestedOrder(s,a);e&&n.push(e)}if(a>0)return n;const s=[];for(const e of t)r.has(e)||s.push(e.toString());s.length&&n.push({name:null,order:s});return n}function parseNestedOrder(e,t){if(++t>s){(0,n.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const r=a.fetchIfRef(e);if(!Array.isArray(r))return null;const i=a.fetchIfRef(r[0]);if("string"!=typeof i)return null;const o=parseOrder(r.slice(1),t);return o&&o.length?{name:(0,n.stringToPDFString)(i),order:o}:null}const a=this.xref,r=new i.RefSet,s=10;return{name:"string"==typeof e.get("Name")?(0,n.stringToPDFString)(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?(0,n.stringToPDFString)(e.get("Creator")):null,baseState:e.get("BaseState")instanceof i.Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new n.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,n.shadow)(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[a,r]of e.getAll()){const e=fetchDestination(r);e&&(t[(0,n.stringToPDFString)(a)]=e)}else e instanceof i.Dict&&e.forEach((function(e,a){const r=fetchDestination(a);r&&(t[e]=r)}));return(0,n.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const a=fetchDestination(t.get(e));if(a)return a;const r=this.destinations[e];if(r){(0,n.warn)(`Found "${e}" at an incorrect position in the NameTree.`);return r}}else if(t instanceof i.Dict){const a=fetchDestination(t.get(e));if(a)return a}return null}_readDests(){const e=this._catDict.get("Names");return e?.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read page labels.")}return(0,n.shadow)(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let a=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new n.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(a){case"D":l=h;break;case"R":case"r":l=(0,r.toRomanNumerals)(h,"r"===a);break;case"A":case"a":const e=26,t="a"===a?97:65,i=h-1;l=String.fromCharCode(t+i%e).repeat(Math.floor(i/e)+1);break;default:if(a)throw new n.FormatError(`Invalid style "${a}" in PageLabel dictionary.`);l=""}t[e]=o+l;h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof i.Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,n.shadow)(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof i.Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,n.shadow)(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof i.Dict))return(0,n.shadow)(this,"viewerPreferences",null);let t=null;for(const a of e.getKeys()){const r=e.get(a);let s;switch(a){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof r&&(s=r);break;case"NonFullScreenPageMode":if(r instanceof i.Name)switch(r.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=r.name;break;default:s="UseNone"}break;case"Direction":if(r instanceof i.Name)switch(r.name){case"L2R":case"R2L":s=r.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(r instanceof i.Name)switch(r.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=r.name;break;default:s="CropBox"}break;case"PrintScaling":if(r instanceof i.Name)switch(r.name){case"None":case"AppDefault":s=r.name;break;default:s="AppDefault"}break;case"Duplex":if(r instanceof i.Name)switch(r.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=r.name;break;default:s="None"}break;case"PrintPageRange":if(Array.isArray(r)&&r.length%2==0){r.every(((e,t,a)=>Number.isInteger(e)&&e>0&&(0===t||e>=a[t-1])&&e<=this.numPages))&&(s=r)}break;case"NumCopies":Number.isInteger(r)&&r>0&&(s=r);break;default:(0,n.warn)(`Ignoring non-standard key in ViewerPreferences: ${a}.`);continue}if(void 0!==s){t||(t=Object.create(null));t[a]=s}else(0,n.warn)(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`)}return(0,n.shadow)(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof i.Dict){const a=new i.Dict(this.xref);a.set("A",e);const r={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:a,resultObj:r});Array.isArray(r.dest)?t.dest=r.dest:r.action&&(t.action=r.action)}else Array.isArray(e)&&(t.dest=e);return(0,n.shadow)(this,"openAction",(0,n.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){const a=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,r]of a.getAll()){const a=new h.FileSpec(r,this.xref);t||(t=Object.create(null));t[(0,n.stringToPDFString)(e)]=a.serializable}}return(0,n.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("XFAImages")){const a=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,r]of a.getAll()){t||(t=new i.Dict(this.xref));t.set((0,n.stringToPDFString)(e),r)}}return(0,n.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,a){if(!(a instanceof i.Dict))return;if(!(0,i.isName)(a.get("S"),"JavaScript"))return;let r=a.get("JS");if(r instanceof o.BaseStream)r=r.getString();else if("string"!=typeof r)return;r=(0,n.stringToPDFString)(r).replaceAll("\0","");r&&(t||=new Map).set(e,r)}if(e instanceof i.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,a]of t.getAll())appendIfJavaScriptDict((0,n.stringToPDFString)(e),a)}const a=this._catDict.get("OpenAction");a&&appendIfJavaScriptDict("OpenAction",a);return t}get jsActions(){const e=this._collectJavaScript();let t=(0,r.collectActions)(this.xref,this._catDict,n.DocumentActionEventType);if(e){t||=Object.create(null);for(const[a,r]of e)a in t?t[a].push(r):t[a]=[r]}return(0,n.shadow)(this,"jsActions",t)}async fontFallback(e,t){const a=await Promise.all(this.fontCache);for(const r of a)if(r.loadedName===e){r.fallback(t);return}}async cleanup(e=!1){(0,c.clearGlobalCaches)();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],a=new i.RefSet,r=this._catDict.getRaw("Pages");r instanceof i.Ref&&a.put(r);const s=this.xref,o=this.pageKidsCountCache,c=this.pageIndexCache;let l=0;for(;t.length;){const r=t.pop();if(r instanceof i.Ref){const h=o.get(r);if(h>=0&&l+h<=e){l+=h;continue}if(a.has(r))throw new n.FormatError("Pages tree contains circular reference.");a.put(r);const u=await s.fetchAsync(r);if(u instanceof i.Dict){let t=u.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!u.has("Kids")){o.has(r)||o.put(r,1);c.has(r)||c.put(r,l);if(l===e)return[u,r];l++;continue}}t.push(u);continue}if(!(r instanceof i.Dict))throw new n.FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:h}=r;let u=r.getRaw("Count");u instanceof i.Ref&&(u=await s.fetchAsync(u));if(Number.isInteger(u)&&u>=0){h&&!o.has(h)&&o.put(h,u);if(l+u<=e){l+=u;continue}}let d=r.getRaw("Kids");d instanceof i.Ref&&(d=await s.fetchAsync(d));if(!Array.isArray(d)){let t=r.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!r.has("Kids")){if(l===e)return[r,null];l++;continue}throw new n.FormatError("Page dictionary kids object is not an array.")}for(let e=d.length-1;e>=0;e--)t.push(d[e])}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,a=[{currentNode:this.toplevelPagesDict,posInKids:0}],s=new i.RefSet,o=this._catDict.getRaw("Pages");o instanceof i.Ref&&s.put(o);const c=new Map,l=this.xref,h=this.pageIndexCache;let u=0;function addPageDict(e,t){t&&!h.has(t)&&h.put(t,u);c.set(u++,[e,t])}function addPageError(a){if(a instanceof r.XRefEntryException&&!e)throw a;if(e&&t&&0===u){(0,n.warn)(`getAllPageDicts - Skipping invalid first page: "${a}".`);a=i.Dict.empty}c.set(u++,[a,null])}for(;a.length>0;){const e=a.at(-1),{currentNode:t,posInKids:r}=e;let o=t.getRaw("Kids");if(o instanceof i.Ref)try{o=await l.fetchAsync(o)}catch(e){addPageError(e);break}if(!Array.isArray(o)){addPageError(new n.FormatError("Page dictionary kids object is not an array."));break}if(r>=o.length){a.pop();continue}const c=o[r];let h;if(c instanceof i.Ref){if(s.has(c)){addPageError(new n.FormatError("Pages tree contains circular reference."));break}s.put(c);try{h=await l.fetchAsync(c)}catch(e){addPageError(e);break}}else h=c;if(!(h instanceof i.Dict)){addPageError(new n.FormatError("Page dictionary kid reference points to wrong type of object."));break}let u=h.getRaw("Type");if(u instanceof i.Ref)try{u=await l.fetchAsync(u)}catch(e){addPageError(e);break}(0,i.isName)(u,"Page")||!h.has("Kids")?addPageDict(h,c instanceof i.Ref?c:null):a.push({currentNode:h,posInKids:0});e.posInKids++}return c}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const a=this.xref;let r=0;const next=t=>function pagesBeforeRef(t){let r,s=0;return a.fetchAsync(t).then((function(a){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(a,"Page")&&!(a instanceof i.Dict&&!a.has("Type")&&a.has("Contents")))throw new n.FormatError("The reference does not point to a /Page dictionary.");if(!a)return null;if(!(a instanceof i.Dict))throw new n.FormatError("Node must be a dictionary.");r=a.getRaw("Parent");return a.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof i.Dict))throw new n.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const o=[];let c=!1;for(const r of e){if(!(r instanceof i.Ref))throw new n.FormatError("Kid must be a reference.");if((0,i.isRefsEqual)(r,t)){c=!0;break}o.push(a.fetchAsync(r).then((function(e){if(!(e instanceof i.Dict))throw new n.FormatError("Kid node must be a dictionary.");e.has("Count")?s+=e.get("Count"):s++})))}if(!c)throw new n.FormatError("Kid reference not found in parent's kids.");return Promise.all(o).then((function(){return[s,r]}))}))}(t).then((t=>{if(!t){this.pageIndexCache.put(e,r);return r}const[a,n]=t;r+=a;return next(n)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof i.Dict){const t=e.get("Base");if("string"==typeof t){const e=(0,n.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(e)return(0,n.shadow)(this,"baseUrl",e.href)}}return(0,n.shadow)(this,"baseUrl",this.pdfManager.docBaseUrl)}static parseDestDictionary({destDict:e,resultObj:t,docBaseUrl:a=null,docAttachments:s=null}){if(!(e instanceof i.Dict)){(0,n.warn)("parseDestDictionary: `destDict` must be a dictionary.");return}let c,l,h=e.get("A");if(!(h instanceof i.Dict))if(e.has("Dest"))h=e.get("Dest");else{h=e.get("AA");h instanceof i.Dict&&(h.has("D")?h=h.get("D"):h.has("U")&&(h=h.get("U")))}if(h instanceof i.Dict){const e=h.get("S");if(!(e instanceof i.Name)){(0,n.warn)("parseDestDictionary: Invalid type in Action dictionary.");return}const a=e.name;switch(a){case"ResetForm":const e=h.get("Flags"),u=0==(1&("number"==typeof e?e:0)),d=[],f=[];for(const e of h.get("Fields")||[])e instanceof i.Ref?f.push(e.toString()):"string"==typeof e&&d.push((0,n.stringToPDFString)(e));t.resetForm={fields:d,refs:f,include:u};break;case"URI":c=h.get("URI");c instanceof i.Name&&(c="/"+c.name);break;case"GoTo":l=h.get("D");break;case"Launch":case"GoToR":const g=h.get("F");g instanceof i.Dict?c=g.get("F")||null:"string"==typeof g&&(c=g);let p=h.get("D");if(p){p instanceof i.Name&&(p=p.name);if("string"==typeof c){const e=c.split("#")[0];"string"==typeof p?c=e+"#"+p:Array.isArray(p)&&(c=e+"#"+JSON.stringify(p))}}const m=h.get("NewWindow");"boolean"==typeof m&&(t.newWindow=m);break;case"GoToE":const b=h.get("T");let y;if(s&&b instanceof i.Dict){const e=b.get("R"),t=b.get("N");(0,i.isName)(e,"C")&&"string"==typeof t&&(y=s[(0,n.stringToPDFString)(t)])}y?t.attachment=y:(0,n.warn)('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const w=h.get("N");w instanceof i.Name&&(t.action=w.name);break;case"SetOCGState":const S=h.get("State"),x=h.get("PreserveRB");if(!Array.isArray(S)||0===S.length)break;const C=[];for(const e of S)if(e instanceof i.Name)switch(e.name){case"ON":case"OFF":case"Toggle":C.push(e.name)}else e instanceof i.Ref&&C.push(e.toString());if(C.length!==S.length)break;t.setOCGState={state:C,preserveRB:"boolean"!=typeof x||x};break;case"JavaScript":const k=h.get("JS");let v;k instanceof o.BaseStream?v=k.getString():"string"==typeof k&&(v=k);const F=v&&(0,r.recoverJsURL)((0,n.stringToPDFString)(v));if(F){c=F.url;t.newWindow=F.newWindow;break}default:if("JavaScript"===a||"SubmitForm"===a)break;(0,n.warn)(`parseDestDictionary - unsupported action: "${a}".`)}}else e.has("Dest")&&(l=e.get("Dest"));if("string"==typeof c){const e=(0,n.createValidAbsoluteUrl)(c,a,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=c}if(l){l instanceof i.Name&&(l=l.name);"string"==typeof l?t.dest=(0,n.stringToPDFString)(l):Array.isArray(l)&&(t.dest=l)}}}t.Catalog=Catalog},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NumberTree=t.NameTree=void 0;var r=a(4),n=a(2);class NameOrNumberTree{constructor(e,t,a){this.constructor===NameOrNumberTree&&(0,n.unreachable)("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=a}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,a=new r.RefSet;a.put(this.root);const i=[this.root];for(;i.length>0;){const s=t.fetchIfRef(i.shift());if(!(s instanceof r.Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(a.has(t))throw new n.FormatError(`Duplicate entry in "${this._type}" tree.`);i.push(t);a.put(t)}continue}const o=s.get(this._type);if(Array.isArray(o))for(let a=0,r=o.length;a10){(0,n.warn)(`Search depth limit reached for "${this._type}" tree.`);return null}const i=a.get("Kids");if(!Array.isArray(i))return null;let s=0,o=i.length-1;for(;s<=o;){const r=s+o>>1,n=t.fetchIfRef(i[r]),c=n.get("Limits");if(et.fetchIfRef(c[1]))){a=n;break}s=r+1}}if(s>o)return null}const i=a.get(this._type);if(Array.isArray(i)){let a=0,r=i.length-2;for(;a<=r;){const n=a+r>>1,s=n+(1&n),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);a=s+2}}}return null}}t.NameTree=class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}};t.NumberTree=class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearGlobalCaches=function clearGlobalCaches(){(0,r.clearPatternCaches)();(0,n.clearPrimitiveCaches)();(0,i.clearUnicodeCaches)()};var r=a(50),n=a(4),i=a(40)},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FileSpec=void 0;var r=a(2),n=a(5),i=a(4);function pickPlatformItem(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class FileSpec{constructor(e,t){if(e instanceof i.Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));this.description=e.has("Desc")?(0,r.stringToPDFString)(e.get("Desc")):"";e.has("RF")&&(0,r.warn)("Related file specifications are not supported");this.contentAvailable=!0;if(!e.has("EF")){this.contentAvailable=!1;(0,r.warn)("Non-embedded file specifications are not supported")}}}get filename(){if(!this._filename&&this.root){const e=pickPlatformItem(this.root)||"unnamed";this._filename=(0,r.stringToPDFString)(e).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof n.BaseStream?e=t.getBytes():(0,r.warn)("Embedded file specification points to non-existing/invalid content")}else(0,r.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MetadataParser=void 0;var r=a(71);t.MetadataParser=class MetadataParser{constructor(e){e=this._repair(e);const t=new r.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map;this._data=e;t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\376\\377([^<]+)/g,(function(e,t){const a=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,(function(e,t,a,r){return String.fromCharCode(64*t+8*a+1*r)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),r=[">"];for(let e=0,t=a.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?r.push(String.fromCharCode(t)):r.push("&#x"+(65536+t).toString(16).substring(1)+";")}return r.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,a=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,a.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0;var r=a(3);const n={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};t.XMLParserErrorCode=n;function isWhitespace(e,t){const a=e[t];return" "===a||"\n"===a||"\r"===a||"\t"===a}class XMLParserBase{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const a=[];let r=t;function skipWs(){for(;r"!==e[r]&&"/"!==e[r];)++r;const n=e.substring(t,r);skipWs();for(;r"!==e[r]&&"/"!==e[r]&&"?"!==e[r];){skipWs();let t="",n="";for(;r"!==e[a]&&"?"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);!function skipWs(){for(;a"!==e[a+1]);)++a;return{name:r,value:e.substring(n,a),parsed:a-t}}parseXml(e){let t=0;for(;t",a);if(t<0){this.onError(n.UnterminatedElement);return}this.onEndElement(e.substring(a,t));a=t+1;break;case"?":++a;const r=this._parseProcessingInstruction(e,a);if("?>"!==e.substring(a+r.parsed,a+r.parsed+2)){this.onError(n.UnterminatedXmlDeclaration);return}this.onPi(r.name,r.value);a+=r.parsed+2;break;case"!":if("--"===e.substring(a+1,a+3)){t=e.indexOf("--\x3e",a+3);if(t<0){this.onError(n.UnterminatedComment);return}this.onComment(e.substring(a+3,t));a=t+3}else if("[CDATA["===e.substring(a+1,a+8)){t=e.indexOf("]]>",a+8);if(t<0){this.onError(n.UnterminatedCdat);return}this.onCdata(e.substring(a+8,t));a=t+3}else{if("DOCTYPE"!==e.substring(a+1,a+8)){this.onError(n.MalformedElement);return}{const r=e.indexOf("[",a+8);let i=!1;t=e.indexOf(">",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}if(r>0&&t>r){t=e.indexOf("]>",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}i=!0}const s=e.substring(a+8,t+(i?1:0));this.onDoctype(s);a=t+(i?2:1)}}break;default:const i=this._parseContent(e,a);if(null===i){this.onError(n.MalformedElement);return}let s=!1;if("/>"===e.substring(a+i.parsed,a+i.parsed+2))s=!0;else if(">"!==e.substring(a+i.parsed,a+i.parsed+1)){this.onError(n.UnterminatedElement);return}this.onBeginElement(i.name,i.attributes,s);a+=i.parsed+(s?2:1)}}else{for(;a0}searchNode(e,t){if(t>=e.length)return this;const a=e[t];if(a.name.startsWith("#")&&t0){r.push([n,0]);n=n.childNodes[0]}else{if(0===r.length)return null;for(;0!==r.length;){const[e,t]=r.pop(),a=t+1;if(a");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${(0,r.encodeToXmlString)(this.nodeValue)}`):e.push("/>")}else e.push((0,r.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=SimpleDOMNode;t.SimpleXMLParser=class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=n.NoError;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=n.NoError;this.parseXml(e);if(this._errorCode!==n.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.StructTreeRoot=t.StructTreePage=void 0;var r=a(2),n=a(4),i=a(67),s=a(73);const o=1,c=2,l=3,h=4,u=5;class StructTreeRoot{constructor(e,t){this.dict=e;this.ref=t instanceof n.Ref?t:null;this.roleMap=new Map;this.structParentIds=null}init(){this.readRoleMap()}#C(e,t,a){if(!(e instanceof n.Ref)||t<0)return;this.structParentIds||=new n.RefSetCache;let r=this.structParentIds.get(e);if(!r){r=[];this.structParentIds.put(e,r)}r.push([t,a])}addAnnotationIdToPage(e,t){this.#C(e,t,h)}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof n.Dict&&e.forEach(((e,t)=>{t instanceof n.Name&&this.roleMap.set(e,t.name)}))}static async canCreateStructureTree({catalogRef:e,pdfManager:t,newAnnotationsByPage:a}){if(!(e instanceof n.Ref)){(0,r.warn)("Cannot save the struct tree: no catalog reference.");return!1}let i=0,s=!0;for(const[e,o]of a){const{ref:a}=await t.getPage(e);if(!(a instanceof n.Ref)){(0,r.warn)(`Cannot save the struct tree: page ${e} has no ref.`);s=!0;break}for(const e of o)if(e.accessibilityData?.type){e.parentTreeId=i++;s=!1}}if(s){for(const e of a.values())for(const t of e)delete t.parentTreeId;return!1}return!0}static async createStructureTree({newAnnotationsByPage:e,xref:t,catalogRef:a,pdfManager:r,newRefs:i}){const o=r.catalog.cloneDict(),c=t.getNewTemporaryRef();o.set("StructTreeRoot",c);const l=[];await(0,s.writeObject)(a,o,l,t);i.push({ref:a,data:l.join("")});const h=new n.Dict(t);h.set("Type",n.Name.get("StructTreeRoot"));const u=t.getNewTemporaryRef();h.set("ParentTree",u);const d=[];h.set("K",d);const f=new n.Dict(t),g=[];f.set("Nums",g);const p=await this.#k({newAnnotationsByPage:e,structTreeRootRef:c,kids:d,nums:g,xref:t,pdfManager:r,newRefs:i,buffer:l});h.set("ParentTreeNextKey",p);l.length=0;await(0,s.writeObject)(u,f,l,t);i.push({ref:u,data:l.join("")});l.length=0;await(0,s.writeObject)(c,h,l,t);i.push({ref:c,data:l.join("")})}async canUpdateStructTree({pdfManager:e,newAnnotationsByPage:t}){if(!this.ref){(0,r.warn)("Cannot update the struct tree: no root reference.");return!1}let a=this.dict.get("ParentTreeNextKey");if(!Number.isInteger(a)||a<0){(0,r.warn)("Cannot update the struct tree: invalid next key.");return!1}const i=this.dict.get("ParentTree");if(!(i instanceof n.Dict)){(0,r.warn)("Cannot update the struct tree: ParentTree isn't a dict.");return!1}const s=i.get("Nums");if(!Array.isArray(s)){(0,r.warn)("Cannot update the struct tree: nums isn't an array.");return!1}const{numPages:o}=e.catalog;for(const a of t.keys()){const{pageDict:t,ref:i}=await e.getPage(a);if(!(i instanceof n.Ref)){(0,r.warn)(`Cannot save the struct tree: page ${a} has no ref.`);return!1}const s=t.get("StructParents");if(!Number.isInteger(s)||s<0||s>=o){(0,r.warn)(`Cannot save the struct tree: page ${a} has no id.`);return!1}}let c=!0;for(const[r,n]of t){const{pageDict:t}=await e.getPage(r);StructTreeRoot.#v({elements:n,xref:this.dict.xref,pageDict:t,parentTree:i});for(const e of n)if(e.accessibilityData?.type){e.parentTreeId=a++;c=!1}}if(c){for(const e of t.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,newRefs:a}){const r=this.dict.xref,i=this.dict.clone(),o=this.ref;let c,l=i.getRaw("ParentTree");if(l instanceof n.Ref)c=r.fetch(l);else{c=l;l=r.getNewTemporaryRef();i.set("ParentTree",l)}c=c.clone();let h=c.getRaw("Nums"),u=null;if(h instanceof n.Ref){u=h;h=r.fetch(u)}h=h.slice();u||c.set("Nums",h);let d=i.getRaw("K"),f=null;if(d instanceof n.Ref){f=d;d=r.fetch(f)}else{f=r.getNewTemporaryRef();i.set("K",f)}d=Array.isArray(d)?d.slice():[d];const g=[],p=await StructTreeRoot.#k({newAnnotationsByPage:e,structTreeRootRef:o,kids:d,nums:h,xref:r,pdfManager:t,newRefs:a,buffer:g});i.set("ParentTreeNextKey",p);g.length=0;await(0,s.writeObject)(f,d,g,r);a.push({ref:f,data:g.join("")});if(u){g.length=0;await(0,s.writeObject)(u,h,g,r);a.push({ref:u,data:g.join("")})}g.length=0;await(0,s.writeObject)(l,c,g,r);a.push({ref:l,data:g.join("")});g.length=0;await(0,s.writeObject)(o,i,g,r);a.push({ref:o,data:g.join("")})}static async#k({newAnnotationsByPage:e,structTreeRootRef:t,kids:a,nums:r,xref:i,pdfManager:o,newRefs:c,buffer:l}){const h=n.Name.get("OBJR");let u=-1/0;for(const[d,f]of e){const{ref:e}=await o.getPage(d);for(const{accessibilityData:{type:o,title:d,lang:g,alt:p,expanded:m,actualText:b},ref:y,parentTreeId:w,structTreeParent:S}of f){u=Math.max(u,w);const f=i.getNewTemporaryRef(),x=new n.Dict(i);x.set("S",n.Name.get(o));d&&x.set("T",d);g&&x.set("Lang",g);p&&x.set("Alt",p);m&&x.set("E",m);b&&x.set("ActualText",b);S?await this.#F({structTreeParent:S,tagDict:x,newTagRef:f,fallbackRef:t,xref:i,newRefs:c,buffer:l}):x.set("P",t);const C=new n.Dict(i);x.set("K",C);C.set("Type",h);C.set("Pg",e);C.set("Obj",y);l.length=0;await(0,s.writeObject)(f,x,l,i);c.push({ref:f,data:l.join("")});r.push(w,f);a.push(f)}}return u+1}static#v({elements:e,xref:t,pageDict:a,parentTree:r}){const s=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);s.set(e,t)}const o=a.get("StructParents"),c=new i.NumberTree(r,t).get(o);if(!Array.isArray(c))return;const updateElement=(e,a,r)=>{const i=s.get(e);if(i){const e=a.getRaw("P"),s=t.fetchIfRef(e);e instanceof n.Ref&&s instanceof n.Dict&&(i.structTreeParent={ref:r,dict:a});return!0}return!1};for(const e of c){if(!(e instanceof n.Ref))continue;const a=t.fetch(e),r=a.get("K");if(Number.isInteger(r))updateElement(r,a,e);else if(Array.isArray(r))for(let n of r){n=t.fetchIfRef(n);if(Number.isInteger(n)&&updateElement(n,a,e))break}}}static async#F({structTreeParent:{ref:e,dict:t},tagDict:a,newTagRef:i,fallbackRef:o,xref:c,newRefs:l,buffer:h}){const u=t.getRaw("P");let d=c.fetchIfRef(u);a.set("P",u);let f,g=!1,p=d.getRaw("K");if(p instanceof n.Ref)f=c.fetch(p);else{f=p;p=c.getNewTemporaryRef();d=d.clone();d.set("K",p);g=!0}if(Array.isArray(f)){const t=f.indexOf(e);if(!(t>=0)){(0,r.warn)("Cannot update the struct tree: parent kid not found.");a.set("P",o);return}f=f.slice();f.splice(t+1,0,i)}else if(f instanceof n.Dict){f=[p,i];p=c.getNewTemporaryRef();d.set("K",p);g=!0}h.length=0;await(0,s.writeObject)(p,f,h,c);l.push({ref:p,data:h.join("")});if(g){h.length=0;await(0,s.writeObject)(u,d,h,c);l.push({ref:u,data:h.join("")})}}}t.StructTreeRoot=StructTreeRoot;class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof n.Name?e.name:"",{root:a}=this.tree;return a.roleMap.has(t)?a.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof n.Ref&&(e=t.toString());const a=this.dict.get("K");if(Array.isArray(a))for(const t of a){const a=this.parseKid(e,t);a&&this.kids.push(a)}else{const t=this.parseKid(e,a);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:o,mcid:t,pageObjId:e});let a=null;t instanceof n.Ref?a=this.dict.xref.fetch(t):t instanceof n.Dict&&(a=t);if(!a)return null;const r=a.getRaw("Pg");r instanceof n.Ref&&(e=r.toString());const i=a.get("Type")instanceof n.Name?a.get("Type").name:null;if("MCR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Stm");return new StructElement({type:c,refObjId:t instanceof n.Ref?t.toString():null,pageObjId:e,mcid:a.get("MCID")})}if("OBJR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Obj");return new StructElement({type:l,refObjId:t instanceof n.Ref?t.toString():null,pageObjId:e})}return new StructElement({type:u,dict:a})}}class StructElement{constructor({type:e,dict:t=null,mcid:a=null,pageObjId:r=null,refObjId:n=null}){this.type=e;this.dict=t;this.mcid=a;this.pageObjId=r;this.refObjId=n;this.parentNode=null}}t.StructTreePage=class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(e){if(!this.root||!this.rootDict)return;const t=this.rootDict.get("ParentTree");if(!t)return;const a=this.pageDict.get("StructParents"),r=e instanceof n.Ref&&this.root.structParentIds?.get(e);if(!Number.isInteger(a)&&!r)return;const s=new Map,o=new i.NumberTree(t,this.rootDict.xref);if(Number.isInteger(a)){const e=o.get(a);if(Array.isArray(e))for(const t of e)t instanceof n.Ref&&this.addNode(this.rootDict.xref.fetch(t),s)}if(r)for(const[e,t]of r){const a=o.get(e);if(a){const e=this.addNode(this.rootDict.xref.fetchIfRef(a),s);1===e?.kids?.length&&e.kids[0].type===l&&(e.kids[0].type=t)}}}addNode(e,t,a=0){if(a>40){(0,r.warn)("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const i=new StructElementNode(this,e);t.set(e,i);const s=e.get("P");if(!s||(0,n.isName)(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,i)||t.delete(e);return i}const o=this.addNode(s,t,a+1);if(!o)return i;let c=!1;for(const t of o.kids)if(t.type===u&&t.dict===e){t.parentNode=i;c=!0}c||t.delete(e);return i}addTopLevelNode(e,t){const a=this.rootDict.get("K");if(!a)return!1;if(a instanceof n.Dict){if(a.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(a))return!0;let r=!1;for(let n=0;n40){(0,r.warn)("StructTree too deep to be fully serialized.");return}const n=Object.create(null);n.role=e.role;n.children=[];t.children.push(n);const i=e.dict.get("Alt");"string"==typeof i&&(n.alt=(0,r.stringToPDFString)(i));const s=e.dict.get("Lang");"string"==typeof s&&(n.lang=(0,r.stringToPDFString)(s));for(const t of e.kids){const e=t.type===u?t.parentNode:null;e?nodeToSerializable(e,n,a+1):t.type===o||t.type===c?n.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===l?n.children.push({type:"object",id:t.refObjId}):t.type===h&&n.children.push({type:"annotation",id:`${r.AnnotationPrefix}${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.incrementalUpdate=async function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:a,xref:o=null,hasXfa:l=!1,xfaDatasetsRef:h=null,hasXfaDatasetsEntry:u=!1,needAppearances:d,acroFormRef:f=null,acroForm:g=null,xfaData:p=null}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:a,hasXfa:n,hasXfaDatasetsEntry:i,xfaDatasetsRef:s,needAppearances:o,newRefs:c}){!n||i||s||(0,r.warn)("XFA - Cannot save it");if(!o&&(!n||!s||i))return;const l=t.clone();if(n&&!i){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,s);l.set("XFA",e)}o&&l.set("NeedAppearances",!0);const h=[];await writeObject(a,l,h,e);c.push({ref:a,data:h.join("")})}({xref:o,acroForm:g,acroFormRef:f,hasXfa:l,hasXfaDatasetsEntry:u,xfaDatasetsRef:h,needAppearances:d,newRefs:a});l&&function updateXFA({xfaData:e,xfaDatasetsRef:t,newRefs:a,xref:n}){if(null===e){e=function writeXFADataForAcroform(e,t){const a=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:n}=e;if(!t)continue;const o=(0,i.parseXFAPath)(t);let c=a.documentElement.searchNode(o,0);!c&&o.length>1&&(c=a.documentElement.searchNode([o.at(-1)],0));c?c.childNodes=Array.isArray(n)?n.map((e=>new s.SimpleDOMNode("value",e))):[new s.SimpleDOMNode("#text",n)]:(0,r.warn)(`Node not found for path: ${t}`)}const n=[];a.documentElement.dump(n);return n.join("")}(n.fetchIfRef(t).getString(),a)}const o=n.encrypt;if(o){e=o.createCipherTransform(t.num,t.gen).encryptString(e)}const c=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";a.push({ref:t,data:c})}({xfaData:p,xfaDatasetsRef:h,newRefs:a,xref:o});const m=new n.Dict(null),b=t.newRef;let y,w;const S=e.at(-1);if(10===S||13===S){y=[];w=e.length}else{y=["\n"];w=e.length+1}m.set("Size",b.num+1);m.set("Prev",t.startXRef);m.set("Type",n.Name.get("XRef"));null!==t.rootRef&&m.set("Root",t.rootRef);null!==t.infoRef&&m.set("Info",t.infoRef);null!==t.encryptRef&&m.set("Encrypt",t.encryptRef);a.push({ref:b,data:""});a=a.sort(((e,t)=>e.ref.num-t.ref.num));const x=[[0,1,65535]],C=[0,1];let k=0;for(const{ref:e,data:t}of a){k=Math.max(k,w);x.push([1,w,Math.min(e.gen,65535)]);w+=t.length;C.push(e.num,1);y.push(t)}m.set("Index",C);if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const e=function computeMD5(e,t){const a=Math.floor(Date.now()/1e3),n=t.filename||"",i=[a.toString(),n,e.toString()];let s=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){i.push(e);s+=e.length}const o=new Uint8Array(s);let l=0;for(const e of i){writeString(e,l,o);l+=e.length}return(0,r.bytesToString)((0,c.calculateMD5)(o))}(w,t);m.set("ID",[t.fileIds[0],e])}const v=[1,Math.ceil(Math.log2(k)/8),2],F=(v[0]+v[1]+v[2])*x.length;m.set("W",v);m.set("Length",F);y.push(`${b.num} ${b.gen} obj\n`);await writeDict(m,y,null);y.push(" stream\n");const O=y.reduce(((e,t)=>e+t.length),0),T=`\nendstream\nendobj\nstartxref\n${w}\n%%EOF\n`,M=new Uint8Array(e.length+O+F+T.length);M.set(e);let D=e.length;for(const e of y){writeString(e,D,M);D+=e.length}for(const[e,t,a]of x){D=writeInt(e,v[0],D,M);D=writeInt(t,v[1],D,M);D=writeInt(a,v[2],D,M)}writeString(T,D,M);return M};t.writeDict=writeDict;t.writeObject=writeObject;var r=a(2),n=a(4),i=a(3),s=a(71),o=a(5),c=a(74);async function writeObject(e,t,a,{encrypt:r=null}){const i=r?.createCipherTransform(e.num,e.gen);a.push(`${e.num} ${e.gen} obj\n`);t instanceof n.Dict?await writeDict(t,a,i):t instanceof o.BaseStream?await writeStream(t,a,i):Array.isArray(t)&&await writeArray(t,a,i);a.push("\nendobj\n")}async function writeDict(e,t,a){t.push("<<");for(const r of e.getKeys()){t.push(` /${(0,i.escapePDFName)(r)} `);await writeValue(e.getRaw(r),t,a)}t.push(">>")}async function writeStream(e,t,a){let i=e.getString();const{dict:s}=e,[o,c]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),l=Array.isArray(o)?await s.xref.fetchIfRefAsync(o[0]):o,h=(0,n.isName)(l,"FlateDecode");if("undefined"!=typeof CompressionStream&&(i.length>=256||h))try{const e=(0,r.stringToBytes)(i),t=new CompressionStream("deflate"),a=t.writable.getWriter();a.write(e);a.close();const l=await new Response(t.readable).arrayBuffer();i=(0,r.bytesToString)(new Uint8Array(l));let u,d;if(o){if(!h){u=Array.isArray(o)?[n.Name.get("FlateDecode"),...o]:[n.Name.get("FlateDecode"),o];c&&(d=Array.isArray(c)?[null,...c]:[null,c])}}else u=n.Name.get("FlateDecode");u&&s.set("Filter",u);d&&s.set("DecodeParms",d)}catch(e){(0,r.info)(`writeStream - cannot compress data: "${e}".`)}a&&(i=a.encryptString(i));s.set("Length",i.length);await writeDict(s,t,a);t.push(" stream\n",i,"\nendstream")}async function writeArray(e,t,a){t.push("[");let r=!0;for(const n of e){r?r=!1:t.push(" ");await writeValue(n,t,a)}t.push("]")}async function writeValue(e,t,a){if(e instanceof n.Name)t.push(`/${(0,i.escapePDFName)(e.name)}`);else if(e instanceof n.Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e))await writeArray(e,t,a);else if("string"==typeof e){a&&(e=a.encryptString(e));t.push(`(${(0,i.escapeString)(e)})`)}else"number"==typeof e?t.push((0,i.numberToString)(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof n.Dict?await writeDict(e,t,a):e instanceof o.BaseStream?await writeStream(e,t,a):null===e?t.push("null"):(0,r.warn)(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,a,r){for(let n=t+a-1;n>a-1;n--){r[n]=255&e;e>>=8}return a+t}function writeString(e,t,a){for(let r=0,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.calculateSHA256=t.calculateMD5=t.PDF20=t.PDF17=t.CipherTransformFactory=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0;t.calculateSHA384=calculateSHA384;t.calculateSHA512=void 0;var r=a(2),n=a(4),i=a(75);class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),a=e.length;for(let e=0;e<256;++e)t[e]=e;for(let r=0,n=0;r<256;++r){const i=t[r];n=n+i+e[r%a]&255;t[r]=t[n];t[n]=i}this.s=t}encryptBlock(e){let t=this.a,a=this.b;const r=this.s,n=e.length,i=new Uint8Array(n);for(let s=0;s>5&255;h[u++]=n>>13&255;h[u++]=n>>21&255;h[u++]=n>>>29&255;h[u++]=0;h[u++]=0;h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0;n=i}i=i+n|0;s=s+l|0;o=o+f|0;c=c+p|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=s;class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,a;if(32&e){a=this.low;t=this.high}else{t=this.low;a=this.high}e&=31;this.low=t>>>e|a<<32-e;this.high=a>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let a=(this.high>>>0)+(e.high>>>0);t>4294967295&&(a+=1);this.low=0|t;this.high=0|a}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const o=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,a){return e&t^~e&a}function maj(e,t,a){return e&t^e&a^t&a}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,a,r){let n=1779033703,i=3144134277,s=1013904242,o=2773480762,c=1359893119,l=2600822924,h=528734635,u=1541459225;const d=64*Math.ceil((r+9)/64),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=r>>21&255;f[g++]=r>>13&255;f[g++]=r>>5&255;f[g++]=r<<3&255;const b=new Uint32Array(64);for(g=0;g>>10)+b[p-7]+littleSigma(b[p-15])+b[p-16]|0;let t,a,r=n,d=i,m=s,w=o,S=c,x=l,C=h,k=u;for(p=0;p<64;++p){t=k+sigmaPrime(S)+ch(S,x,C)+e[p]+b[p];a=sigma(r)+maj(r,d,m);k=C;C=x;x=S;S=w+t|0;w=m;m=d;d=r;r=t+a|0}n=n+r|0;i=i+d|0;s=s+m|0;o=o+w|0;c=c+S|0;l=l+x|0;h=h+C|0;u=u+k|0}var y;return new Uint8Array([n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u])}}();t.calculateSHA256=o;const c=function calculateSHA512Closure(){function ch(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.not();n.and(r);e.xor(n)}function maj(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.and(r);e.xor(n);n.assign(a);n.and(r);e.xor(n)}function sigma(e,t,a){e.assign(t);e.rotateRight(28);a.assign(t);a.rotateRight(34);e.xor(a);a.assign(t);a.rotateRight(39);e.xor(a)}function sigmaPrime(e,t,a){e.assign(t);e.rotateRight(14);a.assign(t);a.rotateRight(18);e.xor(a);a.assign(t);a.rotateRight(41);e.xor(a)}function littleSigma(e,t,a){e.assign(t);e.rotateRight(1);a.assign(t);a.rotateRight(8);e.xor(a);a.assign(t);a.shiftRight(7);e.xor(a)}function littleSigmaPrime(e,t,a){e.assign(t);e.rotateRight(19);a.assign(t);a.rotateRight(61);e.xor(a);a.assign(t);a.shiftRight(6);e.xor(a)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,a,r,n=!1){let i,s,o,c,l,h,u,d;if(n){i=new Word64(3418070365,3238371032);s=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);c=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);h=new Word64(2394180231,1750603025);u=new Word64(3675008525,1694076839);d=new Word64(1203062813,3204075428)}else{i=new Word64(1779033703,4089235720);s=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);c=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);h=new Word64(2600822924,725511199);u=new Word64(528734635,4215389547);d=new Word64(1541459225,327033209)}const f=128*Math.ceil((r+17)/128),g=new Uint8Array(f);let p,m;for(p=0;p>>29&255;g[p++]=r>>21&255;g[p++]=r>>13&255;g[p++]=r>>5&255;g[p++]=r<<3&255;const y=new Array(80);for(p=0;p<80;p++)y[p]=new Word64(0,0);let w=new Word64(0,0),S=new Word64(0,0),x=new Word64(0,0),C=new Word64(0,0),k=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),O=new Word64(0,0);const T=new Word64(0,0),M=new Word64(0,0),D=new Word64(0,0),E=new Word64(0,0);let N,R;for(p=0;p=1;--e){a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e)i[e]=this._inv_s[i[e]];for(let a=0,r=16*e;a<16;++a,++r)i[a]^=t[r];for(let e=0;e<16;e+=4){const t=this._mix[i[e]],r=this._mix[i[e+1]],n=this._mix[i[e+2]],s=this._mix[i[e+3]];a=t^r>>>8^r<<24^n>>>16^n<<16^s>>>24^s<<8;i[e]=a>>>24&255;i[e+1]=a>>16&255;i[e+2]=a>>8&255;i[e+3]=255&a}}a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e){i[e]=this._inv_s[i[e]];i[e]^=t[e]}return i}_encrypt(e,t){const a=this._s;let r,n,i;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=r;--a)if(e[a]!==t){t=0;break}o-=t;i[i.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,a=i.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){a[e]=r^=a[e-32];e++;a[e]=n^=a[e-32];e++;a[e]=i^=a[e-32];e++;a[e]=s^=a[e-32];e++}}return a}}t.AES256Cipher=AES256Cipher;class PDF17{checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=o(i,0,i.length);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=o(n,0,n.length);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=o(n,0,n.length);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=o(r,0,r.length);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}t.PDF17=PDF17;class PDF20{_hash(e,t,a){let r=o(t,0,t.length).subarray(0,32),n=[0],i=0;for(;i<64||n.at(-1)>i-32;){const t=e.length+r.length+a.length,s=new Uint8Array(t);let l=0;s.set(e,l);l+=e.length;s.set(r,l);l+=r.length;s.set(a,l);const h=new Uint8Array(64*t);for(let e=0,a=0;e<64;e++,a+=t)h.set(s,a);n=new AES128Cipher(r.subarray(0,16)).encrypt(h,r.subarray(16,32));const u=n.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===u?r=o(n,0,n.length):1===u?r=calculateSHA384(n,0,n.length):2===u&&(r=c(n,0,n.length));i++}return r.subarray(0,32)}checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=this._hash(e,i,a);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=this._hash(e,n,[]);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=this._hash(e,n,a);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=this._hash(e,r,[]);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}t.PDF20=PDF20;class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const a=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return a.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let a=(0,r.stringToBytes)(e);a=t.decryptBlock(a,!0);return(0,r.bytesToString)(a)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const a=16-e.length%16;e+=String.fromCharCode(a).repeat(a);const n=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(n);else for(let e=0;e<16;e++)n[e]=Math.floor(256*Math.random());let i=(0,r.stringToBytes)(e);i=t.encrypt(i,n);const s=new Uint8Array(16+i.length);s.set(n);s.set(i,16);return(0,r.bytesToString)(s)}let a=(0,r.stringToBytes)(e);a=t.encrypt(a);return(0,r.bytesToString)(a)}}class CipherTransformFactory{static#O=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);#I(e,t,a,r,n,i,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new PDF20:new PDF17;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,r,i,a)?d.getOwnerKey(t,n,i,l):null}#T(e,t,a,r,n,i,o,c){const l=40+a.length+e.length,h=new Uint8Array(l);let u,d,f=0;if(t){d=Math.min(32,t.length);for(;f>8&255;h[f++]=n>>16&255;h[f++]=n>>>24&255;for(u=0,d=e.length;u=4&&!c){h[f++]=255;h[f++]=255;h[f++]=255;h[f++]=255}let g=s(h,0,f);const p=o>>3;if(i>=3)for(u=0;u<50;++u)g=s(g,0,p);const m=g.subarray(0,p);let b,y;if(i>=3){for(f=0;f<32;++f)h[f]=CipherTransformFactory.#O[f];for(u=0,d=e.length;u>3;if(a>=3)for(c=0;c<50;++c)l=s(l,0,l.length);let u,d;if(a>=3){d=t;const e=new Uint8Array(h);for(c=19;c>=0;c--){for(let t=0;t>8&255;n[o++]=e>>16&255;n[o++]=255&t;n[o++]=t>>8&255;if(r){n[o++]=115;n[o++]=65;n[o++]=108;n[o++]=84}return s(n,0,o).subarray(0,Math.min(a.length+5,16))}#D(e,t,a,i,s){if(!(t instanceof n.Name))throw new r.FormatError("Invalid crypt filter name.");const o=this,c=e.get(t.name),l=c?.get("CFM");if(!l||"None"===l.name)return function(){return new NullCipher};if("V2"===l.name)return function(){return new ARCFourCipher(o.#P(a,i,s,!1))};if("AESV2"===l.name)return function(){return new AES128Cipher(o.#P(a,i,s,!0))};if("AESV3"===l.name)return function(){return new AES256Cipher(s)};throw new r.FormatError("Unknown crypto method")}constructor(e,t,a){const i=e.get("Filter");if(!(0,n.isName)(i,"Standard"))throw new r.FormatError("unknown encryption method");this.filterName=i.name;this.dict=e;const s=e.get("V");if(!Number.isInteger(s)||1!==s&&2!==s&&4!==s&&5!==s)throw new r.FormatError("unsupported encryption algorithm");this.algorithm=s;let o=e.get("Length");if(!o)if(s<=3)o=40;else{const t=e.get("CF"),a=e.get("StmF");if(t instanceof n.Dict&&a instanceof n.Name){t.suppressEncryption=!0;const e=t.get(a.name);o=e?.get("Length")||128;o<40&&(o<<=3)}}if(!Number.isInteger(o)||o<40||o%8!=0)throw new r.FormatError("invalid key length");const c=(0,r.stringToBytes)(e.get("O")),l=(0,r.stringToBytes)(e.get("U")),h=c.subarray(0,32),u=l.subarray(0,32),d=e.get("P"),f=e.get("R"),g=(4===s||5===s)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=g;const p=(0,r.stringToBytes)(t);let m,b;if(a){if(6===f)try{a=(0,r.utf8StringToString)(a)}catch{(0,r.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}m=(0,r.stringToBytes)(a)}if(5!==s)b=this.#T(p,m,h,u,d,f,o,g);else{const t=c.subarray(32,40),a=c.subarray(40,48),n=l.subarray(0,48),i=l.subarray(32,40),s=l.subarray(40,48),o=(0,r.stringToBytes)(e.get("OE")),d=(0,r.stringToBytes)(e.get("UE")),g=(0,r.stringToBytes)(e.get("Perms"));b=this.#I(f,m,h,t,a,n,u,i,s,o,d,g)}if(!b&&!a)throw new r.PasswordException("No password given",r.PasswordResponses.NEED_PASSWORD);if(!b&&a){const e=this.#M(m,h,f,o);b=this.#T(p,e,h,u,d,f,o,g)}if(!b)throw new r.PasswordException("Incorrect Password",r.PasswordResponses.INCORRECT_PASSWORD);this.encryptionKey=b;if(s>=4){const t=e.get("CF");t instanceof n.Dict&&(t.suppressEncryption=!0);this.cf=t;this.stmf=e.get("StmF")||n.Name.get("Identity");this.strf=e.get("StrF")||n.Name.get("Identity");this.eff=e.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(this.#D(this.cf,this.strf,e,t,this.encryptionKey),this.#D(this.cf,this.stmf,e,t,this.encryptionKey));const a=this.#P(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(a)};return new CipherTransform(cipherConstructor,cipherConstructor)}}t.CipherTransformFactory=CipherTransformFactory},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DecryptStream=void 0;var r=a(18);class DecryptStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.decrypt=a;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const a=this.bufferLength,r=a+e.length;this.ensureBuffer(r).set(e,a);this.bufferLength=r}}t.DecryptStream=DecryptStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ObjectLoader=void 0;var r=a(4),n=a(5),i=a(3),s=a(2);function addChildren(e,t){if(e instanceof r.Dict)e=e.getRawValues();else if(e instanceof n.BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((a=i)instanceof r.Ref||a instanceof r.Dict||a instanceof n.BaseStream||Array.isArray(a))&&t.push(i);var a}t.ObjectLoader=class ObjectLoader{constructor(e,t,a){this.dict=e;this.keys=t;this.xref=a;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new r.RefSet;const a=[];for(const r of e){const e=t.getRaw(r);void 0!==e&&a.push(e)}return this._walk(a)}async _walk(e){const t=[],a=[];for(;e.length;){let o=e.pop();if(o instanceof r.Ref){if(this.refSet.has(o))continue;try{this.refSet.put(o);o=this.xref.fetch(o)}catch(e){if(!(e instanceof i.MissingDataException)){(0,s.warn)(`ObjectLoader._walk - requesting all data: "${e}".`);this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(o);a.push({begin:e.begin,end:e.end})}}if(o instanceof n.BaseStream){const e=o.getBaseStreams();if(e){let r=!1;for(const t of e)if(!t.isDataLoaded){r=!0;a.push({begin:t.start,end:t.end})}r&&t.push(o)}}addChildren(o,e)}if(a.length){await this.xref.stream.manager.requestRanges(a);for(const e of t)e instanceof r.Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAFactory=void 0;var r=a(78),n=a(79),i=a(89),s=a(85),o=a(84),c=a(2),l=a(90),h=a(100);class XFAFactory{constructor(e){try{this.root=(new l.XFAParser).parse(XFAFactory._createDocument(e));const t=new n.Binder(this.root);this.form=t.bind();this.dataHandler=new i.DataHandler(this.root,t.getData());this.form[r.$globalData].template=this.form}catch(e){(0,c.warn)(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[r.$toPages]();return new Promise(((t,a)=>{const nextIteration=()=>{try{const a=e.next();a.done?t(a.value):setTimeout(nextIteration,0)}catch(e){a(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:a}=e.attributes.style;return[0,0,parseInt(t),parseInt(a)]}))}catch(e){(0,c.warn)(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[r.$globalData].images=e}setFonts(e){this.form[r.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[r.$globalData].usedTypefaces){e=(0,o.stripQuotes)(e);this.form[r.$globalData].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[r.$globalData].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new l.XFAParser(h.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[r.$nodeName])){const e=h.XhtmlNamespace.body({});e[r.$appendChild](t);t=e}const a=t[r.$toHTML]();if(!a.success)return null;const{html:n}=a,{attributes:i}=n;if(i){i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa"))));i.dir="auto"}return{html:n,str:t[r.$text]()}}catch(e){(0,c.warn)(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}t.XFAFactory=XFAFactory},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.$uid=t.$toStyle=t.$toString=t.$toPages=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushPara=t.$pushGlyphs=t.$popPara=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$lastAttribute=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;const a=Symbol();t.$acceptWhitespace=a;const r=Symbol();t.$addHTML=r;const n=Symbol();t.$appendChild=n;const i=Symbol();t.$childrenToHTML=i;const s=Symbol();t.$clean=s;const o=Symbol();t.$cleanPage=o;const c=Symbol();t.$cleanup=c;const l=Symbol();t.$clone=l;const h=Symbol();t.$consumed=h;const u=Symbol("content");t.$content=u;const d=Symbol("data");t.$data=d;const f=Symbol();t.$dump=f;const g=Symbol("extra");t.$extra=g;const p=Symbol();t.$finalize=p;const m=Symbol();t.$flushHTML=m;const b=Symbol();t.$getAttributeIt=b;const y=Symbol();t.$getAttributes=y;const w=Symbol();t.$getAvailableSpace=w;const S=Symbol();t.$getChildrenByClass=S;const x=Symbol();t.$getChildrenByName=x;const C=Symbol();t.$getChildrenByNameIt=C;const k=Symbol();t.$getDataValue=k;const v=Symbol();t.$getExtra=v;const F=Symbol();t.$getRealChildrenByNameIt=F;const O=Symbol();t.$getChildren=O;const T=Symbol();t.$getContainedChildren=T;const M=Symbol();t.$getNextPage=M;const D=Symbol();t.$getSubformParent=D;const E=Symbol();t.$getParent=E;const N=Symbol();t.$getTemplateRoot=N;const R=Symbol();t.$globalData=R;const L=Symbol();t.$hasSettableValue=L;const $=Symbol();t.$ids=$;const _=Symbol();t.$indexOf=_;const j=Symbol();t.$insertAt=j;const U=Symbol();t.$isCDATAXml=U;const X=Symbol();t.$isBindable=X;const H=Symbol();t.$isDataValue=H;const q=Symbol();t.$isDescendent=q;const z=Symbol();t.$isNsAgnostic=z;const W=Symbol();t.$isSplittable=W;const G=Symbol();t.$isThereMoreWidth=G;const V=Symbol();t.$isTransparent=V;const K=Symbol();t.$isUsable=K;const J=Symbol();t.$lastAttribute=J;const Y=Symbol("namespaceId");t.$namespaceId=Y;const Z=Symbol("nodeName");t.$nodeName=Z;const Q=Symbol();t.$nsAttributes=Q;const ee=Symbol();t.$onChild=ee;const te=Symbol();t.$onChildCheck=te;const ae=Symbol();t.$onText=ae;const re=Symbol();t.$pushGlyphs=re;const ne=Symbol();t.$popPara=ne;const ie=Symbol();t.$pushPara=ie;const se=Symbol();t.$removeChild=se;const oe=Symbol("root");t.$root=oe;const ce=Symbol();t.$resolvePrototypes=ce;const le=Symbol();t.$searchNode=le;const he=Symbol();t.$setId=he;const ue=Symbol();t.$setSetAttributes=ue;const de=Symbol();t.$setValue=de;const fe=Symbol();t.$tabIndex=fe;const ge=Symbol();t.$text=ge;const pe=Symbol();t.$toPages=pe;const me=Symbol();t.$toHTML=me;const be=Symbol();t.$toString=be;const ye=Symbol();t.$toStyle=ye;const we=Symbol("uid");t.$uid=we},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Binder=void 0;var r=a(78),n=a(80),i=a(88),s=a(87),o=a(81),c=a(2);const l=o.NamespaceIds.datasets.id;function createText(e){const t=new n.Text({});t[r.$content]=e;return t}t.Binder=class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new s.XmlObject(o.NamespaceIds.datasets.id,"data");this.emptyMerge=0===this.data[r.$getChildren]().length;this.root.form=this.form=e.template[r.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,a){e[r.$data]=t;if(e[r.$hasSettableValue]())if(t[r.$isDataValue]()){const a=t[r.$getDataValue]();e[r.$setValue](createText(a))}else if(e instanceof n.Field&&"multiSelect"===e.ui?.choiceList?.open){const a=t[r.$getChildren]().map((e=>e[r.$content].trim())).join("\n");e[r.$setValue](createText(a))}else this._isConsumeData()&&(0,c.warn)("XFA - Nodes haven't the same type.");else!t[r.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,c.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,a,n){if(!e)return null;let i,s;for(let n=0;n<3;n++){i=a[r.$getRealChildrenByNameIt](e,!1,!0);for(;;){s=i.next().value;if(!s)break;if(t===s[r.$isDataValue]())return s}if(a[r.$namespaceId]===o.NamespaceIds.datasets.id&&"data"===a[r.$nodeName])break;a=a[r.$getParent]()}if(!n)return null;i=this.data[r.$getRealChildrenByNameIt](e,!0,!1);s=i.next().value;if(s)return s;i=this.data[r.$getAttributeIt](e,!0);s=i.next().value;return s?.[r.$isDataValue]()?s:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:a,target:o,connection:l}of e.setProperty.children){if(l)continue;if(!a)continue;const h=(0,i.searchNode)(this.root,t,a,!1,!1);if(!h){(0,c.warn)(`XFA - Invalid reference: ${a}.`);continue}const[u]=h;if(!u[r.$isDescendent](this.data)){(0,c.warn)("XFA - Invalid node: must be a data node.");continue}const d=(0,i.searchNode)(this.root,e,o,!1,!1);if(!d){(0,c.warn)(`XFA - Invalid target: ${o}.`);continue}const[f]=d;if(!f[r.$isDescendent](e)){(0,c.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const g=f[r.$getParent]();if(f instanceof n.SetProperty||g instanceof n.SetProperty){(0,c.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(f instanceof n.BindItems||g instanceof n.BindItems){(0,c.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const p=u[r.$text](),m=f[r.$nodeName];if(f instanceof s.XFAAttribute){const e=Object.create(null);e[m]=p;const t=Reflect.construct(Object.getPrototypeOf(g).constructor,[e]);g[m]=t[m]}else if(f.hasOwnProperty(r.$content)){f[r.$data]=u;f[r.$content]=p;f[r.$finalize]()}else(0,c.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[r.$removeChild](t);e.items.clear();const a=new n.Items({}),s=new n.Items({});e[r.$appendChild](a);e.items.push(a);e[r.$appendChild](s);e.items.push(s);for(const{ref:n,labelRef:o,valueRef:l,connection:h}of e.bindItems.children){if(h)continue;if(!n)continue;const e=(0,i.searchNode)(this.root,t,n,!1,!1);if(e)for(const t of e){if(!t[r.$isDescendent](this.datasets)){(0,c.warn)(`XFA - Invalid ref (${n}): must be a datasets child.`);continue}const e=(0,i.searchNode)(this.root,t,o,!0,!1);if(!e){(0,c.warn)(`XFA - Invalid label: ${o}.`);continue}const[h]=e;if(!h[r.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid label: must be a datasets child.");continue}const u=(0,i.searchNode)(this.root,t,l,!0,!1);if(!u){(0,c.warn)(`XFA - Invalid value: ${l}.`);continue}const[d]=u;if(!d[r.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid value: must be a datasets child.");continue}const f=createText(h[r.$text]()),g=createText(d[r.$text]());a[r.$appendChild](f);a.text.push(f);s[r.$appendChild](g);s.text.push(g)}else(0,c.warn)(`XFA - Invalid reference: ${n}.`)}}_bindOccurrences(e,t,a){let n;if(t.length>1){n=e[r.$clone]();n[r.$removeChild](n.occur);n.occur=null}this._bindValue(e,t[0],a);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const i=e[r.$getParent](),s=e[r.$nodeName],o=i[r.$indexOf](e);for(let e=1,c=t.length;et.name===e.name)).length:a[n].children.length;const o=a[r.$indexOf](e)+1,c=t.initial-i;if(c){const t=e[r.$clone]();t[r.$removeChild](t.occur);t.occur=null;a[n].push(t);a[r.$insertAt](o,t);for(let e=1;e0)this._bindOccurrences(n,[e[0]],null);else if(this.emptyMerge){const e=t[r.$namespaceId]===l?-1:t[r.$namespaceId],a=n[r.$data]=new s.XmlObject(e,n.name||"root");t[r.$appendChild](a);this._bindElement(n,a)}continue}if(!n[r.$isBindable]())continue;let e=!1,o=null,h=null,u=null;if(n.bind){switch(n.bind.match){case"none":this._setAndBind(n,t);continue;case"global":e=!0;break;case"dataRef":if(!n.bind.ref){(0,c.warn)(`XFA - ref is empty in node ${n[r.$nodeName]}.`);this._setAndBind(n,t);continue}h=n.bind.ref}n.bind.picture&&(o=n.bind.picture[r.$content])}const[d,f]=this._getOccurInfo(n);if(h){u=(0,i.searchNode)(this.root,t,h,!0,!1);if(null===u){u=(0,i.createDataNode)(this.data,t,h);if(!u)continue;this._isConsumeData()&&(u[r.$consumed]=!0);this._setAndBind(n,u);continue}this._isConsumeData()&&(u=u.filter((e=>!e[r.$consumed])));u.length>f?u=u.slice(0,f):0===u.length&&(u=null);u&&this._isConsumeData()&&u.forEach((e=>{e[r.$consumed]=!0}))}else{if(!n.name){this._setAndBind(n,t);continue}if(this._isConsumeData()){const a=[];for(;a.length0?a:null}else{u=t[r.$getRealChildrenByNameIt](n.name,!1,this.emptyMerge).next().value;if(!u){if(0===d){a.push(n);continue}const e=t[r.$namespaceId]===l?-1:t[r.$namespaceId];u=n[r.$data]=new s.XmlObject(e,n.name);this.emptyMerge&&(u[r.$consumed]=!0);t[r.$appendChild](u);this._setAndBind(n,u);continue}this.emptyMerge&&(u[r.$consumed]=!0);u=[u]}}u?this._bindOccurrences(n,u,o):d>0?this._setAndBind(n,t):a.push(n)}a.forEach((e=>e[r.$getParent]()[r.$removeChild](e)))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0;var r=a(78),n=a(81),i=a(82),s=a(83),o=a(87),c=a(84),l=a(2),h=a(85),u=a(3),d=a(88);const f=n.NamespaceIds.template.id,g="http://www.w3.org/2000/svg",p=/^H(\d+)$/,m=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),b=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[r.$getExtra]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[r.$appendChild](t);e.value=t}e.value[r.$setValue](t)}function*getContainedChildren(e){for(const t of e[r.$getChildren]())t instanceof SubformSet?yield*t[r.$getContainedChildren]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}if(e[r.$tabIndex])return;let t=null;for(const a of e.traversal[r.$getChildren]())if("next"===a.operation){t=a;break}if(!t||!t.ref){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}const a=e[r.$getTemplateRoot]();e[r.$tabIndex]=++a[r.$tabIndex];const n=a[r.$searchNode](t.ref,e);if(!n)return;e=n[0]}}function applyAssist(e,t){const a=e.assist;if(a){const e=a[r.$toHTML]();e&&(t.title=e);const n=a.role.match(p);if(n){const e="heading",a=n[1];t.role=e;t["aria-level"]=a}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const a=e[r.$getParent]();"row"===a.layout&&(t.role="TH"===a.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[r.$content]?t.speak[r.$content]:t.toolTip?t.toolTip[r.$content]:null}function valueToHtml(e){return c.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();if(null===t[r.$extra].firstUnsplittable){t[r.$extra].firstUnsplittable=e;t[r.$extra].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();t[r.$extra].firstUnsplittable===e&&(t[r.$extra].noLayoutFailure=!1)}function handleBreak(e){if(e[r.$extra])return!1;e[r.$extra]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[r.$getTemplateRoot]();let a=null;if(e.target){a=t[r.$searchNode](e.target,e[r.$getParent]());if(!a)return!1;a=a[0]}const{currentPageArea:n,currentContentArea:i}=t[r.$extra];if("pageArea"===e.targetType){a instanceof PageArea||(a=null);if(e.startNew){e[r.$extra].target=a||n;return!0}if(a&&a!==n){e[r.$extra].target=a;return!0}return!1}a instanceof ContentArea||(a=null);const s=a&&a[r.$getParent]();let o,c=s;if(e.startNew)if(a){const e=s.contentArea.children,t=e.indexOf(i),r=e.indexOf(a);-1!==t&&te;n[r.$extra].noLayoutFailure=!0;const o=t[r.$toHTML](a);e[r.$addHTML](o.html,o.bbox);n[r.$extra].noLayoutFailure=i;t[r.$getSubformParent]=s}class AppearanceFilter extends o.StringObject{constructor(e){super(f,"appearanceFilter");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends o.XFAObject{constructor(e){super(f,"arc",!0);this.circular=(0,c.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=(0,c.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=(0,c.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[r.$toHTML](){const e=this.edge||new Edge({}),t=e[r.$toStyle](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;let n;const i={xmlns:g,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)n={name:"ellipse",attributes:{xmlns:g,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];n={name:"path",attributes:{xmlns:g,d:`M ${s} ${o} A 50 50 0 ${r} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:a}};Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const o={name:"svg",children:[n],attributes:i};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]});o.attributes.style.position="absolute";return c.HTMLResult.success(o)}}class Area extends o.XFAObject{constructor(e){super(f,"area",!0);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null;this.area=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$isTransparent](){return!0}[r.$isBindable](){return!0}[r.$addHTML](e,t){const[a,n,i,s]=t;this[r.$extra].width=Math.max(this[r.$extra].width,a+i);this[r.$extra].height=Math.max(this[r.$extra].height,n+s);this[r.$extra].children.push(e)}[r.$getAvailableSpace](){return this[r.$extra].availableSpace}[r.$toHTML](e){const t=(0,s.toStyle)(this,"position"),a={style:t,id:this[r.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&a.class.push("xfaPrintOnly");this.name&&(a.xfaName=this.name);const n=[];this[r.$extra]={children:n,width:0,height:0,availableSpace:e};const i=this[r.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success){if(i.isBreak())return i;delete this[r.$extra];return c.HTMLResult.FAILURE}t.width=(0,s.measureToString)(this[r.$extra].width);t.height=(0,s.measureToString)(this[r.$extra].height);const o={name:"div",attributes:a,children:n},l=[this.x,this.y,this[r.$extra].width,this[r.$extra].height];delete this[r.$extra];return c.HTMLResult.success(o,l)}}class Assist extends o.XFAObject{constructor(e){super(f,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[r.$toHTML](){return this.toolTip?.[r.$content]||null}}class Barcode extends o.XFAObject{constructor(e){super(f,"barcode",!0);this.charEncoding=(0,c.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=(0,c.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=(0,c.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=(0,c.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=(0,c.getStringOption)(e.dataPrep,["none","flateCompress"]);this.dataRowCount=(0,c.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=(0,c.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=(0,c.getMeasurement)(e.moduleHeight,"5mm");this.moduleWidth=(0,c.getMeasurement)(e.moduleWidth,"0.25mm");this.printCheckDigit=(0,c.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=(0,c.getRatio)(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=(0,c.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=(0,c.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=(0,c.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=(0,c.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=(0,c.getRatio)(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends o.XFAObject{constructor(e){super(f,"bind",!0);this.match=(0,c.getStringOption)(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends o.XFAObject{constructor(e){super(f,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}t.BindItems=BindItems;class Bookend extends o.XFAObject{constructor(e){super(f,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends o.Option01{constructor(e){super(f,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](e){return valueToHtml(1===this[r.$content]?"1":"0")}}class Border extends o.XFAObject{constructor(e){super(f,"border",!0);this.break=(0,c.getStringOption)(e.break,["close","open"]);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new o.XFAObjectArray(4);this.edge=new o.XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[r.$getExtra](){if(!this[r.$extra]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let a=e.length;a<4;a++)e.push(t)}const t=e.map((e=>e.thickness)),a=[0,0,0,0];if(this.margin){a[0]=this.margin.topInset;a[1]=this.margin.rightInset;a[2]=this.margin.bottomInset;a[3]=this.margin.leftInset}this[r.$extra]={widths:t,insets:a,edges:e}}return this[r.$extra]}[r.$toStyle](){const{edges:e}=this[r.$getExtra](),t=e.map((e=>{const t=e[r.$toStyle]();t.color||="#000000";return t})),a=Object.create(null);this.margin&&Object.assign(a,this.margin[r.$toStyle]());"visible"===this.fill?.presence&&Object.assign(a,this.fill[r.$toStyle]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[r.$toStyle]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let a=e.length;a<4;a++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=t.map((e=>e.style)).join(" ")}a.borderWidth=t.map((e=>e.width)).join(" ");a.borderColor=t.map((e=>e.color)).join(" ");return a}}class Break extends o.XFAObject{constructor(e){super(f,"break",!0);this.after=(0,c.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=(0,c.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends o.XFAObject{constructor(e){super(f,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends o.XFAObject{constructor(e){super(f,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[r.$toHTML](e){this[r.$extra]={};return c.HTMLResult.FAILURE}}class Button extends o.XFAObject{constructor(e){super(f,"button",!0);this.highlight=(0,c.getStringOption)(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toHTML](e){const t=this[r.$getParent]()[r.$getParent](),a={name:"button",attributes:{id:this[r.$uid],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=(0,u.recoverJsURL)(e.script[r.$content]);if(!t)continue;const n=(0,s.fixURL)(t.url);n&&a.children.push({name:"a",attributes:{id:"link"+this[r.$uid],href:n,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return c.HTMLResult.success(a)}}class Calculate extends o.XFAObject{constructor(e){super(f,"calculate",!0);this.id=e.id||"";this.override=(0,c.getStringOption)(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends o.XFAObject{constructor(e){super(f,"caption",!0);this.id=e.id||"";this.placement=(0,c.getStringOption)(e.placement,["left","bottom","inline","right","top"]);this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil((0,c.getMeasurement)(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[r.$setValue](e){_setValue(this,e)}[r.$getExtra](e){if(!this[r.$extra]){let{width:t,height:a}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":a=this.reserve<=0?a:this.reserve}this[r.$extra]=(0,s.layoutNode)(this,{width:t,height:a})}return this[r.$extra]}[r.$toHTML](e){if(!this.value)return c.HTMLResult.EMPTY;this[r.$pushPara]();const t=this.value[r.$toHTML](e).html;if(!t){this[r.$popPara]();return c.HTMLResult.EMPTY}const a=this.reserve;if(this.reserve<=0){const{w:t,h:a}=this[r.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=a}}const n=[];"string"==typeof t?n.push({name:"#text",value:t}):n.push(t);const i=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=(0,s.measureToString)(this.reserve))}(0,s.setPara)(this,null,t);this[r.$popPara]();this.reserve=a;return c.HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:n})}}class Certificate extends o.StringObject{constructor(e){super(f,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends o.XFAObject{constructor(e){super(f,"certificates",!0);this.credentialServerPolicy=(0,c.getStringOption)(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends o.XFAObject{constructor(e){super(f,"checkButton",!0);this.id=e.id||"";this.mark=(0,c.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=(0,c.getStringOption)(e.shape,["square","round"]);this.size=(0,c.getMeasurement)(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)("margin"),a=(0,s.measureToString)(this.size);t.width=t.height=a;let n,i,o;const l=this[r.$getParent]()[r.$getParent](),h=l.items.children.length&&l.items.children[0][r.$toHTML]().html||[],u={on:(void 0!==h[0]?h[0]:"on").toString(),off:(void 0!==h[1]?h[1]:"off").toString()},d=(l.value?.[r.$text]()||"off")===u.on||void 0,f=l[r.$getSubformParent](),g=l[r.$uid];let p;if(f instanceof ExclGroup){o=f[r.$uid];n="radio";i="xfaRadio";p=f[r.$data]?.[r.$uid]||f[r.$uid]}else{n="checkbox";i="xfaCheckbox";p=l[r.$data]?.[r.$uid]||l[r.$uid]}const m={name:"input",attributes:{class:[i],style:t,fieldId:g,dataId:p,type:n,checked:d,xfaOn:u.on,xfaOff:u.off,"aria-label":ariaLabel(l),"aria-required":!1}};o&&(m.attributes.name=o);if(isRequired(l)){m.attributes["aria-required"]=!0;m.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class ChoiceList extends o.XFAObject{constructor(e){super(f,"choiceList",!0);this.commitOn=(0,c.getStringOption)(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=(0,c.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=(0,c.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","margin"),a=this[r.$getParent]()[r.$getParent](),n={fontSize:`calc(${a.font?.size||10}px * var(--scale-factor))`},i=[];if(a.items.children.length>0){const e=a.items;let t=0,s=0;if(2===e.children.length){t=e.children[0].save;s=1-t}const o=e.children[t][r.$toHTML]().html,c=e.children[s][r.$toHTML]().html;let l=!1;const h=a.value?.[r.$text]()||"";for(let e=0,t=o.length;ee>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends o.XFAObject{constructor(e){super(f,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=(0,c.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends o.XFAObject{constructor(e){super(f,"contentArea",!0);this.h=(0,c.getMeasurement)(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=(0,c.getMeasurement)(e.w);this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null}[r.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},a=["xfaContentarea"];(0,s.isPrintOnly)(this)&&a.push("xfaPrintOnly");return c.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:a,id:this[r.$uid]}})}}class Corner extends o.XFAObject{constructor(e){super(f,"corner",!0);this.id=e.id||"";this.inverted=(0,c.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=(0,c.getStringOption)(e.join,["square","round"]);this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.radius=(0,c.getMeasurement)(e.radius);this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");e.radius=(0,s.measureToString)("square"===this.join?0:this.radius);return e}}class DateElement extends o.ContentObject{constructor(e){super(f,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTime extends o.ContentObject{constructor(e){super(f,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTimeEdit extends o.XFAObject{constructor(e){super(f,"dateTimeEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=(0,c.getStringOption)(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]?.[r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){n.attributes["aria-required"]=!0;n.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Decimal extends o.ContentObject{constructor(e){super(f,"decimal");this.fracDigits=(0,c.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=(0,c.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class DefaultUi extends o.XFAObject{constructor(e){super(f,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends o.XFAObject{constructor(e){super(f,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}}class DigestMethod extends o.OptionObject{constructor(e){super(f,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends o.XFAObject{constructor(e){super(f,"digestMethods",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new o.XFAObjectArray}}class Draw extends o.XFAObject{constructor(e){super(f,"draw",!0);this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new o.XFAObjectArray}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);this[r.$pushPara]();const t=this.w,a=this.h,{w:n,h:o,isBroken:l}=(0,s.layoutNode)(this,e);if(n&&""===this.w){if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return c.HTMLResult.FAILURE}this.w=n}o&&""===this.h&&(this.h=o);setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e)){this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.FAILURE}unsetFirstUnsplittable(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h);if(h.margin){h.padding=h.margin;delete h.margin}const u=["xfaDraw"];this.font&&u.push("xfaFont");(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[r.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]};applyAssist(this,d);const g=(0,s.computeBbox)(this,f,e),p=this.value?this.value[r.$toHTML](e).html:null;if(null===p){this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.success((0,s.createWrapper)(this,f),g)}f.children.push(p);(0,s.setPara)(this,h,p);this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.success((0,s.createWrapper)(this,f),g)}}class Edge extends o.XFAObject{constructor(e){super(f,"edge",!0);this.cap=(0,c.getStringOption)(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");Object.assign(e,{linecap:this.cap,width:(0,s.measureToString)(this.thickness),color:this.color?this.color[r.$toStyle]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends o.OptionObject{constructor(e){super(f,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends o.XFAObject{constructor(e){super(f,"encodings",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new o.XFAObjectArray}}class Encrypt extends o.XFAObject{constructor(e){super(f,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends o.XFAObject{constructor(e){super(f,"encryptData",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends o.XFAObject{constructor(e){super(f,"encryption",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class EncryptionMethod extends o.OptionObject{constructor(e){super(f,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends o.XFAObject{constructor(e){super(f,"encryptionMethods",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new o.XFAObjectArray}}class Event extends o.XFAObject{constructor(e){super(f,"event",!0);this.activity=(0,c.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=(0,c.getStringOption)(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends o.ContentObject{constructor(e){super(f,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=(0,c.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$isCDATAXml](){return"text/html"===this.contentType}[r.$onChild](e){if("text/html"===this.contentType&&e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}if("text/xml"===this.contentType){this[r.$content]=e;return!0}return!1}[r.$toHTML](e){return"text/html"===this.contentType&&this[r.$content]?this[r.$content][r.$toHTML](e):c.HTMLResult.EMPTY}}class ExObject extends o.XFAObject{constructor(e){super(f,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}}class ExclGroup extends o.XFAObject{constructor(e){super(f,"exclGroup",!0);this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray}[r.$isBindable](){return!0}[r.$hasSettableValue](){return!0}[r.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[r.$appendChild](e);t.value=e}t.value[r.$setValue](e)}}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,attributes:a,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$isSplittable]();n||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const o=new Set(["field"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u);(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly");a.style=l;a.class=h;this.name&&(a.xfaName=this.name);this[r.$pushPara]();const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[r.$extra].attempte>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new o.XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray}[r.$isBindable](){return!0}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[r.$globalData]=this[r.$globalData];this[r.$appendChild](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[r.$appendChild](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;this.caption&&delete this.caption[r.$extra];this[r.$pushPara]();const t=this.caption?this.caption[r.$toHTML](e).html:null,a=this.w,n=this.h;let o=0,l=0;if(this.margin){o=this.margin.leftInset+this.margin.rightInset;l=this.margin.topInset+this.margin.bottomInset}let u=null;if(""===this.w||""===this.h){let t=null,a=null,n=0,i=0;if(this.ui.checkButton)n=i=this.ui.checkButton.size;else{const{w:t,h:a}=(0,s.layoutNode)(this,e);if(null!==t){n=t;i=a}else i=(0,h.getMetrics)(this.font,!0).lineNoGap}u=getBorderDims(this.ui[r.$getExtra]());n+=u.w;i+=u.h;if(this.caption){const{w:s,h:o,isBroken:l}=this.caption[r.$getExtra](e);if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return c.HTMLResult.FAILURE}t=s;a=o;switch(this.caption.placement){case"left":case"right":case"inline":t+=n;break;case"top":case"bottom":a+=i}}else{t=n;a=i}if(t&&""===this.w){t+=o;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends o.ContentObject{constructor(e){super(f,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Font extends o.XFAObject{constructor(e){super(f,"font",!0);this.baselineShift=(0,c.getMeasurement)(e.baselineShift);this.fontHorizontalScale=(0,c.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=(0,c.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=(0,c.getStringOption)(e.kerningMode,["none","pair"]);this.letterSpacing=(0,c.getMeasurement)(e.letterSpacing,"0");this.lineThrough=(0,c.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=(0,c.getStringOption)(e.lineThroughPeriod,["all","word"]);this.overline=(0,c.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=(0,c.getStringOption)(e.overlinePeriod,["all","word"]);this.posture=(0,c.getStringOption)(e.posture,["normal","italic"]);this.size=(0,c.getMeasurement)(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=(0,c.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=(0,c.getStringOption)(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=(0,c.getStringOption)(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[r.$clean](e){super[r.$clean](e);this[r.$globalData].usedTypefaces.add(this.typeface)}[r.$toStyle](){const e=(0,s.toStyle)(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=(0,s.measureToString)(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=(0,s.measureToString)(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=(0,s.measureToString)(.99*this.size);(0,s.setFontFamily)(this,this,this[r.$globalData].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends o.XFAObject{constructor(e){super(f,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends o.StringObject{constructor(e){super(f,"handler");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends o.XFAObject{constructor(e){super(f,"hyphenation");this.excludeAllCaps=(0,c.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=(0,c.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=(0,c.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=(0,c.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=(0,c.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=(0,c.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends o.StringObject{constructor(e){super(f,"image");this.aspect=(0,c.getStringOption)(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](){if(this.contentType&&!m.has(this.contentType.toLowerCase()))return c.HTMLResult.EMPTY;let e=this[r.$globalData].images&&this[r.$globalData].images.get(this.href);if(!e&&(this.href||!this[r.$content]))return c.HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=(0,l.stringToBytes)(atob(this[r.$content])));if(!e)return c.HTMLResult.EMPTY;if(!this.contentType){for(const[t,a]of b)if(e.length>t.length&&t.every(((t,a)=>t===e[a]))){this.contentType=a;break}if(!this.contentType)return c.HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let a;switch(this.aspect){case"fit":case"actual":break;case"height":a={height:"100%",objectFit:"fill"};break;case"none":a={width:"100%",height:"100%",objectFit:"fill"};break;case"width":a={width:"100%",objectFit:"fill"}}const n=this[r.$getParent]();return c.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:a,src:URL.createObjectURL(t),alt:n?ariaLabel(n[r.$getParent]()):null}})}}class ImageEdit extends o.XFAObject{constructor(e){super(f,"imageEdit",!0);this.data=(0,c.getStringOption)(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){return"embed"===this.data?c.HTMLResult.success({name:"div",children:[],attributes:{}}):c.HTMLResult.EMPTY}}class Integer extends o.ContentObject{constructor(e){super(f,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseInt(this[r.$content].trim(),10);this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Issuers extends o.XFAObject{constructor(e){super(f,"issuers",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class Items extends o.XFAObject{constructor(e){super(f,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=(0,c.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}[r.$toHTML](){const e=[];for(const t of this[r.$getChildren]())e.push(t[r.$text]());return c.HTMLResult.success(e)}}t.Items=Items;class Keep extends o.XFAObject{constructor(e){super(f,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,c.getStringOption)(e.intact,t);this.next=(0,c.getStringOption)(e.next,t);this.previous=(0,c.getStringOption)(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends o.XFAObject{constructor(e){super(f,"keyUsage");const t=["","yes","no"];this.crlSign=(0,c.getStringOption)(e.crlSign,t);this.dataEncipherment=(0,c.getStringOption)(e.dataEncipherment,t);this.decipherOnly=(0,c.getStringOption)(e.decipherOnly,t);this.digitalSignature=(0,c.getStringOption)(e.digitalSignature,t);this.encipherOnly=(0,c.getStringOption)(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=(0,c.getStringOption)(e.keyAgreement,t);this.keyCertSign=(0,c.getStringOption)(e.keyCertSign,t);this.keyEncipherment=(0,c.getStringOption)(e.keyEncipherment,t);this.nonRepudiation=(0,c.getStringOption)(e.nonRepudiation,t);this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends o.XFAObject{constructor(e){super(f,"line",!0);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=(0,c.getStringOption)(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[r.$toHTML](){const e=this[r.$getParent]()[r.$getParent](),t=this.edge||new Edge({}),a=t[r.$toStyle](),n=Object.create(null),i="visible"===t.presence?t.thickness:0;n.strokeWidth=(0,s.measureToString)(i);n.stroke=a.color;let o,l,h,u,d="100%",f="100%";if(e.w<=i){[o,l,h,u]=["50%",0,"50%","100%"];d=n.strokeWidth}else if(e.h<=i){[o,l,h,u]=[0,"50%","100%","50%"];f=n.strokeWidth}else"\\"===this.slope?[o,l,h,u]=[0,0,"100%","100%"]:[o,l,h,u]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:g,x1:o,y1:l,x2:h,y2:u,style:n}}],attributes:{xmlns:g,width:d,height:f,style:{overflow:"visible"}}};if(hasMargin(e))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]});p.attributes.style.position="absolute";return c.HTMLResult.success(p)}}class Linear extends o.XFAObject{constructor(e){super(f,"linear",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[r.$toStyle]():"#000000"})`}}class LockDocument extends o.ContentObject{constructor(e){super(f,"lockDocument");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=(0,c.getStringOption)(this[r.$content],["auto","0","1"])}}class Manifest extends o.XFAObject{constructor(e){super(f,"manifest",!0);this.action=(0,c.getStringOption)(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new o.XFAObjectArray}}class Margin extends o.XFAObject{constructor(e){super(f,"margin",!0);this.bottomInset=(0,c.getMeasurement)(e.bottomInset,"0");this.id=e.id||"";this.leftInset=(0,c.getMeasurement)(e.leftInset,"0");this.rightInset=(0,c.getMeasurement)(e.rightInset,"0");this.topInset=(0,c.getMeasurement)(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class Mdp extends o.XFAObject{constructor(e){super(f,"mdp");this.id=e.id||"";this.permissions=(0,c.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=(0,c.getStringOption)(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends o.XFAObject{constructor(e){super(f,"medium");this.id=e.id||"";this.imagingBBox=(0,c.getBBox)(e.imagingBBox);this.long=(0,c.getMeasurement)(e.long);this.orientation=(0,c.getStringOption)(e.orientation,["portrait","landscape"]);this.short=(0,c.getMeasurement)(e.short);this.stock=e.stock||"";this.trayIn=(0,c.getStringOption)(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=(0,c.getStringOption)(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends o.XFAObject{constructor(e){super(f,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new o.XFAObjectArray}}class NumericEdit extends o.XFAObject{constructor(e){super(f,"numericEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]?.[r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){n.attributes["aria-required"]=!0;n.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Occur extends o.XFAObject{constructor(e){super(f,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?(0,c.getInteger)({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?(0,c.getInteger)({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?(0,c.getInteger)({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$clean](){const e=this[r.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=(0,c.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=(0,c.getStringOption)(e.oddOrEven,["any","even","odd"]);this.pagePosition=(0,c.getStringOption)(e.pagePosition,["any","first","last","only","rest"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new o.XFAObjectArray;this.contentArea=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.subform=new o.XFAObjectArray}[r.$isUsable](){if(!this[r.$extra]){this[r.$extra]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[r.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return n||this.pageArea.children[0]}}class Para extends o.XFAObject{constructor(e){super(f,"para",!0);this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?(0,c.getMeasurement)(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?(0,c.getMeasurement)(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?(0,c.getMeasurement)(e.marginRight,"0pt"):"";this.orphans=(0,c.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?(0,c.getMeasurement)(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?(0,c.getMeasurement)(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?(0,c.getMeasurement)(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?(0,c.getMeasurement)(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?(0,c.getMeasurement)(e):e));this.textIndent=e.textIndent?(0,c.getMeasurement)(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=(0,c.getStringOption)(e.vAlign,["top","bottom","middle"]);this.widows=(0,c.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft));""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow));if(""!==this.textIndent){e.textIndent=(0,s.measureToString)(this.textIndent);(0,s.fixTextIndent)(e)}this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight));""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[r.$toStyle]());return e}}class PasswordEdit extends o.XFAObject{constructor(e){super(f,"passwordEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class Pattern extends o.XFAObject{constructor(e){super(f,"pattern",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000",a="repeating-linear-gradient",n=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${a}(to top,${n}) ${a}(to right,${n})`;case"crossDiagonal":return`${a}(45deg,${n}) ${a}(-45deg,${n})`;case"diagonalLeft":return`${a}(45deg,${n})`;case"diagonalRight":return`${a}(-45deg,${n})`;case"horizontal":return`${a}(to top,${n})`;case"vertical":return`${a}(to right,${n})`}return""}}class Picture extends o.StringObject{constructor(e){super(f,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends o.XFAObject{constructor(e){super(f,"proto",!0);this.appearanceFilter=new o.XFAObjectArray;this.arc=new o.XFAObjectArray;this.area=new o.XFAObjectArray;this.assist=new o.XFAObjectArray;this.barcode=new o.XFAObjectArray;this.bindItems=new o.XFAObjectArray;this.bookend=new o.XFAObjectArray;this.boolean=new o.XFAObjectArray;this.border=new o.XFAObjectArray;this.break=new o.XFAObjectArray;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.button=new o.XFAObjectArray;this.calculate=new o.XFAObjectArray;this.caption=new o.XFAObjectArray;this.certificate=new o.XFAObjectArray;this.certificates=new o.XFAObjectArray;this.checkButton=new o.XFAObjectArray;this.choiceList=new o.XFAObjectArray;this.color=new o.XFAObjectArray;this.comb=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.contentArea=new o.XFAObjectArray;this.corner=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.dateTimeEdit=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.defaultUi=new o.XFAObjectArray;this.desc=new o.XFAObjectArray;this.digestMethod=new o.XFAObjectArray;this.digestMethods=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.edge=new o.XFAObjectArray;this.encoding=new o.XFAObjectArray;this.encodings=new o.XFAObjectArray;this.encrypt=new o.XFAObjectArray;this.encryptData=new o.XFAObjectArray;this.encryption=new o.XFAObjectArray;this.encryptionMethod=new o.XFAObjectArray;this.encryptionMethods=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.execute=new o.XFAObjectArray;this.extras=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.fill=new o.XFAObjectArray;this.filter=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.font=new o.XFAObjectArray;this.format=new o.XFAObjectArray;this.handler=new o.XFAObjectArray;this.hyphenation=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.imageEdit=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.issuers=new o.XFAObjectArray;this.items=new o.XFAObjectArray;this.keep=new o.XFAObjectArray;this.keyUsage=new o.XFAObjectArray;this.line=new o.XFAObjectArray;this.linear=new o.XFAObjectArray;this.lockDocument=new o.XFAObjectArray;this.manifest=new o.XFAObjectArray;this.margin=new o.XFAObjectArray;this.mdp=new o.XFAObjectArray;this.medium=new o.XFAObjectArray;this.message=new o.XFAObjectArray;this.numericEdit=new o.XFAObjectArray;this.occur=new o.XFAObjectArray;this.oid=new o.XFAObjectArray;this.oids=new o.XFAObjectArray;this.overflow=new o.XFAObjectArray;this.pageArea=new o.XFAObjectArray;this.pageSet=new o.XFAObjectArray;this.para=new o.XFAObjectArray;this.passwordEdit=new o.XFAObjectArray;this.pattern=new o.XFAObjectArray;this.picture=new o.XFAObjectArray;this.radial=new o.XFAObjectArray;this.reason=new o.XFAObjectArray;this.reasons=new o.XFAObjectArray;this.rectangle=new o.XFAObjectArray;this.ref=new o.XFAObjectArray;this.script=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray;this.signData=new o.XFAObjectArray;this.signature=new o.XFAObjectArray;this.signing=new o.XFAObjectArray;this.solid=new o.XFAObjectArray;this.speak=new o.XFAObjectArray;this.stipple=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray;this.subjectDN=new o.XFAObjectArray;this.subjectDNs=new o.XFAObjectArray;this.submit=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.textEdit=new o.XFAObjectArray;this.time=new o.XFAObjectArray;this.timeStamp=new o.XFAObjectArray;this.toolTip=new o.XFAObjectArray;this.traversal=new o.XFAObjectArray;this.traverse=new o.XFAObjectArray;this.ui=new o.XFAObjectArray;this.validate=new o.XFAObjectArray;this.value=new o.XFAObjectArray;this.variables=new o.XFAObjectArray}}class Radial extends o.XFAObject{constructor(e){super(f,"radial",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends o.StringObject{constructor(e){super(f,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends o.XFAObject{constructor(e){super(f,"reasons",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new o.XFAObjectArray}}class Rectangle extends o.XFAObject{constructor(e){super(f,"rectangle",!0);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new o.XFAObjectArray(4);this.edge=new o.XFAObjectArray(4);this.fill=null}[r.$toHTML](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[r.$toStyle](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;const n=(this.corner.children.length?this.corner.children[0]:new Corner({}))[r.$toStyle](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:g,width:"100%",height:"100%",x:0,y:0,rx:n.radius,ry:n.radius,style:a}}],attributes:{xmlns:g,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return c.HTMLResult.success(i)}}class RefElement extends o.StringObject{constructor(e){super(f,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends o.StringObject{constructor(e){super(f,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=(0,c.getStringOption)(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends o.XFAObject{constructor(e){super(f,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}t.SetProperty=SetProperty;class SignData extends o.XFAObject{constructor(e){super(f,"signData",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends o.XFAObject{constructor(e){super(f,"signature",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends o.XFAObject{constructor(e){super(f,"signing",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class Solid extends o.XFAObject{constructor(e){super(f,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](e){return e?e[r.$toStyle]():"#FFFFFF"}}class Speak extends o.StringObject{constructor(e){super(f,"speak");this.disable=(0,c.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=(0,c.getStringOption)(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends o.XFAObject{constructor(e){super(f,"stipple",!0);this.id=e.id||"";this.rate=(0,c.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){const t=this.rate/100;return l.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends o.XFAObject{constructor(e){super(f,"subform",!0);this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=(0,c.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:(0,c.getMeasurement)(e)));this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.mergeMode=(0,c.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]);this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.restoreState=(0,c.getStringOption)(e.restoreState,["manual","auto"]);this.scope=(0,c.getStringOption)(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new o.XFAObjectArray;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.proto=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}[r.$getSubformParent](){const e=this[r.$getParent]();return e instanceof SubformSet?e[r.$getSubformParent]():e}[r.$isBindable](){return!0}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[r.$extra]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$toHTML](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.overflow.push(e)}this[r.$removeChild](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,l.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return c.HTMLResult.breakNode(e)}if(this[r.$extra]?.afterBreakAfter)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,line:null,attributes:a,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$getTemplateRoot](),o=n[r.$extra].noLayoutFailure,h=this[r.$isSplittable]();h||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const u=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const d=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),f=["xfaSubform"],g=(0,s.layoutClass)(this);g&&f.push(g);a.style=d;a.class=f;this.name&&(a.xfaName=this.name);if(this.overflow){const t=this.overflow[r.$getExtra]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[r.$pushPara]();const p="lr-tb"===this.layout||"rl-tb"===this.layout,m=p?2:1;for(;this[r.$extra].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[r.$extra].afterBreakAfter=k;return c.HTMLResult.breakNode(e)}}delete this[r.$extra];return k}}class SubformSet extends o.XFAObject{constructor(e){super(f,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=(0,c.getStringOption)(e.relation,["ordered","choice","unordered"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$getSubformParent](){let e=this[r.$getParent]();for(;!(e instanceof Subform);)e=e[r.$getParent]();return e}[r.$isBindable](){return!0}}class SubjectDN extends o.ContentObject{constructor(e){super(f,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=new Map(this[r.$content].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends o.XFAObject{constructor(e){super(f,"subjectDNs",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new o.XFAObjectArray}}class Submit extends o.XFAObject{constructor(e){super(f,"submit",!0);this.embedPDF=(0,c.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=(0,c.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=(0,c.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new o.XFAObjectArray;this.signData=new o.XFAObjectArray}}class Template extends o.XFAObject{constructor(e){super(f,"template",!0);this.baseProfile=(0,c.getStringOption)(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new o.XFAObjectArray}[r.$finalize](){0===this.subform.children.length&&(0,l.warn)("XFA - No subforms in template node.");this.subform.children.length>=2&&(0,l.warn)("XFA - Several subforms in template node: please file a bug.");this[r.$tabIndex]=5e3}[r.$isSplittable](){return!0}[r.$searchNode](e,t){return e.startsWith("#")?[this[r.$ids].get(e.slice(1))]:(0,d.searchNode)(this,t,e,!0,!0)}*[r.$toPages](){if(!this.subform.children.length)return c.HTMLResult.success({name:"div",children:[]});this[r.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[r.$cleanPage]();const t=e.pageSet.pageArea.children,a={name:"div",children:[]};let n=null,i=null,s=null;if(e.breakBefore.children.length>=1){i=e.breakBefore.children[0];s=i.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){i=e.subform.children[0].breakBefore.children[0];s=i.target}else if(e.break?.beforeTarget){i=e.break;s=i.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){i=e.subform.children[0].break;s=i.beforeTarget}if(i){const e=this[r.$searchNode](s,i[r.$getParent]());if(e instanceof PageArea){n=e;i[r.$extra]={}}}n||(n=t[0]);n[r.$extra]={numberOfUse:1};const o=n[r.$getParent]();o[r.$extra]={numberOfUse:1,pageIndex:o.pageArea.children.indexOf(n),pageSetIndex:0};let h,u=null,d=null,f=!0,g=0,p=0;for(;;){if(f)g=0;else{a.children.pop();if(3==++g){(0,l.warn)("XFA - Something goes wrong: please file a bug.");return a}}h=null;this[r.$extra].currentPageArea=n;const t=n[r.$toHTML]().html;a.children.push(t);if(u){this[r.$extra].noLayoutFailure=!0;t.children.push(u[r.$toHTML](n[r.$extra].space).html);u=null}if(d){this[r.$extra].noLayoutFailure=!0;t.children.push(d[r.$toHTML](n[r.$extra].space).html);d=null}const i=n.contentArea.children,s=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));f=!1;this[r.$extra].firstUnsplittable=null;this[r.$extra].noLayoutFailure=!1;const flush=t=>{const a=e[r.$flushHTML]();if(a){f||=a.children?.length>0;s[t].children.push(a)}};for(let t=p,n=i.length;t0;s[t].children.push(c.html)}else!f&&a.children.length>1&&a.children.pop();return a}if(c.isBreak()){const e=c.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){u=this[r.$searchNode](e.leader,e[r.$getParent]());u=u?u[0]:null}if(e.trailer){d=this[r.$searchNode](e.trailer,e[r.$getParent]());d=d?d[0]:null}if("pageArea"===e.targetType){h=e[r.$extra].target;t=1/0}else if(e[r.$extra].target){h=e[r.$extra].target;p=e[r.$extra].index+1;t=1/0}else t=e[r.$extra].index}else if(this[r.$extra].overflowNode){const e=this[r.$extra].overflowNode;this[r.$extra].overflowNode=null;const a=e[r.$getExtra](),n=a.target;a.addLeader=null!==a.leader;a.addTrailer=null!==a.trailer;flush(t);const s=t;t=1/0;if(n instanceof PageArea)h=n;else if(n instanceof ContentArea){const e=i.indexOf(n);if(-1!==e)e>s?t=e-1:p=e;else{h=n[r.$getParent]();p=h.contentArea.children.indexOf(n)}}}else flush(t)}this[r.$extra].pageNumber+=1;h&&(h[r.$isUsable]()?h[r.$extra].numberOfUse+=1:h=null);n=h||n[r.$getNextPage]();yield null}}}t.Template=Template;class Text extends o.ContentObject{constructor(e){super(f,"text");this.id=e.id||"";this.maxChars=(0,c.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$acceptWhitespace](){return!0}[r.$onChild](e){if(e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}(0,l.warn)(`XFA - Invalid content in Text: ${e[r.$nodeName]}.`);return!1}[r.$onText](e){this[r.$content]instanceof o.XFAObject||super[r.$onText](e)}[r.$finalize](){"string"==typeof this[r.$content]&&(this[r.$content]=this[r.$content].replaceAll("\r\n","\n"))}[r.$getExtra](){return"string"==typeof this[r.$content]?this[r.$content].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[r.$content][r.$text]()}[r.$toHTML](e){if("string"==typeof this[r.$content]){const e=valueToHtml(this[r.$content]).html;if(this[r.$content].includes("\u2029")){e.name="div";e.children=[];this[r.$content].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[r.$content])){e.name="div";e.children=[];this[r.$content].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return c.HTMLResult.success(e)}return this[r.$content][r.$toHTML](e)}}t.Text=Text;class TextEdit extends o.XFAObject{constructor(e){super(f,"textEdit",!0);this.allowRichText=(0,c.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=(0,c.getInteger)({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=(0,c.getStringOption)(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin");let a;const n=this[r.$getParent]()[r.$getParent]();""===this.multiLine&&(this.multiLine=n instanceof Draw?1:0);a=1===this.multiLine?{name:"textarea",attributes:{dataId:n[r.$data]?.[r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:n[r.$data]?.[r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}};if(isRequired(n)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Time extends o.StringObject{constructor(e){super(f,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class TimeStamp extends o.XFAObject{constructor(e){super(f,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends o.StringObject{constructor(e){super(f,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends o.XFAObject{constructor(e){super(f,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new o.XFAObjectArray}}class Traverse extends o.XFAObject{constructor(e){super(f,"traverse",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[r.$isTransparent](){return!1}}class Ui extends o.XFAObject{constructor(e){super(f,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[r.$getExtra](){if(void 0===this[r.$extra]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof o.XFAObject){this[r.$extra]=t;return t}}this[r.$extra]=null}return this[r.$extra]}[r.$toHTML](e){const t=this[r.$getExtra]();return t?t[r.$toHTML](e):c.HTMLResult.EMPTY}}class Validate extends o.XFAObject{constructor(e){super(f,"validate",!0);this.formatTest=(0,c.getStringOption)(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=(0,c.getStringOption)(e.nullTest,["disabled","error","warning"]);this.scriptTest=(0,c.getStringOption)(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends o.XFAObject{constructor(e){super(f,"value",!0);this.id=e.id||"";this.override=(0,c.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[r.$setValue](e){const t=this[r.$getParent]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[r.$appendChild](this.image)}this.image[r.$content]=e[r.$content];return}const a=e[r.$nodeName];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof o.XFAObject){this[e]=null;this[r.$removeChild](t)}}this[e[r.$nodeName]]=e;this[r.$appendChild](e)}else this[a][r.$content]=e[r.$content]}[r.$text](){if(this.exData)return"string"==typeof this.exData[r.$content]?this.exData[r.$content].trim():this.exData[r.$content][r.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return(t[r.$content]||"").toString().trim()}return null}[r.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const a=this[t];if(a instanceof o.XFAObject)return a[r.$toHTML](e)}return c.HTMLResult.EMPTY}}t.Value=Value;class Variables extends o.XFAObject{constructor(e){super(f,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.manifest=new o.XFAObjectArray;this.script=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}[r.$isTransparent](){return!0}}class TemplateNamespace{static[n.$buildXFAObject](e,t){if(TemplateNamespace.hasOwnProperty(e)){const a=TemplateNamespace[e](t);a[r.$setSetAttributes](t);return a}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}t.TemplateNamespace=TemplateNamespace},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceIds=t.$buildXFAObject=void 0;const a=Symbol();t.$buildXFAObject=a;t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.addHTML=function addHTML(e,t,a){const i=e[r.$extra],s=i.availableSpace,[o,c,l,h]=a;switch(e.layout){case"position":i.width=Math.max(i.width,o+l);i.height=Math.max(i.height,c+h);i.children.push(t);break;case"lr-tb":case"rl-tb":if(!i.line||1===i.attempt){i.line=createLine(e,[]);i.children.push(i.line);i.numberInLine=0}i.numberInLine+=1;i.line.children.push(t);if(0===i.attempt){i.currentWidth+=l;i.height=Math.max(i.height,i.prevHeight+h)}else{i.currentWidth=l;i.prevHeight=i.height;i.height+=h;i.attempt=0}i.width=Math.max(i.width,i.currentWidth);break;case"rl-row":case"row":{i.children.push(t);i.width+=l;i.height=Math.max(i.height,h);const e=(0,n.measureToString)(i.height);for(const t of i.children)t.attributes.style.height=e;break}case"table":case"tb":i.width=Math.min(s.width,Math.max(i.width,l));i.height+=h;i.children.push(t)}};t.checkDimensions=function checkDimensions(e,t){if(null===e[r.$getTemplateRoot]()[r.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[r.$getSubformParent](),n=a[r.$extra]?.attempt||0,[,i,s,o]=function getTransformedBBox(e){let t,a,r=""===e.w?NaN:e.w,n=""===e.h?NaN:e.h,[i,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[i,s]=[r/2,n];break;case"bottomLeft":[i,s]=[0,n];break;case"bottomRight":[i,s]=[r,n];break;case"middleCenter":[i,s]=[r/2,n/2];break;case"middleLeft":[i,s]=[0,n/2];break;case"middleRight":[i,s]=[r,n/2];break;case"topCenter":[i,s]=[r/2,0];break;case"topRight":[i,s]=[r,0]}switch(e.rotate||0){case 0:[t,a]=[-i,-s];break;case 90:[t,a]=[-s,i];[r,n]=[n,-r];break;case 180:[t,a]=[i,s];[r,n]=[-r,-n];break;case 270:[t,a]=[s,-i];[r,n]=[-n,r]}return[e.x+t+Math.min(0,r),e.y+a+Math.min(0,n),Math.abs(r),Math.abs(n)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===n?e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure?""!==e.w?Math.round(s-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(o-t.height)>2)&&(""!==e.w?Math.round(s-t.width)<=2||0===a[r.$extra].numberInLine&&t.height>2:t.width>2):!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||!(""!==e.h&&Math.round(o-t.height)>2)&&((""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2);case"table":case"tb":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||e[r.$isSplittable]()?(""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2:Math.round(o-t.height)<=2);case"position":if(e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure)return!0;if(""===e.h||Math.round(o+i-t.height)<=2)return!0;return o+i>e[r.$getTemplateRoot]()[r.$extra].currentContentArea.h;case"rl-row":case"row":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||Math.round(o-t.height)<=2);default:return!0}};t.flushHTML=function flushHTML(e){if(!e[r.$extra])return null;const t={name:"div",attributes:e[r.$extra].attributes,children:e[r.$extra].children};if(e[r.$extra].failingNode){const a=e[r.$extra].failingNode[r.$flushHTML]();a&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[a])):t.children.push(a))}if(0===t.children.length)return null;return t};t.getAvailableSpace=function getAvailableSpace(e){const t=e[r.$extra].availableSpace,a=e.margin?e.margin.topInset+e.margin.bottomInset:0,n=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[r.$extra].attempt?{width:t.width-n-e[r.$extra].currentWidth,height:t.height-a-e[r.$extra].prevHeight}:{width:t.width-n,height:t.height-a-e[r.$extra].height};case"rl-row":case"row":return{width:e[r.$extra].columnWidths.slice(e[r.$extra].currentColumn).reduce(((e,t)=>e+t)),height:t.height-n};case"table":case"tb":return{width:t.width-n,height:t.height-a-e[r.$extra].height};default:return t}};var r=a(78),n=a(83);function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.computeBbox=function computeBbox(e,t,a){let n;if(""!==e.w&&""!==e.h)n=[e.x,e.y,e.w,e.h];else{if(!a)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[r.$getSubformParent]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,a.width);t.attributes.style.width=measureToString(i)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[r.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,a.height);t.attributes.style.height=measureToString(s)}n=[e.x,e.y,i,s]}return n};t.createWrapper=function createWrapper(e,t){const{attributes:a}=t,{style:n}=a,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};a.class.push("xfaWrapped");if(e.border){const{widths:a,insets:s}=e.border[r.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],d=s[1]+s[3];switch(e.border.hand){case"even":l-=a[0]/2;h-=a[3]/2;o=`calc(100% + ${(a[1]+a[3])/2-d}px)`;c=`calc(100% + ${(a[0]+a[2])/2-u}px)`;break;case"left":l-=a[0];h-=a[3];o=`calc(100% + ${a[1]+a[3]-d}px)`;c=`calc(100% + ${a[0]+a[2]-u}px)`;break;case"right":o=d?`calc(100% - ${d}px)`:"100%";c=u?`calc(100% - ${u}px)`:"100%"}const f=["xfaBorder"];isPrintOnly(e.border)&&f.push("xfaPrintOnly");const g={name:"div",attributes:{class:f,style:{top:`${l}px`,left:`${h}px`,width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==n[e]){g.attributes.style[e]=n[e];delete n[e]}i.children.push(g,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==n[e]){i.attributes.style[e]=n[e];delete n[e]}i.attributes.style.position="absolute"===n.position?"absolute":"relative";delete n.position;if(n.alignSelf){i.attributes.style.alignSelf=n.alignSelf;delete n.alignSelf}return i};t.fixDimensions=function fixDimensions(e){const t=e[r.$getSubformParent]();if(t.layout?.includes("row")){const a=t[r.$extra],n=e.colSpan;let i;i=-1===n?a.columnWidths.slice(a.currentColumn).reduce(((e,t)=>e+t),0):a.columnWidths.slice(a.currentColumn,a.currentColumn+n).reduce(((e,t)=>e+t),0);isNaN(i)||(e.w=i)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))};t.fixTextIndent=function fixTextIndent(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const a="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),r=(0,i.getMeasurement)(e[a],"0px");e[a]=r-t+"px"};t.fixURL=function fixURL(e){const t=(0,n.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null};t.isPrintOnly=isPrintOnly;t.layoutClass=function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}};t.layoutNode=function layoutNode(e,t){let a=null,n=null,i=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;if(e.margin){s=e.margin.leftInset+e.margin.rightInset;o=e.margin.topInset+e.margin.bottomInset}let c=null,l=null;if(e.para){l=Object.create(null);c=""===e.para.lineHeight?null:e.para.lineHeight;l.top=""===e.para.spaceAbove?0:e.para.spaceAbove;l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;l.left=""===e.para.marginLeft?0:e.para.marginLeft;l.right=""===e.para.marginRight?0:e.para.marginRight}let h=e.font;if(!h){const t=e[r.$getTemplateRoot]();let a=e[r.$getParent]();for(;a&&a!==t;){if(a.font){h=a.font;break}a=a[r.$getParent]()}}const u=(e.w||t.width)-s,d=e[r.$globalData].fontFinder;if(e.value.exData&&e.value.exData[r.$content]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[r.$content],h,l,c,d,u);n=t.width;a=t.height;i=t.isBroken}else{const t=e.value[r.$text]();if(t){const e=layoutText(t,h,l,c,d,u);n=e.width;a=e.height;i=e.isBroken}}null===n||e.w||(n+=s);null===a||e.h||(a+=o)}return{w:n,h:a,isBroken:i}};t.measureToString=measureToString;t.setAccess=function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}};t.setFontFamily=function setFontFamily(e,t,a,r){if(!a){delete r.fontFamily;return}const n=(0,i.stripQuotes)(e.typeface);r.fontFamily=`"${n}"`;const o=a.find(n);if(o){const{fontFamily:a}=o.regular.cssFontInfo;a!==n&&(r.fontFamily=`"${a}"`);const i=getCurrentPara(t);if(i&&""!==i.lineHeight)return;if(r.lineHeight)return;const c=(0,s.selectFont)(e,o);c&&(r.lineHeight=Math.max(1.2,c.lineHeight))}};t.setMinMaxDimensions=function setMinMaxDimensions(e,t){if("position"===e[r.$getSubformParent]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}};t.setPara=function setPara(e,t,a){if(a.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const n=getCurrentPara(e);if(n){const e=a.attributes.style;e.display="flex";e.flexDirection="column";switch(n.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=n[r.$toStyle]();for(const[a,r]of Object.entries(t))a in e||(e[a]=r)}}};t.toStyle=function toStyle(e,...t){const a=Object.create(null);for(const i of t){const t=e[i];if(null!==t)if(l.hasOwnProperty(i))l[i](e,a);else if(t instanceof c.XFAObject){const e=t[r.$toStyle]();e?Object.assign(a,e):(0,n.warn)(`(DEBUG) - XFA - style for ${i} not implemented yet`)}}return a};var r=a(78),n=a(2),i=a(84),s=a(85),o=a(86),c=a(87);function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const l={anchorType(e,t){const a=e[r.$getSubformParent]();if(a&&(!a.layout||"position"===a.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const a=e[r.$getSubformParent]();let n=e.w;const i=e.h;if(a.layout?.includes("row")){const t=a[r.$extra],i=e.colSpan;let s;if(-1===i){s=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{s=t.columnWidths.slice(t.currentColumn,t.currentColumn+i).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(s)||(n=e.w=s)}t.width=""!==n?measureToString(n):"auto";t.height=""!==i?measureToString(i):"auto"},position(e,t){const a=e[r.$getSubformParent]();if(!a?.layout||"position"===a.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[r.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[r.$toStyle]().margin)}};function layoutText(e,t,a,n,i,s){const c=new o.TextMeasure(t,a,n,i);"string"==typeof e?c.addString(e):e[r.$pushGlyphs](c);return c.compute(s)}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[r.$getTemplateRoot]()[r.$extra].paraStack;return t.length?t.at(-1):null}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HTMLResult=void 0;t.getBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const a=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(a.length<4||a[2]<0||a[3]<0)return{x:t,y:t,width:t,height:t};const[r,n,i,s]=a;return{x:r,y:n,width:i,height:s}};t.getColor=function getColor(e,t=[0,0,0]){let[a,r,n]=t;if(!e)return{r:a,g:r,b:n};const i=e.trim().split(/\s*,\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(i.length<3)return{r:a,g:r,b:n};[a,r,n]=i;return{r:a,g:r,b:n}};t.getFloat=function getFloat({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseFloat(e);if(!isNaN(r)&&a(r))return r;return t};t.getInteger=function getInteger({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseInt(e,10);if(!isNaN(r)&&a(r))return r;return t};t.getKeyword=getKeyword;t.getMeasurement=getMeasurement;t.getRatio=function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[a,r]=t;return{num:a,den:r}};t.getRelevant=function getRelevant(e){if(!e)return[];return e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)})))};t.getStringOption=function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})};t.stripQuotes=function stripQuotes(e){if(e.startsWith("'")||e.startsWith('"'))return e.slice(1,-1);return e};var r=a(2);const n={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},i=/([+-]?\d+\.?\d*)(.*)/;function getKeyword({data:e,defaultValue:t,validate:a}){return e&&a(e=e.trim())?e:t}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const a=e.trim().match(i);if(!a)return getMeasurement(t);const[,r,s]=a,o=parseFloat(r);if(isNaN(o))return getMeasurement(t);if(0===o)return 0;const c=n[s];return c?c(o):o}class HTMLResult{static get FAILURE(){return(0,r.shadow)(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return(0,r.shadow)(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,a,r){this.success=e;this.html=t;this.bbox=a;this.breakNode=r}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}t.HTMLResult=HTMLResult},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontFinder=void 0;t.getMetrics=function getMetrics(e,t=!1){let a=null;if(e){const t=(0,n.stripQuotes)(e.typeface),i=e[r.$globalData].fontFinder.find(t);a=selectFont(e,i)}if(!a)return{lineHeight:12,lineGap:2,lineNoGap:10};const i=e.size||10,s=a.lineHeight?Math.max(t?0:1.2,a.lineHeight):1.2,o=void 0===a.lineGap?.2:a.lineGap;return{lineHeight:s*i,lineGap:o*i,lineNoGap:Math.max(1,s-o)*i}};t.selectFont=selectFont;var r=a(78),n=a(84),i=a(2);t.FontFinder=class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const a=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,a)}addPdfFont(e){const t=e.cssFontInfo,a=t.fontFamily;let r=this.fonts.get(a);if(!r){r=Object.create(null);this.fonts.set(a,r);this.defaultFont||(this.defaultFont=r)}let n="";const i=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?n=i>=700?"bolditalic":"italic":i>=700&&(n="bold");if(!n){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(n="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(n+="italic")}n||(n="regular");r[n]=e}getDefault(){return this.defaultFont}find(e,t=!0){let a=this.fonts.get(e)||this.cache.get(e);if(a)return a;const r=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let n=e.replaceAll(r,"");a=this.fonts.get(n);if(a){this.cache.set(e,a);return a}n=n.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(e);if(0===s.length){n=n.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(e);if(s.length>=1){1!==s.length&&t&&(0,i.warn)(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,s[0]);return s[0]}if(t&&!this.warned.has(e)){this.warned.add(e);(0,i.warn)(`XFA - Cannot find the font: ${e}`)}return null}};function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.TextMeasure=void 0;var r=a(85);class FontInfo{constructor(e,t,a,n){this.lineHeight=a;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(n);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=n.find(e.typeface);if(i){this.pdfFont=(0,r.selectFont)(e,i);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(n))}else[this.pdfFont,this.xfaFont]=this.defaultFont(n)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,a,r){this.fontFinder=r;this.stack=[new FontInfo(e,t,a,r)]}pushData(e,t,a){const r=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=r.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=r.paraMargin[e]);const n=new FontInfo(e,t,a||r.lineHeight,this.fontFinder);n.pdfFont||(n.pdfFont=r.pdfFont);this.stack.push(n)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}t.TextMeasure=class TextMeasure{constructor(e,t,a,r){this.glyphs=[];this.fontSelector=new FontSelector(e,t,a,r);this.extraHeight=0}pushData(e,t,a){this.fontSelector.pushData(e,t,a)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),a=t.xfaFont.size;if(t.pdfFont){const r=t.xfaFont.letterSpacing,n=t.pdfFont,i=n.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,i)*a,o=i-(void 0===n.lineGap?.2:n.lineGap),c=Math.max(1,o)*a,l=a/1e3,h=n.defaultWidth||n.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=n.encodeString(t).join(""),a=n.charsToGlyphs(e);for(const e of a){const t=e.width||h;this.glyphs.push([t*l+r,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([a,1.2*a,a,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,a=0,r=0,n=0,i=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le){r=Math.max(r,i);i=0;n+=s;s=m;t=-1;a=0;o=!0;c=!1}else{s=Math.max(m,s);a=i;i+=h;t=l}else if(i+h>e){n+=s;s=m;if(-1!==t){l=t;r=Math.max(r,a);i=0;t=-1;a=0}else{r=Math.max(r,i);i=h}o=!0;c=!1}else{i+=h;s=Math.max(m,s)}}r=Math.max(r,i);n+=s+this.extraHeight;return{width:1.02*r,height:n,isBroken:o}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=void 0;var r=a(78),n=a(84),i=a(2),s=a(3),o=a(81),c=a(88);const l=Symbol(),h=Symbol(),u=Symbol(),d=Symbol("_children"),f=Symbol(),g=Symbol(),p=Symbol(),m=Symbol(),b=Symbol(),y=Symbol(),w=Symbol(),S=Symbol(),x=Symbol(),C=Symbol("parent"),k=Symbol(),v=Symbol(),F=Symbol();let O=0;const T=o.NamespaceIds.datasets.id;class XFAObject{constructor(e,t,a=!1){this[r.$namespaceId]=e;this[r.$nodeName]=t;this[w]=a;this[C]=null;this[d]=[];this[r.$uid]=`${t}${O++}`;this[r.$globalData]=null}get isXFAObject(){return!0}get isXFAObjectArray(){return!1}createNodes(e){let t=this,a=null;for(const{name:n,index:i}of e){for(let e=0,s=isFinite(i)?i:0;e<=s;e++){const e=t[r.$namespaceId]===T?-1:t[r.$namespaceId];a=new XmlObject(e,n);t[r.$appendChild](a)}t=a}return a}[r.$onChild](e){if(!this[w]||!this[r.$onChildCheck](e))return!1;const t=e[r.$nodeName],a=this[t];if(!(a instanceof XFAObjectArray)){null!==a&&this[r.$removeChild](a);this[t]=e;this[r.$appendChild](e);return!0}if(a.push(e)){this[r.$appendChild](e);return!0}let n="";this.id?n=` (id: ${this.id})`:this.name&&(n=` (name: ${this.name} ${this.h.value})`);(0,i.warn)(`XFA - node "${this[r.$nodeName]}"${n} has already enough "${t}"!`);return!1}[r.$onChildCheck](e){return this.hasOwnProperty(e[r.$nodeName])&&e[r.$namespaceId]===this[r.$namespaceId]}[r.$isNsAgnostic](){return!1}[r.$acceptWhitespace](){return!1}[r.$isCDATAXml](){return!1}[r.$isBindable](){return!1}[r.$popPara](){this.para&&this[r.$getTemplateRoot]()[r.$extra].paraStack.pop()}[r.$pushPara](){this[r.$getTemplateRoot]()[r.$extra].paraStack.push(this.para)}[r.$setId](e){this.id&&this[r.$namespaceId]===o.NamespaceIds.template.id&&e.set(this.id,this)}[r.$getTemplateRoot](){return this[r.$globalData].template}[r.$isSplittable](){return!1}[r.$isThereMoreWidth](){return!1}[r.$appendChild](e){e[C]=this;this[d].push(e);!e[r.$globalData]&&this[r.$globalData]&&(e[r.$globalData]=this[r.$globalData])}[r.$removeChild](e){const t=this[d].indexOf(e);this[d].splice(t,1)}[r.$hasSettableValue](){return this.hasOwnProperty("value")}[r.$setValue](e){}[r.$onText](e){}[r.$finalize](){}[r.$clean](e){delete this[w];if(this[r.$cleanup]){e.clean(this[r.$cleanup]);delete this[r.$cleanup]}}[r.$indexOf](e){return this[d].indexOf(e)}[r.$insertAt](e,t){t[C]=this;this[d].splice(e,0,t);!t[r.$globalData]&&this[r.$globalData]&&(t[r.$globalData]=this[r.$globalData])}[r.$isTransparent](){return!this.name}[r.$lastAttribute](){return""}[r.$text](){return 0===this[d].length?this[r.$content]:this[d].map((e=>e[r.$text]())).join("")}get[u](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return(0,i.shadow)(this,u,e._attributes)}[r.$isDescendent](e){let t=this;for(;t;){if(t===e)return!0;t=t[r.$getParent]()}return!1}[r.$getParent](){return this[C]}[r.$getSubformParent](){return this[r.$getParent]()}[r.$getChildren](e=null){return e?this[e]:this[d]}[r.$dump](){const e=Object.create(null);this[r.$content]&&(e.$content=this[r.$content]);for(const t of Object.getOwnPropertyNames(this)){const a=this[t];null!==a&&(a instanceof XFAObject?e[t]=a[r.$dump]():a instanceof XFAObjectArray?a.isEmpty()||(e[t]=a.dump()):e[t]=a)}return e}[r.$toStyle](){return null}[r.$toHTML](){return n.HTMLResult.EMPTY}*[r.$getContainedChildren](){for(const e of this[r.$getChildren]())yield e}*[m](e,t){for(const a of this[r.$getContainedChildren]())if(!e||t===e.has(a[r.$nodeName])){const e=this[r.$getAvailableSpace](),t=a[r.$toHTML](e);t.success||(this[r.$extra].failingNode=a);yield t}}[r.$flushHTML](){return null}[r.$addHTML](e,t){this[r.$extra].children.push(e)}[r.$getAvailableSpace](){}[r.$childrenToHTML]({filter:e=null,include:t=!0}){if(this[r.$extra].generator){const e=this[r.$getAvailableSpace](),t=this[r.$extra].failingNode[r.$toHTML](e);if(!t.success)return t;t.html&&this[r.$addHTML](t.html,t.bbox);delete this[r.$extra].failingNode}else this[r.$extra].generator=this[m](e,t);for(;;){const e=this[r.$extra].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[r.$addHTML](t.html,t.bbox)}this[r.$extra].generator=null;return n.HTMLResult.EMPTY}[r.$setSetAttributes](e){this[v]=new Set(Object.keys(e))}[y](e){const t=this[u],a=this[v];return[...e].filter((e=>t.has(e)&&!a.has(e)))}[r.$resolvePrototypes](e,t=new Set){for(const a of this[d])a[k](e,t)}[k](e,t){const a=this[b](e,t);a?this[l](a,e,t):this[r.$resolvePrototypes](e,t)}[b](e,t){const{use:a,usehref:n}=this;if(!a&&!n)return null;let s=null,o=null,h=null,u=a;if(n){u=n;n.startsWith("#som(")&&n.endsWith(")")?o=n.slice(5,-1):n.startsWith(".#som(")&&n.endsWith(")")?o=n.slice(6,-1):n.startsWith("#")?h=n.slice(1):n.startsWith(".#")&&(h=n.slice(2))}else a.startsWith("#")?h=a.slice(1):o=a;this.use=this.usehref="";if(h)s=e.get(h);else{s=(0,c.searchNode)(e.get(r.$root),this,o,!0,!1);s&&(s=s[0])}if(!s){(0,i.warn)(`XFA - Invalid prototype reference: ${u}.`);return null}if(s[r.$nodeName]!==this[r.$nodeName]){(0,i.warn)(`XFA - Incompatible prototype: ${s[r.$nodeName]} !== ${this[r.$nodeName]}.`);return null}if(t.has(s)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return null}t.add(s);const d=s[b](e,t);d&&s[l](d,e,t);s[r.$resolvePrototypes](e,t);t.delete(s);return s}[l](e,t,a){if(a.has(e)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return}!this[r.$content]&&e[r.$content]&&(this[r.$content]=e[r.$content]);new Set(a).add(e);for(const t of this[y](e[v])){this[t]=e[t];this[v]&&this[v].add(t)}for(const n of Object.getOwnPropertyNames(this)){if(this[u].has(n))continue;const i=this[n],s=e[n];if(i instanceof XFAObjectArray){for(const e of i[d])e[k](t,a);for(let n=i[d].length,o=s[d].length;nXFAObject[f](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[r.$clone](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{(0,i.shadow)(e,t,this[t])}e[r.$uid]=`${e[r.$nodeName]}${O++}`;e[d]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[u].has(t)){e[t]=XFAObject[f](this[t]);continue}const a=this[t];e[t]=a instanceof XFAObjectArray?new XFAObjectArray(a[S]):null}for(const t of this[d]){const a=t[r.$nodeName],n=t[r.$clone]();e[d].push(n);n[C]=e;null===e[a]?e[a]=n:e[a][d].push(n)}return e}[r.$getChildren](e=null){return e?this[d].filter((t=>t[r.$nodeName]===e)):this[d]}[r.$getChildrenByClass](e){return this[e]}[r.$getChildrenByName](e,t,a=!0){return Array.from(this[r.$getChildrenByNameIt](e,t,a))}*[r.$getChildrenByNameIt](e,t,a=!0){if("parent"!==e){for(const a of this[d]){a[r.$nodeName]===e&&(yield a);a.name===e&&(yield a);(t||a[r.$isTransparent]())&&(yield*a[r.$getChildrenByNameIt](e,t,!1))}a&&this[u].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[C]}}t.XFAObject=XFAObject;class XFAObjectArray{constructor(e=1/0){this[S]=e;this[d]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[d].length<=this[S]){this[d].push(e);return!0}(0,i.warn)(`XFA - node "${e[r.$nodeName]}" accepts no more than ${this[S]} children`);return!1}isEmpty(){return 0===this[d].length}dump(){return 1===this[d].length?this[d][0][r.$dump]():this[d].map((e=>e[r.$dump]()))}[r.$clone](){const e=new XFAObjectArray(this[S]);e[d]=this[d].map((e=>e[r.$clone]()));return e}get children(){return this[d]}clear(){this[d].length=0}}t.XFAObjectArray=XFAObjectArray;class XFAAttribute{constructor(e,t,a){this[C]=e;this[r.$nodeName]=t;this[r.$content]=a;this[r.$consumed]=!1;this[r.$uid]="attribute"+O++}[r.$getParent](){return this[C]}[r.$isDataValue](){return!0}[r.$getDataValue](){return this[r.$content].trim()}[r.$setValue](e){e=e.value||"";this[r.$content]=e.toString()}[r.$text](){return this[r.$content]}[r.$isDescendent](e){return this[C]===e||this[C][r.$isDescendent](e)}}t.XFAAttribute=XFAAttribute;class XmlObject extends XFAObject{constructor(e,t,a={}){super(e,t);this[r.$content]="";this[g]=null;if("#text"!==t){const e=new Map;this[h]=e;for(const[t,r]of Object.entries(a))e.set(t,new XFAAttribute(this,t,r));if(a.hasOwnProperty(r.$nsAttributes)){const e=a[r.$nsAttributes].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[g]=!1:"dataValue"===e&&(this[g]=!0))}}this[r.$consumed]=!1}[r.$toString](e){const t=this[r.$nodeName];if("#text"===t){e.push((0,s.encodeToXmlString)(this[r.$content]));return}const a=(0,i.utf8StringToString)(t),n=this[r.$namespaceId]===T?"xfa:":"";e.push(`<${n}${a}`);for(const[t,a]of this[h].entries()){const n=(0,i.utf8StringToString)(t);e.push(` ${n}="${(0,s.encodeToXmlString)(a[r.$content])}"`)}null!==this[g]&&(this[g]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[r.$content]||0!==this[d].length){e.push(">");if(this[r.$content])"string"==typeof this[r.$content]?e.push((0,s.encodeToXmlString)(this[r.$content])):this[r.$content][r.$toString](e);else for(const t of this[d])t[r.$toString](e);e.push(``)}else e.push("/>")}[r.$onChild](e){if(this[r.$content]){const e=new XmlObject(this[r.$namespaceId],"#text");this[r.$appendChild](e);e[r.$content]=this[r.$content];this[r.$content]=""}this[r.$appendChild](e);return!0}[r.$onText](e){this[r.$content]+=e}[r.$finalize](){if(this[r.$content]&&this[d].length>0){const e=new XmlObject(this[r.$namespaceId],"#text");this[r.$appendChild](e);e[r.$content]=this[r.$content];delete this[r.$content]}}[r.$toHTML](){return"#text"===this[r.$nodeName]?n.HTMLResult.success({name:"#text",value:this[r.$content]}):n.HTMLResult.EMPTY}[r.$getChildren](e=null){return e?this[d].filter((t=>t[r.$nodeName]===e)):this[d]}[r.$getAttributes](){return this[h]}[r.$getChildrenByClass](e){const t=this[h].get(e);return void 0!==t?t:this[r.$getChildren](e)}*[r.$getChildrenByNameIt](e,t){const a=this[h].get(e);a&&(yield a);for(const a of this[d]){a[r.$nodeName]===e&&(yield a);t&&(yield*a[r.$getChildrenByNameIt](e,t))}}*[r.$getAttributeIt](e,t){const a=this[h].get(e);!a||t&&a[r.$consumed]||(yield a);for(const a of this[d])yield*a[r.$getAttributeIt](e,t)}*[r.$getRealChildrenByNameIt](e,t,a){for(const n of this[d]){n[r.$nodeName]!==e||a&&n[r.$consumed]||(yield n);t&&(yield*n[r.$getRealChildrenByNameIt](e,t,a))}}[r.$isDataValue](){return null===this[g]?0===this[d].length||this[d][0][r.$namespaceId]===o.NamespaceIds.xhtml.id:this[g]}[r.$getDataValue](){return null===this[g]?0===this[d].length?this[r.$content].trim():this[d][0][r.$namespaceId]===o.NamespaceIds.xhtml.id?this[d][0][r.$text]().trim():null:this[r.$content].trim()}[r.$setValue](e){e=e.value||"";this[r.$content]=e.toString()}[r.$dump](e=!1){const t=Object.create(null);e&&(t.$ns=this[r.$namespaceId]);this[r.$content]&&(t.$content=this[r.$content]);t.$name=this[r.$nodeName];t.children=[];for(const a of this[d])t.children.push(a[r.$dump](e));t.attributes=Object.create(null);for(const[e,a]of this[h])t.attributes[e]=a[r.$content];return t}}t.XmlObject=XmlObject;class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[r.$content]=""}[r.$onText](e){this[r.$content]+=e}[r.$finalize](){}}t.ContentObject=ContentObject;class OptionObject extends ContentObject{constructor(e,t,a){super(e,t);this[x]=a}[r.$finalize](){this[r.$content]=(0,n.getKeyword)({data:this[r.$content],defaultValue:this[x][0],validate:e=>this[x].includes(e)})}[r.$clean](e){super[r.$clean](e);delete this[x]}}t.OptionObject=OptionObject;class StringObject extends ContentObject{[r.$finalize](){this[r.$content]=this[r.$content].trim()}}t.StringObject=StringObject;class IntegerObject extends ContentObject{constructor(e,t,a,r){super(e,t);this[p]=a;this[F]=r}[r.$finalize](){this[r.$content]=(0,n.getInteger)({data:this[r.$content],defaultValue:this[p],validate:this[F]})}[r.$clean](e){super[r.$clean](e);delete this[p];delete this[F]}}t.IntegerObject=IntegerObject;t.Option01=class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}};t.Option10=class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDataNode=function createDataNode(e,t,a){const i=parseExpression(a);if(!i)return null;if(i.some((e=>e.operator===o.dotDot)))return null;const s=c.get(i[0].name);let l=0;if(s){e=s(e,t);l=1}else e=t||e;for(let t=i.length;l0&&f.push(e)}if(0!==f.length||u||0!==d)e=isFinite(h)?f.filter((e=>he[h])):f.flat();else{const a=t[r.$getParent]();if(!(t=a))return null;d=-1;e=[t]}}if(0===e.length)return null;return e};var r=a(78),n=a(2);const i=/^[^.[]+/,s=/^[^\]]+/,o={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},c=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[r.$getChildren]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),l=new WeakMap;function parseExpression(e,t,a=!0){let r=e.match(i);if(!r)return null;let[c]=r;const l=[{name:c,cacheName:"."+c,index:0,js:null,formCalc:null,operator:o.dot}];let h=c.length;for(;h{Object.defineProperty(t,"__esModule",{value:!0});t.DataHandler=void 0;var r=a(78);t.DataHandler=class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[r.$getChildren]()]];for(;t.length>0;){const a=t.at(-1),[n,i]=a;if(n+1===i.length){t.pop();continue}const s=i[++a[0]],o=e.get(s[r.$uid]);if(o)s[r.$setValue](o);else{const t=s[r.$getAttributes]();for(const a of t.values()){const t=e.get(a[r.$uid]);if(t){a[r.$setValue](t);break}}}const c=s[r.$getChildren]();c.length>0&&t.push([-1,c])}const a=[''];if(this.dataset)for(const e of this.dataset[r.$getChildren]())"data"!==e[r.$nodeName]&&e[r.$toString](a);this.data[r.$toString](a);a.push("");return a.join("")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAParser=void 0;var r=a(78),n=a(71),i=a(91),s=a(2);class XFAParser extends n.XMLParserBase{constructor(e=null,t=!1){super();this._builder=new i.Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=n.XMLParserErrorCode.NoError;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===n.XMLParserErrorCode.NoError){this._current[r.$finalize]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[r.$acceptWhitespace]()?this._current[r.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[r.$onText](e.trim())}onCdata(e){this._current[r.$onText](e)}_mkAttributes(e,t){let a=null,n=null;const i=Object.create({});for(const{name:o,value:c}of e)if("xmlns"===o)a?(0,s.warn)(`XFA - multiple namespace definition in <${t}>`):a=c;else if(o.startsWith("xmlns:")){const e=o.substring(6);n||(n=[]);n.push({prefix:e,value:c})}else{const e=o.indexOf(":");if(-1===e)i[o]=c;else{let t=i[r.$nsAttributes];t||(t=i[r.$nsAttributes]=Object.create(null));const[a,n]=[o.slice(0,e),o.slice(e+1)];(t[a]||=Object.create(null))[n]=c}}return[a,n,i]}_getNameAndPrefix(e,t){const a=e.indexOf(":");return-1===a?[e,null]:[e.substring(a+1),t?"":e.substring(0,a)]}onBeginElement(e,t,a){const[n,i,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:n,prefixes:i});l[r.$globalData]=this._globalData;if(a){l[r.$finalize]();this._current[r.$onChild](l)&&l[r.$setId](this._ids);l[r.$clean](this._builder)}else{this._stack.push(this._current);this._current=l}}onEndElement(e){const t=this._current;if(t[r.$isCDATAXml]()&&"string"==typeof t[r.$content]){const e=new XFAParser;e._globalData=this._globalData;const a=e.parse(t[r.$content]);t[r.$content]=null;t[r.$onChild](a)}t[r.$finalize]();this._current=this._stack.pop();this._current[r.$onChild](t)&&t[r.$setId](this._ids);t[r.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=XFAParser},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Builder=void 0;var r=a(81),n=a(78),i=a(92),s=a(80),o=a(101),c=a(2),l=a(87);class Root extends l.XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[n.$ids]=e}[n.$onChild](e){this.element=e;return!0}[n.$finalize](){super[n.$finalize]();if(this.element.template instanceof s.Template){this[n.$ids].set(n.$root,this.element);this.element.template[n.$resolvePrototypes](this[n.$ids]);this.element.template[n.$ids]=this[n.$ids]}}}class Empty extends l.XFAObject{constructor(){super(-1,"",Object.create(null))}[n.$onChild](e){return!1}}t.Builder=class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(r.NamespaceIds).map((({id:e})=>e)));this._currentNamespace=e||new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:a,namespace:s,prefixes:o}){const c=null!==s;if(c){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(s)}o&&this._addNamespacePrefix(o);if(a.hasOwnProperty(n.$nsAttributes)){const e=i.NamespaceSetUp.datasets,t=a[n.$nsAttributes];let r=null;for(const[a,n]of Object.entries(t)){if(this._getNamespaceToUse(a)===e){r={xfa:n};break}}r?a[n.$nsAttributes]=r:delete a[n.$nsAttributes]}const l=this._getNamespaceToUse(e),h=l?.[r.$buildXFAObject](t,a)||new Empty;h[n.$isNsAgnostic]()&&this._nsAgnosticLevel++;(c||o||h[n.$isNsAgnostic]())&&(h[n.$cleanup]={hasNamespace:c,prefixes:o,nsAgnostic:h[n.$isNsAgnostic]()});return h}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[a,{check:n}]of Object.entries(r.NamespaceIds))if(n(e)){t=i.NamespaceSetUp[a];if(t){this._namespaces.set(e,t);return t}break}t=new o.UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:a}of e){const e=this._searchNamespace(a);let r=this._namespacePrefixes.get(t);if(!r){r=[];this._namespacePrefixes.set(t,r)}r.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);(0,c.warn)(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:a,nsAgnostic:r}=e;t&&(this._currentNamespace=this._namespaceStack.pop());a&&a.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));r&&this._nsAgnosticLevel--}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceSetUp=void 0;var r=a(93),n=a(94),i=a(95),s=a(96),o=a(97),c=a(98),l=a(80),h=a(99),u=a(100);const d={config:r.ConfigNamespace,connection:n.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConfigNamespace=void 0;var r=a(81),n=a(78),i=a(87),s=a(84),o=a(2);const c=r.NamespaceIds.config.id;class Acrobat extends i.XFAObject{constructor(e){super(c,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new i.XFAObjectArray}}class Acrobat7 extends i.XFAObject{constructor(e){super(c,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends i.OptionObject{constructor(e){super(c,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends i.OptionObject{constructor(e){super(c,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends i.Option01{constructor(e){super(c,"addSilentPrint")}}class AddViewerPreferences extends i.Option01{constructor(e){super(c,"addViewerPreferences")}}class AdjustData extends i.Option10{constructor(e){super(c,"adjustData")}}class AdobeExtensionLevel extends i.IntegerObject{constructor(e){super(c,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends i.XFAObject{constructor(e){super(c,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new i.XFAObjectArray}}class AlwaysEmbed extends i.ContentObject{constructor(e){super(c,"alwaysEmbed")}}class Amd extends i.StringObject{constructor(e){super(c,"amd")}}class Area extends i.XFAObject{constructor(e){super(c,"area");this.level=(0,s.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=(0,s.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends i.OptionObject{constructor(e){super(c,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends i.OptionObject{constructor(e){super(c,"autoSave",["disabled","enabled"])}}class Base extends i.StringObject{constructor(e){super(c,"base")}}class BatchOutput extends i.XFAObject{constructor(e){super(c,"batchOutput");this.format=(0,s.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends i.ContentObject{constructor(e){super(c,"behaviorOverride")}[n.$finalize](){this[n.$content]=new Map(this[n.$content].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends i.XFAObject{constructor(e){super(c,"cache",!0);this.templateCache=null}}class Change extends i.Option01{constructor(e){super(c,"change")}}class Common extends i.XFAObject{constructor(e){super(c,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new i.XFAObjectArray}}class Compress extends i.XFAObject{constructor(e){super(c,"compress");this.scope=(0,s.getStringOption)(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends i.Option01{constructor(e){super(c,"compressLogicalStructure")}}class CompressObjectStream extends i.Option10{constructor(e){super(c,"compressObjectStream")}}class Compression extends i.XFAObject{constructor(e){super(c,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends i.XFAObject{constructor(e){super(c,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new i.XFAObjectArray}}class Conformance extends i.OptionObject{constructor(e){super(c,"conformance",["A","B"])}}class ContentCopy extends i.Option01{constructor(e){super(c,"contentCopy")}}class Copies extends i.IntegerObject{constructor(e){super(c,"copies",1,(e=>e>=1))}}class Creator extends i.StringObject{constructor(e){super(c,"creator")}}class CurrentPage extends i.IntegerObject{constructor(e){super(c,"currentPage",0,(e=>e>=0))}}class Data extends i.XFAObject{constructor(e){super(c,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new i.XFAObjectArray;this.transform=new i.XFAObjectArray}}class Debug extends i.XFAObject{constructor(e){super(c,"debug",!0);this.uri=null}}class DefaultTypeface extends i.ContentObject{constructor(e){super(c,"defaultTypeface");this.writingScript=(0,s.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends i.OptionObject{constructor(e){super(c,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends i.Option01{constructor(e){super(c,"documentAssembly")}}class Driver extends i.XFAObject{constructor(e){super(c,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends i.OptionObject{constructor(e){super(c,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends i.OptionObject{constructor(e){super(c,"dynamicRender",["forbidden","required"])}}class Embed extends i.Option01{constructor(e){super(c,"embed")}}class Encrypt extends i.Option01{constructor(e){super(c,"encrypt")}}class Encryption extends i.XFAObject{constructor(e){super(c,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends i.OptionObject{constructor(e){super(c,"encryptionLevel",["40bit","128bit"])}}class Enforce extends i.StringObject{constructor(e){super(c,"enforce")}}class Equate extends i.XFAObject{constructor(e){super(c,"equate");this.force=(0,s.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends i.XFAObject{constructor(e){super(c,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,a=this._unicodeRange;for(let r of a.split(",").map((e=>e.trim())).filter((e=>!!e))){r=r.split("-",2).map((e=>{const a=e.match(t);return a?parseInt(a[1],16):0}));1===r.length&&r.push(r[0]);e.push(r)}return(0,o.shadow)(this,"unicodeRange",e)}}class Exclude extends i.ContentObject{constructor(e){super(c,"exclude")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends i.StringObject{constructor(e){super(c,"excludeNS")}}class FlipLabel extends i.OptionObject{constructor(e){super(c,"flipLabel",["usePrinterSetting","on","off"])}}class FontInfo extends i.XFAObject{constructor(e){super(c,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new i.XFAObjectArray;this.defaultTypeface=new i.XFAObjectArray;this.neverEmbed=new i.XFAObjectArray}}class FormFieldFilling extends i.Option01{constructor(e){super(c,"formFieldFilling")}}class GroupParent extends i.StringObject{constructor(e){super(c,"groupParent")}}class IfEmpty extends i.OptionObject{constructor(e){super(c,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends i.StringObject{constructor(e){super(c,"includeXDPContent")}}class IncrementalLoad extends i.OptionObject{constructor(e){super(c,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends i.Option01{constructor(e){super(c,"incrementalMerge")}}class Interactive extends i.Option01{constructor(e){super(c,"interactive")}}class Jog extends i.OptionObject{constructor(e){super(c,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends i.XFAObject{constructor(e){super(c,"labelPrinter",!0);this.name=(0,s.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends i.OptionObject{constructor(e){super(c,"layout",["paginate","panel"])}}class Level extends i.IntegerObject{constructor(e){super(c,"level",0,(e=>e>0))}}class Linearized extends i.Option01{constructor(e){super(c,"linearized")}}class Locale extends i.StringObject{constructor(e){super(c,"locale")}}class LocaleSet extends i.StringObject{constructor(e){super(c,"localeSet")}}class Log extends i.XFAObject{constructor(e){super(c,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends i.XFAObject{constructor(e){super(c,"map",!0);this.equate=new i.XFAObjectArray;this.equateRange=new i.XFAObjectArray}}class MediumInfo extends i.XFAObject{constructor(e){super(c,"mediumInfo",!0);this.map=null}}class Message extends i.XFAObject{constructor(e){super(c,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends i.XFAObject{constructor(e){super(c,"messaging",!0);this.message=new i.XFAObjectArray}}class Mode extends i.OptionObject{constructor(e){super(c,"mode",["append","overwrite"])}}class ModifyAnnots extends i.Option01{constructor(e){super(c,"modifyAnnots")}}class MsgId extends i.IntegerObject{constructor(e){super(c,"msgId",1,(e=>e>=1))}}class NameAttr extends i.StringObject{constructor(e){super(c,"nameAttr")}}class NeverEmbed extends i.ContentObject{constructor(e){super(c,"neverEmbed")}}class NumberOfCopies extends i.IntegerObject{constructor(e){super(c,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends i.XFAObject{constructor(e){super(c,"openAction",!0);this.destination=null}}class Output extends i.XFAObject{constructor(e){super(c,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends i.StringObject{constructor(e){super(c,"outputBin")}}class OutputXSL extends i.XFAObject{constructor(e){super(c,"outputXSL",!0);this.uri=null}}class Overprint extends i.OptionObject{constructor(e){super(c,"overprint",["none","both","draw","field"])}}class Packets extends i.StringObject{constructor(e){super(c,"packets")}[n.$finalize](){"*"!==this[n.$content]&&(this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends i.XFAObject{constructor(e){super(c,"pageOffset");this.x=(0,s.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=(0,s.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends i.StringObject{constructor(e){super(c,"pageRange")}[n.$finalize](){const e=this[n.$content].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let a=0,r=e.length;a!1))}}class Pcl extends i.XFAObject{constructor(e){super(c,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends i.XFAObject{constructor(e){super(c,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends i.XFAObject{constructor(e){super(c,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends i.XFAObject{constructor(e){super(c,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends i.Option01{constructor(e){super(c,"pickTrayByPDFSize")}}class Picture extends i.StringObject{constructor(e){super(c,"picture")}}class PlaintextMetadata extends i.Option01{constructor(e){super(c,"plaintextMetadata")}}class Presence extends i.OptionObject{constructor(e){super(c,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends i.XFAObject{constructor(e){super(c,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new i.XFAObjectArray;this.labelPrinter=new i.XFAObjectArray;this.pcl=new i.XFAObjectArray;this.pdf=new i.XFAObjectArray;this.ps=new i.XFAObjectArray;this.submitUrl=new i.XFAObjectArray;this.webClient=new i.XFAObjectArray;this.zpl=new i.XFAObjectArray}}class Print extends i.Option01{constructor(e){super(c,"print")}}class PrintHighQuality extends i.Option01{constructor(e){super(c,"printHighQuality")}}class PrintScaling extends i.OptionObject{constructor(e){super(c,"printScaling",["appdefault","noScaling"])}}class PrinterName extends i.StringObject{constructor(e){super(c,"printerName")}}class Producer extends i.StringObject{constructor(e){super(c,"producer")}}class Ps extends i.XFAObject{constructor(e){super(c,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends i.ContentObject{constructor(e){super(c,"range")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends i.ContentObject{constructor(e){super(c,"record")}[n.$finalize](){this[n.$content]=this[n.$content].trim();const e=parseInt(this[n.$content],10);!isNaN(e)&&e>=0&&(this[n.$content]=e)}}class Relevant extends i.ContentObject{constructor(e){super(c,"relevant")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/)}}class Rename extends i.ContentObject{constructor(e){super(c,"rename")}[n.$finalize](){this[n.$content]=this[n.$content].trim();(this[n.$content].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[n.$content]))&&(0,o.warn)("XFA - Rename: invalid XFA name")}}class RenderPolicy extends i.OptionObject{constructor(e){super(c,"renderPolicy",["server","client"])}}class RunScripts extends i.OptionObject{constructor(e){super(c,"runScripts",["both","client","none","server"])}}class Script extends i.XFAObject{constructor(e){super(c,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends i.OptionObject{constructor(e){super(c,"scriptModel",["XFA","none"])}}class Severity extends i.OptionObject{constructor(e){super(c,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends i.XFAObject{constructor(e){super(c,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends i.XFAObject{constructor(e){super(c,"staple");this.mode=(0,s.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends i.StringObject{constructor(e){super(c,"startNode")}}class StartPage extends i.IntegerObject{constructor(e){super(c,"startPage",0,(e=>!0))}}class SubmitFormat extends i.OptionObject{constructor(e){super(c,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends i.StringObject{constructor(e){super(c,"submitUrl")}}class SubsetBelow extends i.IntegerObject{constructor(e){super(c,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends i.Option01{constructor(e){super(c,"suppressBanner")}}class Tagged extends i.Option01{constructor(e){super(c,"tagged")}}class Template extends i.XFAObject{constructor(e){super(c,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends i.OptionObject{constructor(e){super(c,"threshold",["trace","error","information","warning"])}}class To extends i.OptionObject{constructor(e){super(c,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends i.XFAObject{constructor(e){super(c,"templateCache");this.maxEntries=(0,s.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends i.XFAObject{constructor(e){super(c,"trace",!0);this.area=new i.XFAObjectArray}}class Transform extends i.XFAObject{constructor(e){super(c,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends i.OptionObject{constructor(e){super(c,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends i.StringObject{constructor(e){super(c,"uri")}}class Validate extends i.OptionObject{constructor(e){super(c,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends i.ContentObject{constructor(e){super(c,"validateApprovalSignatures")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends i.OptionObject{constructor(e){super(c,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends i.OptionObject{constructor(e){super(c,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends i.XFAObject{constructor(e){super(c,"VersionControl");this.outputBelow=(0,s.getStringOption)(e.outputBelow,["warn","error","update"]);this.sourceAbove=(0,s.getStringOption)(e.sourceAbove,["warn","error"]);this.sourceBelow=(0,s.getStringOption)(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends i.XFAObject{constructor(e){super(c,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends i.XFAObject{constructor(e){super(c,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends i.OptionObject{constructor(e){super(c,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends i.ContentObject{constructor(e){super(c,"window")}[n.$finalize](){const e=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[n.$content]=[0,0];else{1===e.length&&e.push(e[0]);this[n.$content]=e}}}class Xdc extends i.XFAObject{constructor(e){super(c,"xdc",!0);this.uri=new i.XFAObjectArray;this.xsl=new i.XFAObjectArray}}class Xdp extends i.XFAObject{constructor(e){super(c,"xdp",!0);this.packets=null}}class Xsl extends i.XFAObject{constructor(e){super(c,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends i.XFAObject{constructor(e){super(c,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[r.$buildXFAObject](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new Encrypt(e)}static encryption(e){return new Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}t.ConfigNamespace=ConfigNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConnectionSetNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.connectionSet.id;class ConnectionSet extends n.XFAObject{constructor(e){super(i,"connectionSet",!0);this.wsdlConnection=new n.XFAObjectArray;this.xmlConnection=new n.XFAObjectArray;this.xsdConnection=new n.XFAObjectArray}}class EffectiveInputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends n.StringObject{constructor(e){super(i,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends n.StringObject{constructor(e){super(i,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends n.StringObject{constructor(e){super(i,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends n.StringObject{constructor(e){super(i,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Uri extends n.StringObject{constructor(e){super(i,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends n.StringObject{constructor(e){super(i,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends n.XFAObject{constructor(e){super(i,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends n.XFAObject{constructor(e){super(i,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends n.XFAObject{constructor(e){super(i,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[r.$buildXFAObject](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}t.ConnectionSetNamespace=ConnectionSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetsNamespace=void 0;var r=a(78),n=a(81),i=a(87);const s=n.NamespaceIds.datasets.id;class Data extends i.XmlObject{constructor(e){super(s,"data",e)}[r.$isNsAgnostic](){return!0}}class Datasets extends i.XFAObject{constructor(e){super(s,"datasets",!0);this.data=null;this.Signature=null}[r.$onChild](e){const t=e[r.$nodeName];("data"===t&&e[r.$namespaceId]===s||"Signature"===t&&e[r.$namespaceId]===n.NamespaceIds.signature.id)&&(this[t]=e);this[r.$appendChild](e)}}class DatasetsNamespace{static[n.$buildXFAObject](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new Data(e)}}t.DatasetsNamespace=DatasetsNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocaleSetNamespace=void 0;var r=a(81),n=a(87),i=a(84);const s=r.NamespaceIds.localeSet.id;class CalendarSymbols extends n.XFAObject{constructor(e){super(s,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new n.XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new n.XFAObjectArray(2)}}class CurrencySymbol extends n.StringObject{constructor(e){super(s,"currencySymbol");this.name=(0,i.getStringOption)(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends n.XFAObject{constructor(e){super(s,"currencySymbols",!0);this.currencySymbol=new n.XFAObjectArray(3)}}class DatePattern extends n.StringObject{constructor(e){super(s,"datePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class DatePatterns extends n.XFAObject{constructor(e){super(s,"datePatterns",!0);this.datePattern=new n.XFAObjectArray(4)}}class DateTimeSymbols extends n.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class Day extends n.StringObject{constructor(e){super(s,"day")}}class DayNames extends n.XFAObject{constructor(e){super(s,"dayNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new n.XFAObjectArray(7)}}class Era extends n.StringObject{constructor(e){super(s,"era")}}class EraNames extends n.XFAObject{constructor(e){super(s,"eraNames",!0);this.era=new n.XFAObjectArray(2)}}class Locale extends n.XFAObject{constructor(e){super(s,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class LocaleSet extends n.XFAObject{constructor(e){super(s,"localeSet",!0);this.locale=new n.XFAObjectArray}}class Meridiem extends n.StringObject{constructor(e){super(s,"meridiem")}}class MeridiemNames extends n.XFAObject{constructor(e){super(s,"meridiemNames",!0);this.meridiem=new n.XFAObjectArray(2)}}class Month extends n.StringObject{constructor(e){super(s,"month")}}class MonthNames extends n.XFAObject{constructor(e){super(s,"monthNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new n.XFAObjectArray(12)}}class NumberPattern extends n.StringObject{constructor(e){super(s,"numberPattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class NumberPatterns extends n.XFAObject{constructor(e){super(s,"numberPatterns",!0);this.numberPattern=new n.XFAObjectArray(4)}}class NumberSymbol extends n.StringObject{constructor(e){super(s,"numberSymbol");this.name=(0,i.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends n.XFAObject{constructor(e){super(s,"numberSymbols",!0);this.numberSymbol=new n.XFAObjectArray(5)}}class TimePattern extends n.StringObject{constructor(e){super(s,"timePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class TimePatterns extends n.XFAObject{constructor(e){super(s,"timePatterns",!0);this.timePattern=new n.XFAObjectArray(4)}}class TypeFace extends n.XFAObject{constructor(e){super(s,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends n.XFAObject{constructor(e){super(s,"typeFaces",!0);this.typeFace=new n.XFAObjectArray}}class LocaleSetNamespace{static[r.$buildXFAObject](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}t.LocaleSetNamespace=LocaleSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SignatureNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.signature.id;class Signature extends n.XFAObject{constructor(e){super(i,"signature",!0)}}class SignatureNamespace{static[r.$buildXFAObject](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new Signature(e)}}t.SignatureNamespace=SignatureNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StylesheetNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.stylesheet.id;class Stylesheet extends n.XFAObject{constructor(e){super(i,"stylesheet",!0)}}class StylesheetNamespace{static[r.$buildXFAObject](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}t.StylesheetNamespace=StylesheetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XdpNamespace=void 0;var r=a(81),n=a(78),i=a(87);const s=r.NamespaceIds.xdp.id;class Xdp extends i.XFAObject{constructor(e){super(s,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new i.XFAObjectArray;this.template=null}[n.$onChildCheck](e){const t=r.NamespaceIds[e[n.$nodeName]];return t&&e[n.$namespaceId]===t.id}}class XdpNamespace{static[r.$buildXFAObject](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new Xdp(e)}}t.XdpNamespace=XdpNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XhtmlNamespace=void 0;var r=a(78),n=a(81),i=a(83),s=a(84),o=a(87);const c=n.NamespaceIds.xhtml.id,l=Symbol(),h=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),u=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>{e=t.fontSize=(0,s.getMeasurement)(e);return(0,i.measureToString)(.99*e)}],["letter-spacing",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e],["vertical-align",e=>(0,i.measureToString)((0,s.getMeasurement)(e))]]),d=/\s+/g,f=/[\r\n]+/g,g=/\r\n?/g;function mapStyle(e,t,a){const n=Object.create(null);if(!e)return n;const o=Object.create(null);for(const[t,a]of e.split(";").map((e=>e.split(":",2)))){const e=u.get(t);if(""===e)continue;let r=a;e&&(r="string"==typeof e?e:e(a,o));t.endsWith("scale")?n.transform=n.transform?`${n[t]} ${r}`:r:n[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=r}n.fontFamily&&(0,i.setFontFamily)({typeface:n.fontFamily,weight:n.fontWeight||"normal",posture:n.fontStyle||"normal",size:o.fontSize||0},t,t[r.$globalData].fontFinder,n);if(a&&n.verticalAlign&&"0px"!==n.verticalAlign&&n.fontSize){const e=.583,t=.333,a=(0,s.getMeasurement)(n.fontSize);n.fontSize=(0,i.measureToString)(a*e);n.verticalAlign=(0,i.measureToString)(Math.sign((0,s.getMeasurement)(n.verticalAlign))*a*t)}a&&n.fontSize&&(n.fontSize=`calc(${n.fontSize} * var(--scale-factor))`);(0,i.fixTextIndent)(n);return n}const p=new Set(["body","html"]);class XhtmlObject extends o.XmlObject{constructor(e,t){super(c,t);this[l]=!1;this.style=e.style||""}[r.$clean](e){super[r.$clean](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,a])=>{"font-family"===t&&e[r.$globalData].usedTypefaces.add(a);return h.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[r.$acceptWhitespace](){return!p.has(this[r.$nodeName])}[r.$onText](e,t=!1){if(t)this[l]=!0;else{e=e.replaceAll(f,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(d," "))}e&&(this[r.$content]+=e)}[r.$pushGlyphs](e,t=!0){const a=Object.create(null),n={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":a.typeface=(0,s.stripQuotes)(t);break;case"font-size":a.size=(0,s.getMeasurement)(t);break;case"font-weight":a.weight=t;break;case"font-style":a.posture=t;break;case"letter-spacing":a.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:n.top=n.bottom=n.left=n.right=e[0];break;case 2:n.top=n.bottom=e[0];n.left=n.right=e[1];break;case 3:n.top=e[0];n.bottom=e[2];n.left=n.right=e[1];break;case 4:n.top=e[0];n.left=e[1];n.bottom=e[2];n.right=e[3]}break;case"margin-top":n.top=(0,s.getMeasurement)(t);break;case"margin-bottom":n.bottom=(0,s.getMeasurement)(t);break;case"margin-left":n.left=(0,s.getMeasurement)(t);break;case"margin-right":n.right=(0,s.getMeasurement)(t);break;case"line-height":i=(0,s.getMeasurement)(t)}e.pushData(a,n,i);if(this[r.$content])e.addString(this[r.$content]);else for(const t of this[r.$getChildren]())"#text"!==t[r.$nodeName]?t[r.$pushGlyphs](e):e.addString(t[r.$content]);t&&e.popFont()}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length&&!this[r.$content])return s.HTMLResult.EMPTY;let a;a=this[l]?this[r.$content]?this[r.$content].replaceAll(g,"\n"):void 0:this[r.$content]||void 0;return s.HTMLResult.success({name:this[r.$nodeName],attributes:{href:this.href,style:mapStyle(this.style,this,this[l])},children:t,value:a})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=(0,i.fixURL)(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[r.$pushGlyphs](e){e.pushFont({weight:"bold"});super[r.$pushGlyphs](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[r.$toHTML](e){const t=super[r.$toHTML](e),{html:a}=t;if(!a)return s.HTMLResult.EMPTY;a.name="div";a.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[r.$text](){return"\n"}[r.$pushGlyphs](e){e.addString("\n")}[r.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[r.$content]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[r.$pushGlyphs](e){e.pushFont({posture:"italic"});super[r.$pushGlyphs](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[r.$pushGlyphs](e){super[r.$pushGlyphs](e,!1);e.addString("\n");e.addPara();e.popFont()}[r.$text](){return this[r.$getParent]()[r.$getChildren]().at(-1)===this?super[r.$text]():super[r.$text]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[n.$buildXFAObject](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}t.XhtmlNamespace=XhtmlNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.UnknownNamespace=void 0;var r=a(81),n=a(87);class UnknownNamespace{constructor(e){this.namespaceId=e}[r.$buildXFAObject](e,t){return new n.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=UnknownNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetReader=void 0;var r=a(2),n=a(3),i=a(71);function decodeString(e){try{return(0,r.stringToUTF8String)(e)}catch(t){(0,r.warn)(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends i.SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}t.DatasetReader=class DatasetReader{constructor(e){if(e.datasets)this.node=new i.SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode((0,n.parseXFAPath)(e),0);if(!t)return"";const a=t.firstChild;return"value"===a?.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRef=void 0;var r=a(2),n=a(4),i=a(16),s=a(3),o=a(5),c=a(74);t.XRef=class XRef{#B=null;constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this._xrefStms=new Set;this._cacheMap=new Map;this._pendingRefs=new n.RefSet;this._newPersistentRefNum=null;this._newTemporaryRefNum=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;this._cacheMap.set(t,e);return n.Ref.get(t,0)}getNewTemporaryRef(){null===this._newTemporaryRefNum&&(this._newTemporaryRefNum=this.entries.length||1);return n.Ref.get(this._newTemporaryRefNum++,0)}resetNewTemporaryRef(){this._newTemporaryRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(e=!1){let t,a,i;if(e){(0,r.warn)("Indexing all PDF objects");t=this.indexObjects()}else t=this.readXRef();t.assignXref(this);this.trailer=t;try{a=t.get("Encrypt")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Encrypt" reference: "${e}".`)}if(a instanceof n.Dict){const e=t.get("ID"),r=e?.length?e[0]:"";a.suppressEncryption=!0;this.encrypt=new c.CipherTransformFactory(a,r,this.pdfManager.password)}try{i=t.get("Root")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Root" reference: "${e}".`)}if(i instanceof n.Dict)try{if(i.get("Pages")instanceof n.Dict){this.root=i;return}}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Pages" reference: "${e}".`)}if(!e)throw new s.XRefParseException;throw new r.InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,n.isCmd)(t,"trailer"))throw new r.FormatError("Invalid XRef table: could not find trailer dictionary");let a=e.getObj();a instanceof n.Dict||!a.dict||(a=a.dict);if(!(a instanceof n.Dict))throw new r.FormatError("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return a}readXRefTable(e){const t=e.lexer.stream,a=this.tableState;t.pos=a.streamPos;e.buf1=a.parserBuf1;e.buf2=a.parserBuf2;let i;for(;;){if(!("firstEntryNum"in a)||!("entryCount"in a)){if((0,n.isCmd)(i=e.getObj(),"trailer"))break;a.firstEntryNum=i;a.entryCount=e.getObj()}let s=a.firstEntryNum;const o=a.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new r.FormatError("Invalid XRef table: wrong types in subsection header");for(let i=a.entryNum;i0;){const[o,c]=s;if(!Number.isInteger(o)||!Number.isInteger(c))throw new r.FormatError(`Invalid XRef range fields: ${o}, ${c}`);if(!Number.isInteger(a)||!Number.isInteger(n)||!Number.isInteger(i))throw new r.FormatError(`Invalid XRef entry fields length: ${o}, ${c}`);for(let s=t.entryNum;s=e.length);){a+=String.fromCharCode(r);r=e[t]}return a}function skipUntil(e,t,a){const r=a.length,n=e.length;let i=0;for(;t=r)break;t++;i++}return i}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,a=/^(\d+)\s+(\d+)\s+obj\b/,o=new Uint8Array([116,114,97,105,108,101,114]),c=new Uint8Array([115,116,97,114,116,120,114,101,102]),l=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const h=this.stream;h.pos=0;const u=h.getBytes(),d=(0,r.bytesToString)(u),f=u.length;let g=h.start;const p=[],m=[];for(;g=f)break;n=u[g]}while(10!==n&&13!==n);continue}const b=readToken(u,g);let y;if(b.startsWith("xref")&&(4===b.length||/\s/.test(b[4]))){g+=skipUntil(u,g,o);p.push(g);g+=skipUntil(u,g,c)}else if(y=a.exec(b)){const t=0|y[1],a=0|y[2],n=g+b.length;let o,c=!1;if(this.entries[t]){if(this.entries[t].gen===a)try{new i.Parser({lexer:new i.Lexer(h.makeSubStream(n))}).getObj();c=!0}catch(e){e instanceof s.ParserEOFException?(0,r.warn)(`indexObjects -- checking object (${b}): "${e}".`):c=!0}}else c=!0;c&&(this.entries[t]={offset:g-h.start,gen:a,uncompressed:!0});e.lastIndex=n;const p=e.exec(d);if(p){o=e.lastIndex+1-g;if("endobj"!==p[1]){(0,r.warn)(`indexObjects: Found "${p[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);o-=p[1].length+1}}else o=f-g;const w=u.subarray(g,g+o),S=skipUntil(w,0,l);if(S0?Math.max(...this._xrefStms):null)}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof n.Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof n.Ref))throw new Error("ref object is not a reference");const a=e.num,i=this._cacheMap.get(a);if(void 0!==i){i instanceof n.Dict&&!i.objId&&(i.objId=e.toString());return i}let s=this.getEntry(a);if(null===s){this._cacheMap.set(a,s);return s}if(this._pendingRefs.has(e)){this._pendingRefs.remove(e);(0,r.warn)(`Ignoring circular reference: ${e}.`);return n.CIRCULAR_REF}this._pendingRefs.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t);this._pendingRefs.remove(e)}catch(t){this._pendingRefs.remove(e);throw t}s instanceof n.Dict?s.objId=e.toString():s instanceof o.BaseStream&&(s.dict.objId=e.toString());return s}fetchUncompressed(e,t,a=!1){const c=e.gen;let l=e.num;if(t.gen!==c){const i=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen{Object.defineProperty(t,"__esModule",{value:!0});t.MessageHandler=void 0;var r=a(2);const n=1,i=2,s=1,o=2,c=3,l=4,h=5,u=6,d=7,f=8;function wrapReason(e){e instanceof Error||"object"==typeof e&&null!==e||(0,r.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new r.AbortException(e.message);case"MissingPDFException":return new r.MissingPDFException(e.message);case"PasswordException":return new r.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new r.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new r.UnknownErrorException(e.message,e.details);default:return new r.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class MessageHandler{constructor(e,t,a){this.sourceName=e;this.targetName=t;this.comObj=a;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this.#E(t);return}if(t.callback){const e=t.callbackId,a=this.callbackCapabilities[e];if(!a)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===n)a.resolve(t.data);else{if(t.callback!==i)throw new Error("Unexpected callback case");a.reject(wrapReason(t.reason))}return}const r=this.actionHandler[t.action];if(!r)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,s=t.sourceName;new Promise((function(e){e(r(t.data))})).then((function(r){a.postMessage({sourceName:e,targetName:s,callback:n,callbackId:t.callbackId,data:r})}),(function(r){a.postMessage({sourceName:e,targetName:s,callback:i,callbackId:t.callbackId,reason:wrapReason(r)})}))}else t.streamId?this.#N(t):r(t.data)};a.addEventListener("message",this._onComObjOnMessage)}on(e,t){const a=this.actionHandler;if(a[e])throw new Error(`There is already an actionName called "${e}"`);a[e]=t}send(e,t,a){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},a)}sendWithPromise(e,t,a){const n=this.callbackId++,i=new r.PromiseCapability;this.callbackCapabilities[n]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},a)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,a,n){const i=this.streamId++,o=this.sourceName,c=this.targetName,l=this.comObj;return new ReadableStream({start:a=>{const s=new r.PromiseCapability;this.streamControllers[i]={controller:a,startCall:s,pullCall:null,cancelCall:null,isClosed:!1};l.postMessage({sourceName:o,targetName:c,action:e,streamId:i,data:t,desiredSize:a.desiredSize},n);return s.promise},pull:e=>{const t=new r.PromiseCapability;this.streamControllers[i].pullCall=t;l.postMessage({sourceName:o,targetName:c,stream:u,streamId:i,desiredSize:e.desiredSize});return t.promise},cancel:e=>{(0,r.assert)(e instanceof Error,"cancel must have a valid reason");const t=new r.PromiseCapability;this.streamControllers[i].cancelCall=t;this.streamControllers[i].isClosed=!0;l.postMessage({sourceName:o,targetName:c,stream:s,streamId:i,reason:wrapReason(e)});return t.promise}},a)}#N(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,s=this,o=this.actionHandler[e.action],u={enqueue(e,s=1,o){if(this.isCancelled)return;const c=this.desiredSize;this.desiredSize-=s;if(c>0&&this.desiredSize<=0){this.sinkCapability=new r.PromiseCapability;this.ready=this.sinkCapability.promise}i.postMessage({sourceName:a,targetName:n,stream:l,streamId:t,chunk:e},o)},close(){if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:c,streamId:t});delete s.streamSinks[t]}},error(e){(0,r.assert)(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:h,streamId:t,reason:wrapReason(e)})}},sinkCapability:new r.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};u.sinkCapability.resolve();u.ready=u.sinkCapability.promise;this.streamSinks[t]=u;new Promise((function(t){t(o(e.data,u))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,reason:wrapReason(e)})}))}#E(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,g=this.streamControllers[t],p=this.streamSinks[t];switch(e.stream){case f:e.success?g.startCall.resolve():g.startCall.reject(wrapReason(e.reason));break;case d:e.success?g.pullCall.resolve():g.pullCall.reject(wrapReason(e.reason));break;case u:if(!p){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0});break}p.desiredSize<=0&&e.desiredSize>0&&p.sinkCapability.resolve();p.desiredSize=e.desiredSize;new Promise((function(e){e(p.onPull?.())})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,reason:wrapReason(e)})}));break;case l:(0,r.assert)(g,"enqueue should have stream controller");if(g.isClosed)break;g.controller.enqueue(e.chunk);break;case c:(0,r.assert)(g,"close should have stream controller");if(g.isClosed)break;g.isClosed=!0;g.controller.close();this.#R(g,t);break;case h:(0,r.assert)(g,"error should have stream controller");g.controller.error(wrapReason(e.reason));this.#R(g,t);break;case o:e.success?g.cancelCall.resolve():g.cancelCall.reject(wrapReason(e.reason));this.#R(g,t);break;case s:if(!p)break;new Promise((function(t){t(p.onCancel?.(wrapReason(e.reason)))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,reason:wrapReason(e)})}));p.sinkCapability.reject(wrapReason(e.reason));p.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#R(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFWorkerStream=void 0;var r=a(2);t.PDFWorkerStream=class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){(0,r.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const a=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(a);return a}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,a){this._msgHandler=a;this.onProgress=null;const r=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=r.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function __w_pdfjs_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};e[a](n,n.exports,__w_pdfjs_require__);return n.exports}var a={};(()=>{var e=a;Object.defineProperty(e,"__esModule",{value:!0});Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=__w_pdfjs_require__(1)})();return a})())); \ No newline at end of file diff --git a/apps/documentation/public/public-api-images/api-tokens-page-documenso.webp b/apps/documentation/public/public-api-images/api-tokens-page-documenso.webp index c492cfec2..0b8b00124 100644 Binary files a/apps/documentation/public/public-api-images/api-tokens-page-documenso.webp and b/apps/documentation/public/public-api-images/api-tokens-page-documenso.webp differ diff --git a/apps/documentation/public/public-api-images/documenso-api-authorization.webp b/apps/documentation/public/public-api-images/documenso-api-authorization.webp deleted file mode 100644 index ec0ed219d..000000000 Binary files a/apps/documentation/public/public-api-images/documenso-api-authorization.webp and /dev/null differ diff --git a/apps/documentation/public/public-api-images/documenso-api-key-blurred.webp b/apps/documentation/public/public-api-images/documenso-api-key-blurred.webp index 37da4123e..b541e415e 100644 Binary files a/apps/documentation/public/public-api-images/documenso-api-key-blurred.webp and b/apps/documentation/public/public-api-images/documenso-api-key-blurred.webp differ diff --git a/apps/documentation/public/public-api-images/documenso-api-key.webp b/apps/documentation/public/public-api-images/documenso-api-key.webp deleted file mode 100644 index 4a79bc219..000000000 Binary files a/apps/documentation/public/public-api-images/documenso-api-key.webp and /dev/null differ diff --git a/apps/documentation/public/public-api-images/documenso-user-dropdown-menu.webp b/apps/documentation/public/public-api-images/documenso-user-dropdown-menu.webp index 925692113..1699b9406 100644 Binary files a/apps/documentation/public/public-api-images/documenso-user-dropdown-menu.webp and b/apps/documentation/public/public-api-images/documenso-user-dropdown-menu.webp differ diff --git a/apps/documentation/public/teams/team-branding-preferences.webp b/apps/documentation/public/teams/team-branding-preferences.webp deleted file mode 100644 index df8bcc451..000000000 Binary files a/apps/documentation/public/teams/team-branding-preferences.webp and /dev/null differ diff --git a/apps/documentation/public/teams/team-preferences-document-visibility.webp b/apps/documentation/public/teams/team-preferences-document-visibility.webp deleted file mode 100644 index 71674db01..000000000 Binary files a/apps/documentation/public/teams/team-preferences-document-visibility.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page-fields.webp b/apps/documentation/public/templates/documenso-template-page-fields.webp deleted file mode 100644 index 0ef23c6ca..000000000 Binary files a/apps/documentation/public/templates/documenso-template-page-fields.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page-upload-document.webp b/apps/documentation/public/templates/documenso-template-page-upload-document.webp deleted file mode 100644 index 6cc1e5111..000000000 Binary files a/apps/documentation/public/templates/documenso-template-page-upload-document.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page-uploaded-document-advanced-options.webp b/apps/documentation/public/templates/documenso-template-page-uploaded-document-advanced-options.webp deleted file mode 100644 index d01346000..000000000 Binary files a/apps/documentation/public/templates/documenso-template-page-uploaded-document-advanced-options.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page-uploaded-document-email-options.webp b/apps/documentation/public/templates/documenso-template-page-uploaded-document-email-options.webp deleted file mode 100644 index 7120e1994..000000000 Binary files a/apps/documentation/public/templates/documenso-template-page-uploaded-document-email-options.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page-uploaded-document.webp b/apps/documentation/public/templates/documenso-template-page-uploaded-document.webp index 2f06104aa..2ad050894 100644 Binary files a/apps/documentation/public/templates/documenso-template-page-uploaded-document.webp and b/apps/documentation/public/templates/documenso-template-page-uploaded-document.webp differ diff --git a/apps/documentation/public/templates/documenso-template-page-with-a-template.webp b/apps/documentation/public/templates/documenso-template-page-with-a-template.webp deleted file mode 100644 index 249e35b79..000000000 Binary files a/apps/documentation/public/templates/documenso-template-page-with-a-template.webp and /dev/null differ diff --git a/apps/documentation/public/templates/documenso-template-page.webp b/apps/documentation/public/templates/documenso-template-page.webp index 6c8356746..e69460477 100644 Binary files a/apps/documentation/public/templates/documenso-template-page.webp and b/apps/documentation/public/templates/documenso-template-page.webp differ diff --git a/apps/documentation/public/templates/documenso-template-recipients.webp b/apps/documentation/public/templates/documenso-template-recipients.webp index 1cc7da8da..f11b41d4e 100644 Binary files a/apps/documentation/public/templates/documenso-template-recipients.webp and b/apps/documentation/public/templates/documenso-template-recipients.webp differ diff --git a/apps/documentation/public/templates/documenso-use-template.webp b/apps/documentation/public/templates/documenso-use-template.webp index e590cb20d..81f60fc2f 100644 Binary files a/apps/documentation/public/templates/documenso-use-template.webp and b/apps/documentation/public/templates/documenso-use-template.webp differ diff --git a/apps/documentation/public/webhook-images/create-webhook-dialog.webp b/apps/documentation/public/webhook-images/create-webhook-dialog.webp new file mode 100644 index 000000000..25fd1cac8 Binary files /dev/null and b/apps/documentation/public/webhook-images/create-webhook-dialog.webp differ diff --git a/apps/documentation/public/webhook-images/dashboard-user-dropdown-menu.webp b/apps/documentation/public/webhook-images/dashboard-user-dropdown-menu.webp deleted file mode 100644 index 71838b2d7..000000000 Binary files a/apps/documentation/public/webhook-images/dashboard-user-dropdown-menu.webp and /dev/null differ diff --git a/apps/documentation/public/webhook-images/documenso-main-page.webp b/apps/documentation/public/webhook-images/documenso-main-page.webp new file mode 100644 index 000000000..b9f67a5af Binary files /dev/null and b/apps/documentation/public/webhook-images/documenso-main-page.webp differ diff --git a/apps/documentation/public/webhook-images/test-webhook-dialog.webp b/apps/documentation/public/webhook-images/test-webhook-dialog.webp deleted file mode 100644 index 59cdbfead..000000000 Binary files a/apps/documentation/public/webhook-images/test-webhook-dialog.webp and /dev/null differ diff --git a/apps/documentation/public/webhook-images/test-webhooks-page.webp b/apps/documentation/public/webhook-images/test-webhooks-page.webp deleted file mode 100644 index b5b833ced..000000000 Binary files a/apps/documentation/public/webhook-images/test-webhooks-page.webp and /dev/null differ diff --git a/apps/documentation/public/webhook-images/webhook-detail-page.webp b/apps/documentation/public/webhook-images/webhook-detail-page.webp new file mode 100644 index 000000000..ba9e0bf9e Binary files /dev/null and b/apps/documentation/public/webhook-images/webhook-detail-page.webp differ diff --git a/apps/documentation/public/webhook-images/webhook-run-page.webp b/apps/documentation/public/webhook-images/webhook-run-page.webp new file mode 100644 index 000000000..0a103a1fb Binary files /dev/null and b/apps/documentation/public/webhook-images/webhook-run-page.webp differ diff --git a/apps/documentation/public/webhook-images/webhook-test-trigger.webp b/apps/documentation/public/webhook-images/webhook-test-trigger.webp new file mode 100644 index 000000000..c5c93f94d Binary files /dev/null and b/apps/documentation/public/webhook-images/webhook-test-trigger.webp differ diff --git a/apps/documentation/public/webhook-images/webhooks-main-page.webp b/apps/documentation/public/webhook-images/webhooks-main-page.webp new file mode 100644 index 000000000..ac8ea2e88 Binary files /dev/null and b/apps/documentation/public/webhook-images/webhooks-main-page.webp differ diff --git a/apps/documentation/public/webhook-images/webhooks-page-create-webhook-modal.webp b/apps/documentation/public/webhook-images/webhooks-page-create-webhook-modal.webp deleted file mode 100644 index ed0ef44df..000000000 Binary files a/apps/documentation/public/webhook-images/webhooks-page-create-webhook-modal.webp and /dev/null differ diff --git a/apps/documentation/public/webhook-images/webhooks-page.webp b/apps/documentation/public/webhook-images/webhooks-page.webp index fd3d8998e..9df677425 100644 Binary files a/apps/documentation/public/webhook-images/webhooks-page.webp and b/apps/documentation/public/webhook-images/webhooks-page.webp differ diff --git a/apps/documentation/public/webhook-images/webhooks-settings-page.webp b/apps/documentation/public/webhook-images/webhooks-settings-page.webp deleted file mode 100644 index 2def663d9..000000000 Binary files a/apps/documentation/public/webhook-images/webhooks-settings-page.webp and /dev/null differ diff --git a/apps/documentation/styles.css b/apps/documentation/styles.css index b5c61c956..c85cde949 100644 --- a/apps/documentation/styles.css +++ b/apps/documentation/styles.css @@ -1,3 +1,7 @@ @tailwind base; @tailwind components; @tailwind utilities; + +html { + scroll-behavior: smooth; +} diff --git a/apps/documentation/tailwind.config.js b/apps/documentation/tailwind.config.cjs similarity index 86% rename from apps/documentation/tailwind.config.js rename to apps/documentation/tailwind.config.cjs index d6187ba34..31d990bc8 100644 --- a/apps/documentation/tailwind.config.js +++ b/apps/documentation/tailwind.config.cjs @@ -8,7 +8,9 @@ module.exports = { ...baseConfig.content, `${path.join(require.resolve('@documenso/ui'), '..')}/**/*.{ts,tsx}`, './pages/**/*.{js,ts,jsx,tsx,mdx}', + './content/**/*.{js,ts,jsx,tsx,mdx}', './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', ], theme: { fontFamily: { diff --git a/apps/documentation/theme.config.tsx b/apps/documentation/theme.config.tsx index d6a0a6747..e0a8b0e84 100644 --- a/apps/documentation/theme.config.tsx +++ b/apps/documentation/theme.config.tsx @@ -4,7 +4,7 @@ import { useConfig } from 'nextra-theme-docs'; const themeConfig: DocsThemeConfig = { logo: Documenso, head: function useHead() { - const config = useConfig<{ title?: string; description?: string }>(); + const config = useConfig(); const title = `${config.frontMatter.title} | Documenso Docs` || 'Documenso Docs'; const description = config.frontMatter.description || 'The official Documenso documentation'; @@ -12,6 +12,7 @@ const themeConfig: DocsThemeConfig = { return ( <> + {title} @@ -46,7 +47,7 @@ const themeConfig: DocsThemeConfig = { }, docsRepositoryBase: 'https://github.com/documenso/documenso/tree/main/apps/documentation', footer: { - text: ( + content: ( {new Date().getFullYear()} ©{' '} @@ -56,12 +57,9 @@ const themeConfig: DocsThemeConfig = { ), }, - primaryHue: 100, - primarySaturation: 48.47, - useNextSeoProps() { - return { - titleTemplate: '%s | Documenso Docs', - }; + color: { + hue: 100, + saturation: 48.47, }, }; diff --git a/apps/documentation/tsconfig.json b/apps/documentation/tsconfig.json index 678b0c9bf..8f1978577 100644 --- a/apps/documentation/tsconfig.json +++ b/apps/documentation/tsconfig.json @@ -1,13 +1,17 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", @@ -18,10 +22,21 @@ } ], "paths": { - "@/*": ["./*"] + "@/*": [ + "./*" + ] }, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "tailwind.config.js"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "tailwind.config.js" + ], + "exclude": [ + "node_modules" + ] } diff --git a/apps/openpage-api/next.config.js b/apps/openpage-api/next.config.js deleted file mode 100644 index 658404ac6..000000000 --- a/apps/openpage-api/next.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; - -module.exports = nextConfig; diff --git a/apps/openpage-api/next.config.ts b/apps/openpage-api/next.config.ts new file mode 100644 index 000000000..b22af960a --- /dev/null +++ b/apps/openpage-api/next.config.ts @@ -0,0 +1,5 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = {}; + +export default nextConfig; diff --git a/apps/openpage-api/package.json b/apps/openpage-api/package.json index 8e5447cca..a38d1160b 100644 --- a/apps/openpage-api/package.json +++ b/apps/openpage-api/package.json @@ -5,18 +5,18 @@ "scripts": { "dev": "next dev -p 3003", "build": "next build", - "start": "next start", + "start": "next start -p 3003", "lint:fix": "next lint --fix", "clean": "rimraf .next && rimraf node_modules" }, "dependencies": { "@documenso/prisma": "*", - "luxon": "^3.5.0", - "next": "14.2.28" + "luxon": "^3.7.2", + "next": "15.5.9" }, "devDependencies": { "@types/node": "^20", - "@types/react": "18.3.5", + "@types/react": "18.3.27", "typescript": "5.6.2" } -} \ No newline at end of file +} diff --git a/apps/remix/app/app.css b/apps/remix/app/app.css index e45e2ae35..9255cdb6a 100644 --- a/apps/remix/app/app.css +++ b/apps/remix/app/app.css @@ -27,9 +27,45 @@ font-display: swap; } +@font-face { + font-family: 'Noto Sans'; + src: url('/fonts/noto-sans.ttf') format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +/* Korean noto sans */ +@font-face { + font-family: 'Noto Sans Korean'; + src: url('/fonts/noto-sans-korean.ttf') format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +/* Japanese noto sans */ +@font-face { + font-family: 'Noto Sans Japanese'; + src: url('/fonts/noto-sans-japanese.ttf') format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +/* Chinese noto sans */ +@font-face { + font-family: 'Noto Sans Chinese'; + src: url('/fonts/noto-sans-chinese.ttf') format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + @layer base { :root { --font-sans: 'Inter'; --font-signature: 'Caveat'; + --font-noto: 'Noto Sans', 'Noto Sans Korean', 'Noto Sans Japanese', 'Noto Sans Chinese'; } } diff --git a/apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx b/apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx index aee9167cc..076fb0546 100644 --- a/apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx +++ b/apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx @@ -45,7 +45,7 @@ export const AdminDocumentDeleteDialog = ({ envelopeId }: AdminDocumentDeleteDia toast({ title: _(msg`Document deleted`), - description: 'The Document has been deleted successfully.', + description: _(msg`The Document has been deleted successfully.`), duration: 5000, }); @@ -54,8 +54,9 @@ export const AdminDocumentDeleteDialog = ({ envelopeId }: AdminDocumentDeleteDia toast({ title: _(msg`An unknown error occurred`), variant: 'destructive', - description: - 'We encountered an unknown error while attempting to delete your document. Please try again later.', + description: _( + msg`We encountered an unknown error while attempting to delete your document. Please try again later.`, + ), }); } }; diff --git a/apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx b/apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx new file mode 100644 index 000000000..1889369e3 --- /dev/null +++ b/apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx @@ -0,0 +1,218 @@ +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useLingui } from '@lingui/react/macro'; +import { Trans } from '@lingui/react/macro'; +import { OrganisationMemberRole } from '@prisma/client'; +import type * as DialogPrimitive from '@radix-ui/react-dialog'; +import { useForm } from 'react-hook-form'; +import { useNavigate } from 'react-router'; +import { match } from 'ts-pattern'; +import { z } from 'zod'; + +import { getHighestOrganisationRoleInGroup } from '@documenso/lib/utils/organisations'; +import { trpc } from '@documenso/trpc/react'; +import type { TGetAdminOrganisationResponse } from '@documenso/trpc/server/admin-router/get-admin-organisation.types'; +import { Button } from '@documenso/ui/primitives/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from '@documenso/ui/primitives/dialog'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@documenso/ui/primitives/form/form'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@documenso/ui/primitives/select'; +import { useToast } from '@documenso/ui/primitives/use-toast'; + +export type AdminOrganisationMemberUpdateDialogProps = { + trigger?: React.ReactNode; + organisationId: string; + organisationMember: TGetAdminOrganisationResponse['members'][number]; + isOwner: boolean; +} & Omit; + +const ZUpdateOrganisationMemberFormSchema = z.object({ + role: z.enum(['OWNER', 'ADMIN', 'MANAGER', 'MEMBER']), +}); + +type ZUpdateOrganisationMemberSchema = z.infer; + +export const AdminOrganisationMemberUpdateDialog = ({ + trigger, + organisationId, + organisationMember, + isOwner, + ...props +}: AdminOrganisationMemberUpdateDialogProps) => { + const [open, setOpen] = useState(false); + + const { t } = useLingui(); + const { toast } = useToast(); + const navigate = useNavigate(); + + // Determine the current role value for the form + const currentRoleValue = isOwner + ? 'OWNER' + : getHighestOrganisationRoleInGroup( + organisationMember.organisationGroupMembers.map((ogm) => ogm.group), + ); + const organisationMemberName = organisationMember.user.name ?? organisationMember.user.email; + + const form = useForm({ + resolver: zodResolver(ZUpdateOrganisationMemberFormSchema), + defaultValues: { + role: currentRoleValue, + }, + }); + + const { mutateAsync: updateOrganisationMemberRole } = + trpc.admin.organisationMember.updateRole.useMutation(); + + const onFormSubmit = async ({ role }: ZUpdateOrganisationMemberSchema) => { + try { + await updateOrganisationMemberRole({ + organisationId, + userId: organisationMember.userId, + role, + }); + + const roleLabel = match(role) + .with('OWNER', () => t`Owner`) + .with(OrganisationMemberRole.ADMIN, () => t`Admin`) + .with(OrganisationMemberRole.MANAGER, () => t`Manager`) + .with(OrganisationMemberRole.MEMBER, () => t`Member`) + .exhaustive(); + + toast({ + title: t`Success`, + description: + role === 'OWNER' + ? t`Ownership transferred to ${organisationMemberName}.` + : t`Updated ${organisationMemberName} to ${roleLabel}.`, + duration: 5000, + }); + + setOpen(false); + + // Refresh the page to show updated data + await navigate(0); + } catch (err) { + console.error(err); + + toast({ + title: t`An unknown error occurred`, + description: t`We encountered an unknown error while attempting to update this organisation member. Please try again later.`, + variant: 'destructive', + }); + } + }; + + useEffect(() => { + if (!open) { + return; + } + + form.reset({ + role: currentRoleValue, + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [open, currentRoleValue, form]); + + return ( + !form.formState.isSubmitting && setOpen(value)} + > + e.stopPropagation()} asChild> + {trigger ?? ( + + )} + + + + + + Update organisation member + + + + + You are currently updating {organisationMemberName} + . + + + + +
+ +
+ ( + + + Role + + + + + + + )} + /> + + + + + + +
+
+ +
+
+ ); +}; diff --git a/apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx b/apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx new file mode 100644 index 000000000..20c2c1e8e --- /dev/null +++ b/apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx @@ -0,0 +1,141 @@ +import { useState } from 'react'; + +import { useLingui } from '@lingui/react/macro'; +import { Trans } from '@lingui/react/macro'; +import { OrganisationMemberRole, TeamMemberRole } from '@prisma/client'; + +import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation'; +import { trpc } from '@documenso/trpc/react'; +import { Alert, AlertDescription } from '@documenso/ui/primitives/alert'; +import { Button } from '@documenso/ui/primitives/button'; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from '@documenso/ui/primitives/dialog'; + +import { useCurrentTeam } from '~/providers/team'; + +type AiFeaturesEnableDialogProps = { + open: boolean; + onOpenChange: (open: boolean) => void; + onEnabled: () => void; +}; + +export const AiFeaturesEnableDialog = ({ + open, + onOpenChange, + onEnabled, +}: AiFeaturesEnableDialogProps) => { + const { t } = useLingui(); + + const team = useCurrentTeam(); + const organisation = useCurrentOrganisation(); + + const isTeamAdmin = team.currentTeamRole === TeamMemberRole.ADMIN; + const isOrganisationAdmin = organisation.currentOrganisationRole === OrganisationMemberRole.ADMIN; + const canEnableAiFeatures = isTeamAdmin || isOrganisationAdmin; + + const [error, setError] = useState(null); + + const { mutateAsync: updateTeamSettings, isPending: isUpdatingTeamSettings } = + trpc.team.settings.update.useMutation(); + const { mutateAsync: updateOrganisationSettings, isPending: isUpdatingOrganisationSettings } = + trpc.organisation.settings.update.useMutation(); + + const isSubmitting = isUpdatingTeamSettings || isUpdatingOrganisationSettings; + + const onEnableClick = async () => { + if (!canEnableAiFeatures) { + return; + } + + setError(null); + + try { + if (isTeamAdmin) { + await updateTeamSettings({ + teamId: team.id, + data: { aiFeaturesEnabled: true }, + }); + } else { + await updateOrganisationSettings({ + organisationId: organisation.id, + data: { aiFeaturesEnabled: true }, + }); + } + + onEnabled(); + onOpenChange(false); + } catch (err) { + console.error('Failed to enable AI features', err); + setError( + err instanceof Error + ? err.message + : t`We couldn't enable AI features right now. Please try again.`, + ); + } + }; + + return ( + + + + + Enable AI features + + + +
+

+ + Turn on AI detection to automatically find recipients and fields in your documents. AI + providers do not retain your data for training. + +

+ + + + + Your document content will be sent securely to our AI provider solely for detection + and will not be stored or used for training. + + + + + {canEnableAiFeatures ? ( +

+ + You're an admin. You can enable AI features for this team right away. Everyone on + the team will see AI detection once enabled. + +

+ ) : ( +

+ + AI features are disabled for your team. Please ask your team owner or organisation + owner to enable them. + +

+ )} + + {error ?

{error}

: null} +
+ + + + + {canEnableAiFeatures ? ( + + ) : null} + +
+
+ ); +}; diff --git a/apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx b/apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx new file mode 100644 index 000000000..748966960 --- /dev/null +++ b/apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -0,0 +1,381 @@ +import { useCallback, useEffect, useMemo, useState } from 'react'; + +import type { MessageDescriptor } from '@lingui/core'; +import { msg } from '@lingui/core/macro'; +import { useLingui } from '@lingui/react'; +import { Plural, Trans } from '@lingui/react/macro'; +import { CheckIcon, FormInputIcon, ShieldCheckIcon } from 'lucide-react'; + +import type { NormalizedFieldWithContext } from '@documenso/lib/server-only/ai/envelope/detect-fields/types'; +import { Alert, AlertDescription } from '@documenso/ui/primitives/alert'; +import { Button } from '@documenso/ui/primitives/button'; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from '@documenso/ui/primitives/dialog'; +import { Label } from '@documenso/ui/primitives/label'; +import { Textarea } from '@documenso/ui/primitives/textarea'; + +import { + AiApiError, + type DetectFieldsProgressEvent, + detectFields, +} from '../../../server/api/ai/detect-fields.client'; +import { AnimatedDocumentScanner } from '../general/animated-document-scanner'; + +type DialogState = 'PROMPT' | 'PROCESSING' | 'REVIEW' | 'ERROR' | 'RATE_LIMITED'; + +type AiFieldDetectionDialogProps = { + open: boolean; + onOpenChange: (open: boolean) => void; + onComplete: (fields: NormalizedFieldWithContext[]) => void; + envelopeId: string; + teamId: number; +}; + +const PROCESSING_MESSAGES = [ + msg`Reading your document`, + msg`Analyzing page layout`, + msg`Looking for form fields`, + msg`Detecting signature areas`, + msg`Identifying input fields`, + msg`Mapping fields to recipients`, + msg`Almost done`, +] as const; + +const FIELD_TYPE_LABELS: Record = { + SIGNATURE: msg`Signature`, + INITIALS: msg`Initials`, + NAME: msg`Name`, + EMAIL: msg`Email`, + DATE: msg`Date`, + TEXT: msg`Text`, + NUMBER: msg`Number`, + CHECKBOX: msg`Checkbox`, + RADIO: msg`Radio`, +}; + +export const AiFieldDetectionDialog = ({ + open, + onOpenChange, + onComplete, + envelopeId, + teamId, +}: AiFieldDetectionDialogProps) => { + const { _ } = useLingui(); + + const [state, setState] = useState('PROMPT'); + const [messageIndex, setMessageIndex] = useState(0); + const [detectedFields, setDetectedFields] = useState([]); + const [error, setError] = useState(null); + const [context, setContext] = useState(''); + const [progress, setProgress] = useState(null); + + const onDetectClick = useCallback(async () => { + setState('PROCESSING'); + setMessageIndex(0); + setError(null); + setProgress(null); + + try { + await detectFields({ + request: { + envelopeId, + teamId, + context: context || undefined, + }, + onProgress: (progressEvent) => { + setProgress(progressEvent); + }, + onComplete: (event) => { + setDetectedFields(event.fields); + setState('REVIEW'); + }, + onError: (err) => { + console.error('Detection failed:', err); + + if (err.status === 429) { + setState('RATE_LIMITED'); + return; + } + + setError(err.message); + setState('ERROR'); + }, + }); + } catch (err) { + console.error('Detection failed:', err); + + if (err instanceof AiApiError && err.status === 429) { + setState('RATE_LIMITED'); + return; + } + + setError(err instanceof Error ? err.message : 'Failed to detect fields'); + setState('ERROR'); + } + }, [envelopeId, teamId, context]); + + const onAddFields = () => { + onComplete(detectedFields); + onOpenChange(false); + setState('PROMPT'); + setDetectedFields([]); + setContext(''); + }; + + const onClose = () => { + onOpenChange(false); + setState('PROMPT'); + setDetectedFields([]); + setError(null); + setContext(''); + setProgress(null); + }; + + // Group fields by type for summary display + const fieldCountsByType = useMemo(() => { + const counts: Record = {}; + + for (const field of detectedFields) { + counts[field.type] = (counts[field.type] || 0) + 1; + } + + return Object.entries(counts).sort(([, a], [, b]) => b - a); + }, [detectedFields]); + + useEffect(() => { + if (state !== 'PROCESSING') { + return; + } + + const interval = setInterval(() => { + setMessageIndex((prev) => (prev + 1) % PROCESSING_MESSAGES.length); + }, 4000); + + return () => clearInterval(interval); + }, [state]); + + return ( + + + {state === 'PROMPT' && ( + <> + + + Detect fields + + + +
+

+ + We'll scan your document to find form fields like signature lines, text inputs, + checkboxes, and more. Detected fields will be suggested for you to review. + +

+ + + + + + Your document is processed securely using AI services that don't retain your + data. + + + + +
+ +