From be7311f71fcec9b70b6f4dc353175140f5bca944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Mon, 21 Sep 2026 23:06:52 +0200 Subject: [PATCH 1/4] Fix BenchmarkConnector call to console.warning Opening any remote workload outside the harness threw a TypeError on the first stray message instead of logging it. Note that I didn't rebuild the existing remote workloads. I checked the others and it looks like they show a bit diff in the bundle, so I chose to leave them for now. The next rebuild will take this up. --- resources/shared/benchmark.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/shared/benchmark.mjs b/resources/shared/benchmark.mjs index 3398729f4..7fd490daa 100644 --- a/resources/shared/benchmark.mjs +++ b/resources/shared/benchmark.mjs @@ -132,7 +132,7 @@ export class BenchmarkConnector { async onMessage(event) { const message = event.data; if (message.appId !== this.appId || message.key !== "benchmark-connector") { - console.warning("Invalid message", message); + console.warn("Invalid message", message); return; } From f7a1ac2bb31cc95b6cea77f7681ec81d1aa28cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Mon, 21 Sep 2026 23:05:06 +0200 Subject: [PATCH 2/4] Fix AsyncBenchmarkStep never awaiting its step `StepRunner` only awaited the step body when its "type" argument was "async". `AsyncBenchmarkStep` created an `AsyncStepRunner` without passing that argument, so the step promise was never awaited and an async remote step measured ~0ms with no error. This commit makes the runner class decide instead: an `isAsync` getter is false on `StepRunner` and true on `AsyncStepRunner`, and the type argument is removed. Sync steps stay a plain call, since awaiting them would add a microtask hop to the measured time. The bug was never hit because nothing in the tree or in the open workload PRs uses `AsyncBenchmarkStep`. But this is a requirement for the pdf.js workload that I'm working on. --- resources/shared/step-runner.mjs | 14 +++++--- resources/suite-runner.mjs | 2 +- tests/index.html | 1 + tests/unittests/benchmark-runner.mjs | 4 +-- tests/unittests/benchmark.mjs | 54 ++++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 tests/unittests/benchmark.mjs diff --git a/resources/shared/step-runner.mjs b/resources/shared/step-runner.mjs index 1b03d270e..3e86cbd9e 100644 --- a/resources/shared/step-runner.mjs +++ b/resources/shared/step-runner.mjs @@ -7,15 +7,13 @@ export class StepRunner { #params; #suite; #step; - #type; - constructor(frame, page, params, suite, step, type) { + constructor(frame, page, params, suite, step) { this.#suite = suite; this.#step = step; this.#params = params; this.#page = page; this.#frame = frame; - this.#type = type; } get page() { @@ -26,6 +24,10 @@ export class StepRunner { return this.#step; } + get isAsync() { + return false; + } + _runSyncStep(step, page) { step.run(page); } @@ -54,7 +56,7 @@ export class StepRunner { performance.mark(syncStartLabel); const syncStartTime = performance.now(); - if (this.#type === "async") + if (this.isAsync) await this._runSyncStep(this.step, this.page); else this._runSyncStep(this.step, this.page); @@ -96,6 +98,10 @@ export class StepRunner { } export class AsyncStepRunner extends StepRunner { + get isAsync() { + return true; + } + async _runSyncStep(step, page) { await step.run(page); } diff --git a/resources/suite-runner.mjs b/resources/suite-runner.mjs index ca87f36f3..33eb20be7 100644 --- a/resources/suite-runner.mjs +++ b/resources/suite-runner.mjs @@ -93,7 +93,7 @@ export class SuiteRunner { const stepRunnerType = this.#suite.type ?? this.params.useAsyncSteps ? "async" : "default"; const stepRunnerClass = STEP_RUNNER_LOOKUP[stepRunnerType]; - const stepRunner = new stepRunnerClass(this.#frame, this.#page, this.#params, this.#suite, step, stepRunnerType); + const stepRunner = new stepRunnerClass(this.#frame, this.#page, this.#params, this.#suite, step); let { syncTime, asyncTime } = await stepRunner.runStep(); this._recordTestResults(step, syncTime, asyncTime); } diff --git a/tests/index.html b/tests/index.html index a6bc60a3b..f09c29f68 100644 --- a/tests/index.html +++ b/tests/index.html @@ -27,6 +27,7 @@ }, }); + await import("./unittests/benchmark.mjs"); await import("./unittests/benchmark-runner.mjs"); await import("./unittests/params.mjs"); await import("./unittests/suites.mjs"); diff --git a/tests/unittests/benchmark-runner.mjs b/tests/unittests/benchmark-runner.mjs index b2a692281..a95a28790 100644 --- a/tests/unittests/benchmark-runner.mjs +++ b/tests/unittests/benchmark-runner.mjs @@ -265,7 +265,7 @@ describe("BenchmarkRunner", () => { it("should run StepRunner and return { syncTime, asyncTime }", async () => { const step = new BenchmarkTestStep("SyncStep", sinon.stub()); - const runner = new StepRunner(null, null, params, suite, step, "default"); + const runner = new StepRunner(null, null, params, suite, step); const { syncTime, asyncTime } = await runner.runStep(); expect(typeof syncTime).to.equal("number"); expect(typeof asyncTime).to.equal("number"); @@ -277,7 +277,7 @@ describe("BenchmarkRunner", () => { "AsyncStep", sinon.stub().callsFake(async () => {}) ); - const runner = new AsyncStepRunner(null, null, params, suite, asyncStep, "async"); + const runner = new AsyncStepRunner(null, null, params, suite, asyncStep); const { syncTime, asyncTime } = await runner.runStep(); expect(typeof syncTime).to.equal("number"); expect(typeof asyncTime).to.equal("number"); diff --git a/tests/unittests/benchmark.mjs b/tests/unittests/benchmark.mjs new file mode 100644 index 000000000..de111707b --- /dev/null +++ b/tests/unittests/benchmark.mjs @@ -0,0 +1,54 @@ +import { AsyncBenchmarkStep, AsyncBenchmarkSuite, BenchmarkStep, BenchmarkSuite } from "../../resources/shared/benchmark.mjs"; +import { Params } from "../../resources/shared/params.mjs"; +import { skipInShell } from "../../resources/shared/helpers.mjs"; + +const SLEEP_MS = 200; + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +describe("BenchmarkSuite", () => { + let params; + + before(function () { + // The step schedulers need requestAnimationFrame and a document. + skipInShell(this); + params = new Params(); + }); + + it("should measure the work of a sync step", async () => { + const suite = new BenchmarkSuite("SyncProbe", [ + new BenchmarkStep("BusyStep", () => { + const start = performance.now(); + while (performance.now() - start < SLEEP_MS) + continue; + }), + ]); + + const { result } = await suite.runAndRecordSuite(params); + + expect(result.tests.BusyStep.tests.Sync).to.be.greaterThan(SLEEP_MS * 0.9); + expect(result.total).to.be.greaterThan(SLEEP_MS * 0.9); + }); +}); + +describe("AsyncBenchmarkSuite", () => { + let params; + + before(function () { + skipInShell(this); + params = new Params(); + }); + + // AsyncBenchmarkStep used to construct its AsyncStepRunner without a type, leaving + // StepRunner on the non-awaiting branch, so this reported ~0ms. + it("should measure the work of a step that resolves asynchronously", async () => { + const suite = new AsyncBenchmarkSuite("AsyncProbe", [new AsyncBenchmarkStep("SleepingStep", () => sleep(SLEEP_MS))]); + + const { result } = await suite.runAndRecordSuite(params); + + expect(result.tests.SleepingStep.tests.Sync).to.be.greaterThan(SLEEP_MS * 0.9); + expect(result.total).to.be.greaterThan(SLEEP_MS * 0.9); + }); +}); From 7b431854abe22af24bac01d128525e39f34f03a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Wed, 9 Sep 2026 20:01:38 +0200 Subject: [PATCH 3/4] Add the PDFViewer-PDFjs experimental workload A document viewer on the pdf.js core API. It covers work like: canvas 2D drawing, rasterising glyphs from embedded fonts and JPEG decoding. The suite is `remote` with a single async step that renders `6 * complexity` pages and their thumbnails. Decisions worth knowing about: - It uses the core API rather than pdf.js' `pdf_viewer.mjs`, whose render queue and scroll handling schedule work with setTimeout that would land inside the measured step. - pdf.js continues each render chunk on requestAnimationFrame, which ties the step to the display's refresh rate. The step swaps rAF for a timer while it runs, and restores it after. - Nothing is rendered before the step, since pdf.js caches operator lists per page and an early render would leave the step a warm cache. - The fixture PDF is generated at build time with PDFKit, so its content is reviewable as code and byte-identical between builds. --- suites-experimental/pdf-viewer/.gitignore | 2 + suites-experimental/pdf-viewer/README.md | 103 + .../pdf-viewer/assets/README.md | 29 + .../pdf-viewer/assets/apollo11-launch.jpg | Bin 0 -> 225474 bytes .../pdf-viewer/assets/earth-apollo17.jpg | Bin 0 -> 331562 bytes .../pdf-viewer/assets/earthrise-apollo8.jpg | Bin 0 -> 64801 bytes .../assets/grand-prismatic-spring.jpg | Bin 0 -> 285676 bytes suites-experimental/pdf-viewer/index.html | 19 + .../pdf-viewer/package-lock.json | 1699 +++++++++++++++++ suites-experimental/pdf-viewer/package.json | 28 + .../pdf-viewer/scripts/analyze-pdf.mjs | 209 ++ .../pdf-viewer/scripts/generate-pdf.mjs | 1165 +++++++++++ suites-experimental/pdf-viewer/src/chrome.js | 108 ++ suites-experimental/pdf-viewer/src/main.js | 65 + suites-experimental/pdf-viewer/src/styles.css | 248 +++ suites-experimental/pdf-viewer/src/viewer.js | 107 ++ .../pdf-viewer/src/workload-test.mjs | 41 + suites-experimental/pdf-viewer/vite.config.js | 48 + 18 files changed, 3871 insertions(+) create mode 100644 suites-experimental/pdf-viewer/.gitignore create mode 100644 suites-experimental/pdf-viewer/README.md create mode 100644 suites-experimental/pdf-viewer/assets/README.md create mode 100644 suites-experimental/pdf-viewer/assets/apollo11-launch.jpg create mode 100644 suites-experimental/pdf-viewer/assets/earth-apollo17.jpg create mode 100644 suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg create mode 100644 suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg create mode 100644 suites-experimental/pdf-viewer/index.html create mode 100644 suites-experimental/pdf-viewer/package-lock.json create mode 100644 suites-experimental/pdf-viewer/package.json create mode 100644 suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs create mode 100644 suites-experimental/pdf-viewer/scripts/generate-pdf.mjs create mode 100644 suites-experimental/pdf-viewer/src/chrome.js create mode 100644 suites-experimental/pdf-viewer/src/main.js create mode 100644 suites-experimental/pdf-viewer/src/styles.css create mode 100644 suites-experimental/pdf-viewer/src/viewer.js create mode 100644 suites-experimental/pdf-viewer/src/workload-test.mjs create mode 100644 suites-experimental/pdf-viewer/vite.config.js diff --git a/suites-experimental/pdf-viewer/.gitignore b/suites-experimental/pdf-viewer/.gitignore new file mode 100644 index 000000000..36170a7e3 --- /dev/null +++ b/suites-experimental/pdf-viewer/.gitignore @@ -0,0 +1,2 @@ +node_modules +public diff --git a/suites-experimental/pdf-viewer/README.md b/suites-experimental/pdf-viewer/README.md new file mode 100644 index 000000000..e30df323b --- /dev/null +++ b/suites-experimental/pdf-viewer/README.md @@ -0,0 +1,103 @@ +# PDFViewer-PDFjs + +## Description + +A document viewer built on [pdf.js](https://mozilla.github.io/pdf.js/), the way sites +embed it for inline previews. It exercises work no other suite covers: canvas 2D drawing, +rasterising glyphs from embedded fonts, and JPEG decoding. + +The viewer uses the pdf.js core API directly rather than `pdf_viewer.mjs`, whose render +queue and scroll handling schedule work with timers we don't want inside a measured step. +It has a toolbar and a thumbnail sidebar similar to Firefox's built-in viewer, and lays +pages out in a wrapping grid. The toolbar buttons are inert. + +### Benchmark steps + +`RenderPages` renders `6 * complexity` pages, each into its main canvas and its sidebar +thumbnail, and waits for all of them. The pages render concurrently, since awaiting them +one by one would leave the step idle waiting on the worker. + +Worker startup, fetching the document, `getDocument` and `getPage` all happen before the +app signals `app-ready`, so they are not measured. Nothing is rendered ahead of the step: +pdf.js caches a page's operator list, so rendering early would leave the step with a warm +cache. + +The suite is `remote`. The steps await pdf.js promises, so they run inside the workload's +frame through `BenchmarkConnector`. + +### The requestAnimationFrame shim + +pdf.js splits a render into 15ms chunks and continues each one on the next animation +frame. That ties the step's duration to the display's refresh rate, so for the duration +of the step `requestAnimationFrame` is replaced with a zero-delay timer. The shim is +scoped to the step because the harness's step scheduler also uses animation frames. + +## The document + +`document.pdf` is a 24-page report generated at build time by `scripts/generate-pdf.mjs` +with [PDFKit](https://pdfkit.org/), so what it contains is reviewable as code. The output +is byte-identical between builds. Each page is one of four layouts: text, photos, charts +and a mixed page with a table. Between them they cover three embedded subset fonts, four +JPEG photos, an image soft mask, axial and radial shadings, a tiling pattern, clipping, +dash patterns, blend modes, link annotations, an outline and a tagged structure tree. + +Everything stays inside pdf.js' free tier: no CMaps, no standard fonts and no wasm image +decoders. `npm run analyze:pdf` checks that and exits non-zero if it stops being true. + +## Params + +- `complexity` scales the number of pages rendered. +- `pdfPixelRatio` sets canvas backing-store pixels per CSS pixel. It is pinned to `2` + instead of following `devicePixelRatio`, so every machine rasterises the same number of + pixels. The harness only forwards params it knows, so to override it add it to the + suite's `url` in `suites-experimental/suites.mjs`. + +## Build + +```sh +npm install +npm run build +``` + +`prebuild` regenerates `public/document.pdf`; `public/` is gitignored and `dist/` is +committed. Format sources before building so the committed source map stays in sync. + +## Requirements + +``` +* Node (min version: 24.0.0) +``` + +## Local preview + +Run the dev server from the repo root and load the suite through the harness: + +``` +http://127.0.0.1:8080/?developerMode&iterationCount=1&suites=PDFViewer-PDFjs +``` + +`npm run dev` inside this directory serves the viewer on its own, which is useful for +layout work but does not run the steps. + +## Dev tools + +```sh +npm run generate:pdf # rebuild public/document.pdf +npm run analyze:pdf # report what the document contains +``` + +## Third-party assets + +The photos are NASA and National Park Service works in the public domain; see +[`assets/README.md`](assets/README.md) for sources. + +The toolbar and sidebar icons come from `pdfjs-dist/web/images/` (Apache-2.0) and are +inlined into the built stylesheet. + +The fonts are read from `node_modules` at build time and embedded as subsets: + +| Role | Font | License | +| -------- | ----------------------------------------------------------------- | ----------- | +| Body | [Source Serif 4](https://github.com/adobe-fonts/source-serif) | SIL OFL 1.1 | +| Headings | [Inter](https://github.com/rsms/inter) | SIL OFL 1.1 | +| Code | [Source Code Pro](https://github.com/adobe-fonts/source-code-pro) | SIL OFL 1.1 | diff --git a/suites-experimental/pdf-viewer/assets/README.md b/suites-experimental/pdf-viewer/assets/README.md new file mode 100644 index 000000000..e8dc70375 --- /dev/null +++ b/suites-experimental/pdf-viewer/assets/README.md @@ -0,0 +1,29 @@ +# Photo provenance + +Every photo here is a work of the U.S. federal government (NASA or the National Park +Service) and is therefore in the public domain in the United States. None of them +carries an attribution requirement; the credits below are recorded for traceability, +not because the license demands them. + +Each file was downloaded from Wikimedia Commons at full resolution, then resized and +re-encoded once with ImageMagick and committed in that form: + +```sh +magick -auto-orient -resize -strip -sampling-factor 4:2:0 \ + -quality 82 -interlace none -colorspace sRGB +``` + +They are committed pre-sized so `scripts/generate-pdf.mjs` can embed the JPEG bytes +verbatim as `DCTDecode` streams without re-encoding, which keeps the generated PDF +byte-deterministic. + +| File | Box | Source | Credit | +| ---------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | +| `earth-apollo17.jpg` | 1400x1400 | [The Earth seen from Apollo 17](https://commons.wikimedia.org/wiki/File:The_Earth_seen_from_Apollo_17.jpg) | NASA, Apollo 17 crew, 1972 | +| `earthrise-apollo8.jpg` | 1200x1200 | [NASA-Apollo8-Dec24-Earthrise](https://commons.wikimedia.org/wiki/File:NASA-Apollo8-Dec24-Earthrise.jpg) | NASA / Bill Anders, Apollo 8, 1968 | +| `apollo11-launch.jpg` | 1120x1400 | [Apollo 11 Launch - GPN-2000-000630](https://commons.wikimedia.org/wiki/File:Apollo_11_Launch_-_GPN-2000-000630.jpg) | NASA, 1969 | +| `grand-prismatic-spring.jpg` | 1400x1400 | [Aerial view of Excelsior Geyser and Grand Prismatic Spring]() | National Park Service / Yellowstone National Park, 2006 | + +The four subjects were picked to spread the JPEG decode work: a bright subject on a +large black field, a small low-contrast frame, a grainy daylight scan with a smooth sky +gradient, and a saturated high-frequency aerial. diff --git a/suites-experimental/pdf-viewer/assets/apollo11-launch.jpg b/suites-experimental/pdf-viewer/assets/apollo11-launch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..586d9a197b51322eaf1754aa6d6e08d22eb160e8 GIT binary patch literal 225474 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[@s# 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
    1Ydgm&i{lomgFSTbjMW|oG(fvCyjlUH- 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
    Jj*196z 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

    ^~bT2H;w|N4Y-LyfIqDl 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

    Hw?ilCoK!-5h7hTM|0UNpF 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

    s}enEe;J$@>;Qc=^vv z6}efWZlJe3WsvQZ)$W67guNaLLlHkTO~i#Z9H2T}@i!}J?vkMFhb0@%>{0Uh2_zSL6UEK&y0R000TETjRjPp0l;-&Nz>5V|#X_P^*h&nv%= z3p%a^83DnQjhEt4;e~MgRb7;@5bJ%E5Dp31)rvVSqnPg#bbNFLFw-O;jmKm|%NQx+ zv;hef>l2woth#O*Rs`I~0l?#Z3{6Za8D~n1~9y- zk8o|7L6)+BI&D6Ytq2;HkMQ)AR8!(C+hOpyHQ0Zp2>4#g(Pe|+P9cWHFUCklNGCut z5M|XU#+q5$gVi9AuS@Cwfp8jNHe!c_;z`kIG4#0XzPoA%+ao&GNirwh^)A^;wmweaque1}LA zXQ&aR@h!tOyOhUtUHcm>2|nvaY-16>cu4xzSUx zn>g3@^4Hgu_3~-vtBdrFNTyCLwt~MXOBS-v004l{K)<#jOWFBA9XeSQpxZ7d?7fVxF}o-aqM@=|W&Tk+f&3 z=#zJZOY7j+^T{OZ`3d{=D%V#JiyqJ>i|OFFNJgq}f?s{(%p1yo577Qqb4nEo(86E(lsfYf2uMTRCL=ziSXqJ(6GMVO&}Ne(4vTkKISO9A8zP_jre9k4i#JEL!GlxR0nWio8$Tf%H>p2>oP;*A8EkW$uLolvS<2zJ$b{7 zTD%-D1I-^3Za@E+=9j~*=%c`AsjM;`cv53GJwz}Llxz+sSlh-?46<5RJfm)G@b#;j z39bcm6>&w3XdnbWOolv8-dPJYu$~DSewEZ_e?$)<}|@ZS#>6lUTZ z4I^g$7;6++C!q#!uu*4!KA(BR2@^6?L_dAApsMWUOCnW?RPx0|_IAARk5b%vM*AP= z*+IilvRSB4Y_U3OmWCe>3TKB;Ml@SixsNw;sI7=FvfhtKux)&DC*a~m(3cKn$MQap zwRR-vL8|=8f&K$&yV^3HIpx5m3fc2;*Cjs+BE~SvH0zV@S084f6ipE4mb9e< # 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�HU=pT{zE5();s&lc1xiTMyWdZ>4LjZ`>N4F@ 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
      1Y zdgm&i{lomgFSTbjMW|oG(fvCyjlUH-J!0b2D@`D{hA=%fkaqt7w>3)*<;C31E3;2Dr!39MZ;!os zx^|H4a7NB{kAIr6HnNuDElk|X_cB|^;9*6coFy1IfE5bp4N`&XM;R@k-8 z(wR1or3ml$G+SNVq+1AK5j%no)DV&^mU2rFardhYGU97_7ilfv`(mQBPZMq_gp}oW z_7yhP3DPEB`HEVgUG`Sr{eIdK=Skr9eP|IYo#Kf4&{W1ZO_Nh>+ zOsyd!=>ULfqGbO74hk|rB%D(bB+&l=6P8~4amFi5tfX`*v0JJfDPf-9YOB;qytFq< zAct!lu709%?d?!*^%Al&z{D}|JW^@)ms;2Y7FAS#-b4i@j1*!IIPr>yJ=3g8p>m{?lb-%fMtq^bAzwKJ`KR~#fTjtP zJ+Z}Dn@5{_DVQ+~4o4i*QmH5<3`2pO)Q3U_3XnYJqC+;vDEVMGu35>_;-l43E#qr+ zm`DlUNFD0~sYVia+sc!WYocpVf@F~Z3!RzytRATj31Uv{<8CX>XD;|vSfYYCGxjRVadXvRh|GwncPfGDLo2f3gR+KlHuDJe%33NhQ>p0*!XkOeY1*jC%nl#fdQcrudVhDIY zCccd7OM`Et%*D2|oP3(~{w6y3=kB;yJk@SyX{M8DF%ym7=~>Cq8OxK5_N`3TPbG`lbEakWF>WY^cnr#M{@EE=RMFliL`0B0u^rLx3uT0^~$uJQ)Q@_=ft z-%gr2=17+~J61*aJXq}}Y4DOqyr>&`}MuIk!N zG0&?Su$4ZZdwkZbs%G1^Sqn}P!WhqRJbu+chz2A)oC?pLqV|RO zRnoeqqkj5?a!qS%8t2p;2|QqX*J_&QPU(#zS>-DfF(%@0IW->7P|>Wk^|G;O;*Q-o zQSDq$@fYy|eQrZ(8mimG*gXECE6HYGCH*>aj8pZ`TFup3tK3X6Y=Eq5;8r?WR6o#0 z*8r1J?k8KM3|J^X$OoFLk#>=i+3ZOjtJ5cp)N!|UWqENDBxV%aWI&~xnt^l@BZLgV zu1PerMmAMobF<4AjrMrRD;=zt6mea&WNJ6Sg6G3oM1%%V0q zJZH$EG}cR>%3U8p^MY7@kG*|6qW&6amKJtX+?9DP&(XLH6Po9riT?nGGL1@m$Zn%~ z?a68_?n1c?8#2>d(vSk~77my2Wa~i@awl(s(ASBItc3KM!s-`CDtXj`fTG8N6rHg{S|-ly~r;i|>am;GI+#FJt&*4FF} zNmKfbV=Sc8QdLh$^x?gN9WiX~k))XWB($}+gzjeVE1%M(KIL{x6+_E8xSw5 zN0VH}`r=F3Oso_$0s2M-SoH0crn#=i2BCVkR_?{6oQ&iD05uCzw2loz;wyJ)BS{EG z{{S!@jb|CC$+&G~k(M+BvmL)ry>`BY{3g1!(k8gpVE{wcnASz!D|)NCe{*jijmaL^nn zQ}k{4tTnZ~v+ii(b_#L8&)T&qYiXxx7WX?NzP-9q%nAJm+x}^dKdEQ3gn)@?3@u=OMUGet6-Dvrd8=(^Y9KBb}Ce}Y(B$8RiT`jU=v zPjEe{e-5>NqPULhSk>o=ZRQ0)!1YxAVuPX;wlQql)!o4D45I zm_FytK>q;L-=2=YN096gm+>^O7$kHCien}LOM2@FCZ9mjf-SkI^ zMI;GdwcO&mz^3| z>RMvi-XVfWri7}oc#k6=?^iu3tlQ`}^2ao7CB5o^`29=HYCXqG+*zo6iQwE2yk~_c zoFAHdN755ezY6}OCNs554&M!3CdQYl#jW~o?ZhsfY~ zt%bxdrIxgrwnodh3Ui)&gIV2v+T7#O9sdAcIp^NDmq`_x0^?GFUQbRpa2)ESIj%utYy^M_1Y~zD{Izu5N2}diHk&o`%Wk;BlbmDP zxa)IOb?C%BJ9TYyduV2fXMtH{Lc_53K5DM!$XeYx6>NYpyl}wzsk*M0J-4L!mAzyS zyo2?h_pMy|eD|kB)-G)zYkaH{tZW}4SKGx~H^9wkkX%6|iY*6(5GSNu;;wvHo}NZCPtPbd3v zT`|{5r7J2KZ3OX|Ba!wZj{H^JIy^m1s;z`2Y@oML?G%n%G7sk4<246Nhw{3s8;F8! z8CD}ZPr$1kaB5dlwe&8w%&WK5MH{8T<27j=4#TIcEevw4ydq$ub4H*m5$6?M)S9%W zMX|A!gv@i4`0<*k>F%PQ*4$ZNN+oAa!TCFW4Ki*cish`Mf@ciguJYLx* z_{CA^DJ9oYE&JZ8*usp_+n37*`5(P!$GfF%;nX0S*jz8DBP+WsgcDfZN;yo|6AAqo zC(g*8F}j+(>M!uSmy7eVnC4|4!hQFignKS~X^hr1 z$BB|Vmn@UF2X=7T_N_jZ)IB|+7E8k;$?1r}jBq%{b6G7({{T69k0;WBr`|(`-`%2V^VT34;zogW_0^hyo^UH;zr94lUj?&t+hA3 ziKp8fP?rl5ZY)6HX0f+7g>7OmrokD*FddJ{_xP@NQtgb4+{)Q_Gx`n=D*L8vA(})I zWwXHfHJnAnr|wzAx&ofOQ@69)~)ipg~ju9p{* z2qb2RW8gR3RE=j=H&LHYazwyobICQDkdjZD>u%Y%(nYSZd8f|PKyXfIQ-+o3RY-`Ept%eaeJ)t>Zq~hi)&UAw{xDYO(Pc z-f}(v0Ifz6tTQVd@8>?ol6#+8d7MUyF~MHSYAnvp7~mHpc5&LY3x-&wG7qU+l|SV_ zG}P>6QOF-4cQxn+bSn569FJpOt)ORFOCfXs5x2qZPh#A7vy9*zcNMFCg(O;QT)AEQRGgAeYGP;>2^|5*&NmM= zsMWMdY++l3R8cR0Yd;taM)ernGHP-w=h?Y-jtBD^Y&kMJ1{fc`NW6@s&bazUPd?QV zwtyJ!IrIM17djopiq9Nmox`2pE2G|Z3te>mg|v=^m3D3e>d5!5bJOrMNMuovfMAZ< z_N_hJu}fIVOvHnLG08oTxvw^NTXexPS(NG0Ze8R*=_7&1dZCfhG&_@V>?+`^EKife ze=pjqriofMB;bzXy!mqJV!nA*VhWqGPjEOCh)9U6q#f89_OEj(E;6_s!1u3KHb(05 zDBeD_!>Bo;b8vl~WbSc?Z#VS+vn!K{oIaM?}jqk4pqxMKqq)cTh9r@E&~ z&~Fw&X?74na6rfky^cJZ&h^w-Z>mg9Z)2-Qtq8b{kRpy1l+_M{)jEK^WQoLHs`^E- z-F?1md3Vt|_4?b{Tf#LBCJ4g`?R&^b&fq=k39R(2`d*~%YYp9~iGfF*3WDEn6!PTL z)~!CH>lFOl_Uj6jMOHsZKHmnP(?1e5B(t;9bsKnYtzwZz;<%KkJg9EsqFv9bM56al zjpI?rsFD7o{{WhYc_g!G&wXsr+{B0LiIfRqC(p>Kah=0;(e(cS#`B@eb7K{x=SeaK zf(g!EA)ZvXwMG0#)->LsWxLa5nXD&_NhP>B^d-mg{2Jwv^;OHjEhV>xWGDI8>OZ|O zI)UOwjwrn%I0P}z*w$teRk>{%?G(9qW^Ys+5d0DIQ7$Kv;fJo}iv2sQL!)XMMx!#@ zYq3A3`5&2whX=tw6yB%Ow|Xw5E$H9&o>Fq|({7OrU zwqI5^iE=`Lz{i}|&KiUl8WyPG46!^-g~-~&2ELQibt|rq)n0vC^6_jfa?CazvOYNr zn&7{Qy-gQX^;OoT3}!TT`au8?1!EazTH9Bp4gR-zs@)5l>DuO0AntR?AA0onLS<>) z72WyzTl5c+Q7t8cG;u6t!yX7ckJ_4&NcWAA6&}Z&*P=!u*3#nY`HB=-*_Z`m$zChe z4(w%95#JfwSe*X=@Y7lq^J%xS%^Gh|M+bpZFTx;}dq>9exs&(ytfWSk;(Kx!g=Owk zj^d`<+ory4tPU zbjzu%FI~65+glur`N5{(0|Ak<+dF*x)z?wXC$)wMtvxu=b2C3IPJ4>YmyX)&7P1#r z#@vi^=B!4JYx_BtXSyD-xKfCtgBc&C&%H*8j-1OWhK1uXM!_>T0K(xO_!x6fnbgc#*thE{UG@nseP>H%2*3n` z{KmB>2#awP+H=OJ>dzwX`gz)E*0L68&eEev##cOy_vV?9Gfqih<#`$7Xs<%T;Xa2) zJFrx@Y#LE23p;C+jikI~QgX@{k?~eKrI50-wz;+h+q<7eIY2CN-H52NbpE3Pr0tb*XZ|*AM-#09BshySdl8- zmsrl$JncRz&p^Kx_bVKXLbxh^^q)pIPQj(#6^;`leH(IDIl=d-*L_286~n@^mWkur z+PVB1t6NMP4YZw(y}H$E};iwgRleK`4x4yMcvM#)*nt4kPsC6ijy9v6I(oh zjCNpr3dX~)TwYm=3xtnyjZ#JR5r0R1lyDi8=SBwu=l7_YAdMPoDz<$gSha+#}y`qj{52e zlH+;Iva+x%*nHC?LiMdg;|^aW1Kz8kyEEzXGX*m!!2{Z_vLwY}*Iw3FTQN$80bjJ*i-ogR?F@f%mU^m7La7eqLx^DO4TG z+X3a?m@N4`L7>(=IT;@DL-mnXwGO8u%pc`d*?I{wE$?N&lGv%y#Nme zk2#|`TnZ=(C_eO5259?Hj`URuaqmf-8b5jldGkOH*`wc@IG_qCaz~0e z3ZP_XH7?f~Uvg?7;P1mhuq<*Ot0r(Zu`jUAyJJr+U zU=;Fk?~1~H1}U-VxEU}EjM6{30<@a7{wIQ1MkN^~m(6`|$N2nl#(th_kuG7HC6yD1 zaFHBi1cTdC}Xv~jAjm-Ty!tU@L-GPW5`Fna)eimbUGnjb+p z3_)+2ml)Dx>Q{Q+q9GRH=aq-mj{>@&)2(!#o|5BGpYsbU0RE$JpSOy_bZwoLlN<9P zmhDxx#!u3t91~u3?Pa=x(Y;IG%f$+9eD;v%x5=(qOH|$FvAW9X?5BABC&uF0484Mn zaafeo?k}!(u_JNsjE-wT92V2t!wE-?P=Zc!TRwhj-rJ`m(ypxzuW&73xJH!_{-sgd zKYF}Q&259Zw|z9U5+f{;w$^XC^501#8&t)-c*2J45A9pKeIiR+%RBqa z#+Cm7PFVII0=ef~k}fTEYa1!0u&}aW7*gAjHmI!B`d!7t&u^xqq_RjJTZRX3*=uDR zBoWB0iX+%qyYNWyiZ5r5!Wi$P+-}wcCDuy68TcpWvlqPws2P{*>QJ^?LOeN#7lQ+|4#xc)=VH zI}eOfYOoHH(~S2PM(SlO#zxCKlm2Sw&8%MOma$zchBq=7lH3d`u6t+RtoY^SJiRsF zhX^1)jI2NY`Rrg%}?rhB>FY)A0eVEOf|X zzFBSoN0KOiOlmm;KJ?#E{v}J*a@pTl>C#0dpatbVNF4svao+V#8l6*I(ll62qZJWB zx_9H5q&vmB1KZa`)0?|B=*H`c*(YBJtxQbYX$ltSf4Tw1b}cC*w;(b^lLpEMH*ZLmD#bF zai5By>YM3$6QJ%QySS3(=2rCKnlZHRZ}i1N>kgo~>3)>ZuCA_dmlDV8gc&7DT)R5`3ZU>RB3$~b2~}a?0LR7+UfODQ)-X#nv8cLO!XmdNkH6Zo zjUUoj=W_NVv8hbb+{GM>OUaF=j%sesmN)+ZhrLs&PpMA@#lyNu9?*@*1P(D)nyX0^ zj!)6*am8bL1)2_~f+;~kAUV(5irw`zEJ`j;2M65Oi{#@cv*PClI$b%vS6K4py8+3s z5g8z8+42gUb5_z=U+IjKg>+dX%Dy}r@^ov-A`dKWf;W=m86NeGdQBEN(WVSra(sK# zt9xTKn1?4keL}oiLk+S7l}mkxAm+5%ZLPboxD2u`KS(@^PFrTKbiYB5sD7ez`%^*? z1_nEG^IZZBI?6?wd7=G$07qep$=pF2KGa>&DZzYp=CyeAmlZT=vD;$S-2=2n7$$YJP zm!c*^JMEDN(mo9_9n?}^nYReQ3%oA?pEYoGTPv${v?~||`C>WmUFBk*)vbl)mRY}v z%SQR^MNqA>-bRTc;lM4G?V7o}y<`n&v8zT70}pQ)HSP;MZ88BG$PXCBZt0mA?Ndqu zB4mF~Ptrgf=BuqIHggE?jz7rboc-&f-{^2&vfLLW-~zbqipTZePe)}PyI5Qqt)v@- zgMu5#{f%(T9bL85T-x;=uDPPy>9?dqJ)4(+{{Z^TpVEFSMQqnG>1nChT3JTgeCBCk zL%G7Ab@D3%(;X9e)K*tB*hJ!cMH{*OXT}e|#XY9nYA{{Nr!B(6JE@LVknP|O#<#eV zx=xv^#ntxupp#5VR#?7>(MIHOJBp_1D;v#L8;dAyUMq`b+U35J-m~2~uE(NZu(|bu zlYt~pf`{MjTM6|G*(DmLm3D?k0JsDxljM(jnC|lyt(&Lkk$qi6G%SEDXBo?X#ZtMw zhtvjGN*M?z$o8)qzv3Ou)xYHgO}zfO2ZLDK{bqGZ0ck*C!OwH^T_%5Q=_^y!udVN9 zQ2v>a<8pcXR+pwPr?<5N`H?3F5xX}y9xDbeC%lq4l0z=+0R6FAi~R~aEilPnT4k zIfmiRK$n*P0L5qSdYVo?^W^N3rL}8in1r_ zJQ}(1GJ#$Bv*@hZX$@RyOpzyW5=~}za{QPjcj+eGsYyEV1X2t`nfetCFka) zkV567ehh<+zXGWp)h1_us1wJvIUVpA-5=AB(m3Lq-)Xh~08L*V8v5?;BOSzWz)O0I zl{xpUR->rTsNG1J5yd3Fsfh*@A9}bNm*wp4;)P0!oUIX`6R(!^r!RAh7FtHQ=^!pOx_8O|%dJh^2#OSF4fZCzytdyeD9L2?h zyz|2m+*g>8i9tCTH~@LB+us5BZHTp)25secFbkZJf3v)e3fYzo!tKbpsjaLNn@s4%Q-79@XAM(V0(d9O|F?ZG)+Xsz6%FrR?B60=fSHO zdNWam-DLc%%3V%WgWI^Rj5_$gUrO2(j@+=r`yU^3QabOduO2H~cvYcfP^}_&DUUzB zOTx(JT6Kw@_@g)*Pb1{_tIK#G(~)FImPcPW;;T$?*v^CaR}fE*s*YUkSBRVbrgV`WpKEm_7VGLMJBZ7D>j^TIf2WA! zOs`g-LqVE(S~diqO~LMb@myLch1KuzA82;Z+P9yG`oxOOXoW;^jiEs9YXNCLp)$J> zv>&TJ)!z+rBC{uF$zmviq-UmTnThm;5jMONUC(U2mB^6gy&N?lOFu*dCzij;OgedX3tj z$&g(R8C-p<G?lhq)hFPGINHMwN?^k_4*5gRKHy2i6;%st<7_4~B?WvQv^-j6d z*LODZY2JnEMBx5fRQ_Jr0=chLbo}~mtlHI$ks5h$FbC40_Y5kJsQ&;EEU#}Oywk0H z7b~^1$L>CBLD8R!K9-+%rRr#t+gzunRrw^JIX=~`&1!a=+ZWW@4AI{ksBBu+DHKS! zIaB`t;E`GH%Q<)1kXN{F`S`D(zYg?G2Ip994_PgFXLt+PlE>(8EBB^<6h8qW(qjJr z6wodYq?z3doUlK7$DXf^UmtIum(@Z;WH3Brb`{yb3~i_ULWbW=)#OR7Z17d&9E^V^ z?`&5$O*HCuw<{{Jy|-+i{{Xn7>8)}o?k`&235R@rDBcMbq>KLm#!te- z(UME7>GLc)b>x9!g;?%RGlDCZCC&BnWZdUx&tYA!@pi^dU#CX1scKI&vXSTr-}qZR zVSnDZL~yc}3n5uPJ*s?o*|}FM^s=|qq_kkAOLihcc^~szEfwyqV}n?>EUy&1<798A zK1avBbBXWX;|%H$uhW$s{{U*g=}xLTQ+`(Mi`dWq08vME`4!Qb+vr_SQndU^(QUN5 znXXe*+3I=`fKku?06bS3>kq>#jV8|HQJPqwb~TNHvv}%O1{>;DYQ%Q79so# zjoS(V&I$LbQPh!Ywuz^871p6PqL&+ElW-`BpR4!HV$U0>)#c9;(cVu_^p-zP?$tKa zL6+?mVBwvJ<-4D1zw3UNo2TB^RF&k4MgAMG{$Ba4x;(=YdaS=!EI8)6P8f-kTC4~l z%ZE(lIKVDfpC2_{)sWf#d6ozk76*nwfJeP!4tDnDq+05}wCNr8 z*(1&}-SB;?`ca`Wi>8UmRgp@TQQPLOHGL>NuvywNmJ#JP57+k|`Kr0?qSEzLc%5an zX5fS4+wWJpvrA<(8kM7NlsdA>8S#%ly-o0u4%*`9OGS?ICtcvK$M>oFl4*AO3~~vb z?=B?VN#Ro-FURwC{uj26ogkO)3SU0G@H-|E(u(X6bk>6{)*d*D@Hr7UCe?CQjk$vgp88Vr)I zsT#cEKS{Qs2PAjkd96f0soLpw`rXVoGD;C=C{;!dGyee2D%J}K^{Z>9(^79jCQ=$s zNFBEP8q43zE-wL<$=u{KA3WBFM%13$OuB(C%of{_l|X-p!_IyxbES=Kz&cM&$8NUv z=#jsu&cOP`kMdyq3d{9U-N$uleR*i9>!#$#1=RLqj@4dzmh$IQ{N=>&JFjLu=fF6t zC^d(g;%Q_=yH{0ECVcEwIi%%w)^wh$eWKWp$;%12cT{NZKa=Z4tZ#Ld1Wav8wwpK7JnI*RY9wFUJGg*a7AaH=~B ze@V3a*&@2W{N~n*(n!Gm9tQ)s9~HRi$a-S(*85DekhQd{i6)p}!no%i{MR$mWD(rS z84V;0jmey3XY}XAYdUFU>1+8G{?!}vU&M?P!l~wxk(%l)8rw>^YfEzNnKBvI1&4!= zYOT4`q_x0gKdS+h{VnrdKdf%FO=Ct|>0&Q_Q*L4y*gS6gS2Z8RjHD?m{X8i@O1Hg9 z#{n%Nk;y0ydxjMee;zzwj(`Az)-aHp$h1_s6Qto7)(abjyAW_EU?Nu5L zA53meOFIp0UYCuoB%~o zPZYLSKa{-{{T@gR7wB?7(OYJaMta$locGD z{{S$irPTyy(NLfP!q+c*XKRxzjdJi?oxY&JZ+c?OU%b+%iGU%kpC4+cw$v^bYytyB z-m2&QD$4#@?_^y`kz=2NP_GWY_^o3XY1*E-EzI&t7(2M!7ayjhLvWMB>)^G)8++h` z;EJrXyfIvQ?SYm#;--L{FdJN)wm1vyD|4ik?_7gY1{;k~IC&!*41<~2RY3d6rHo}Mkp4J0i(whW`OthqcmjT`%#L4 zGv1dJf|uM10*VOv6jcgX(s4(Ry#R4Y7vNF~G3}aP9q~mbdG|B}OW1d$7#=8qQjQ1B zB`7~|4Faj{o+@pC1%Mg*)FnA?2Y(f9qQqspiZH*a)DP=izD{Cg)9U_%wK{)CSgtUA z5#zOcox_m8p58w7G6)TyPg#!w6$koRHj3< z{b1SigWnZZb0U`dRD}Z>^Gt7&MfAfHxc02ryK6rxw)$Yytgc4KlhYBmay*<>UFFitGFQbVYeW$bC84FR+p$^xaw)`FCdU8*|D?O5AxD!{cEQS5Af|a-b5E{i*mbs z4h}zRw9=)qj{0e>(V&DjBUj`%&MS@P?N*vuw&>eL$ zdR~DhxbxcHPqI6><-LhJj(^NO>qDq@E}3;Tgk%-Bl12tj+n8_%&1Nh$scm|s%`LlG zTQ91fwsE*~fmof|s@u+_)wHWS3p*s;`AEo8vEZI?O>|y?)n@9u5jLwAr6sl!B?t8q zJJ&VR^=WLiS>(K#V~XM?kV;NY(UKGoa%)NWVLqd6zfcIzX?ZRbG2$`)YGpS#TyNX0 zTwzvQ><>(ay~GDH#9}+qkSB zP;~zQPxUUDGNXpa@jDU{vF7$jtQ{{V`u=q`o6gI0c_nq*YD zMlwcN<8eMJ<1QT1^2chwg)rP*TT2uM(%8C(lRV?!2eou7Z^Qi$Pt$;b52yNa4tEpe z)B5k`^`^YEw6m6RaGs1)MnF^^PJDgoy*gXonR_h`;UEb*sxx}Kgl+y}PrfUq&iY9{ z*^a9GJ?N`#hgj4Nz3jsXibh-7vRb#{_4h#k0EgZ#uPwE$+a0r^AV9~qe&U+^VS+6_ z{Az2c+uY9A1y&?|%^I(h`_?O{e-L_ytRjxi_Uy?50k$s6F~wYWS=?B4XW|~YsWci@ z)~LFaR#Foj;Be%OXXh2Gu(r^y`Xf}2sP$%-SG9;eqP)baf-(Y+e+IbL!m|wE5Zn-Z z5mIhV)RV~XCg%QTCxUAK03RBOGW%Ewmih#?wz1nZDq2Z_<%V<5?NyRogh0`axyaq` zUTt+Nt0b8tU>Z@ejyc6eXt zgmK(_nx|Q$c37C_XyZO9#=n`R-xJ}0!9M>0YN(T_M3&B0Hr(N}-}KZ8SP4c+KIN)b z*ryRBY(&g|h|k)i+{d;}q$qXvpmJ;Irf>>200SA%9@NT}E?JjoEy4c)YVoy#E=C(X z``4w7rIA)YsfobHKhmIjTc?l!<(WXjj{sHfkEG2Gk1n?ujf%=6Rb!5Q>VQEqGsY3U zSo?w~7t0Xt**CdMm z_UaR18tufg_#P`0CB4P1$Dt^~^R$8bspP!7wYO;F4Dm9R^vU28=D1EBDQ`ea%cS}l zQbHA!@Oh^!t_){r$Yah26;%w60SeA}`ht;~n-c^ct2cAx_N-28Qt;Gi&|d4YydJZp zP>s# z;=;~tZt77GP|MHPoG7ast2>w>K*3CC*vbms^wzJZYI+UCnq7^xt0IMACO)!HI5mvd zHP*YI{5=&{GIA6Q;C$BQk{YXsH2X{YWtIzfY(tXZ{-abEMmuYRvNA{;274*30_tgH z(~*eSBQtF=fyf?BXWiqNhn306?gx71^5-St(+mcbF+WzQgrS!LZ6WaSwSMmW#jxzC$Te;?CNCajU6SCnpL#z6D$RJx^) z=Noi0J6jA7QHNrC@l28$KU8GDd=bE}QC+RFn9R6F?mSmnoVS)T$J9^hOcqonfOC#GbJgP!|<_o&a(wp!ks>-5Fkk1`-LTQTLm z&;BUs-7sIt9lz$1%J$zS8bkE4_V}wc?UQ=9MBHmuDSxCexwlWDkS^I*ALbwLRrWe% z?7JXjmKTU^7~t07HJjd?C0|O-@({C25&9%g4UhMyFM78~*6h_50T!bCAOp^Q>Q2#= zyU@%wA~`n+Re^RMekzl!U89Z&ZK4HO46?7ciqL9ZZ8I#kH`eNQc49DcK5ILu^&j}1 zlIihV1%1QoCx!W~OC@BBW+}5Yp?o1$^&6XZfavSIbYJ2XrO4CYo8fO+_B`;=<P^@<+{XY^#*e4%?aR$@*Ea{WQLX{`ENeF0xm`)q zGWX2tHf30H3i+rlcPf@*#GfSjtsTYHsmVyAQMUmQcKg*m#D1Z2$Rm&69qMc9v39O9 zoyCaA?@E#{>tcBEUhX#I)E}$c7ywg9alL>C9CKN$y?t^OC!cH@U7LVbW02haso3FZ z;`&ZJ@lK0%jCaZ7Jk^Gb!m9_;xnw>My;xakH(G-on^7~#ZU!pLL(nC^DJe~{X9SVl z`&YiPxl1Tk&faA><$`!V#MfDjlX)jd&uyV;7UiDh?(Uosu?`hJYMT1lJvEsZKBjr9 z_moJ$?c0oV?rPRskIdPmK?m@M9@VTem;70?XfehcaVkou>LQfj4cJ_hjN`DcA=)Nz zSg2q!JQ`GZ*Ew8)<2Bwgl@tn_P4bWGKf*zAZ{K(HDMm-Xrr|BQI)a$l2!KLisdrRH>T?wx<>ps zQ~HOsT6H#|>)6}G@v@bS1jxoK)A3zPV~$KuRNjk==>oA}NoRV7qn)9nWGt z>RQ`PsN6CjE=GT#s|{O6XsxaGl=WjkBqj5=o<7y-_~xkQ18!s!zHKOUQa4xQ&;&SeWXp9WR@&Oph_n@o)00WwP zVJu9fD()(HBigIvNg+EJHglYKtxfiUa|2yXYjC&9ho4RH^kajMYOB1qy0`SmUr}U0 zNh9?9Rz*51w$r!%)-Z zwVK}MK+q7#RN$fe*5^|EW7j&9O_wHahfWF#o*wGUS_>UUO*-~FwJZ6Eqz86>hF>D2YT7(qN2tknr{X1L^$5lS zdBsK6Q%91>8)DE*st)tm{l!I(Q`N65BDc1TW-Q_27-A2(tH)Im=GX77EMU^Frj~nE z1bT1CPh!5+NqKh#{gP(fEz&XFBJgDgwrQUYMJ1PA7lneGJv+>f~VTN$h@5P@5OHPt8Fgz)(`OX#l$2OXXn%&$G9iJ zteZfoJcv=DRdS_Ux}TbG&YCWV>JRYfjjhwOLnCCU{$HB$d7#?Z^*SZ?pw{-Yuywda z+!rUlDuO7|+FlWvm$PS&y;whk1pk?dojEkqzCzbYQx!pn0XV8*%c+)HyZCn`dTiZC6eN4mn_526@i-F<93T9 z)!np@dg-UBrI$<7;#OB6U=VwJ8t1n;8l}Xta!Zl{<3A#|?5NGB%8im3j11$wMv)Lc z-gjgV?^``TOOoa}U8LHP9~`Y|7~U!5+kUsu-`oD`_RGfhJElZ$1r5(C&XBei%BC7avzE`_o99e6pQx1rj7B zm0x-u2|V-jSDjHh>lT(zF34tF#9X%oeY{l;uY9lpXK@n#W+`_G6k~E8K+R}+i%PY= zT{`~Rp=enUJV*%786^Jzxv8$=%F1mJmv(U=Kvh`}mHz-*cTUVwerc0-4s+yZ%{t8) zo>^7}TVmNNqlM2H6qc7!#)|>~rJHu=J%BY}izFgRt^>;7NhUYj!6)P9y=^OFvF2rE zVf3Eoo~?w z-kMg+N!2gDgd zpQl;n#jIkhbgY#7Omj`hU#G~={HF0k&(Z>bkYz4)u9E{AU{` z@LR9RUO)m)0C2Dw_%@C%8d%t}T%9m5t^Oeg;UgH=F0cTS&JE92&-UtYD` zFpLt=@IA<@Iw7m82DNoL`cEiH;MChl-R8p{90Qt%9KW51^5b(d{ZZub51N%>xmPaO z3cdXOs79}*W13AW;}a0JGk#z$Gq~p!t?H|*BV>|VTjTT5q_WG7?mLYA>lva;>03ys z*b@vA4Or?IH(&aFZ4MeJ0e#+7n#NO&x=PK+6|UrS`cz;3%#qP)YkIRt(7C&8>^#Z1o2tDMNgw}<+1?J zA2n+vEp0Ik`rjjKm`M_r1u@g1K*G;Biv)^;Ai)(Cr3m1 zopQn;GrDCM{p&WI5uOKn+x{2ZerK!nxch@BIjrk><3Dknx_wEkN*3A+VUw{GXTajK z7Z0><&U^~c>YUt2iGl*3HJrUuzW^!Q;8*Cd;pB+&%CSM}MykvY)wpr{Q*bA*6FE5g zv)hbQjJqNcGhwrido4suhfUF7Y{3~H>soY*%gD1P*z&}j;8Xg3kY;v_Ht9&n!R=9_ zx@e?!AFCJ#?_QwPX0wfoDJ>}F$@Z+&dx4Fd(#O3{4nA1?QnlpK%1j{0$k<}T1dp{w zw6mK~o#Z$N1^eJtrM8dxyU3!{3t6kK){ve_J(&DgJ^NU^>7JI;_1k&%R=bkkJ9f{c zyc5U0ZS8csT_Z+`nlmJS^-H<>fG2^P=kVFfrLFdzWp?VY<&2B^Wse>I0IwCT>1&s` z>ERv4$Ek54Vd=}rVT_D^)yFON)aYwaSuL)Ru|zn!X30FSl77`~r?!i&OD(9ohUP1T zXAqHso+_V88gvq{xhCo;cS$0tB|*mkpY2@dNt*loc1w#@XiV}vN~@eE-W^0#z zOJ}gpwQG8FOt90nZ9>mSk~FrCUBR=#e14FA1!mQg+-@zeBe;2>N800zf0nB?mb+QQ z-8i<>P^y+a-=7sDNl4A5%+U?kEHjhay?Vcr4QoqVYqCf(DZ=@|uRP-L+7D7_`bGLl ztzRbVI~#Xs%5Xu)1bo&9r1iafs~}A>?%`igm;jHFg~9CKHPAY)37bH^v$3{WDIOH$Cislx3bbLWVB@4vO(oVb8TCwbzM%_ z-N~rSaXr+#q+e5IaD*; zxpSUZc20h2ZS^RiRsI6+0F0kGrrtSTB0}XjC5QK@tgfWE`nd8qt?OMfoeZ!_?2<5s zEa!0@K)a05N!`5CJsI7D@W-@r+3%5 zfS`D%f+el#Rm`KZ=YhNCi^v3Qi@PToe`WhsqQbNHUAqWb=_zp&909BkE>h-M(t~qpqX1*X(ZHV+n66GX@#YKGjMG z2kGZ0x4lf#<(AfFVG>D|AcyRJXtV9M>p5iUKC`~N{I$K@ck!8GWBPWtkUSdaw<@zr z%!p7EkPnK{>N>sNyZL0jh$xI~j!n48AL~*MjXlrufbmE+le;4en%4A=iLF~ao{~u$76pTF4Qwa8gHh5YwPcPd zixHMR&zjeU;>hHBaKE>Bp58el-1|cg0X1)Tc{Z1KYw63j?N~DfTy1Z?OTWLC(jj9c z1chvX-^z2{Yt5Q!nw9fOEwl~vhV>nM4%IF`qDN7EF}1Flx7FS~vMx7)*c!`RUbU!f zs^c6Sa%vYuU+Pxc$K~dhPeMX>M#SyLeXC9QkD|eAJa?LSf67UWWNv2cSYc52r`(BA6W^8VpjV1Y8MdlOb~rgbU;O>~y+Wp3{j zO1`AqxZHo@pVHM5NZq0t&PHlI%eyNd9R=k69 z+V5urmMirG_BEfrNaBZSAOr2();>#i-ZO0F+|ot^gxWp9sH=S7kO|Imq#kM8=FEi` zI|0rr1GppjdsO_NHOqVLI!ZTYQ^+|SWY>b|WbKT3sNvm^s~om!H>>)=Bw+FZt!>Y1 zGdkPHlu&coo6p*qmh1Biwa;!(-m9K>BWOl-#{kn85==>0lnvPIYVO_{xg||3Vc2A3 z9AH_xNR%=SqS6I6- zT+C8E*m8U3wfe38hL&MkW}5s08b$0rYX|Df`Ge_i=OYW|x1F2YD$PpOEUqPnDSbo? zMsePp)8sE7rbak9=922tLnDR-UpOjh?LOV$4jTl4pS5zr{{WOp4SHq63}YvciegmQ z#Q7e^rplXgdv5-<5=;_e4VF0L-o1KrHya!RK`Tiz;BFk}`F-kiaF#xsC{5n{(KIV= zaLu_};;y(6wCkpdZbGm;5W|YlSlmUoWDbbjoSrf9n$4^#(i5MtHQ~}#4iZE5rZ-C| zb-9{*hgM}fPaAtxLq8jHj(k(HiBz6*&pgvxLFDm+Qg%E$v2Cl^`KDZ89JYV%?V5SM zpg>R$y+?7904hS9WcH$)av!k+=iaQeOM+!K?BNz#s`WfBcjuh;s~rhJ)uG(G%O1zy z#b+*vy|vz#%963bIUHaLxD&=LfOzM5XJk_%G6!(~l;e<&U48SjbFnOv3 zmS#)yE1PV{5sWf(6Eb8n)m6o+WXltR0VJk8)#TDm z6o0^GmfIXeTa-T)Ug$1yGi^cGf!>I!N8=dV;PKv(B;??BI3}h`5-SlYA#un2(+z5i z8%Trc`}Q=Svu{H7To~MzkAg-j?@a17(^odoNUV9tZVCAnnt!E1QMg2^;w$0j`aQ}a$=+a&g}%M_8YBLESC53#MDt<&)Iypl}lv!cQrTRP+wKF8nW zRx48cy4}3?I(@_z3{^zx74fI!6I&Rsb z+d84fGu>*o?)n{Ka-Nbx*z8B@rgZDOi+H2D%1asJ(& zTegPE?N;2AkTM(ntHrZQ@p{`)k~P5??kUTtWVndR!HcIDKGf!n+h=QLY0eartQPdNzBTXPs^=Q5B=`6!&b_7VA%%+UP~Wkt8dCFg^`+ zeu%u&t@Is7Ow}x&OWU~5)V!*yu70m-#k^IHT=S3sD#k7u)HV+k>O&>Z<>q8&Lf)AJ z&(9Se@*rIrAj(M~sPWBP={k?3%W#beHmX9aa7p*alUkh3ihKJtw!36PCW0L3FZTmJxnTw3XH z+z(0CbP}j}-#m+hmgMO~aC8{{S!Aqv+yEF9ovwWzGP1z$fOk_g|KQj71}r z9dj$&pVUYERrSj7iDRWTyaQ3ZNac+I0wQwEeb2=(@@aFynTFQnhEb19_#YyTOI4m^ zidBu0B^yS>z{kx}!x5TqNr=HvA#CPmx{{Xk%tu;Ls0jW3mSp3Wifu$tyJ?azfE1?YH`v{ErAdGOM6z3usjqA^Bec`T3p=x6m%&l-RB=QlwU$&uSvlYFQm-`2n@LzG5=7^6$&b_t@BaXb zG_5X4Zq+WPSZ#|9~BxyO>0* zwwsE^Q=Q*AsK)3(!P$vu+W=z(sQ0Tl5^io%=2nQ0OfTslG{R2sA4X>Z4nuL1QLm>H zOeRIzNXZ?!sOvKZ`iUfankJUeZ86~q9E|v@3$g{n7_#_K6#mtnf@WoO3`d%>|?cKTF~8{V3< zglU?PxPnztB8QK6W1ix*qexaM1XGVxFjar69x6k;Fx`>reFWqWe~OhQ&9t}AxFltm zHb)@yfPmR)SbIuC3A|VyAoMkCK!hqKWe+ZZ$jyjh6@mL z@lbDZaUnneB;+-6&mE$lR4FyIw}9+v2mlW_^Hm4K|KAa&pcEHc%qVu1swUs9zH0ey-*52YA{VNKh}U+ zOk$56=||6sEFkVFd{M!p+;^xw#=Pgh#dLqcNDTdHWxE4zTQ$yO<2~_RQ}8Ao{Zy^T z(GkJ+t$Z_oHZ%6;pHA(4G4)vIoZ_in#_|ph8#%{{vD96okf=D$O;gA~-bum781rAC z#yr@gUtD^!$UqB_mN#4wz=r4Ilk%*{#BxY2fmf!`;f>vZ5gd=J zf#R%%v@r&Xcn!779mwtaRDG%+)sn9>A$(+bBNbz(+($IU=8W7+5KOSlHvoN75VCMMRrm(0lk*pPf=%i&1y+_MM&z!4 zPHNWsTlD+iR&C=X1pL1&QdN$I>G=+1JMnFGmw$ii< z=pobZ;-8;Qo*|5be|ipR)67klWeh!Fe%RF z2b$(4=I>0>HFzE$qFB^qoDr7gzST>l-bZJhM$T4YZFsFJ5tzhzz+?N=ol{Y_y^b5n zXPPm1{*}xzwnjh8{c0Ak)6r;FbAcp{Z6?Ml4mS?uXX2u@(c9T|7gTEfLm`TL6oYJT zPB%Bl%}?q0Y_BxvY#}BoJxt~{%MtEtFVkH=dwyhVh~CplgzpyY*f=8~n$y^7T7Hdj zrrg@vzoue%+df;xV_M=YTE%y(Sn4w9vF;~1h_LL3y=`rxTMafdd_Z)`1Iuw#x^Axo zcV|+X7G?>zbFZI@m#phn_F7}=@~^FLYz&ewxjqGP&f3&*4zKGzq_fn-jjI&(RzMJ!w5vU((?V#5u?w z1!eE;=ChVdIpX@ngtU$Ns@^z62f2_OH@?shU@6fwF9}kvCGVW^ieSL*%*YAH8LKTb zr}ZsPVGX6Mk{;YCHJ>QDK@iC)Cj{*S9>T4(>sx47b@NLTkZ_8*+;PFpZ1fI-z0uM; zy;)S)w4p8|#^M*>;M9#5poX`pT;4@FIz61FBNA}uJ+dg8a|US|=*Em#j>J@{?+l9= zh$t{{WXIG_YofP6M=rkBwa%*@S)QTs-kc9G2)UthyZkeII%OrOZdP>ib@(cnz^H(x- zs@z?hYf>HdlL(LM+=l~gcjg2JP}=@{{T*hS1c|qp*UT+Wf@^vEn}nSwnHtlsTjhd_g}SUUDI5yx^!ul zurV?2i9=@x{VLB^)&p1% zNtCj#7al2=GOW6DhPIx|nYSs<+y;Q6Z^ z3rtNrPAfPipX%UoUJsY!@!{+Ea@q{qdPg4NjpcF%DmBKVbtayceyA`;auj(#HGO+# z&k5Y68bQks0<%WVAP*9|Fb&VRHN%;>>0$!2u2o4PyNYD`g`BX+J*vTyB$Lw)K_>*` zwKXNO#LT8ag*@Z2`&Mo|Czq#-IMNpr&Y|Po^`Jf~WOopuU~SaLBjrv=$HhiPjfUJG ztnzbG65Jw`4hYB44QgLetu3^;?CufmRv8HcdbWFfSAb)Y+A_f-0~tJ=)B||&Tr5$O z5hH2Ze^31GRv{i&9b zjE5=DYzmv2W}Q_ifUZeA)9bnO^%0IprosLh05KS)R*}C>ayyD|aMQ}NhGxw@1@EBc zixvcNj`bX}?^46YNE9UMkCi|<>$C5{i zA-!iVtaQmxwX}5l&IQ!ID;4+|nyHnrhq+6)~up38n^IO9ka@}KkE1)V$k`D(z6%C^T zQ7#B0%}im*UcmeIrkQebIXnT1^l^G%$$3K-$ge)Pacz2GQ&)6o&w3`ih&^LPWB`JSwV#Am=8S zXf4V+G^!gtf#8Z|h~0osJb*m?>5>&WI2i5+`c)yR5RL%-N6(sTX(5UJq|}Uok_pH; z9CoI#2rYoP{^p8|V+*(zz&^s9)9*hcc@*)WW{iXP`%?a-BLHO6f6Q<`GHP8CH0?0D zj9f#Vk`h5YRh6yOX51<6I3pFE(e)@&2D6wx3uPZXEm|aL`cinsUczlxgDJkND+a)__Ja5I6}RC3#tsyI+bD~@Z$)F2W;DszpbcBbM|xyLxFpr{9r z91ogM41AtR#}xDly@t>UY;j&?jlE_BV+4w99FI|plCEIR(m-q&% zbp3YLe?r?=ht`1xGCx;r4t^`sX;8+J+}ciF*;@*H)c3TGw{~XK?jpb5w>ELeL#A@U zbKrYZeNWPwZn~mdE1(e*>4+%$56{LcpW5|KsiIhs5|&9Y9mgk%wdvh->UZt29K*Gm zWLEmHd*Zb$yfnmKr}$0r5zV<#_MNA-X(56e>t&uv#B(ZcL7&z=g*&fw>=wGbw(~kD zlN&RP5Z$USqtY6uPL#YBuRW@NH-LSsJu>L_m*_taqOfxtqs#Rce6)WcS1{G#g|6g+ z3?lykDaSagU-7v*g4P=wB#OzSLLEdksqI`YO# zTaB{igA9N@z3LaFRk8IE;C3RldXnAU>q%`WSX>WG9B`w?YAo6@u+-2^{B&Y>5!$Rp zb-t zELP|UKZ@3+lw6Ah8)9QmnvSn>FUqCsP+-QCzYYgr@>f`93jfqZRk%Zg&JFSz|4b1~~rJMROj~BizNajCTY6DU3@`X|r1}VLzxQ zC+Iog8obhU$bZ9bt|o{~%O=zz@q_Q5BB=E1Xw*t(f#ll1KnJnSYV^%w9Y3b-G}93L z+=nR9u1X>OSw8rxMP-(p@!Z*J5u!?rxcL&&FnO#*y%S03i_aC5k9sJZAnfC5m zc?@yq9++(B>be zHF<}1x&HvFoE{IwIM$Am#Vh?OCP-p(54|}Op6O;QHNaJzjk|!zb;VxvmZ@oBe;?-U zw#0~1W+x$m>`3^mlv6MakJx}$jQ;fZp)09q*oHr;bK;+|(Jj9$#josb*ebF06n`@K zJk)Nf>PYQY3ph6Ib>8{ok7~xn)HimPuWltDSOb4@qN}c^l6Lhak=%oUyPSbbeJ!hN zeMRp#!p)4IpmQuom{!k^n(%L42K14eC+TkZQJV76k3r@}AFF6n z{Hid8o4~hDI64Q_edYcTbgs;2pU4&IW(xy<9HWU|eO7wP-hNR{*)# zq*u64B}0HmIBz1FbAhz&1F_8_V4OFOKWbELG_5{c+Z$;vE(-EQQ6AfT)SLM3F6_mS zRS;S?5-|F?@%E~VZEE3k`0Y_QG;9hsIbXFc)~!9w(~yi6upDO@H7=UtO6QhQKIU)H z#(pYO-hOLnl|U=Pk=~{1X$|rjV7By%C)BEP54os+m00bgnMnYQ9FEl)KWigG z&ISVv5TlB@j^s;kf&8PleAQIR8$rKt+>MHvea4mY#~U+-T!!Z!)t$Idw-Z6QfJYow zlHd%hocmQap%?z(INAUhB#QH830RGBU83H_ai1rVS<}vIX|JNSyAg~p_pDn04n3=l zcgF4z4EW6*=m!*j^%M{3M~XP-6i@@cXvY*$*w7v*8Kas2@lYMJ=87G}=*LvbSGDF>S4krSMOUCaLfr)bCct@DsRn0(g%03ZJV&5!>8eK~xW{9Qv=2h=J# zKkZdcv9yty2Lm9FYP!^8StTvT5B92yyH#J|ey5thgj2{M=nq15`28@otcB4@y*2Wux=vF|{fWYGe_o));Qrlf5tt?)g zi-YN((w&K~ZG3+v3oHx{Hc2iH4?F`+UJGd=GF+?MB!~*C@<{mo>k6m3fg<$`5=dc* z$}F9WC&%8r`c|uIZ{rP;{){l6w{uq3Q9xJf{{W&uBX=a=`Sz;)PU>6Rkp-Meh!Etk z9CO@OMUIbd*P5l|TF#>D0>+WNta2EPVR)^V;rX?SOaB1NHrSSDQq0_J@rva((B57u zY3(zIc`_sHPsud(#-(}F;qA9=B|SGy+~>Y)oyBEb^@fWY>aG49vIYbi_?o9q9@ki3}US=PM_5Fw^x@EOC5}V zQf?phS$~v#)-Teq_;pB13|K$};N_TJkhJOlAjY&wefr*7@6H8gg)5e7jQ)D#Z< zed=zXq{sMy*D&7RB%hK?VDcgyZeV*ga?c)jdTL)$&VLZrODpSJ2=67mg5KRYkblu^ za)aWj^scAY-tu>jV+gs0ZKpBBGSPjjWB9RY7KyD%u>&Nk7^4hr?gl>9g8u*&mq~kD zi%EAA9wp;~Gsv#8OBh*d4kFi~O)f^eiV{6GbPK$B1XY&0_Y-ONm*V|wV^#rem+3CY zzCJ2F*1c&x{CbG8*=;@_(q2j$vbT>z*X{0J>N$#pA}kOHZ;bZ>x2`xv6~47MOiYvM zmoIe*jaZ)w=eYaQ-TGZedatKhNS8Ml^%c(SG49{JJ!_!a!F>u@T*&acf_IOnaX7_x zJ06$Obe%rZXyJ2p!I8>=-^Obfg^{29Km0JVvPtbVT{rW>U_fT$XUIPF(fWU<^!*n4 zdwWeV+cR4Ln}8(v&3e;hn#tmoVv*87L~=36UwVtwcKYzt?Dbt32^euIGyb(6!@#dT zR^7(rp58P*nv&;8y@KS1oX*({FarD4R9YKpHe)4@F0O4Y z)fy>%IR|sNcLJx|Y7sQ~wSiLQlm{*kBCN|PwbXM<-7^0Gr=6vmc4*{aOSgO)gLBf5 zUR+Ib1DIq1r*eDa*m$nH)O|B;ui34=%%K@RKBQr?k+AaRcQ?TYE;5p~m=SLK)ZT4O1XJ4=kO z+x-dkGPJiCl2iWx==%WOpY*Ic{vm6&vAlOWoHoHoh-~DpJc{va_=}`kLvrn5 zCaZrqz?$W_Q}8NWxaBzQsB3h-ceXNIO$@R$uQM({J^(&OYU@j%>nUxfO?fgd#w)@S zJp5NJkFWKWN4GMnEUSf7Tx|PSK>Rv`QnB>z?%Giu#{ym5v+gOr22MT#SmHcV-qbzVrspcQNIKXElv>bhb9pTbB*`A35Fc#dDjz zH^GfBT7v0a3aZNx{{SvOdUoefTN!^c$JNh|_^2H?&wOS4-J(Sz@DE~Y&_M<2qJCM) zLPH;#-$;oMP|q^7%>Y>PJNKzJ`h?S7!mhkCal05FHE(sJq;`s{2MjRS7$T|T(`7dc zaSNyLew-8Y?M^R8D_N~WLvd-dEd7}F8LURB(Au@S%58{}FmiTtfn6QL{#eS^>|Y%1 z=O&!AJFRxfAX6vm1Lxkc<)zc->)U&c15ry?No0mh79M_aT|&=Dl1&ocbO5QrjZbnh z=j~dZd!cl#Rv6_Trs%m0gCzd-;=@C_vD5CJNX$tbY$6VPWA%JiGRqvJSZ^A_Ur8mz z!YKZgLG>SMs%V*-MvX*_ql4S`HEj*LTt-~7?`-fr>L$MmMzPyP^pJTV;F|E|B(H4V znTbNA-(0IKhdJ7Krmv;-w!XrI4ZZvP)3ZXUI-CU=<34NAfu;v`cK1IOigbB28TcC5*^@_M??&`HT|c&M^EDwNx}=fAZ!@)Mt^vjfM) zc=a7zHbKt^BgJZI%H5kWVb?!aeUECBJ)E#A?;BY12b%S6BDS4mKgCivV?DjAQ=-_~ z-^cmOw`q(|%w&GPE2cQg&Y3CNc|A4?b|BiLwRxRGI78ir2Q_uC>UPsiR@%`mP%g$* zIS1yU=o(noHAoE*_)M4FY+yTk)S-RiZK9%;`T+*bkw7fB#$QShrdJFrFJZysF zYzzx3p~v;D-{ORNUV*G!S#+F60xiT>ewQjqImS=MGhC_eT|)!<^M=p8Zyct$a=caD z-lHw*lPsm2_iuWOoMfIz$0DJ|Pof!{B#tUwnR(9Kf-&3Po89Ev%JY7==})vqsG=+Z z+=}*^Qd=fMZhU7g;-=dyQN#v7APkC0?+lqm85qWE*D%Ms*sgeeKu9?8k9uxJTq-Ca z4#an-ih_3>{`AAK3{QIAnKo2|&KQp8G}|`Z_|L^k5pD#oa#z8ono=NW!mddJK5FR^ z0a23YBAAiKfww2Qr{qA&JD+@0FN2=^cKNI(jU1-t$oJ>Xc$hHRAX0quL+&FWDCf-~ zl1K0}UGzdF1!_rdt`$^LFG^jO-@>l6w*2nPciM{DR%iD#99JwQyU5%`^@e zgXHirPJ@zo=M>IEj`=;ls&vpKx{M5c{L^f5NEkc3b~Wk0Ry*g&9qYt}f(`~j@BXz{ z(GTgt2P3#9k{R0A?}he}kD6{t4&jgv(VT(eyp81GDJ1!<+4jV%7S=9hh~sJ>1XXhq z{{UGTAmoQP!e;3Dr1cFy9KthFu*36kT7$SPsS<6EbK^9So{9~ zwKXEJBP8+99`({qGHBqO?riqStBo6_F0~bFi6Urhp&RA7VSv9M_^Rlv=9d`(00iKU z^)cU4HokYZs2(Mu6azm zi!65a{5aC}YwJx(oiyDBG+F18N6y{f%DL`-)lJsDInd8F?Trv&Mt*$NnO*3!N^1^{lJRF#Bv#TwH!8~5G7pT`iL@>u*ZMN=HvLJbG%Czk+(0?|W5sOr zuCM$no!-WM1+4AJ^wx0O$RFoFHH@>;%v?e2S{Gn4N`aqo`%@-4QHr==y~=@I)=~IH zbEr#gzfgi0#(y*$ahuqDQ;G+Nl)GJwx(+g(t{(xDglu zknnsT^r9%$1V9Dl`Fsn`Q5;k%so2B-9` z{{UBM`atPzHcNTdd$ThnmnwVv0z4Yh{vY+vPs^l7(_K)6$|NYWH|Z#S>x$2-U0K`y zSA!dJM~sftS?fyWO~Ud(0Qaox>2~WMi64cFps4B|pPWx@?VYH9Pq9B0h_lp^SmeLl zqEsp+kLNzstmwUWRl3lwtu11f`qmu!gq-?o;DP3`w+j`G{PGlG9l$Zk7#s#ar2Vs3 z9uk&G;nnq-H_Q-ChTI3~G?U9NpLWs|7g5SKFz_+vs3w(##uZA)u5!7?X)Nz9O~NMa z!*Tivt$Izht#b?Ms_Sg=%oK*&Gr4~ClD;D0L+8{v{r=UawAGBL%&a4H1SoDn9z_~0 z_Kw$+$#n|bKhn_!0FC3mMOy_etSxg3TcS3?xhEMQ{L~alEnLP}7aS>H=I6Cs$JA3t zZ+&GHaVyO(?%dw6e|_R}vhU)c*jR+NWYqPhC73#^~+CFk)3-#%oie^rPN& zcxfSM^!S~BGVHhrPdKdZgC)coq=s8Jd1r-!oPRLqKiaJCdYVX}OM`bSEV6-hZ<41Y zvH7Q>G~bE+KWc1$KVqN2jf7~xOn&}d3 z+sZ>ObM$~Qid#!9Q&YIMwt&eq?A(gog4BSBE}6NK%W}WcB#`m}s(ZV+(b-X&HT^t$ zdFHM)NMx}oYSZs0{-6NxbIxkM^G;}>j#dsMkl+^ZD@K*14(pOVv5E$LJ=?HIJPLN^ z0dC4sw}u_N3T;uiVn_$Rd{(y3ijx*R0#C(R&n!|wAFAhpg~db`st~Y#JRddc=!OXz zkT5bx<25Z)(puaU{KQyfRmm&-qu7rXW71GZeW*RX)-v(2Ni&Qv83wCt(dH5?b21XY zP$!C;)3;4+u3IrcLQ1QWJA!*uqBf;q(MD&KlPf>z#y@dQC7ZRn&x4M@itC?@`d*!F z9*(w~sc?@o>t(@{dy+0+W5|w8R0*rm@q39hI zbuvM$%*i7u3h3Se?Ot{L14gj8d!)Hp3r?}gZk>~!Xx5zKdkLYHl;n;v#V~=G@;hS# z;jzfD2_YB^Oxg>8s z5Bk#qO9n)||HjcFPZ~M`s?@n$~BPWHzmZiayJX z0gAWjj;H?s4%19|+~|Kv_NIE0+TQq^`(ijy(#M*)U#722*xk4gamVjkI}rCaDH(9z zPt*7Ito+Qb-^0p`3<5jVj+by`D*?)5wM{bOB4HH;xy2NSU&vcgW3EUNWE5Km+vEqsh1<5y2QDt1l5kux0}Q z5AOv3VqxjoC!`xPs|@e=0+v?T z-k$b!bq&vDr!BOSu(iVgfajj#ts!ORY?M#f!U1SH-!SX-Sv`_IguJ+c~LNt$aFD^mI&&5rm z5Y_HP%Q#Rc3<}6TDqWSLbq&STv%c9v8C}WaBgIup@jO5Xijq!Arj}W)QNrdiFK&C{ zv-?PsWp#0-+%S$o9u$$DL9UATI=++8b_J5(@?O8H6mt0^jGE_?taeh^T*{*19WwFf zzdfs5_gz7&^yttdxAY^lPt5&8Cu!wHbILUp{{V+}HoA_hdwF{>f=f_tBgw#K2Ow6C z^RHU}0I2QeH$qEPj60_6EKC6h6@hzgQ%%t&a{>Ikl8w^ivwIU&I%SmCxA8))uuj`^ z?^*HXcIx^jr=|4|;vS!i;?{2wNf`GB+PcR{XzA0J7msL-G;*8=C-e;05wg)AqA!u| z0vU-+VC1RKHP?DySGl^5NhFv?lW?hz)GMFKjj^n3V!t0W`^`@JIm&@;Z4#o$2P|8Y zn&Od5Gr#4syGYx}@$p@o@hbB2>I=7wJdiAb42XV}VcZ(ym(E_}D7#1*1aVsU@tDms zYGtw1tQKUqnE_mb836EVUWI&Qlk)e>@oxH2@$|316;QFxfo??VUjUGMpNiXb&sFJn z+Dhnp?w=5l%D#o#4XqH*AfIa1TqKQGPIMf)HnD9ymqSt03}SUF*gvuRS5QlfW)E(w z^v*G!`1h>dozdD(p=>OZsMwEB{{U!XlL}kTPny)jrKXFgMGfWD3pyxL#Qv}Qg>cHw zog~s!X&sHdx-*&MEr7m7OSN^hxh_aCxFf%6!9n<$XQ%4-7I#R?0{tTCknPX5JXQQx zlWO+r_HPWZw+iTZBC&DbZEVb)G`dvR7kwdcMdib9metNtx#avBt%LD4$=5pCrH$3B zg(N^T{l|KNul04tfR{Fwf>`dPQjX}kDn2Wb>s@0ztajGcf;EYm!aD9HkCIP%-ai{Y zPOsFzjJgfnatI`q(N}7y1Z36{%kfgu*7!~|c%+aW+oWut{{R(p#?+Y=gwQLOIVTv$ z+Pw!^&#b5b9f0qO-Z*M%F>tL&xi`ENUBD7$ra&Z5jO;|J^Tu~(rqs5Oto{lBxlQHu_K!E`Ac}>FBj7;c+Y`e zmg*%d9@Qrp$oH%5KEloI+{qNOll;mF{{Z2uX8Jp4t*mY&x`j847Q(;#*U%jwrrbfI z#cegoXUEWSk@l=MmC_O1K^?`kkG%#8ykr#>zSEZLNw895kdQcM91-zTrlKpstY0*` zTEptX30Ipq^v{B%)J;F3^=NKx!(S6T2o1WN?SFo2#m`?!Zt^6E@Z*&XxZHh(c(MFX zir9&+l22FlFFS@0bu~HkvN}eY({M#^0d?DT>474*VsXt%OGxcPq)?zF=W7o2lF|C! zeN~cJ&`TcdhTaAT`qt(xTGHVbDI;cLIpZVx*9^R;ZOwWUN)4d}62$zy8~c`m-6j2>#N>X$QMTFPx;?I!#dZ@0Bfcj+3AwfvGtYhx(4h+xj=0OQ)Qzlnc|Cs5Pwbp0N6K^ZGEsmX7Q(XaKMjdi5U z1%>?ZBPj(VJ9Ga4ioogd=o4F;Xz!bQ1C=AqU*eYRxh=FSn~R+`-uBfQj@+`2dv~iX zCfe^_xsu@{5*UceflxXk`~Lt>T|KG82(surIv(_pbsgq`t;=_&ut6gd(c>ycYr~xI zyuJSb74pYs_1k8&yCuLIVFhW zBigy$=9bZ`Or=af@K2Fh%1Jn9b?zNY)*)nEA93cKea#x-aNV=kS`I z(k>&POuH90_Xi-U1P_nBV=2d!cf#|fZHkOGPjcC^PUl{px(7B@EGwDIe0VIatnE#7$Bbj`B}J74*xJp-&rgOcZ^?aKZlodeKF! z3xNz$T0j;s7dZVwp=wtalI5&z{WeA>PIA1SF3Cf7=o zJP9M)$^?c*$RPL!-liYI-9KElk5JI>5Jc;}p_84b+O;aDhjsAXCX6`0ZYct?9#WpL(B5{{RZr9?hWwL_eucLke?E=*?SE z)GaKG4*|JhvPni1eCOJ`-lfpmFHpwKZElci5H@7qm@a;P{`K!cTl=j{>DsJm9Qt?$ z4XQq<&lx7O;;Q^$Q&a0w-6CwOHi-_OlxIy+FB z$Mb6hOCm}Ks-uPqr#T-36?4}ghIe``u)nvJFD%>Xjgh$@1Xdc(Bily|7^o<)gsPLE7trN4;#n4`8s@`kvcP zym<$%+g3sPxbP~!@iH5mPN}%Exw#iBYy2o&Hg=%w56Gq0rYzjsD9BPUx%x*q73$fU zO0u3*)BgaJaS)x9vM|Ur#0(voN55=#t!mC#UEAL@%3a7TMl<6T?WV>6?0cUzRqBYq z3zY-fo>>{!84P{Rdoa8kOy9XkW5>U}GQo>u1DsLnVHbg%;F|Lz4_Q@5U;)RIT1A8_ z62?@hEIXR7c*k-%J}JiaMl+C4Kec(8N-~EGtbe^;1ZiSqQb;&GjYnhv5;@|h-yc!c z0m|SGDjbZ!lmi18$*E##5!Z4OP84^j>=co-7g;}pYfRpgJ13>wae^#th} zx|9!(CZbIsnV-{Kdt!pyvcL=uP?q1Xdvxt@FImRlI zSidcD(A>mVup>A>*1B!3k~GUnwOvBS+IV47VpnVePh*cYiNDij)hBDmg@BhV3Jk6( zWrII-uQ197U$Ek;`%=m=#z6mRCDeN85x)L0S% zskGyeY6(C404~hllCUEKcVK<#7Fd91xC+FaxwXHw zy0iSdOi_UPNnF(w@ye3n(1y-8dy28Lg3jVOB}x4WK@5mF4PLbn*EyOP*kE9>{{U}# z9I6^A8v&bvpETYEM#6aQQ*HG7nN@cJBRR_tY7K{^!Jj*G{i=vUM-8_mli+x-X)ZS$ zV6O+}otDSb8_@kMd)K&hyO~f(xW{A9VfL#g)Y@IVVC9G(-mbJhu+{WAM4EN<*5qJ~ zt&im91}1=KeY!nU}1m)3ZJ1gGy=i2B!6w3ge` zzLH4o-+XH!$jJDs-GA{_wVP#c%bQvF5*W?{in#GLQtQ((sr2@trCkT~o)!(2QZRlG z+M-I=m(nu4q{yRkp%}-wtvLKa631y6flHt1tL)8h)y^ zlpjwHJaB&X+W!C)`esS`eraQcS{VYdaJlq|?tgm4>8H*baWI+oj2g%s(!m8!Co90uEipO9+}KA!d_ zM_fD(4#yphTyof{n6kd-Bpml1*{dxM_EgoanV94_#%icJ7*eWJB%If%PRS9Gh+uP` z*!HSBpG$PrzNf2O&m_$NQ;$`T(5yR;-ns8zX=|tIH_#G+e=zb!z;en@_N^!3e!nbw zovntaD@kK@F69c?EW^R5y>+0I)K`}CMKlq$!DNy^Mgc#k+Z8R{;e9#o_qh=$RmzaL zQH<8k(@xg(?I!B_+ypjz5y>MsZp3@njSg)!EN?9&jxF%+5y<1XK1EFFdl9Z`a9G*2 z^Sprih*;xj6@O_X*GlNIYx5hOPW@GbXC;48t6#*866QEmTRbmjHt>sroO!4EdsMZE zUR%dzkO&FI$QcTA*qV!da@xUbdtX`M4VfLr7d2+J!l)wY%NZJQ}2w z*=h5L%pSkj^s()awQYKu+RH`L?TCq5@&5qo4Cey5&Zl@LxXKNxq~Ox=bcsswyUQT@ zLofk9*jJ0^MUg;2N`djsN4AtIHuM?p4k?maS7LMUYQ#Dv4jrNnxbI05gb4eHkgy=< z7{xS?BoR6Ro!_f8>H_6cZtnyR;+7*$`joF}6u0-DyTy?j2KtqK>772(SGJYoR+Zdu zz#ORaQzz+*WzyI3_bGFFh>|c)+ezeo#Yfh4#$}GuD`9QvDD@d~tl#*o^rV70TE;@` z5oC}y50D2HTX7MHGlj-}q0belh6L6+ekgR8lH%qNX1a-#0KY0~vI}_b6vD&kEC+tX zp5L_%AL+U7gEh1PO3HvblUk^ZE4Im#)H5*7JE_kGsC2y&OAFORa(1>Gp4Gb0V1oJN zcLUah?f1Z~W7AWm`dZKVHq&j1QGu5=lKs@uJ4#?A|go^r7m$U~pjPsf^GM>5sFH+4O{HwoyjH!uoF-Q@k~)+{XT z6V=-xGXSxVf;-j9Pk#21-RbvHTuYKY1{o?n@M@;^;^O5qd|{Aha_q)X{{Xkzvl6qZ z#Nsvtdw^`NZoQl10&>BY=~lz#>0&E_xY$(s=$^Fo+>TsWM>=04>aPp)w?+V0D3NV zn{qy`IT-e?IewQGS5?bG$2b_QUGM!?KK-j@s>s-WGPvMYHuQfOk)CVMdw0XCkHDaF zM~X91p^usY#~tZ0nov8?81q0J6PgVJihw4LNube>iU5pJM`|jCB4Q!#Dlr_a&zAmF5>Rec+qB66QSU3!GE!==B=n&=162LG3Pyxwm;spK7=ht zQhTUbw}aRNoPSYN7e!=8owC3%1pNC`m!{oaQrc3$9PeTJkNzsYK*Wf%oyR|a+O(TG z(WS+W#E}iYlL8cX!K(7i=^v?`fbqv_oNjH=*J83S>5)PGVx~Lk7g~+D+|XLa2JkzR z>?<@yxVf>nyqQE#c7`A#W;iI``1q?`N3Jg(+*|41qzx=d4DvC{J_lj(RQi&etx{W? zc!#GE7{KFb_obUvO+!~p(`O8O6fdHj24Ti)7Hwr~Ce|M3PSUz|>f6wUX_e+;z_Sk+ z_7tCr-6a=DU)e65F;o#N=RAfy);C_gpZrWaNPR>=6ps~YsOq}Du9gtqzp7${h}qAN zy<^7jh2IKkwfozEeR&>3kax2ZYg1+Ti>O^*La%n#kf|AD86W|Q#jUnlR+Y9Qj`+?^ zJoYnNM;o{sWx!k>f2Ay4yT?uSMv(m@tZA0<3-*t6<==@XE!=_e?_63NXf+*CmRIy3 zFUyhoS3YUo3sI9zyfRu`AK;-37~^<7$M0J`DqSWnl+>XXA+;;k4;bSSsP9;q>zH=L zYcW{0%f|q8fdJY;N7SWf+b&i|OOs{MS2+d*QI_i8Z?|IL|%pwb;~TGF(Rt zcrg|6pK8Zxy?w7}c8zPN>Jmi}Ir>Lx^%lJ)$|MrqOy!k<4Z!5{{c56U%n~{yAc?#2 zllK*76WVPvQ0m=ZQ;p7>?E@6mBkjIcW9z{jd8I>7kUsl|IBN2do z>Qakj+|f*lA0J2@gIdOE4{ADd#_WnCxm*$?Q=jT8l38MgP9hod21Y7jyF@PWyYbI@ zgLctOq0&R@X9Z7jRENduK2c@Fd=d$!uH-}jjP?RY8Wcp4#cc!EOFf1oy{(1OEUt^cPaYAet9sZs3E+ zu6{i2sgt<%9tL8d8B*2 zLKJLZM&meddSd?ot%R`wb*#$d9F>P79~FSU*5=eeE|DfU%xi;H?m%Of&&Fz7^lr4; zrm?1686MrPT2Btlc@>^FC76|B55JsOk}wDZoM$GR3UDw;ZzO-MXH2I-tX;skSpm-& zBQ@eDktZF)WOhH^qeP{gD&V_unwYmwYcey&rdY-@dCfF8dS_C>CGC_Nf_hm{i*%<4 z{{YS&)zD$-Ek69oY;V>(ha+QSE04W!+X=01W=5HrIPv3}?tKfcK|Y956pC|h;4V+s z#~H3)CNnN;)9`0{TIpYf5#3o_Tijhq1;{(2eY`mL`&KWix?54{q-buPWP#2SMC@_m zy7rx~u$l>5)GAYKi0hV**n&Tl)o)em*4Iw<(%Y>1Y`8MWQzjNX6Z==6FOElT<-S}X z?NUfRx$RflV=kb91~-Av-kj?0jk)RB5?@hfw4ds?olZoH{{Z5qv`@_GmjY-aS@}}C zM&ZwcSeWmHnQN1-pHYp+0OJS!Y2yN1ELO`R;I`4YV;?oXw$n7urPDV(yGMT64C&#$ zh^}#buN};gnA#&76d;b~v!BOtcKH5Dcuay1$=Y%eiN|Fy2G;M;Je>f6YXKW|>TmavQ<-u31e-d91ov$qsGfmL_}? zhsf=kw&>Q3YjG^r@j4a*5)Y?7^+g<^)C`;gGAeGhtXsw-xq%E5D=Ei=fm*{U+m?9n zy8K1aG%Fce?@PkUvJ{>$ewAa$#dGNzG$mAhSnpe|r@yw>baAXMz}|{0@&@zRl0E)v zp8G@6uljv&^oye{;vn_y)MWnE*5U3v{cziKM^xWg=&|1Fk%=_hb@ZdS11>%f+OIWU zvi0J%O9c}{dO{?yNDPSQw;ly>t1hP1bh~+Mqn=O7yJkoaDt*Bfx9FW3(_Xw9mW@1? z7Z6~WS;o@de`?&j;m?b9>Ke(^tu*Aiv{@v*g+j=P0rf^Xs+~uv0Mm5+Y($o~QV|gn z9!fFiA7Vdhyl$b68^o}hKT>w@=^TT{IR5~Opw@KzeMe8X)7l?dl1U`m6Y5TK2ip~? zDt~HybFFTg@BBPoM+Me09Z%9neCD3Y4J@B?0a2q zY^2J&DGXP_)eP4f-j8c@Bmq`Brmb@lKEC~g?^H__KCRiRhxV=_dMVA&2tF#Hx+0p2n$x{wNq2&Irv(Xgero%s>{`!W()6g~xVFBz8J17gxlbqp{?zWj z(l;`t)$=%(?&0Kf4nDL9exgVBtodt&^ymJ!@f4AO2klQ!Z83>%M%ItEdr-D)!paKdrJbqd3iZp5ESTawZE9KcFv~vIjY>v0^;Lxvw?Nfqld{{YvOHzN*BT3aGb z1;95Eq&}FDcQ6b{;0j@_VPD|=VYob;ij)5Uri`l3>Zo4(bLN`*PLvY12^qGJq)V*clx0 zUg4HcRd%~O9snbcwNdUU4&c#-BLhBhR}<*d#cHztU~FUbrg;>)drxHQZY`8YAj=TB zBAYs;yWGmti60-QjAo^wZLVI%U!X%T01=<<_p6ODw5?qlH(-)6DkH{7`5zTsYopoU zMr3JL-J6ia@m?a*@APtRB6xi{0aapoEAA=1L1QOPTie>oF68{a@2VzsVY}@{m(w=d zmY=!{u&%NMVoxXk0KuyJ?Mh47mI(D0nNA0%A>n@2=ECadNo8wxxjW*DJmwHjA&>f1R$lM^s7FAdMmY0cBefDPRzNwy_^H<#TUgw+t^7`0 zF%6D(nn`UThxC$n91p9KYN7zQ+T;RB>^^CxRzgtZouJuc~k)w7#iG9eP2il*9N=-`PqOlDexBx>l zZ6x`@sPoxg*ud#5L?aw-#~gbaaH~B6`qgcuv$$J-P=dxqy9$5 zTg@Y=B`*i0;v%DQh5LfPdd*vEXqInlG2IfAu&?R|#c6u0r_wvwq_fKIY?O67fhY8z zVk;)rJ0~#Ao|7I|KgxbouIV4taHU7mK<{2)h1fRG7>;>8>SfKWk^M|Ee?bSZ zttU@u+J2wwCaTD%(-NzJp8nObo3Oc_-e|J&0UK}u!CLP6vp-h;9=+?y9G{g%MP)ga z!1BZW>zHb>XbX7_#+`5_iIi^+IYZ{Ue?)3JCZ%a}r^W;}#x0Gt`FA4#_(dM8b$xAl zAV<^A_=vy~j})3Ern91T0k^yKrhucQa{mA_DgOZGDr?DS9I1NJTYVz$RnYWXi*(cA zVpyI`xvY(sQC;b98#rHjNIs^=HDlH~EcQCJ(!h;4Zdk7?@l~+wlS+)o82r={Zhkp5 z$8se_*5;MAJ=XPB2fuS!sNwbGD!hPm-miMARFd??4%JxWP*)4wA33NtT9jIRE~^R` zk#W1eD|6d4%#kE3=(p1B0m1&&5*&v522TS5z1+(4OX>hSXOm6azBftAvBoOId7lDf z60(8^kN2rMWa({mlCa)0f<5Xxt2~k%9j*N<-K>TuAL+>+S)(> z_2XU%Um#XXs;+IXI)Y}i;@G~(#(N4xzi&)HN|^Fa8-hQ2sKX?V2N^j9ypMX43vCx# z)O0yz8hyh;w+GQ-kJdep#YlnXgV&xyR!E(2hse%p`+l36?(WH8ky|V3Gcgzdcc;3J zdzrN+x}B7?>wu`Z1P%ekG_BW8z%?y6-hhiSB4N6&x^_!BTJGgs$8+iyXtDI|?Z>}0 z%(_!wyo&uI^nG}^Ll*1|R?kek)AZ~2OL-+no;G%c&k;9)pEY;2PwH8vy|$JMc?v3x z!w0=`y<=FqpLLY4m5H!EuHOQ;TE&&tp$POR5RwZ58``;y@i3ZAz!?EKKJ_w*Qf=;L zkM!Lb!j1^5D;uT0Nkps!nA%VIt2~LxUE7%Zd8vsZGvtB+8%Y$_l2wkIH|4dMC1)s7 zKmqpot#?qxZ9UWK7R?LXMmIP;m}8DB5qcVFB5WLO0H2Xh$$d4UiP4xcuGh)PB9nqV z>JRI)IwGhiluCb0iQ@?}uN|^I^HOvjHa$*fE^@npBexW4Bl13_ylTQFlj%LMd{eGb zBKuHSwJ|UNwgyMf&3c|jypdS0PH+#!Q9PzghLM|bCpkWAMP(t9)f*U(aXHUwEahJW zc+_Nza06+tH^>W#cw(aj_LUEjP!K_u$ zKB341J*&@M@am(C4AKvZQ9(JZG)h`O){Oks37TBziUFg~kw8(N^myWd#Q{Yef%8QH zpX*8ogGogJ#yzOd$qcv1_$^O)!;L=fwh>>na?_rwnpZz#V zo6F?SI9yi(gT8)iyMOfL;A)qEwg%PBYw^GQ)Bb<($H~*YYXyz9+9(;>oYo%QTOX`o zsV~QFYkjODhn)bxcz0F=ss)pDp&Sl4?mg@6d|bz!R+B&R3op}=wYvf{QSUCCPVU1l zyaAsSUd=19RL;OQ51Orzs{%tX0D;fHpW3>}(p1o39cGO`bbp=zCEgG4WvseZ_YcAJ*phyLn$C5KqWB z?NH_->Ua!5762%WAJl!SHn}&ic6PhS+qq&fpW3Bcbf&bhN2o_^{*Ml>KiaY%*XL)n z()9TuNQ`L4Rsdz2K7Q3*JZ9(kmdaxrLV(=l`Ne9wZ>8U=HEELRql{aCS~J6w@GGZj ze}fuK_ARJQc*&8468@DwIILxy$C|QQ;PF|*9lMDbiT342IQ{8}Z>}xXlsuX3xExnV z{7dMy(4@DKHVEWWrPsbiVPLhln;_&6cI1xrsj7-bk-co^a6S*3kuAuG2a9k6xNgh$ zr}ga$?@1uCf>`mi9;e-GbCgP4l;v`eA6(w^#V#jDshuii-V#7vQJ@i6~s%Q;kW9? zz9_dAj>{a59Z!s5hyE(M3x%_}0%RKxA4%|P&ht!IVUG6H$t|?Q^$tjHYQNG4v$TXU zjImZHasL2{tGG!62_Xrve=BlLB=g-Ww$RFeay{xYUjdT+&tg0pihZsvVNz1|OD1D%S~ZXj$`8;@K~)=UF0w8c zw<9$j04l(O5A@=vPSTmlF^+jFjEZ7yr0v3=XPJ;g6p5-gc%*`{txY7zKfl zfKLLNnm-h7keG}3;^Tx047DtH6O-n_0E7=Drc&&@c9q;JLv>@!NrJD=2kJBpS= zTX>DOlBGx>XO8se)wr(Si2b6KT(1ds{NMLeVtf^*{{ zqwivbjNtp%w38|`^q*nornN)4Q2ue?3NlcZrCWt4vFuWFkaNvQ)2*Yvy7U=>mmC0i z%}s4hZy;ko*ZrwfdaN)2`1hxE4I1-Hlhd9T0CEW({%S^#q~B^%%FrPqB`vrP{8XPv zjF#^S_1ZIqJn`P9k#Bnz_-*7#0s8UC#Vy9EsY_~XBtTV8NDIwJvz|*y7_f4zFmc#a zpP}KSc#8&H5Php(_<7WE=~}kw=JcXrjE{c?v-VTl&w7#Fsg5Q*vhqjm?ON?y@Z-?8 zwbb-Wk$Yz-%M~1{_9C&A`fCfTw`}Qa*@67R+@YF9IgR<=JB(JgNNjajC64AO#E%Zg z{{Zk>xVD9;-dRHv-9X7CSO*>P?kjm?CZjUkK9Wed*hyLc0GSBS8Lu^-p508Q(W24k z(C*{XwP=@B(u%uTahx1}pNgx{-rCCc;?_MjSa(W|GJrP50rB%!eHqpAl>Yz=xs7C+ zCn*{+<&U;cYS9~e4N<4LwvD2^m3=l`ewSZ=nz-=AtY=VZdXATUb*^ahAMopey?s38 z9C#zfYrxXn&8D9&p9RPlIo`rigm4aV@mc*M?j1({ z=TeJ%YIdQdme78ZJnh9qbIrl09v@d>HAGWJG)IGkLD5E_)IpI$G5$3 zzZ}b#e11)K<+0BsGP)8;L-wz7D806Q%zNi2#avkFHg~Zuojg)OtNv%xa_53PXWN>f zb1j|h_OgY{Y-2d=NI0)G$5U?8FD@Q*+xs{Y=GOiRBv}*%bw8u$9@SyeH%X*xqG&Ee zma1~#E^>$5RUW94Loe`HE0yH?Ri8!Q{!m<5tX9m^ym@&)RssDh_pe9Ap7krq@?)y$ zlJs9sb*7Oy(Jmufgd~%XCy)(c`hW2IsV2F({Jc+X=n@ONZB`)iGhJJ!bV1Tueckj( z74J5(+T#Haj%tso`ra$(VA3pO61mqEoo0d>W)_T240ojybN_VeYxp8%YNv2jj(h zRv`1(P;=}vn(`Y5kF|G2hMzjeHt7a?0q<5H!SuJ1S7VnazdkCZ5SS5x3fU($CeH03 zQkM}Kk@LoJ&x2dvrIo1ZOPxmVsBEvHyJgg*nIpCh&mE3I@rvjjU#IHV-AcN3*@8&$Ws5d!wg2>SAWuZqy?e~D4vYSy~6D$PHo=*+SlgZB8Y zc5}Ann$lja(M@rt+Dj1!_{AJ|AZPoE#C0Z`nsxk^po6gEy>#0ithBk({{SqK1d$kh zZG)eB=lw?cC@FWE-*ucoj&W9qhqY z81PX}Ggnbx8>m9E`f;Am{<0>)|dKqwcJe4D;zQGDiw#LB$5_c5sEV73_F8T^$kMy@goyC9f{AH ziuV=ajwWK$G>6@=4M~fsC$>xo(U^E)$UgN@TRF+?*i$ThMFn_Zd{q-~^=q9{R+{0r zHUj4u$HpoeDPw?g$F(*FofPSu@=D z9@XIFZe!RFYHDab`Kg={y|$?s0P&MvrM{X*Dr7ju3C|SDF)^K^jAUZHh#W5BxCHkD z{c30+Ay`NWFP_4r#d9baEZ}%OshI7{<%@+G$jGk^BS;WuI2Zz|C0%MR<%p5U#@;(r ziyoxDvsn@=hfyd2fH)+5>Zu)L;j{DirwpmLgdB2triit<*Cn`(2Fx&SBpt~1G?2t6 z43gnvau2PHmHoY{vIYg1FiNsd+3S-R6HsJRv+{nTh57EA*eg>i898qe(uYVW`5= zPj1m%4pq?OHLB9Jy)JHwZ4XknUs0IJ1zysvqb@G(T1@-#`_$`O*d&M0 zW>~i|B18P6#%noEk$KeLhS%CPlscW1(P}zuqaxxS%6*9NYa=9*g$W=S9{uZEpmm+} z8hqMhuF~2D+z_0A+3r3n(^0h3`qM?Y)ZzTSuB`{t`8Z%*W}s4C@P@{X5l(acMj13O=TeLF4?tH9u9*^!-yq zT~2K-NN2lY>4*;RPoBhgtuNvZmHshiw;FDgyRFy>+z+UHuf0cW4NCUT&r#7^*15Bc zday?S0QAWIU_9368{3-?sAv(z99Gh(#tS2nk5qritn+DbUEVAbO(Gy01CxTM+PhA> z9-q`&eZ9$^CAzd=XI+>mG2e>ky+x+XlKy*7v=ZBqy<`WG_xo1wFtL=>dMfJLJ<-S* zf-@T&FwbL;HR{eSU!*lf6QPN)1Lu&S`TNyIrGKbRbkp42J3k5zd=Ay2(-F0p?k+W( zkX0c59_HnbiqCx`vdh(0*6>+J9n#As)wqdd>`;N-vF}EKtE3Rlb%;wk63e%fAkV+G zag7sLw|j^zncWJ=0!mLRbH#LSpww<-yGvV1W7J}THJX1#c~A3zJ*vwVJ@qcDXLAk0 zL|8S#;2ywx3g?%)>>7K1MmuzlX#W6*EP&^IYp?9BwYw=3OO9A!k^M;Gk$$Ln{{T0U zn!^nONgi8kmI6gm%J?}Xc%fdd?1jux+^5wWE&(17&3n{(elPHNXNE;C0ci$1d{viE z+sS*O%#s6y1SlL}*O_D0ZuIMIJytOsxJ)4B2hZNEMkvSYTRSXl#y(h%z*5;j)4o$~ zJ*U}`6b~PVMVQ(pR1L_-1B}n&e3dw<5Y9)#haTrA(OJ^*2Bv5SnPp0O-cv0JIP`2Zi!GCd@(RH^?LuT;F z8l+`mX&Lj8$AL^)YgYI7w#wFxY*ls-Pa#S2Pt8{K&HGKRMPy`?@{k||Zpk8-iNfih zfrXx-4a|96%)8ge-nzb*q1knHs$cyn8f7-e!xAf$%N4xWKfw;LxY{FT%P-At`a7tl z(z<$RZ9>S_(j1Z8=A_vV_0EBBr0K}kjVRhe{=Aj<&2wAGRtz$Y%zv9b>u0R>ebxQ6 zmRB$;hI74#Bnr-Is;^|RTExt*cx-ZN$UK$aD-X>&5O6p?-@R1nsEc)n2kBgWCZ@D4`Y&{HPE2gx=N>B8s1BGv zhUng`ozMH!eww&~8_Ci~Sk;CACaHRlP-*Xdf@A_b)%3oQCx}6G$S_clK^0@BU8>u( z44aNgT$-+v)OAPhNbjC0#h25#U7#rkBO;NVq+P6QbY(;#PykoI?_MK)(%>l^abBfX zZ&9}|@i1{w(}_1^6X1J%Rw#b}Z$p4o)pqT$J_Z3bE#%wk59YukqcW9@DF6ZqCm60- zEM~RlP=s-g*v4xScY!m2eAe4of2Kt7j}?i!B+A|~z^)c^UW__1;0`Fr#wjU%>nbQ1 zC%poLp4rU-kA5ik#TotS1wf*g#~yg3qs35T_M(C3J}9dJjL7idO-gG zdg8Hn&N23`$NvD+!4K6h7zMY&a5LVoHyj9JPPQjw)UfGnWWkVd(<(^zHrC6^Hx_|Vfs-^ zdVucurp24Sp9J9vMQx<}W~DT%moQFu3>EALYVm3HNMoF`tM(vgns)ph`5f)~MOkV( zdQYX<>UON77>;CK>fiaSZ6cELXKR?FkTDTqRa>?x*u&Z0M=4OOA8VGrE1}B!D}Qdgszh zATTTfL}>G#dxCsbpHx_1bmpq|QV&nnRdTVM?#Rfg`af9M+35)d-i-{hq@~i}uhsTH z70;={yy|@*bdjcNH#=U|@sYhe{ap7I+jOV2(|RNFQdnTbOGmhVq1=DPWFE%W*y)<& z){z@YVp+WuB3UEPk~|8(x#|ct4F=Nc*a2wMJWKv#_Z7=8^3zj@=bC-WX+MdNJ@S5B zG=YjQAwlhm?DKUNlc?$z`W#`Sf+zJDk@T=$d)7mzx>Uz9WSzmgVqa;PiJI4Ti_049q zy@v8qBH1DOWaA+|)h|%j3pn({DM5j_=V16gO<3tSgIIx#wgd8(;3SepT(b7OQ-4=aYk*@?UEnV6#kvxHPWs$4JzwQy1jw_ z04*~osrhLm-?$QSgW|DQI#JUWDIVNCwAenU`qsZ_scWfj2#Kap%sZaP_of~P#@&if z{ih(-iq79n)lt$|))?bBR$d#QKWeYNw7bxyc!Z22IAnAHgY0uw{fbw%3R(F=oE1LR zK}x?L2iw5ntZQsw|@ASa21{CVvXd3 zX=daO-KoWuX5SXpGUw^r+NaIaceY`@ds!rioU?^LPy8B&+HKqfG-&2FKSKf9n^YH8 ziP-&He@OT=sGFQd7?8*MA8MENvph2?4twX{-|tMAgh%O+JU=t;)_ae-c*bYML+bZp>^(1x?Lg~7=f`+eyY4p*>Kk?~g#)AG$~E|yQD894{P zv8rN)PSOX{-->7txmb{R@sE0P-a`;s6qRs681QM3!z@vJ6JM9ynR5fGn&Z>NpCs!$BHsoVS67K;+v-0mFiio z96Lj8a9`s&`_y&TA(=`wqNYha9~D3gN3~cLJ_p4}Sq98!>@ib%Ri(4QXIXH;Nf;xO z-nwT^b*`JH#%1HS7uR8sL&1C4wCGu?xZs;)4 zbJ?q%o0@gMapLP&7m4X#yIe-Gt}c+_j($Aj%}D|rtHk4wJdswSOy=p$aks`t zn%3!>TyLdDnr*^fTJqDCZLQCOJ*s1usMW`gR=r8kmRh{?YPQNhJI2t53dDIh^IVUt zGz+aGQ4}xXzG1$U^C$s{+x>J-f0EJpm?E_1Y|iRcFFdtnIO>h`-N==Rb5)) z{Xony7kvK!TIU*K8`;(gSmDML_x|2$%S&nW9a&`9ccc9zoB}`Ey%^=beL388+3SY> z7;mk$n+V`C!?%68;g}v96_wUz*Z%;)mrcGc`9%vdt79a1AlF8;*Q`3w+-UMdk?IW| zBY77kSIDdd>S`Ku-RbQ*-CNskiTT}(pY2<-d^zn4@czke^~FZGNEEI&zBtWV^#?#} zaCIorw0n|bxnEnRCJ8O|JL9P&x0d@&t2+h&Fz;OX^<7c!E^LI!fW)+^9__21aDA%Tu4^-fYHdhd zY7An5En_DPh<=>=)z?bumYP>mMJ@D8b8OC~o3R7q=CYHig5j5Q6lOUi$oH)-mkq7` zsj`kpqF_XTzXV`-KQ#Eamkx7=+pRS13sj1IM#EQ~=9mvo8F9e&E#Ox?lSR4`kg@ul zXDD(ibnz90I6H=L!#%3|qjilE&UZ~x85s)UcKg?|V<#0aY&FCtHQWPZIB$xMstL&b z>t(O%L;nDIXqK@Rl>G%q>H8YU$!#P}wnZv^vEHScV#AYi7jMADKWi9kYnf%|(g9cC zlTngFl4EFaM*@>}Au41F3uhH}K&41K+=2#2oSN~xv+g+<{?+6u0luF+Vy4M`8PcM& zNTXLt3z;$XHhgBM_C4v>l04fKkOyEqRI8<$E0O9rbOUhq`&C_Jp>owZ0c-bt{D|>=Xt)@!G4)W+Uzo>}q?#9HD_5en{_8N`=aj2H$@*5Rk*_M(o2F z9CQBF0m85&8`K^!JJiXRO^9~@r<1h*0BUD$5cyIlsPfAZwb-%Y*o?3}ziO_K5-@T? z=Nwg&!Mx|wAmff|Jkb;zv4NcD6=6~BW)Qe-psqF&f8wq*tH~}V3iIq$;TLZM?^LCD zEHJE3apY8scAh=y893uO@l_XB_cPhbyT-(0!>?u)9`jmREy^$~>%d{&yj$H!@qS8a zy*Qh*Kh=X!WeFDK4U*m4!K~UZNC$;N4JEWH?sVhPSc^HLyz;sJo%tZ=)# zQ*&>gQ;tISJ;hseE0$JFI)BuplID4iC42yT`4r&3eYrJuL@nfl zl+S_hPk)D882x2|g7_qHQ>~%3wnk|ie7L|F;2KBNrgbU5Y5|OQ2j-}*OJ-GKTam%V zBx)6S$pB*qy-FcAH|s5&0po2WXIOe>dBz72I zJ&kB@taPgsme5X@6R97@M*3JD{L@w)Jh%5I819lZ3%h&pxT`r`D3bw*9FjRT=qBz) zar5WzTTL(U!&KHuO&}%XG1{Ow+~>&xnwRkNUDGZKU+9{K#U)un9{&JwQspJpIb>pw z!mmC)DrL3lfO=AHW%2D+>83}gtG(Tv?BH!wbt*IV^Gw+3Uz>7K#?;P3agXasWkpTJ z$eD;lJA52eb{jz~Rd;v;nzp*r{Ru$CjG?%YcKxa7^kJyVJrYYl{{XB25`5$0v?!5O z;h3`l@8YC^57oy2cK54YOQdh~@VHf(4hS(YZVf}Zv$?iJifd+zaQ$vDaqm-eqe|CE z%$zqE;=M3+&fZ3IjQ6XZ4@+B#7JH){cFDsrU^fBnQMF~XH*%Xz#yp;UeX7j{W401N zWhZXl{{R%pwPyn^p?$mm07~#2?9SovJX5JF1!Af`lbnwgHayQH=jn3Hpa8k#SDdcU z5aGx2u&1S&rt#IYh+)ZsVcaBKCyNc;{e~ec!bnF^?sWYh9?*9PHzAF`bYPT3$f*_n^EUq|W zJQ}D88i^KSVsZLUaBAy)B(I@=5B~rVG~H&x=Faruc!70bc_4VLFG*i$=6NK5tWrt! zf;ipJZ@ql8Wph2ddXP-fxZ@!5Yq@?J-@&iw;@x8=@;+rid13B7s>{AA%HL|88*gho zx{A5Q#zf(JY(C@7WbV3s^nF@eJ46j*a{)0D2|~xm!L8_%KyX1A;D2Tyl&A(#eG4* zuEEuJaO*cRSY29(bt_h7c=5qsdca@ZzfLp5Wd6OIk{uXvxR3R%O>2IcthKy?)@ZI3 zThxsDj@|k3#cp~RtZZ~{rT+jDyvo^66Gc2~GG8P8>j$}`o_ACtGx~w`f;_^)8{L zS({m}Lt7LCt9dm z-Sx|ciUV^LvF+M}1zWaijxLLPHT>+Z@w;vG!90+A*GlL;Hp*Mb%0{t%S}ZUF^_=p? zlG!;Uigi_k*|hN7M95K&3ae-V z%zrrXPQb}B+?f$qdtfL&K=5l(73+BmDv9GPP;CHlk7~2gq|!H`xet|PJG%kTnxeRb z+mOG{!;F0pX9QH{CmI|{B2Vcr03 z-0|C*Z*wmlkDh6y+2ZA=-oUZ)YE_zoM7z;g9y8edR3uG@50XzKjz4O8-M~_r;jxT( zpuLtuHM=vQ01WLzQuNIdSBBo=HXz&rq<6(s#p=lkhBpt!Gmb#bYP3LwWJf&EoUee|RxE?rK3 z)jH^>u5JFJib|AGkCRbhQzWU8{MaYnrNJXzO)EN#l^h-@jxzbS?)^;p=bL~>D8)7@DAom$H4rz?UouIJ;C)%dPV zwOs3&Sr7skdSLykp7teWE(Y)6@;!}x?0R{kqfoh2X^dllfpb;1^M-}cfyn;itS*ok z%8)-!ay{y@(jzOn57c`PYU;3-?;NcE0GXZ8EMGuDo_(quI*hgxDl2-hf=E;2_V=eI zf>?o-MpWDh4|>kCTxjr5 zX*wKTL>W2Y4Df14OQ+_wGh*qyPK=5_?#BdFO zbLSN@%JrT$EO#>fM~+sjZR8)sLNX7KE76_P3_#f9l^!bWm4Bw%je6Dyg0+9bEU3}1dZBj&Q2E}(5>n3CR`eOLztvE%Ji5uw+$%XGb%#TiYT zfX3fy=VF=Z{ZjK!)j^8sy-lqd4tOIStHz(G>#q&m7G`m46B%Yz?5DPVDf4FrjBe*> z+F9e3RtXs3FUcNrT3s^M(@E)T$=^_6e|j*{sQzB$RxDYyg}+&8eJ{~z1S0%vH>sal z_)>?C54B*EQ2r<@ESDoW*z8J^{{Z8r=eQb_h?j2RApv6}zCEj;bW|4hdTrIjS}mR0 zk`*S9<)Y)3+vE=UtoZA8F81|rrt1kDw)fgrpB=>Z;nAdvJTTxdu>+oKC4132{+VYr z(Jmnem5q*0c+VZ{X?6IJwzA#nw-8<5S#HEq`hXT7V4V9_YH!5-X6XJ-e^2r%KTa`_ zJ7kVcIlZQs>&+JTN{}-}=`$w$cQ`)&)ZDf=Gs6nvG6>d&#QO|FkFuLa*x1dwUg z;3T3+Fwzs>ZhO^?Juzj~NUzhjH_tMs@#0a!!lm74CvAZtX;;}ka&DzCywu%L@1^{OSginV1)jp+hdk&># zXe=Q^0U03gNkRT*_^y$r+-jXWrE9u%=9E>hvity0ANzf)HKIpnrA=z@aq2bXPK>zR z6P{F$6{)%z>mS4DYz4K(lX5Q7Y&53WT7F>77y;XEJnX2noxAr<{^(R=}=4N1uSI8sJ#X0tq>55Gs zb2AR#0<_v-({65T1^$_8;HRe|?!#yN#-+w(G_vcbN!5Q8dOxbPXVdO2-o@^QR%p~< zFsu(x=`Vk&&!^aIxJ;d{{{W%Xf4y02ABCDEItyxAcB0KQzUZMp$~=tLXQFiro}SiL z?%wCqcqQIpov@NGkZNHrJuSPdEn}kXq>1KRNs>Ut8wyH-J*zHyUG1elq*4T7{#=7w z%Rj~|TOOjG^YW_jTuHWDCOHf4%HAtSto4sW>Y8k`GQFgzF!1CCKG>`0H_T5SHsRW~ zf-Ka$d&-fXR;$xTX-JYX2LAxix#XJYHky^LpqEicJSq@wLpBIu?f0pR(emDC(dsbT z$8j5f_o04AJ<9x6_)6uo>6ezrY>_xV1}nx4gu%7lK`>*D1`q2(>^`vCXwQOC178sbYR_^$g26H zXwRnj3NiI}98~m>&c-}~PXHd&%+~U}ewmB{I5<3!QqdJpbCL-I7&)X=C<(~}$H}RM zElenQD2g)6R44VZXA!^ooTJvl!)0t;E!`n zNo5#?B!+bdIM{e2=RVYjbZU31l0CVml{(I3NiY=bZa%LSaTc7{q2AKn+qdaCzyhc=N%wtV8b4wt7~ z-IB`@B(^vlsn7PS-_7g&B^{=rd0+*+4n$#_86@&}@B7l;H(2k7K)&faS(8wAiDPCv zi6bg=5`J%L_doH{-N`V&yB`#*Ot&?=v{ec{{R%Uxsu-L zBWK9qfsO`#YZ*SLb)@P>YmB|d?b2tnpONOe4?t^Lwv{*J^;MbeE=Y_!WtmT4DZaev zM!snxhfZ{n14yroZc*)8pXJQrv(m4j@8-DFZuN<6M%P`@q;0To@<6TriPoA-vs~J> zyr@WuR{CUmk5H7dm2IbGTVfmOfafd^`&BfuS#;*Psb5=uU6v%aw+YhV0IQHV;(P&Hu-0uB z7Ph=m>149ya(}H{>AF3KQ|MAPyQG)VWB4pWx9oh@CDmO97={D3+Dkjxte<=`G)_6l zIKiitHnP=vKT^@{-s0jSsho4%RSv=d$jCkob>5QdO+T!(^P_62seXVMCu5bAj|@HQ z3)b2b=vv&ilH0wu;2lt$;2&e{S>UrwzU{eO5OA{!M(!eE;)$dKS#;t@syXX5;L=5B{k-??6l~IoH7#`w?n{0;V*I)$p+C@dx z?Zu;oF*I{`AovyT-t&FRdMoLY;~e&_H(x?75(|+AWD2pfpXNC4TAgsL31CPsUAgTVjPzNevmPqG3WN6!6pL8 zS7{r7J&k*c-`50hP&<;`XZNP0fubc<{{UC9t$%85<3)^&1?RWTcox!O&KLuO$86QM zou;B}y1Qs&LdR&6kVy9x8cl9!Ze%D>ex+4VHsJBvsu~Gqx_NmdChera1F!?huNDwM zS%lJU2f*hv?UtnzJ4bf_o*6hNvnlr!#5PHBs4cv5ZB~3MvET}by1mTNnJt}O+5i!E z3^^a>BB`X^Zlz;fv#->@deOg6*w{iRn)maPZ}j~*4gqg(kyl+mru5vg%Y7`*0gf}6 zX6|3WUwSK=ZFeF)m}MRNZWQIbce6Ig;&*Yu9Ow6~exa&#^_A!5Bet4HVUn$Y0k3yG zX{C!H6c#b8ue*H6xMQCL)r5@dTR@s|XMs$h>}Jkze${uSbcoc2oMkNSjE%E=kAU8J z_N?u`r*HX*A_F$^k+`ttrfL#LXzDH2MphV7T;uL2M%o^Z>2993xw+NuWW2b9297Is z8)VPVwPz>myN}6FqS}FPr%cS!DgYV5>BN5y$-mWe=!?I*bhk^9tUm9S272LOSJ^PSut2=nt>(k^sPtJQjb>N~AI z@>m`w+zR+LztevgwM(-TUux1cvB|x+oCBWtu1nht0o(>L<2CG~BLY-{Ksf&Zde4lP zYcCpi4QKHxJC}v5F0AD%mOq%c4cvLGR;kx;-r2=xcc$5>jhXRofjv@t7Bz{6;o_6j zOaeK<^ZQqmA)Z29FU~xE)pTs-#oIiE_b^aNRNbAR(<0@TQ?=Po-1hs@5s*Uxj^dGt zKTgw;@mGn$ZLs`0>g4IJqK5kJ6}p8%Mv1uvPkP&RpI`L%SnE;S+-brKc&)^6lmj61 z-1)9HuF*2d8KM>dVA#diZ3 zq#P9=rM~rA=<_nN#IZ7CzmrWj{YFV+D=0bdf%mC-HtQW-p=nyin{9V(43=`tg|j9$ z+&Skfj@;KS)vYeAO2>5&ET2L!?~k8)(Db+B4c?1p))%(XY8DaNvc&X1dd^F}gwC0)LgqgY!tPV-vJWP!hi6)|aBS%k2wVg6hugVUsunx6mgT4kijsF1VszEExcHsE$nwsBfE}iFC>gLrN8EocgbtPczir-1caqG*iki;%=!+h0J2K6u(B>w;} zx7xezt{KCS%3$0LT$2mI9!Me4GCejCj^df+^N!#~K( zd97blXiaS?y0itZ42DN{Il|{B_p94c7WUC+(PxcffL*Y(JXWpp^bP{bk zB}hWNLj}G5Y9+CcWA7V|Fg<~(R`baiG0pWO5;>@m$MyYZf_NS%zS{nrOC{4xv&V`3 zG9$ag8tlKxTV&h!jQ9tb}5UmN~VIv3nj;8Rx*HN=Y2=Q!hcky4vTv4_?# zC}D*@O5;A28&mIjubWvTD5O6R+6xvZVUOPx1!7i^fIwf7+O8!l z=`jEX&OY^4%NdeGCgI0_0z$ZJ8V_8W^E_~OX_osY6)#D%jIyf9r z???q@qJiy4ZxpI_oaePCir1ii^bT|JMFyZdQSnA7@j$-fiU*o11o1|FxfFAZf2|zV zQARPrrRSVxlRotU+KN8>(7tM+a4|>+A2h4SImIVx4^jT1;qu&Oumx7!`HzP+PD}G0Lk!bis6dd?mpNUt2@h=y|%Jo zG7JlYjyqLtHB=A+%*S~i0WF{>@o&c*$Tp49!gwu0q- zR%v1*kT^T4vh4!h$VOE|WD1lmox@n%CDd)UXq{Rx2PT`>RfHQ@u68gHlm&pWw$|cwbAP;KIle0?e3s|nuy0a@N+}WuzS>g#T+%`xVr;g+r_^a>Ov;3YV;PKjyXDl+!aN zn$p0Tf7IJg82g%osOpcbej>%F+-cc}%m?M0oxywL{?*TS>7{MPl<>i6cXR21b_*&g zelljpbxcACA1FlGMoLDLW;`cRrG%>+eNwH zHt!&LuB)c#Z_!#Fn`vozIQ+p9OxD>2f#>$(xa4-0I&P%4_rATP(XjgdE3IgH-Hqm) z@L%h47>j`x(S`sH+3{TR#i+-1mZ7WP-CfOSk1n5CB5|t4(pI zNdg3lXxnH%e|oso`fE!wCDop#GeJ4QQOO^*P-{Pjl595+-$vz|1y6(E8f%UdrC(a# z-RZid*7iEPPikA$SvMBWdBLxJE2!CPS27J!5ge%jXrv!T*#}}Oq-k1?n|#)Hwt>JQ zm=E&&8ts~7eHW-`_K^A!MDVC)1Bo5IkDOHh09d&4=GWSd@Az(?r`R~SyCy*_XbS)j z$G_T_p){-A+L1|F8Xux}hh`R~kLn;x3l!I?X%9Zu@q~+kgYX2gO=NXQ%Z(xBmd;IL(~$$?8oaFVnbo z6voq2(=(`ar&jb{n72?rtqZQ^g~srJ`4!JKXVx`|TJ%6fYxK9Kn6I-UTWKw0wVp_4 zA}}&QXsto9_F*IVm- zI>HTBXqQbX>r5NejXz5JW8Bx6^nQc8wqbjG_R~y4s0+*>dyk)b>#cUoj&lmeu|&3c zTaY;!1yB4{y|tH9*y*o#Z*h4R!@Fc>DTC&>iTE5Yt4 z^G4E606!GUztp*2#~{>{Y42PJ{{T=Oz33%b>GDd!O9+_u4aVx$+iA%9B+D#z&nl7h z$e3^c05z*UXJa+Qkw-M9BmBj|IIHUoChX1x^A&+k72AO0?NUfG?juvR5UY+Gamc7s zEyc8{DzV%-0QSXp7`h8Z>KkSjw?-?)Hh$aY~?%eRV8s;^2b~q zC-jd}$Ew7(*OtKCMdeO1J?l*~>334OSfq)WKr$)hA2|lOSh$wX@77iHnN9;B$M&tp ziLAk>Mhu$-qq#n7&6KmJtK!aO#cp~dLP=*gcGp5f7$?&>3_$Z+xf1tPvRjQR3p@D7 z3^(kR50RgG<@$ZZQBDoEOSc@Haqw#DH`Y2@Xzr$#NIg;+Cy$kHh8>MDx5rVu`(Jd< zn>C)Vc{Q}tSkKCvOOP`E03e9Md7K`hfCk>J8KjO6dcDTCcinHI@ zEZ~l1w!>h5n;pe@>9n)EcJ(GhacbpZlpHfD{{S%aj?~n%mROFQ>AP)G&RctH8;Er) zW4R+rt~h3aOCDPniW7|+E>2TBe*q~jxMO_BzsFE72Tp> zM$;k5_{gUhp?W%hMbRXcaLx; zwbUYbZ=*tOvbiDg!31{uS2NK%qfpReWV5-(;ggY?pB(bMvzOA=!oph~k<{(|W{%<) z1(Q2jkpBRvtgX_w<>7H5a@hq>iqJ=`L#<3kuebvq(JFA&=I5jD=eLe~H4~-?O}sM? zax2v_;fl*FPUI@7&y(bR>e}0;E+oBz(V0C-hEy@f6$%YPdp$v9a(6^Rl_Q)3*w;nT zx{FEbIVYb`wt^`ER6qs_k9^Y`DoBf|^aZp!43BLhwcH3@l%8AP6@!~XowT8-DuWqq zjgH{_*J##sCbhMS>do3%_7a13Ll0`_y-BU3Tghn+qrtj7OA`PJu=cHSO)LKZ4x_Vf zpo%N`5+z}X9*^ z)uyM^mp2+^zMD8Q+gkz<51(^dmsqT0wTb_e9v6pv} z-aC~2Eh}wT6-HI>q&FnPBP*km7Z}0MwOA#M-Gl=2SYAmPjt+b0;NsJJ~8)^)Q zp|D&P_Ro6Lb@salRO|OQ_K+B%CkUit1NN-IhHc`sX zsKm&sIaA02ptd*mECIo(P+iXp298ahI2_`)z?(LdQ9#&NamMr5pJ7mBwTci_oy?~P zC+Vkdum1orfh3vc+x;`|PP;AK2$Xg{ zz|)$KPTe)ElUd%yBr2JcY?;PA{{Z5KlsY}b#Ve~`Np6jTagrP0)uy!$oYN=xV@l!1 z=LB{>c&ez8ZLOH3-(E&kkMyrb>S$#bsd6`w{G4OhRM8RM8;Bnb9DotP!3Mk|A~`ZC z4Uh;mv*^8U{{U9jVzrX$(91gvHQJ4*9y8*TRq0Wv>e54LBvao_F$UcZJwJL%X_NfP zWapobzzU7&$~cG|6Xfw%nzo2EMO3&d^0r9BXJH2zHRDv&H1>+zSwek7AMsU(3f|-5 zn?*4Vyonr~j&b6=;XlpJJPLTm9kLr3=i;26&7*;zwtEE?uiBln)x9uMNW`NfYoFA( z_Nxnsq15dRv4t}h`gafx1!oK8w&MVBb5d+?CbE@hfq-S@ew>f*S5jztlh*aNvW@u3 z1b3_Mkk$XjI3M_IAi4JnoH~UpgP`~CuI9U++@mZvF z?y2eZ)UAK~l(Jm~8-xRwgg0#YBDsa`m33sqNgF8#81_FkzS2Js;?mm2>+-&h^`l_E zP9{u#k}GR>qUarKV`-^quv;#zav0rOPbgH~?mybI<;v;v_QIrtkihd&ZDjr;zWs{4 z3{d{qMmjlWKEILB(Un2xjfb@-pCMKbAEbC-@lLI&;j zuDj5h@}zUy>Y$>?ZSWKh`&QsJ1t%zn-WdzrwBK&W z^AIqKPW_ZEo0q{S;OPBV+l~(Tz_#(ZW3u)7GSIThVIp- z>duRoM7f<7R$#A!LYxZ8kP)+-p2E6Hjr?BprbE_N~s7)YEkq zpC!DveuELlbYVed@Es9ivcu+1buexR+~)}_+zb=8YC-n{m4 z7MIf-6YBj~s_n4IlDhR+VH;@RVo{@dg zcQSvB+o5jXLJipcTya`XySBE{wW%xs2++i!lzd8fOB3$l{g>{Pd@c$ z=@M;UY_XLiVLT5t)vr3YOVl)LYg@+I1Sk~(_m|`2n&-VQpuV+q(MR1tJfG9^T0K)n zv(heY?XKooAhQLw?ZJOIC*L(L+KRrl5ytS_+r|a5All>kyqs2VbZxm<9zRhWb5r$Q zU-QzlBwJBiF`?&T`&Dn(DJ%v8cjF(uS*B>(oCGBE*wouNn(pc=VY!2_AKszHz+sDH zJ;3o=ev@k(Om&#!MUc~mNWQqERPTfOcEDdh4#Iky-?ceQLgq<1OAReEOHPQO_ zsDCVw+e8$XU#-tM1XnYSf%TNfr^qNCw5o&lojbF$LKea!;PvtGjh&LYsLX6>Oqx`@(AvJ)oD3qJ4iY4^Hlfb5KFnvanEYwX2{HIAnhtf0r&G+ zXXTGMtsb=O!NU{Bk>;~(c{S(TzC8{o@j;`CDBy8L2fu!39`pxlC=_CV9gcBF#T?K$ z^ZjTPe_AOs;))wDj(gG*iVydr?@%5n#&e1|98uqjpcJFeB9jJz{b>P5^`np4kBWoP z$KUT$wD~s5z6ixY1dM=q?^5j>4lptA^IZN;lhf<2n7&)inA2u*1|nX5YQks{;hqfO z$TtC5{{X?ei0}G3(mA%cRb|2PS|^R&+!hK^LX3FDeeaJiDJ#qFvdI3NlI20b^X@5a z>=RXYk;gJ}0Pub)Mx$i#$sqt8z@92jmWyu;%{o?4oL1}ezq(h&mFOYcVz3ZX1Cwt^r)r$~OPd|UPR>vL1_yc1} z=qWw<#Y;FkX!`4>ZFG6X)sy;`_ev#FPi*swsnH@gR}d_(>B8-YBa@7CfnL8ksOq{` zqxDS{p)A~TqvY0~pn5g+Q3jxJ5($*DpXV8@Z&Q_%b(YnldA~O@lw)fm<8N}EfvDE8 zw1xJ!q3RE*myCit8r1c>Ess`eklR~?vvepzF905Y)~h13d+h}zV!V36^YswEYRXua=257m?-%~qxGUVdcjLhMrtNxt^?haZtA1i! zh5E7qBmQdFRQECvFWq-;vn_KE$NC4KZYiGW;gkCH@qN!DmFiSc2 zCZS#FU*Hg}&E$(Uq|JZ<=C#MPWbN&Z+@#+6jL+ETHF>95+(kTkcdHsBWB8Ik(x>LV z&8p~+XcpDoW{4baT<$(FJ*uYbQQIErVp$HspB0&{E3K=?Wv4}HJb#!dqz8uwX~%r~ zR&wUZU95p`9}F@{&(n{J=T@5Ls|3EKjO@^W_KARzde}^Q>57YM*(RyQ2gH)3+ zrMtpB{{S+zE{Aglv1aK5!yqFBf)4Mvs@OVyT_;g_?civ*`obTf{ztK|K2~M9?YT6$ z*0dXvrfoh|%YL}raNlZ;q(f&kvcq#`vCfJ&61WXbr&7sdBYtV|Zl{ocQlFaATFGgB zZZ2Wi=`TCSIj(l)jMZ5scuOQkUrsg3{Ww77 zyPvg0zP9gW*<-QQ^d&%0T-q{PiEkJ z*Gux>qs7JBrMiD!GK<@JZ7zZT0IG|$=i-^P=&Ri*yPZZ`t5Dy=B|X31y1nO5{{V`5 zs?ys;n996l6Q6TltZa213e}S4^3vwn2H<2|99F-UcRNoPHP)?lEoRAHGb=n}i6o4i zn7ahTZOPge9$9iS#AhU$2vnJ__3=-~U06;gUPRAyl&1To}-6SzI`UrI%)bo`dW zctkTrKLvv4bvV)J>kyG+w}6l2kcG&n^8LfX^6mFWUj%j2r(2j^a(0ea9tiPN7y2fx zrU=dIPmQ=vJCBO`aNFotlh1Q+6@+u6VSsUmA8O8ZhgWF2WsKI7X%W5XWe7;h06c^9 zTk_oDpBE6&`hP~$BTH>dP@7Mcn3Z{>%Ae`lub1$C=1UmwtnTe^;g^M5cFU>Hay(Ny z-Q|v_aMQ;;8!!xU6aN5A`TN&M{5F#F)Q%aYfg#zsW{E(^`82Scxnz9}>50{R73Sv!kS1;Yrpl+Of=6JJ|TX{K7)++9RNnUB`Y01y3ZH>zn}DXF+vmqs^HV>?_f zSdPGXscgL-E*aC7H#Z~Ja!%F*1d&_GtUWm+hW0d)5Jp)RUQ#w_= z_KtAKqm>x&PkMz|Yv% zVX>OaQH7-!wsYD{qbWE9jyqR8o1z~6M4L{(wz|0km{^S9f4wmuO6#_+&|F6f0-MQ^ zv4VRH)^d|BC2CzQdW-N%&r(_Dvbv5nl$JuE6(1GJ=jglMn7?AXZX!n5!M>57y>%N6 ze^Anqv~5Z`p$tEVu;j14D*ErGQ(v)!*iQx8$iKx|zL!(~05yw@{{Xnx)0w+Vr=&8q zk%;XWIpo((=?!8nOG1|3{@xkwV!y?~4N^@%(Y_w3QG^-B+;*rsUXd?J zY8&?43wanLqo>g0$Th}E%#Pk)Z1v>r)3-Zl{$dgntf9?nA~i z@M>&-h~`}?(B9w5FKp%9B#8dB@(;~Rj;{&BwJz`%a17mvUc#A|QGx@t%V&5%0_P-* z)^kMsNYQmYHVdh)QWtP{ss3Dh){+AS$XkeAWJUm~9FM(YUt#b;85K{}5^C|-Int6c zLY8)JTLZuz^>9a=b3t5?az;J8)JGAUq%Hb`PZuynIJ-f*V59XN-2V8g-k<4hE`L%} z9o5>fXf^?Z9GT-a+?Pm-8~*^#TOUQ3VpLJ|$@_RUme({94a*HZZZz{d7cPKo-{Upg z8!hQ8jb3yu0L}6E$zzQC;;yUNQmW!n$uZywv~GcxzMFYib3_kC+bu1Yd_W9CwtQua@xyn zBZc~+omaT|sJ$`NlUQ7=dk3Q-Rb(7s=e}#K%3hh$>;C{!YWftfpv(r$?n3N-k?boC zs%jElUr98s&i>@*0=GYjisI%g^pymQ7zGID81e61*hooYG0%FRq_wryHJvM{`ddea z6i79@GGUYH08Jh^B>Re{u+U#pm1Btt2^4}@XX+J81iqA^@CzvnGw)q%r8?J6hTBkv z=EfJAdwsB&zyLNm9~{#OseP~eFm~N7EIOF9y(Sa{0?peV^}o}!tv^E2wTUeayw;3k zjI*4UTyu}!s*U7Y(%CQRm((z9&()uAnzz?FA5pc_VxBl;Sfl}DhDPC!zr|~fB#b;A z9cQXpUg~zYF}BGtEtGPLp60XmdQ{(>Xt9C`3f>7HKK0i>4|+QC+f$bQI6XT#N2Mf8 zcV{)I*ZLnu5J_hgAtjZ!qYegqipJ!;nsFrQ@9{{@)y?Oo{+VTW803E`rtWSHu8j6k z+S|`7ss1<_JAMB3wAanQPC`bpXx9=I+K_>?fA~cCto4nKpFOy{OQ(+XIc0|#`aA(! zy5^Ycs7)cXmI#~bDpwf$QfYlJHm_|Y_Jv)M zh-kxMlzaTvCjAPDE~jN%nPxIbPh;fMaokOFc3;&Ih8SW72ip~}{{Z%Nu3OkO#FmPQ zpR0F@uKxhjzL|#X#$u1w5e3gBs_Oa`y1z#1`gMd_z16u(Y59*QCm!T@tm(F7EY3MN zARcSC#jNQw>6cbB#Wb@N5j>It!B4QNsQ&;5@3lc0up&k6yBJmWB-38vxkQTT7*;`+ z`RDhqJEVUf$ie1wdmd$NJZ_5;_uopuG04D6EQG9zCi|O)9HxP7i_D)!6Z92#_?2 zLZ{Tn9%^Uj;E`nCY#6umXSG5;tb}Luj{}TSM4q&snzjkf2f3n$5s3*zBxi7|zL~JM z)^#{+6@52$$bGxB@M@`~w^)@FW@0c&7}|f{y;xsQr`)9QNhEBigBigUoupXmIsnt} z85p#Q>J|MZay{w!v^$&D{EnM$^F)MU)iQE@%{w<&Ng^PTOpb>j$aA<=mYw*IsA;zG z+S$Bzv9}VuYxO@qbL~@nEYgzqqcs}^B3QCcGweR*q0gjUS&gk29A_$gR`Xl@MzXlE zODXKXIMA*VUHAkZc>}*Sk{wPY2#sWd9P$^6*5ozmNUba*0mxy;0=-A;$fcuZ$MbW= zSnBcFHYd{(bYJHZaswX%t0RhMOe}0hGEdLFO{Y(5Z#dxZYT`jP?@HpN$+-kPu zw33+|a=80aWw9Dan>k^T?d?taWt0Pep!TVA&i4|ujs{LLF@gOn%u((EcJBIs&%J6Q z%cS~%=o*IkR7nGjF!I0m51O>rmeWvozSAxY?IA2<^!Bp+oN-xsVFc|UoxEg@)i+7h zuC&QzTX}?HMcUkF0;26M)nUJcLn47TIOm*GG2UJ2cTgWzMG>E&mAi9Jy~U9P$LmKj z_F?XO=9YI`=)qM5lwg88{M5XgbZ()ON9rpZO;e|AUzk9@iX|DRGB1#RYfjpvePgQJ-^C0zmlL*9Gyznv zl_HpK-7Rwq?Js4-t!(P?px&oEk?~Ezs$4|twnkEe0mpOu)}N?!n_EklxVBj#h@3Lx z^f!Vt;;HW9wA3wugVT<9M$)Pe@qTEFo`>trL#H*^@1&T_jNnTicyaSzQFO0U>HSw` z_cl@joO-eU0F?XvtK!90j|H#@?0aIieHYhv-8Y4_mDSzG{&;2ftZA%reH+x>FK2p> zEQ=h1T!6uQpL+R^tvYUP2UwODjD#)pwlFK}4x80&^}P-kiBoY<%z)<^tjFRfNLp)l zGKnAsqlmDSFX^kzmr)wpR#J0>awXieVs~Z^v zeyZt>_QgGKpH?zR2Rw1+pS-ku`k;f(S^ogqqel#zONGc@a!&%Cmg|1Vi67UBrpzE? z&Iu!qJk-<$boQHL7cGKuz#sEb;EqpM(pAd=oGIqCQRyo$O8$8!E>=V8#kBoC#;QhX zc|7s*Yul=sF|mLHjw`?;EC|PLaZWU$+c_Wp7qt=5e-1Q=e=fI--&v3i!?KFA{6(;| zgGYOoZ~fD;LI*h+?rS>Eu#GnF-v{C}X|DWJr8*;}z>u*R>5s-c#r;#BsO%Ok{J| z()Fg~V_g|r1ntQ8q!N`Zq15DZJA+Fu=X0EapXQ{C>62(o^T-s8A8S(x+UE>ZXCK&A zmYT4TEaj0SZNQdqKHqAAd2;jIdXl#|0P&1twKKh0l>V>#vB;vXdWzrjH=-AuN^YdejPH77nD9%WXbu&9>1Z$Oh~Xe)N)PbzLG@?yMTl-HA{* zBaa=cGpO5(O;slf1XlP33C>TGOVXO*wu0v*B)_P8?e?nuPf!EdN1W5QvayXff~pP%ed@bPISvf6BXNME&01cjStBGefxABDvwBFE zrbCz+$j)=0gH2m87c3i|d(%rfh=fzfBXAyRW{@&A#UYP#+NR>IMBk}Zf%m9-f^LHW zbM9&^4r0kxB}aVMo16SA@^g-HQsu(!Svp9_&5)pWKkrl*z!G`R51P=+aq2?Y zYA(ljIL9Z&aLVZ;C$2x#$O$7pPZ_E|^{ZW7!8|TKxvHaFeLWt4?V39ZG2)8IJ?Qb; zkL^jE3ZZFyXB<)vO%w-jGz@m66tw_oqsJ6bE=kY7xugfh0DpQs`&A3aG?)|-N1xiD zF~uJ|@j%9C@0`#S0h$2Gr3W7L0R5@^bG3oaM{e~W;+>4(@yBY;T@Ryw12qEOFLwrc zhFpwz2Dj-rF|)WN=lWM4`~OagSq55G^}G#GId}+nT@AEQOo@0351>T<6?Ze6EPEpGp4! z5Ynzx$NX5Aa6c7W(Dv$$bqs-|CNjb`@JD*t!5^k1^jFkLl!9uLN58Pr^;sdfj0cpJ z^#Q^7u5&IcT4yzWjh=meOA7!}HcwRqoE8VT2AQ_EZkx5fvb)ot)|coL=YV~yqv=SK zNbjlxHRYybiex-`XP#Y8%@0K@rLO1ij%Qi?^h z)T1{0%H?->C-<#~;hnwBhNE|BJIK)if`@=PI3kT>rGF!*!TDA*LV-v>_h;I#Gy^59 z63A`dImu9khD#{%Q!QD-&J_Jg(~EL1ga>r22s!Rnvl@Nfy}wOrdM(T+^AM<(7CaC^ z=DMBy2$u$1CH1BedXJIgx&6gtC(|vp8`-rrMFC-A!yE&OnB};1#Prf%8;DJ;Z5*aS z^?~kdq75aqjbh_nyJR!Q07UZKcdG7%hUQy4y;#Q!dL>pQ1Cn#?QgvNHWW2b%zQdq^ z{{Rm@eBf2LcTrgGrPWsLrIpB5nX#=Kj^17-lOGIVCs^TZrm9HKmx=&?-dMr3)m);6~Wyxc6D=9rSj+TFd)Z4evn+(|>^s&h-9&2)Out%4hd)aN z{{VWGdj;HTLjcOacO2K5HT#*}5tUXoIM|~AW~5xKy2bQ1(EgRjsQK(GUX3H!rH-Eq zPVXbgP731zN5w?dFVbuxhS#6Dg0ERt3J(8`(;Cq*K z+|jlKAo#)WS+~?#9OFT<)UM=#bka+^1vx#B-`cf$qw6rSi&3$inmz>3l1Cm##cDd6 zOTXxiHao2=O||@^DUL~1ezW5(_pW9?5p}CM*rcr3&+F$EjlrzbI*V56S(4`7?ZG4+ zs(AkZ^M!XFlKe`r>PtA*cSvqX3f$msuaf51Z!YG0i-}1x^3{EzYogNRNhF(skap*S zD;eRAUA2y0pIcmM@LaCnLKX}%+lEV4PD%Bx0{x+e)uYo%`h78wK505{tnGS(PKlM) z*$@mi?m_$3gkNf~vZKch?W+zX99KCmJXZMaBTCnds1oOC$-s~v2>JP`^G9gYAe4k` z;Z?gg+OS&Pv`cum`enmKC~&gETMA8Re?11FrhZ=bbdF^_Hh)R`)^hm$!cui6kE>e7 z*ZM8X`iOTl2eS`~haR|ah# z)R^M4<>UU#uct84e-w0Umll_5Lgx}JhZw8PMfCkoPM$qIX2^`;w|Mxfey#iMoCEf&*)+-Yof&P~492Uq79dV*q_XnQE>&fys!q12QN50KZH*u&X$Qr1 zsGc*S+t}P)K|GR2wVB^J_U5_vkEdPrJX1inD`_M%6edxOjQ;?&Tk8E4)K)rD$76AA zwmgQA_r-L+DJng!r%u`5eot17t!DKwCRsABzV%~u_-Cf-7lJ)9q zGf+0SQrogKR~zb+PKW*q{UdP#M6un# z$7m9aDt)S-@doz7TV!O7&C}sRrgnw%#bs>&01@Vz&2-7G4a%U)$nA$G<2{94$@qt& z+v$KLEp>L>0;`?B6`76h_J2-$t!cNau+OJ@*>}MJ5D@+AA9Zzm4yEbd&v7FUq&Fme ztFvA8&D5|hqG&MsYujPupOIXvttHfT9a&oD);&CD=|%DKYguvJX0!KeC`MMZWC}~} z@&!uK`omGv-D0<&Y6F19zM)<(w42XN190=J@JfF*Q{HKpP)_6W?;0-DO{l4RY2HZ?^R@HGzCEgv*H@m-LoK5{ zyODvjzs-A!{{9KK2_Fud3l8N^dP%Bowpve9&u4I~i1BP-!K0AzT`KSKXGyxUi7za~ z?XvHhqIX2)Sey(R&9w4;VbNcR_B}@m zz{Qs34%QNVB##Y>*}6wM6m?fq+#W@IjnchcG&j)4aVjV+x72^-9(z~PT@lpQ8lINo z8AdJJYdbjh&2Y~NuPj}0yEUl^hM=~#=!tAF3W4ezSXExY z53r$>Fe<UFSA|2M76~@DW8BdPMy#?nB; z^#$$CeHndWJdU$l$%$1$^Vx=Zr~d#Y9Ef9h$E0~Np4qMc057`FgXH--PX7Q;nWMgi zp_E{%IQ@TWk#VQVr^+T+%=W3lb>L>ckJh>>!&aIp-3v({(g{DMPqjH|(ONtjbJ$5| z9Faal0y~P=^5Y_S*DmOOn$xub9rdIVH|3ZY-f}}8LH@P7)t^zY(gf1W9t@ahB^eAe z+u+r|OmvN>OC`)UY{uSZ3?puK)t&B@Yp8&?QTnltLLS-otlyeivld^bZrVxxFUhT} zc{>$H3-MYhw6k{*S=?_{EUX72pN7q0U;-dj0|X9gL+{)4V>$EfT=LI%aj8Ds)A0`9 zLc3_Jb*s@6Mum|G%MfZGL3Cb)CWUix942|~rYwxd^)50$wR9arr1YIu^xj`ur1I_B z2_1zaCq+VamzgSy$w}<|UAmRLE{?!5x!hI@B+lRi0PXkEKfSeJYc=oMEkEgAq z(@PYFNaO$xcuaQyedz8i%E&z`l@e;#_5z)x+tntF%|-7MfHJkRJ!$yGb(XiCq(let+Y)^r9L*T$WMF*Pt!CMD$C4RDW<~m4qkQE2R3_D+8ar7CW@&-SNM8VZ@#d_n z7F}IurQ2IY`3b=|8PX&@7y;qm(FR;APWhMf4k)2D()Q2v`K93IA`=<{Cd+Meky$+$zlA(DQ)Q=Fq`s-1- zy0ePZA^{*@9DVUta%q8hF52D()iefMbx{h>8WmB4%O7)!=$dcg7fx!?&i0y&&{`y3 zr>P?^JZJuE6Vp12%Xc-tx2uoIGCQhF#G^4BeX3T8)x9-qqukiv+DC6d}e;ilZ+AVcJP*E+b0YiG)q+mnKOXYEt% zZZ&->1-^&WRh#%_$7cAhn@zPkwv(mknyXujmAJQ!aA$!^l6}WMJ?g&GP}E|XCA7Yh zD3S7mc>(e651Pu)s9w(O&m(Um8UFxkdeZv%AxOyDdx8N!YRr?`Z|U3hUZ&}eroYnk zy>m=9HuA)xOQ;kp7C!#~6qY}R{{V;jzgk@B7P_&L7KbquBWkug7Cp^#y(^}*ex$RO zWwyC>vcZ<%WrS-_YuzKM^n1Z}nu=mS3G%4ECS;IV30Yh{-M={&9$Pib+|x8tWH7uR%Mv(!9DyB6}iKm?}WJD z^FSnDtbZqb({tq)I4dtI+56X&wv-U-xle95sVQQP8JhY4MmQ&vT_E!uazh8MPT+Vv zAN8qnUfjy@UCS=^3M0a(7z4FOo>`SYEN)rhRr)|YVxO|H_4Lb`zc8v|Di#ynf$|Mz zq%^Z8_f=f0^Y+a=rR{DNXLkv~S3`m-F-AsFy9@_&=B+f_cGT^pf<*wS%C>n1tjBB9 zU1!ua}NZ}8f7(5>vlZZXXg=k9w~NWV}ca7O6mU8H;bR}B0o>X`K% zIy)=L0h-*1<3337UAo$JyM&~SH=ynB@+xJ{taZinm*U?-%c9=?auUYblpMDNbK1Fd z@PuICV?W-$to%;t_UauWAl?(}0F(TpzGc_+m(sNv?Bxe^ZI9dBRmIMr&2KHTq>6JC z<0GEq*wj_ScMFhlz^Cq|eUYSq{{RmlDe+7qZ+tJf&1smm(V;WyP%G{kZKeAVD_0D& zTlA){WQ*!Rvus%x@8{yG_4w`VF7(JPS%ZjUGM4^U_N#Z){{X@4hMOE-x8_?iDCc{4 z!2bYxy6vdKv}M%4(x4v1*M;GZnI|b+|3vN0CEt1oOl(UT9t~{5DVE(!y3xlk$V6Sy+^Zx8L!qmi5e)00o)Ai9`$q7 zh}Rm7(n}Ym61LsHa}^D%(G)2yLj}<^#<#fmJfO@7VVO zmB42^cwFZm1$YAl0&|hyw=|KLvGO<{6?dT6{$>lNQleO}S3QXHRJ${ilHA~NR@yYF zZ7g#n%B{QVLOTQIgi4O<{5oW~NC6`%;i?tH?IH!w)7$}5b!iBMlx}1>VS&w6tcTOU zZ1bMosUu4*3~rid0FtTL_^XY9&Pc-JA9|_KaK5Q!CwCdeS<4}Wj2smp(vK12*2p*m zzB`JP@hV5^?#Vv%&8$LsByPa>KGgN|qD8PA@GxsLj$*@Ff7B&Es~;5}{y4%h*^YbE zs~G(VcbxrawMNt!ORx^xvU#joz^Y{sNc<1e=bTo1RVs)^TXF6@R+8=1NW=lfWi@$l zNy7{d=Dhh;jDDuuq!={@q~9IWGiSM|waMJL??nQPP#F|aMFEUZe|kGm4mt0N0)h9V zu%e&=!T$i7DDg!C_@ECoXBqZ1oO@M@2LSw1icDj%qqPur^UVb2l#e;hAfQTKG2V{d z=A!;4{{WQg>tti}%%w4!`Vj&}butyoHyJ&vyK*n{Fg}--753iPaT!f z`lKW&Zyyz%>pdkc_4{}tbTUkvjt}!>)s^ms(d;-{|+UEyO;!nZmK|IO77X^xYCm+xv}L%1qcwc1sp;!H*(?kPK%B+O;r3oiA%Ul-V4ux>WI>aZ@WL{{SAyhv-~d+6TFHTX`EF{t5T1 zbx1C(1eVgP$c_LiY7`7^nhQzXNe#mKkvd?5@M;%QZRu-NO9@K6>RIChId6*Rd07_v zE!45r8(^D5cn>~$C>Xz_+TK38-kdlqTkx#v8^t;v6bZZ$WkJGr7c;k)LNB;n& zWS?JqnQ)$@d*ln-J*s1QyDU<4JXbbaW7~{|R$>YAx$RV%r1lp#SJFGn0uoh0&znbRxTeMhCKbNTl6v7 zrNnw>sAPbiIYaGKSJ%?rxsmV~oc;c4^IQ=aA==SO+X(tQ{{Hov5Xv{PQrvdMWj&vo z(oq4PM+#dT6my!l=`Nhq^_Z_`wYrYd2vajlGi_EL+4rj54(Tm*Xr-PXRy7A9xdyeD zn&y{(pc^YRmeC|~&l>Wi`}>NQVlB3zVbcyGun^o`1qMrp`jDRF0adsCVXEFSDJYB8 zY=DOxj@2f^p!GY|-EA4U4T1``IR5~efz-Vns%TS11o0Cj!*a$u{`D_huHLmCv)687 z{H@*Wj~d_wX2_}iGMzQ3TFw42?+oY*ERmnp@sBl?lE!ol&k^>)@0#%T^TqxPY$P8fgMImK9M8qAt}z{bUa{YrZgS^nCU^@YURFH`CA-03qW?hJ^%$L;S`@z~mW z9-7F^qn~0Av92f6y;S;5$(q`Bjyao^Udnx|w)Fk|hP!F$-m=3a$@I>Lf_;r={bKP> z>DG^I;zbK81NyVu?ON+ST+a!HKdHdrvGG|*bS+CuRs#~KKSZi>2&N?0#lH5D8V8R7 zn07Usv6-y8Uw&3=TZtZ7rU@rI80A6usgHR$KweVlPYSh+x$CuvAiiQ1!Pz4D`_zpq zsjOrrx3fl0N5xMI?PXhPM8)dQ8~_&jfRBP|41G&yac3APCooPCz`4r7|@>@cFly~DF0<*nzHF0bGEu_OawuWi0w(VWx zAwGWfm$=m|FO}X{-R5kzU*GLjcJfLuUFO(i@BtVVI&o_pvAf+y<(HBNU}-H)shC5k z1~SCBLxHt%#X`HVhB;AUk$@x5^40al+&__cqd=;7`bREnJ9QMnzd-~HXLf593oe*p zm(y7bjAVRQrIvU=^pur679+J>^lwn<+9l+&YSurWghs()J%i(dY8CFU`OCR(t?iN+ z+mL_~t5b#72qrlkla<}_ab7|+Ym=UR{M3!_c*80bk19O-npU@+r3k24_R5Urfwbm9 zxMbs;(~i4F;0oupJr196t^WW;r5(#t^IAzX8?vAw$A1+BD8p_6GQ@eS9XnLMvvO^& zC&?orNy8s+nj_O^wYBx6Tte-D+}i@-$Id%bI_Fqg>n01`8&@zaAO=TV8soha*V@NV z!*gi`)Kff=pIE3`Y5CmY0mWjijqSdBO8s*2}6rI~Y<8e$Lj?RvEG}k-`4}F%_@r z5hBZQ)_R4t#4H9QSu?c!RkO!-FKJR;No%Od3zi_S22ayYCcN!wwGz%}kM)+p$35!m zXzi|?+Fim7gmQfISgm)XUru@d04I1MS-zAqb|>1dHeM=OXDiSBPkE;9H#SY_4&iwi z_Z4Yv)OJl0U80tR_jMV^?O9HqwCa620yQgDyt6++Amx;M{EF3B+G&Xpiq%9#ymrC) ztYtA-wf6Hcj!0x14=3bPwVi|W+EW=XWqDAX4Wo>F)upBL%`=K=hk4@-6Xz{a;G5}aBFLzb*;2=3AF}vc$X0(4#(!CYkdZ= z-AfUaDUM93&n&*x3tj1V(xA6xgLrY5d~kxS-07HSs5+xk>K14smDVOaAwN;7+YJhP zsJ5k~(#}s0ju+&bwnJs2TCL5jPknPC$MF{)o;-?~Yt`DV{{XEMKrJk$U}X_SmU27~ zigEt{Dz1TbOG}%0;GLdEomFBT$*T{=YZ$u{dW$aWVensl~uT!5x1V*s=KHxEiN_rJu8`KQrUMOr9Sk|p`}G>X>PWW7I!&m zn>ojUif-$UhEr9QFC-6;yLkGzII7bqP<8>kux!^>&)moFAVR<`pj|qz3Zb4Do|j^JuYY`25}E z1+(=>6J@@~+N&s*s7_cuJ7$QrzO@5y4pCRv(}PH?Y%~4mOOfZk?;4c z>Q8IS0S=#Xmodpc7Bbk&f*1PLo~3JTG&Y~%@!U&vawko>jd|l~9x?A%mc3D@rQDz6 zP)U2HkU+I9v7Ga@f$@q>5_4y(z?KlrX{G8eB9y)f5i$P&H;S8(kxQfA+UU^V+G=`H zo>|ioKO^$(p8o(MuC%>L8&0>k{{RiOySI(-(!`-TAnscVgWnfO&(SeA2nxwXt z+89>WYe`~qd2l><;lUIjR(zNJi zic|(vMkrMLj}TlCbv|nib*4>gBPoT$MZ;urzqNg{spz^F zQ(VPycOL7DU_B>SDo+*j=i>dL({+90PJ3Bcs>y8xV3=BqXGV%-@RCL_4VgW>WM9>g5qKrY~huG?hnO9 zhsw2*>_I3vNQx~A^>Y5hx^2<+U9g@|ol^!p=>yG;NTW!2__UT7|fUn67){ z{{S_AX{3wYTH{bfH#4-XoG3m4_NZATWzO6mYVm@(=N?8ydgby#;88Zb=}mG?A6AZd z_{V-L>TZzNt#z9SFJN(&P#+)4-bH+X2~tkqj{J|B>tBN1Q!S;$nskg=B_QKG)_b~i z#=GvXVz+t2Yk2hM(_Q$LYPS0N%@6%IjW8FC;8d+9HL%mIdV+E4$d9xuA09DOdcL79p=5^R z1>uuoPKgINw(dAY2Z9_;u%;)|p&iEOfR`>iu{%ftc^&H?1)f<^R9z}bV z6(=Jj8;|WxqVeC3)u_qqJBPKMW?TkR21w3pq3Jzu6nb-{Y!X1c#^20GkzDyL+3gy9 z3?l^#=btq*PPRdCfVd0*U_J*Xoi!@=t96KF(`|J1wkdR2%`>pUVtZ%ytlpbq_t)`2 zxjv!B2Z351q|+qS^@V#Gn&BozV#P7EO{!o0@OGdYpY1j8KkXSC>c);>% z%jq^ro-JFYEiT6G;s6-e$Chn^2+n(RUr_!D zYX_fyoz#67a18RfN3;B zve`zGrW-k2Rd-d)wgxc}3R*x(9qZqJ%Gkt8)%0ssvb?rPt_ALtlBb~|437PQA3pWJj#&!T{uJwL zrCVGsqbu#33lL|)Qas|Wy0=ui*3aei=ZUPU7@bd}(bbHw2!_#Wb!)}S|##$-^+S8p7H z$9mx=?=3K|Xgad$dp8O&zOW#24tr*)^_yE=4^T)U-i#D?9_O0Z^mUYWm)CPMt2~3! zQQHGO>OWp-*5_2yT5Mzxsu%f*K5Nl4)?O@WnbOV0rR1^4H>T5GBJB%|t};n9@8XNx z>9&lD%C9PJB{&$*YSC-jWOh2Ww5&mm*+=8G?SkLG~c*y zhby=-t)H*I45JE1zr8=80VLAhUPjWWk0dXjimSD;xYVvz(%nq5F~X?sYFpi2*<(#) zSmceqw(Ne#?OWfpPloeIxrXXCjKbwWOd7GX(=;ouQXMM(NG_yMijn|P_~-4-W1iWS zWiKLqCvJR`QZ$_xQMr~Uw2AX00I%{sYEn17F)j9=doG-pFk2NMw2uD(Pq5ohM|*jv zb*;{!tIcnyt)yTT+z2XtzHv@lbgJmu6t|kKxR&A0c9!f1kZYZ4UYz&Ebk>=(`hh>% zvtsShTKoKGsUg;4(NYa6SpfB2GQ4-Kk6P$@2T^HaThxNgKn}}`bsJeg?U7kdpX!v- z`ciJ5)K(~`ff(@DUp<6{Hhlbh$Gmme*a=B$9`0eusk7cM|+#7^cCMDWSE<)#w0gFjM|Cvq300e5`joeia4Qkjnri6!_1&B) zvN+^8R~*z0CsUhDpVx)iTaZeecloZe^R{JuIivm{$73SdO>wi-ZN8g*Sm%nqzS6C= zc|AY}q~mb|`K#vHwEb{J4ezM(Lo#}yknRXS?jy0ThtQvi_nKX(x4!-=zT*h(LhW`CNNG#WJa5-X^={h+Q_o29AlAPhRdiT*YwX)&Q>7*046z8RPx6Z zrQ(qoKZYj+R`Is>S*I_8&sf#2VzIh7Nyt*{FjF;Me3SIl*OpIkvxwND733e@x+M1Z z^6D^K+esG2ZKg)Y1KP4$t)z1G18EXlHusZi$gQ2^@Hnk;+9&kojCzMdT0m!RPrPA)Y8RpT9@FLc&r<^r@kCEY@pTE}^>$Apx2<;Dhl{ zjByx!X(o1N87il_`Kuc(0J<_x8C;L07x|CPS;wO2_ILK?Q7pFnda)M6XYW@^&cKi$ z65T;6?+5qxG{fBPF0iRc$^AUnMV{xTEj>t~wwCC~yonDZ<26gDTP2Jsa5UK9f^vN= z{O9+khG1LV{V5t9#AgfN6|3l;pV#$>?%PQxb+84~9FR^bze|kjSJCdgg2jS`-g^O7 zg)h2tX_rXVBb#sm-YE#*`&Mk@f;XDa;j7!}*R~eVCC;m5vS}U+1axtd56G+jkNhF& z_Hn6eDs9ywUsBR%+C$@#ek+ez^;WqJ#J3H1Gf4jcuXE#dPStwzQP%Z4d2a6{b_x~A zJ8}n#=gn$dUDo^Xr=zt?Xho#23^2CxBW#EF?^K_O+D4nN>2`X3j0tBInBKjBW$og* z)yLuvr)L?4*5#HkbF|~Pii3C5*H`gob&+=;szq-e#w&7_Z_}jf{hX+k;pOdn?70YbgrNu(eORvU_2%0?0`2 zMtH1hthO}Qmv;Az_qq+7meC%46CUL){{R(Vr)#>Nhj`69OKUJYwt!b@`+HPgpXyz6 zrrm|B7?5F#I)+yMwI5g45RJ$B*U#oDw8oC& z-rgIlXt;k&k|g=}2D&dwb!LxsX){H2Exi8#uky1WsC|!-S-5+RO6f668y1gnay)!f za;(v?k`WU|yp-+zE1&4Pw9|DMYkQM44tbCKt&jArP1VGgl1h=&f;~S!6!K3SfI|bHBehlO8kABG%3QCfaJ|EJYM*T!kr@@h2v5_B=akaKnkqOF zLaspH>@!a+fujyVUNS-PS<$!?ifBth<5Z-kKh$qy!O=b4bO2%7A_< z4^&bH2mUL~(~L5^!p8hT)Y#Qo{N zNfC^s{N}n(lE!q%P0)7t*D=pC7nNIa_NyztnbWlkcClM!5rKmHM|zbd_T5G$jrJ?I zJZEsJlT2l2h9!|)jPAxWTe)OvIQF&pdTcGGHfZxR6U*{(@$FeSwS8|ziC0dxMMzH5 zJ4KQYw>9*PcIIdb+#=+z(^UGeOk2%qBr(8-HXDe>Ijzr@UMoH>A9*ITt5|y1+OUsc z#=tiJ06;s|KHp8h)9)7Po>?Q1{{YfbcQCG#sOZNDP+i)q+BJP>`W5pky9 z-|DLgoPJ&Yq_}8`tJd46taV)`9s0@{tk7jdV+=?83b@*EQ`Q=twY9`o76up)`f&X| zK5L5g#r3Vs?2yOxw42-Mb|6kS^Y6`A-7}nE^<%BWHndP6Hbsz0g~ZcA(($* z?^()lS2}o|2s;@I=Wp7jTEV<-WeVVD>hcGglY1;TGk`7K3XiG1huW(gx=2A{!>}M@ zBC^a#xS#9VK;ZVrik)dV5$|N=c+Z-pWO)9f#5*6-M>Tt*X_pd3B+rG7M(wTLs{a5& z;=;xqN?2u>gupCNFVm6l?^ZXL+I@jPkVxcq+8#o=C;tG!@G7<)ZuZQ2CNw0EQYe&X zJX8-#{{T{oLtwEYvj>(h)3t}TYHwXEYqZUGQq=7ozc?fOqk4ssH3TD_wGAxS0O9n%4v`x1K^=gBJ> zTILNlCo6^phB*6sRlb_n@>pHVC#AMQ{{T%tm+ec2%x;}0s3Fnqrjpi8M1@7gtd9Qx zsfS=qW#6oz)wSz2zq^j>^2@jQk@7!(YQrSTp_1XQrEp0|kJKyGg`NGa+s-ZFju~*I zOm^TC@8YceuG{{j>kDXLh{d3{FQv^JI#<^72dj6X{mvAM;oUY!d1g=MqxUD6` zdM&NtxYlEMU{Fd&9Ho|TeXaMZzNou8yq5PcOC%OCVmJdyxJ14|9qTnV&t7#Vt*I8C z?M%0qvJdAe~*7!zqLz(UMXf~D$>aO4p0U7OG&#bh~D@4}xt=4eg zTIvw2%29U79G-Tt{{Twm8jh6^xMVSYUhWs$Dv#tfZ2Hcpcca?|^@~}zs~a)k1^)mk ztjT>WvrgHlYWjAYr`z4OqjQ-T2t6hZ$A;7Gq=}y6;+x!CcvV_x zTI8KLx`IL_)6|psg*&}JhW4zL{f){w-^zjX735a?@T*<5w7I#^wHvAJW4%)dDmO0k zz$I%n)fznAKdW5nqEjkIAqvC1gWL+Tvtu}I%1N*%)TDhToEF}t&!ZZ;OTZhO13&Rj z{Yc?oh7GtDJmcD=>oKLwF<+-~gFV2-46KJM{i|ACFcU=S zAy!5>x4WOp?p7$<1tnNujZ1--M{rRHsAeOb}kiNCP7m^SBL8yx+s zRjS0dHmv{(LG``^9l}6C7~}0+3-F7tepq@sJE%1aSXHwgTL63btYmO8kgAT|$C~;F@i$0=PrbUoSlOhyAuzrNy>gMF z%9oJK8WHNY(#$vn_^XSZh}L>A)t*9`{vrlk44i?;t4$9_xzSQz8#~$Mp@8S*pwvDI71%oLPhRZ3=J~3OGlW8NAT!k_-V+_o4 zDYXC%q@TF#YDCd12$%I2C4@JRy;7S@$1Ik(JMSa?&ZTF5^g)lGt7k zikSuNtUW&^xrE7aBk=zK20P|Rm zq4f04ece?=N;gIFeb4Vx`VXtkgg21fOSjel2R_5aQS~*_YFfLspw0+fcgdx@je0$C z)N^Wm|n!y_Ms))Xbjh323#r=!5|LR zS)$ras9weZVhe!T{{Wh+rS^$q{vD;wc`B17#AG6$0NvLzqXVuM$ zv3Qa^40Z;d)?C|ZueALNKVWIN)JS6vt84-sbIX49SAV2B%u29j1Odm2ouxz}v5B+0 za)Xb0e&vXbfFulOCZ+3>TU3|@y}7~U{C{e0Fm0m^8wNSS6y@E@yl1%E`bWRbLz3Vv zi%Gi#n#HK`soZWmMstq&^HeiF^OAe{_Ng*lGq(N20l@^+8Cdg-U<$>%N!i^xF(u*< z!3rJRp97l1^>yoBYIiphG5#YSJl3Z5{TpVHT<&ZrKEkkCtflT4WO2oLa-8kx!=-jP z;*?^8M<$|<*`v35I|E0)XcCw9pc*i01Llsxj?{gsgT^Qs!88vv4Edl3e&UJ&$Bh2e zRzLEcZ6=x1?|myjL;;mxOJ~QuT_;G5Tl$`w2xV_h@whVFa0ZX>(6-);x}Ci~YmNI<#tq+p88 zf=zV4!)-@T(7JN|_TUaB+E{W&wNID*R|HP7o()r1yH&Oe98v&Rw&Fb3j)~Xd&~=Bh zYjgQ|+;4C>Mm@3dQ@Y6^l-pg~Du3><<=3(KH44{FhD+HXx&9lF7&tf}TV=axHo zkbun~+I}m=l)G+gOa`f`rIq!_DIx|x!;uFE?e9^v{-XZ?9@OpOyhRd1+%tK{YSY?S zCZ{#!l<^}ZL`egl>Fz5r(|tGU^_$G>6hy>&Kz%3Xy%Q;>V_nrYkVU7-b8uLdLc<;n za_j7Bnl__y#3V@v89l)5TaU!+hlb+D(kEf-W+wI-u2ZstK0X)Ow+j%a;8|aqq=VNqHAK2S%o`Z*1C` zxr0x*mmipB&L8L7HLU5Lp3&?tF52q4Ns|;5lN`;$nW9PSO z@uu31O4(q#xp-xQRYfo+8PT}OKGd^I8a|}y+kH`OH7y;}{7TR%$T?Yj;QZEqs`L)7 z)AVH4q_~FS6>%@{SeAu>&P{3bod>8ocJka?N9x!MozaF~UynbvT-@riwcF{_X*jjJ za~X<9@16-Cy>h$P4NucKtJ)`C^z=6pYG~J2kcgQhJhXsuxoaQzYBk#~p*<}#C9=r) zDLUaxCnKMF(DgS%>wOCLx3+$r&7w*+`g|41&eDCpYgeL4pmm+1+Fb)4q{Y}f3_K10 z0O5J~HJ$OeNz0S|EcAu-wz+Y8GD9?yHs_8NI0NL@HkQ^ICuD%CWNzC254C+6)_n=p zZW+JCnEz|Q|YY91MiMrN}l4bdT*rcwTNZE z)o$9xC}YVu{{X1o0{qm~of5krN_6JA(;8-_ck3<8X53F`AvyI1eY@io6Hn_Ce=LuA z7>s#PKA>rih|?v|`lms-n_alOf@@}1w{l0K8--F2y*>D=(ANDuANa|GD& z9&0#ftE`)|gdIZS6qnY5a~Lh3tFNmOnb_7%gf^nJ5`4sjxroaYtNwX2vzda~Ig?&kx|X0G)eCL@=z!S_5?CK5vP z$)2LKywmi}IwqB8wPfEO#vel-;QZ8GK1Y{MxMWz`MEy!mGQSlqudFWM*f6WyWaJ8p ztpd0(j1PKA&h~~h<%&|baR;a47^@G7?Y zJ6xG&z$xKQDd`cQ*6!oG5-2;k7$^07SDkBBxq0@<7o^N`Kowan%qVgs`j?Pti7v$7 zRHVKR0nSZi{VrlRS8$mv<4~!M&zu^ScyG0X1-soDBSi{}{HgFNmOHYsvPA5;;E#Wk zQtYlJv<%`vpyL_yS=zLEcSn-M&vJ?e10Nr?U)yxPnZM|{Ngo_561l9L7tHaet0R-& z^!GJsXLWaW;9KePPb*_?4>e_#+Yc-E6|4O!jr2S4B!9}!ggl%a z0qsmhaWI%gD+vDpl!hJt^{2Gb?=IAOT7=G}uvEU>e4mPX{{W_=g}pn5TcuzKWAwIt z!SX8}7t(2+Gh46F&@xCt!4350rC2OMy;oTjCm@lK58kZ5!&cS@LuvVhBf6Zr{NlXW zTk1BD-CK)!%u<4VH;kNsJD+M!1ue#+_cFR$?ihkY^yUBO~Ir zIt<-2ZKnG7qIj;psCOdgW_vIdue0hs5?G?S)il$4rx=nFq>dPHSx0=H^^5(in{xOX z{^HzvP{`yB$8gC5?M_qhHY9H@^L77WPd9!iqDq2G^x{i1nN3H%+@-Mw3FI!@qz;} z_|JNU(>K=|MV-ymEg-(Nmn8z_Sxv?G!n}d0vYGU7U-eD){KNzW({-oi& zYo(aY#J5p2@STK+WmA?@jPp{o8`)=xt!H9gM-C6_u3rWH^OtLxTGHtx8?Zi?2eGZE zM_pbEwu;lyhaPj@ zy_LWuAUXG|z{#-GS5}s5IVAL7jqWl5{{V_l@gAT_P6NL%gFW!&HEI$285fsVZ(!wBwOaisO4| zQAHI2NHdd@_NAhM3Bb)Q6i|68PxEn_@+3)1qMYM{PE!$D#~iI9u_xO+3bR3{v;yQx zu%W>HN5QE|K>&gK(vhD1y{Rw`N4K>%v?~*Xx4n5~{vJ0G^IoxzbHJwKxQ5^jf&~IroCsSpfbvviNIX* zRhpip*P3vW-d2g3zy*7J*L*Ha*%=!PdCiHNP|?b@x&_;}>EryOvt4!6^UZH+u_3mA zWf(?2tbF`eW7C9h0Ey44O8rlsKGluu%>o;Vk{BV3F;j-f0ZH;}rWx+(n>8GG{vBR* zO{vy&p|T5Hl4Ln7eky_QBAVJ;O;7&-Z+C8RH?J%`zAL!J)am$h)Ap7VnC==w<$jZz z;XPrj!*|p-dW4Y(Aj+urtGh1Jt8}iI);0Z0eXYBdX##);aa!F=@Phc?6>}7Z zIK%B<2iVm$x8ihKBL>lgqDa^f&HTcy$Ks}?tq5X<28Ma=H#4chDu0yKmma%kOg_ES zQdw%!t1C(AE@a#Mr`o;24cnqhit#BMOMH7)`%~34>m5erH8|Q!g2N#ff^qLz9eY-? zxJ+r&vN6fn1~A|6R>?WonWx*^LmiCwLSg8uuJ}|E81_8(tsRDi`FjgJV&3u zx!MG*JE;AuncVe4OQM@G3H-vzxJ$V4?^JW^T8-tjcCuVd@Wq{ryM@g+^s&+P{<7(9 zPUhzpCdqIXHHe&U@_6x7@bx9UO&dn-DI6(a4nJzcMy^Vp**t=CQ*5o~X55E3J&*f) zRGWz1Tip*qo$e*x$A#nn0D`B-sY`2Y6^g3kh9hyReJ&`ck|?Dp6d^3i;E+d(ztgmt zMZLArv=UlPySdDZ&N2tZYFb1)cQ+2MC5A=^kba&%^ih zj+AaRhzXkJNpb20`a+IID^I0p_cu`GmIx$~eN!_q+7~z^j~J_s-(*%rU<&>~ppq#N zpGfi}Iqs+0pgx-#B+(-@uN#=z)A{~uUw5IUgb`fZY8KM0;HAaDlK`eam3xCtUUZc6 zJ+6}pi~|&t+sGRd%D4xRJPe*|JCRuHO(r>k(_ou@m>C91Pb z5zB(4@NwW&%^5UZM@WNGy^1?~yO(IBjSj_-6M>KNnzga$&1&1NpFoFGYiD~+(A_Iw zG-PE_kDqFm@iw|=Ix|s=rM27JuSfGJU?&myKK0mi+beFZ=&MNVg#Q4V$(AQ#eue{; zKOYs1vFR-t1qsO*?^}PxT|)l=s?N)5lO9G|55T4vV%OGyNZ0cBu9u+N&jTWdLV$kkDwkE@K3 zekzvhO`6yl)g7THYRQf>?OIK=bL(*H%GWcW%G?CNXtJtKIpVE4YpNx)>HFx+kx3k- zQds2!KmHQdQ%ThApoUvp#WKSx@BsZRI}!0$JvpQ#_IGp3Xz~D|V;~*5H11og*x*#_FmElSiOyw= zWn1IOtNk)_O?Qh_g`#3MN(wOh*Va8TslDZ_G0rwHiCg64SIPQINZO^hqM>9)0Az8; zzs-Fk()#3g^F*(=)DbAcp5FDGX60^Gw^V30x}va~>SV?}#dB>}OpZMs_S8xtc%?E1 ze&7zmyAC5aM4zZI!5=k=>a8~2)_A0h$Q8XpfOp5eS$NT7l5`HE1-DelF3De689`&g zZy(mGdcxmsrv9XvjfrqG`hF`{)>;jW8Z=tWFf$Kq{1C#N(Q))+CX&Tca;?AsO$EYUe;cg@o|3F?PZIsz#RD zd?L!q8@%q3vACZ3KJ;}2#!D#ec98QhzyrNo!D|(*oNX*uXm1i`>r_Wy%GIjW6v3;XC_1Gs~n#EQ+zI!GOHL#$DHP% z-AESPM1cE~RyvsUB2)*S+*J+irI>E#7{|3^-kAL&K5_MJG|a42p6mAUPP2j=BO^Wq zdbWjSlM=rR^`Ee=d33Q&)K_I73O0?AVewfB z4p`TpZus=^pERF(T0zch3R(whC>Q|M0m<*)fz2F@nm+Ugf4v#SAN4mrm(cJV-W6uBR2GmdF9{b&xr&<+O&zj`spYC8`!2bwYc zXy+e#1}F}3-ht<}FVnXmpS2zQRnYW@7|H$W-$uJ@TgYWnL5;(M`_(w_&u^NSX5mgp zzk1`J9Ho7OpkABJF2?Z==;e$9kN2%~VJElbZeIi6?_9I+XIdJUM+edgMAs}4Q7#dRk}-kX6<=qi%W|)`4hB0`#^N|GboaPWjLN4W zhZSF>G%E;~YQTqrzDcPwx-{n9Nz!seuXhR`OdJq>>XyRheJ<(juF-@uU^+L9c@@;U zur1A^CAKz+M&PEiy;Gyw>Nf1&p-n;r3ZV9peZKY69Jd+iq`K1V?>b`A`qeU!ry!i? z=BYIcIp?*5P=hf@pbTTUt6rKnT1P_qjEg9iQxQl0QSnl=iy5yp_mDQ|P>_SoW?gS< zV#A~1{I$HSs8q~AIrs8wQFADeCJ4kwA9|qa_w-}JgPq=dRO{&&Wt4NCRChmWUpa)oDcV&D0%13tXc-ODJUrwgKX)KO8Mj_*7D;{HnZ8>SP;@m zKDIr8J?oeLFkVS-s3ncME3DDrhVs?Z8|8Rr&K!Et6=q`h7+`*kbGZ9e)|>tjH&5!{ z;x{vYh$E@BUB_YfCaD_T*5#m;N)D?yU!tYB7BPe&c zISg~$eeqFZC*j{mPt{OP=JAoO)-SjI+nxfd<^?zrm-W z>rFR6wLX=!c2HezDGXeZk0kq=g`wZ9_tIEhPM7d%yKbi0mV0$yAJVbRT_ftS+VvFi z+32y{yQ=PRyoGG?bM0LkAH(RhttZg8)KcpHNJr*(J_?^3eX7RNUYF_l1)NrXo7}=? zg_MlQK57nu(-zv~+J)4SG3e;t$9)Pr?F_pxX}eCC)8`(l$_3OI5A|}xxDDWm@ceLcL|qO zP9ty!pK8XX;}*ZQo!*}!wXtxrS($QEJA#iDnCkA768iTVAMhnY3otk@k7|?Bol@GB zyt-A$7WXjnttVo&oa!E;)HLl{IBdu!ZYEvXRmt!6tz#^@scdUBJys2OM*Oa=a&6~? zdU)@LzGK4yW`;N#|`=)Z_MJBc)X zPEG!kh?U6YYX1PO;O)vaZ^Qj!2-f=6#!2lUT$u-U`_(muyKiS}Ev3w1rdd{4lg8}x zoc6D&W4+P8Cbn?hM9DBJpb?+Faj(Qr!pSY~KRKqfTiYd(*8#rOG5IaGhHf@7cb#jm zPpJ(_1W=e%AZG!W>FrSUuD9xLt+Gp7i<2OhO}JJkasL4Dd{b|xYC1Kv$$MxF55o-c zpL*4P6lj_~)~#(F@1&^Ph}_s{*m4N1Tz=CX-WtEdYaX7xv4>21W=&CTi%ijj>Om?W zBgcy6{d;-T7dqtg>Q>iYzT$VfZ94}5){pTW-=+Gt>gP_sk~!`Kf(3SZi=ce*;^+zWHMt$`jvl?rWWydTYKJy;DoH(6qjr>ic-)y0nlfyNT3~s2+c6 z&Gp}2+x0%Y)7dMe60qA48+H!E1Kzt|MD(4F#2Uv7Jc0q{xF6zY zN-stAMD}ntBUaqF@lP$@OBY>H6q;6#Wq%H*`JM5Q%E(Zt_8|WNtzvFEiRTz_rvroD zwA!cQ4bMn)ZNj(6f(!@`w{Lb%OzQE1bmKgdE@^8$5HZF z5_#wP*Qn$%oyvZqbH|Eak~P*E5T5Egcz}7_XB8svL^c-%C6Nm%{{Yh*ocz^Bm#E5- zw1#$Bat86o9@TxNLocG*gE~HE0IPGr=fAZlDsnq0(P0zZIg!9)8ga0BttHl)up~FS zbkW*bg&A`u=@j|SD%Vf8v(`kn(%aii8}+h`2nH$*pG+24mg-3%u`lW*SizA;w~E%J zYfoBq%M-H31=8JpKBS0n?f3CY)^X1Po)x)QNj*E5$s1eWZ^c;I-^D5zTG_wCqz+Y( zZ834;s8;?dw5GL)=1Alrom-an81qfVUbdZYya)=*5I7+~45Q@JV??-`_6T4Of@99? zkgM-e;M3%e)--|;Nl@F={Y3oLjm4$(Hfbg0%h=k)GEQ?O$JhbQTXhI#$3VHe)Mi~d zT*+ejS2$BQJlCt;e);!lqw`iXgNX|-B{PHfsj2GTTSo?+Z+&fVCo(O=g!=q4`Kj?- zUFh0GO{+wg@xu7^vJ1CAr`(F?<+akT4w}-hH1!sik=||ql1nO*fczgL=Bg#oH5HNMj@-V%mfCZ%ea&@Vq@VNFFc>5eMCutM zf2fXq{i=c$yVJdOirKCqi27|bWNdK5l{K#ktvT4nUs-xm3u}o=fS`saAm{xlM^9hc zp}MwpkyFfmN5QL0EjcwEMp&*Vjw>Z2e9k_U#z;($C$)Qu?gg?^vr7`gG1#M(QTOvw zYLY9UzJ}rwv#+S@-#83DYDJ#2CY%v0RzO1ju-(pck}2u!tZ!jA2_rKGE%}5{2>2t- zMZ9*5talJ1%0^a5j}lgFqjzK0k?J-n1=wF%6exV;=f!F5x})+UJA`0k;x>N+=la(N zH%8sc#z|1w+7Cbc6|#?6w6VChvxfNHLozEq^eR=4btB@e&wN#t-n8v`tzh-%ktGCz zMtmP?wr;41Tr6oBAg)e(e_G)8TJE7~Yaiug60~o>YabrfYozr<>RTmwS~ocLAt%q0 zDSkX{YGqyG((qiwud$FY&J8@}!TLZoiqiEv!KX&n`MKP80y~jb8h2FzcDA>m!sO!* z#c;nBmxkqy7!MdMNIw8n7uMo|cTa`*^Hwps$br#=DeOg6Us^(r^2{<1#%mbr_NN-^ zE2J+IZph$fsjV%Z-ud0sgp-qjOkHab+Y}b??E^c39kEg^I*GLf5s0=oV14Vf#?G1C ztNTTPOBiIy<16h_#(N%3Q`%g5i-y>;cgPs4c-XQ6Yld^3wH~OVipVIUiUNu#ph7_J zNHKy%3<<^#1$q=7LlS>YdZN5EioMS?2+UlxU@+tLc&K`;l0$3~0hT;*?NRl8Slh&X zGD*i_So!tMTTqpiV=9ZskPUYD{yTYQ<)wF1Xtt5+k?J$cB(pXb(-M6v^I9f#y3*h= z5Rt~fGUuFDHsa!Gu0fs9Z9X~Xp{&B;Kgu)ywOIOvrj4l) zXrfr*k&JKu0BvZxqTQ}HVpRSt^Gr!ZAVwQ)aElt%<@S4 zgqY_QVWsqS)~$KIXG?gB{W8n+FaBwC*|dM~@+Nl@7Tc8WqOaq#lIG2BWHaAe*{0~? zBMJWi=NgiGBN3_Ski#_5z>4V;Z8C$EcJ~#Sa*)c%p@|%G#%rT>Usm+~p`a>RTmD;8 z2Vso{5eJj<{KBH-{z&P`@t+Eu2BZw<`BUp(ZHJL0aaG-Gizmexme$s(!eCj{dH zvsO|`X(HgT2laTZ&reULSXiA#S>#<(3z*v3K>i-l$t_B-`q}B7H8uU5)-q3h9Ei5= zgz|jx=Cz#-)pwU#z>4DCK(|v0MDgyDJ>C>m_JyLZxvuFQeXQL?ZSF*j=!z9!WgKJu zYZlfJ>U~40U)gE`6cdpg(lJu}@ObiTGTrH20eWf~(@$&Yp2{UMnQoRG79ZvR0PwM1 zCeR9Ww9I0-iZniy2_$<=sLjXE%|_BSje6Kx>6e$$Uui-8J_h5zxl()PueH0$^<7fd z&rVsE8+iR`74qBh&wm}Oq}uSWgQv7RYm`g-GPf%-LXd)fv9lv1z^myrxb+K5ops@Y zJxb0GO4%V}7)bGq8qHbS>e|MytXWNY5*Z4;tf4YZ#@vMm?ZsGh<<_OEX!j|3X)G~3 zW*H|7kdh}K-xZsy!5NRjnKg?ZyoNiQQ*jiTVDgStPkbLWuKZ@`R@RnViy=M4@x|); zYs!TlG2*JnQ2tgnzKUPV%>syy@rLL8p!lk7Q>yxk3BNUOc`SQK^<_dxWk3AwONSk< z{Z}>V_%$n=^JpTHM?45fz*C;}^mdz}Mb-K(l#NZF%W|2Waaog`+KMyq>3#cwH z?naLcH}N11GV&Y|$rZh}wvOh}JsHG6up`s1d(>GUHqI}k)vok(X%4wQN)E-B=COS_ zrd{-xQ{Tx2;?JkfPocg}TPHNfb}wD8`unBsdcNA$3n_)9$i$F-o!;l~R9}jEbQfI{ zrF6ztZD9hkZ(t79A5#X&2k zTD;K8vRO-q3!Jzd^Xw}<)tyrgwXEJ>$7LEDmi-IDuiNIkd)t+Y)V=(b%CuJoJ=hz7 z&Ij78_4}<}Xsy=xE82zK3#x@j9{hQ#2T2S|D#e9if#*1@JAHl5hIFaYNf0<_^4urC z6{?X;#BMtuka9(JU%@`EwXoDC(lu5_vAe?UlaL$1_^wqdZ6K8dl5j;>^vq^$YSjXR zx>fFR#%nfc$BOGeh&oDir&D^mbkPWA9;o`V0QNuaS#GXn)NG@@yBE2S4itE z8sBtn6l-!?G>yZOc8`kZdfmI}kjrANyYkaz7_Ks>y=zuQtTnqu`JlHu%y{Ie{XaOX zeG5dpz0`_Wr{+1_NIdPRSFnp)yfT&toT$b{d(y5htZ!qQ#^shkLkt{a;-tE%7JA-_ zH1AsH)o3T*^v90%x%@5b3sb0CY4X5YR|I;*;|8-9vRids{FayZOs|4b--1p%AKs#L zO|+I>T^+Ng9Z6Dsh^G1D+Q-vs+g)T%2VwC^t6C&>5y|NXF8f{a%|p^=Yl}E!a(<9J zb5=6lwbV?2U?|F|@@m`kcztn%5o()fSvv#S_KznQW5M>V5B#+b1GgVg- zgNQN-h_DTgahlO|Gy>-O=H1)}xP*lm?%lwut#Zk%H5-^_Mn+cTduF#iGORa7I;BJ9v(9<4&%})hsJ9zz#{D2N|Bt3ypLN*bZG4%Tuh{f&z#amqQ2TxpHNo3Y^%T5 z@As=)SwwSAWw_fMpn>oOQV?B?gX@vGz^QN|T|$xWCQ!jt9y6czrnu16Y5L<|%PQ@} zF-3u&<{(p1T*vu9%k(p4nB&@`=rFWa*K2SO>DmbLekr)*QvyaV%CuU66lY*|1!7^s#qkvp$~D5%{)x5$W;4xNaPr zAJQv_$+q!f^}CjK;I;_nsZV;b)XN!PcVKuGUG6c>ajxAHnm#j2o-vLns0{bM`pmFD#DM#9X$2{QusRwh- z0*rCqiUH%r01W$3F-Of*9qB&ww1S{0rT3zNLB=`HJk!xJUP%L*U{|>LAQSu4vwRNC z_z$c4dbIj;vBc?>8S*RWO%`8RJPa^1{p;iYh1Od~>I*xyY;2GN&x2o7=(nM6V`BdR z!;}NT_pf*1<>m2s-%eRK5!?Ejd&YomarI>Qs8Q%L2qcU11-Ek;#&-MDIu4|hUCCx& z=?}ms-^DqvYVW08L$nZz+>ktbS6x|joEn!xc+|4K{s3SHnxebWGk*!WW<*xQNJn6N z)QLL1<EG9ouunFFxuH!*;;It(VKpK z&0kpPaad`AqCl-63~}2vL8585Hwy}0a);=0IoiX>HLG1q(|D|&Ed3=^`8cmOdz?n` z{iqfLZ0{ZkW;qzC5vx3mRBezZIUEsFZS2hPJl%>mXuU}wc%1>--%r|}TZhU*yCXlx`uQaUBv59OE*yp`yE)~zI7zC>h4I~09D|Ll=k@+BdR;A&cB}W_2 zGBhqWs^=atTp#g%_2t*V4!9W~PdMhgwawYHvX^BNiUq|y?Q!~AoOOhr|25w8jhiC*K2Nf#~3&Thiv?2uC*?s)Oxn|^H`JX zwzhFAMC=qPCj$br-7%oat?JNODE({!AZG*ZT}!V201551#nI)lK8#l+LnM2!%-#tV z%H3VI<=6KuJ0D&_yV*Gl&x2dr4L7EAj*x5kb-Awf5SV*deuA60$v!}>#oyrU8fQw+ zb1;wp0B;AWu&*SF=GuqhmG+UKT6GqpjC;&+BkKTwtnsrJ3WE%dYJIIX>x;tOBjT1%1(bXF&3xHquS;us zx`b26mnz|rm9SLix^{*5yJyr=jWevQEvL4alO^IuiITGs6tL4V>rnh)-zq`EN;h2s|I&w%rAB z{{X1;?L$NB3$&W*DUa|c`dH`rzH6SmX4>v)^0LV#qR5JwS5l-f;;Y$1FyjPxCc5w9 zr$))r*K=CQVgx0(#WHdVlkZ&HR?#NYrHn`b1p|$(o)2p6GTV)cjoCN=gW|k!ODF)a z^HZ)Z6=N3=lF<+|j_Q4?AnrjQy>DpwfVN=z4ni7>6*H)gM+o0eai4lvwuu03xESP*^{LvNR@2;W)8LUI z#sF@4r(x;)vj?cKNPA!?&-FCA9;RC{7Sy=iDPBPREZ-F~N`mHc*6!{iQV!hlRTpua zTci9F4iD*J%GI@<;EzptW4R{cQM9VB=uzgg*y=i7r)Q*Sr%#^UnkgJPk}?3u>^6(1m7VZg+LuHDS{i_kC^#a^mMQu4)kpSG-%Qww+T?Or~?C!drQ06;)MGUXW z01ONP=C^FEow(5Kv~3sHzP2|^qiBoN{RH+0;<9>e)r8^J=-R~ou*5JXS+V0jD#xp} zE9f+Xs648Uz_d`xzn~rg1N_IDuKYIXOTlp#y?>|6`3w_~eyKe0D>pCl)EYZ@E^nqQ zplN=Qlb4=SNI~v1z^5bWd${kVl-|iIs%2gU^$36R+qtkSe$bpDo zPb)(eZ9hks(6qNri7Z1VM*jeclP%?_y42bo&qisNR~Fyn7n;S+sd58G zi-ll4f{*p6Hr9gMS-MRE=*sapidb&c6=xlk5!jlhzx?F#jZWhB>24c^c!}NzY<;Ue zsOXyBhp5M?D_l&ED0t*haLhTu1I%3xPs8~|)~>d< zcEU3ZZ0)&QJ~3FvqE?-x+Q-x}Slmc1t*&9+Ea~-Nlg8g7srsk$mO8{%ws^UYQt>GS zoxpH%D`(T4ZJS;7xKI%3Ylj!=nImyqO+`gk$ zaG^J1bhgr(4U^mes#S7PM}M|zTo&!BL^N9mMvBr+_ZLDwB3}Uej|R0@dIWZfCZ(#+ z4x1cG9il=EuBVJ{_N-@I{w8SldTrj5({_-7c@o6)CkzyJ#WMLmlV5Iotp5P)udl7- zxe|#a&SK$np7^O263FnatdT|{kY$5$yB&=}(DXe|Q@Tg|tkRr-30^T>4@~I@uLDax zz03}usDL^6=9o*{3R{gTPsl+&nqrD#yPgr*{zX-!w$s{4Z>vZ7X~PdrP%s92?_O~WZgkCO%42hx*#Q7?QT2@onvWv7LR{(q+d!TRmIdDvk~+2&1P9-wzNxv z`(8pwAoi{o_XWIK&GoF}Us>g7@ELZWryljT(e({KTv)F67_N|jK=KV`x*kcR(sikg z#>AE(8-`HZfj>RI^?CShrP*BSFKrd_GfXfy{UblUYa3-)>m4zBtLfIz+X6Nr{uIZt zA3qgkuXJXo)GPiaX>*II2;5P=oxa27vzPrq+A*`RYew{CZ%SFD1R*}d+P3SY>Y7fQ z47x6&KQ5@uAZ|ei*wxQon~J`dzUnTNoiwdlGc+u56ur(XWqGK@tn^Hm*Vs>^RT=Pm8!jog(2PQw+6j_)S)=ysNNvmMN#!*hX6 z+-VV{iq@;i=WZ)I&>decq^8bj8E1t?<|7rmgcBpUAgT7OWtGOP)k0k`$+4R#02~et zSt^B4qp+o-xm>MlLW(G;3Mit0qs6d!1(V(^G1XRZciX) zqg>2pjFrFucdcU)0{-Bbi;apr3}*(i-9fL%r`iSFo7i{ut1VXh8HhTC0~z_QYt{2b zB*F!pJ4xKR+cOLDw2mD6`xU6khX=1C+u<&`+kwrcL?;!DIcSy>4o zmGW7;sHd*pI7?A0?wv}rWExh+QNWF&-nu14xJRFLYyuP9prQKzf8qD77Rk3|xC3uAYP}JAq0I5T zMo54UxO0)>zJ&aSouxq}EevaNjkzT}q=Oy7{{U+8`aPDjYS(WPv63PJ_|6S$hP+(2 zPSq_edVg2auWi~}a|~@~5OQ%j9G~~aLesSSYfUP9$yOVI8AMSgKoby7@7kE^jV5bL zWq2IM8bDP+`i9!Pyi05C8%5ElablB?&0Ji8mYzm93IOs2EY-R@Gx%=$BU^rdSkxwj z*<2X{Df(MIjy&^QeKyJ~9T!k&uCHTuxWh;|-UrpS56yC3ywE?u`noGyDCM`a3W5P3 z&i?=zBjncer@G$aJ3}U;r*4KIV~tPgX9on2dd@tO`gph3t+YJ_x}aIeTJKU-{wdwC zuXFKIuI{gGI)*9iCA_!O^|un+`dr5&k;*euufl0D&!i+JNHkVnY##ci%+z3M1!Z>=d!W!Sy=P|c@$dA(c7e_mr>d&6ZD=v$9nT)tl55CddnMcpYs!-@(0at$8o7s zy8i&I6-!A3rA?_4O&c~6;y%Sk{nbOIbyQ|6yWLL5bWqNU(gUAO7=1bS81q98X|SMO9hkN9ognE|l6mF%?ZPeMq{ zdyHiN05SfR1E{)xMw3Xip8o#;^52-TLlmU_W%JH{F-6@}Uv!S62T$s{(%(k6a@-Y? z)mSnrvBpJn=(-r(U21kx-o+K=lwPn=^(=$V54~&e`ZTe+gGcJ5x)H`Ory*wJJ3;N5 z=FnZuYkip{kPt|A4T5}kti~#RriB)td8bWteFU&eAXx-VNsMQl`&F;vcS-5JF{#43 zP4T<4xIr>LJ7>YFZC7@mdQ@CQ_VQyUBam_`Rs0R8^rTmiHOWg^OmdkV6 zXRdCdxY_BZ-=t(7`S%qkK%84@*7B&{7C?5B$@r)xRZ%eCRyi2)MZ1Wnj!f+#fgE#M zw0&QtTt%o@+A>DA^G5+`5z{1l8sZ&gsmrNrH!`+=C>f&4kJM|nbOxBj$CBY+ zBcBJgZW~OJ0jOyZN{wwQ36Y88kN2#Vlu*fbme&JnmjJ(P4C6Fmr08uH;_B^hm3KlM zsVBOhf3-=_T~Aoaa?DEl#di;Se@u%|=}YUIYe)6SAP}6ZBM#!N^d6j++ilCBVJy5H zV1jE>ZpNdn^uR4`IA$cF1%G`NHO9tm2N%s3yW{iRuqK~^sp>v)p&`zUjNCG0C zr#}?SwT87ThmI@T$w7@$K4Kn8t{?b`WG+HnqR0tN!B1c-xL-&9B=SV84&n6%_do4i zqpLKVrjk^0?To<}wz|3h02Apg8qm3pLd7!28Cp(fOtAYN3wvqo*}YFxjmzAR1d5lb zvuaio&np*}-axG9&T2@wIxX?Dcw=u*1L_=88)QvJ?!p-J9nU3Cjx(Cn-=>#*748?h{*YgA?kZw^at$C|Bq<+z=vm5Z~S=l*J5t8BK@1daDABDP0<-KZ|~DcWc*;oi&; zoveF(>Hs?=Z{~dG2gns~qk1;_I426^?vw4~HAQg2L~zVsxzKVQAkt+!8kqY(_FdV zalkoRsdgkV=OkmA&8T8Y3IagS&w8iSBnpnroS$m6k%rc0VlX%Z#b>okg3+G@WaM{0 zHRsOq-V=45zGBi6bDrFqiB3%AnThwN`8CDfj2ci0q@svXKr{@4K*z-a??=S|V>Ed0 zPy&?vVw1;;JWvC*9~4oO{?q~QMHu&@s1M$XF^Vb!KYBT(9C5~JJ~31sg%q@aWYh*Q zPI;rn1N%{qdvQRNqau#^$fWZ@>yyasK=#cb?cSAeJZ7MqWhqAmc=A3CeK*irs_OkO zYjf%WBx)7D;=Wvkutzo7e+9LSt=5*uJAjb|cl;62bCW+1|3p(Rc5rA)>!#}(PM5Atbmmj}hCslB!4=N+?vaYd<{@Ww zyh?CX1C&2C*BrMwPMaQ*{7G#xbca+5Vwj8^V;uLcrFCx=+(~&8B#Vv6$bIXKM`3w& zryCtc%|9`2fF#PG?q47NI^F&pO?RXg(l6y{kSLNO+~H4;+PvQ`ANNM^%X~K)YI-m- zljl6sdW>Q1h#27R$*E3o$7200$u;IpvMEE3Mk~iJJ9XCz7@9?p{UCz81LmTea&A3X z*co%idnh$~EJakV+#cDg`)g(sJ4(1dE40atGyPquEv=+>vP<9T_WSc(a{Et?En?z0 zZj~eoT09@t#C9JwxBOOjw3F3oKu-!=pV(J1yPQNU?!>Gd9r$lJIj>L0H5~72ofabn z(pl=3lCGc#G05M{o@%S9@AT%@Zd&#xkysUvXBa;9ve$K=&RSY)5k(a9O$Vb2gY_r5 zHO)0UNg6?MbC0e9anyb8Kdrav)CGKJ~fMn(I}&ez@vU zI@nqBX>Z)Tgzx~ad8KKy+{J^#{x9_n-lHa-(31lU{#|>K<2dv2RbPo8ijehhPHB2QrL2~w-ElGl zg)9a;RU6%EHd=`5cw>q<9_6+Ie^K%=?M&#sAFci&U+Nl$n`XY66Eviqs-W{&@y1R~ z+Ro|vMee5O^7hh5e2}M#+v&fA`i=FN^=xOibH}K_1kZp?bd4KY(Ek7mx<=4yR?*#R zmncfcFn)u`C*rX>kK#tZuUuV8Zz{oSBt|r}al;|@_anii&hJtdFq)o)2AdVsQ}2%I z)xrcPzdY4^7S@t(W0U}JPrtQmHCS~Hq_~95Xy)l7ShhyF+@NrNO>|8s@J{Df&}`$A zO^VJ!yP9V>kmt!2e6`y;aWkZDh)r)IoUTff&3UrXuC*61!yJzxJRlsC?OoGH{{ZRd zQMA5kZf>m_Bp|6QPI>YxZ4cothXuoG5!{PQjlq~eM!}C^S^ivFnAgnKoeQkq$}R1! zAJonSXSt(P=#5uK44Q?MkW4#9SGf1Dt6!otE4F#9W-(pu1Wu>VzA5DC3rn^VO>q_b z5wcHHoc{p9sppB|Ul$u=8QSPU2b}n%LhGJD&zkz^XR;4kq{Nvmj&2I?v11b4P5E^@n0%4#S^Zz|`oTyphY>r(04zPS85h8vL$&GCs$avl%J zKQ+oa+wfNJLg}T|M9kAM+VBydPurT+>0MK=>is#W^&d?YiYVQd;>cu}{{Zem{p)Yh zT~A}x`W2R)smQb6JSF5pJMB2n-m$%P(%g3W2h^KOnn-RVAslUFBa`!0GbvXql2Gyh z7y`Qg0OOxX4I5iOm5AZ~pul$($z)Pt0fF3|z5f7u?TwB$8;0OT6DH>j4;cRdns0jV zW($#?IrCl$mgBL;PARrur;HFh4l6?H!u~Rzl%dH#q^QQ)?O%rw>em_<{?5|U>c!h~ zv#v_W2O!ta>RC>5GDjZbw!ItII?jh@bEjC`v{Bw+bDz?4jE`#1mbqB>)cQ`R)Y|T; zeQji=Z2^*hOkq)1jQy&Hdvv$c?d~DES9_Ih$fFxDdmp&2)7F|!o&Fakj^U*1FxVu8 zV3%^$qE(3g!lk+Ur+Rwq&20u)~%sQBVXYH?}EI2 zOg<{kmlgqfGg<2?{Y$qt+C7ti&cl&a((NSUv)LZq6IQs%G|7_$sql_RL8ru-kUzN>r4G^ ztJ=i7r(>p&{|{^IZZhA4k$O()Pu{?G~GjI=59}@&f_fO!9O(jQuR5s)8&^< zXhdzpZx|&10GL-hExa#L$n^~uulnlv#Vw4sk@j|%AOLy6tuB%HIn$jj1XsHLqXe_( zEGKQMhv0du^y@hrN|CSD^6Ep$^pv8C#%Uc9t@Wm+_jAWJyc@EjU`pfnspDl%4eEO4 zn`^5&XpqfwXA)uVq+`#@fxs0{Cs9wV7D#6Fus>50n}^=IqW%}yX*y|HVmgHV!2K#d zD>bggr`lPWFYI877&|OPZa)><8!TqI{j8%_xP3nI?prX;wg;8V#$UH1{p$tP4?60T z!93!5Aa6@}?7(|hL)LG!o4qye(%s;7AjZdne|n(Mbd4)f)sN<;4znS07m}oNSj!#V zZ7LT^btSciy=`%r3lW!znS)B;WMB^!%CCi>y_52R&AOedzq$L?FMQKf=9Q^6ymMKwW{PpNh3+du z_;zh<_0@aGB)UN5Rx~(m-NCGkWs{H&;BoZVQ2Y<+s~)Y^ukA1HUO7Y_q(wXL9!J`j zDLXNam#k_UN8%4nLXuuCl{LJK1+=7P+H;oJoAq=zmE?p zmgz3`@+*lpjt{%>>865Vpk4%>4RcA7&Oz#cmtL`)nB4>Fa`k(x--!(qxtG_oBda#7gky%|= zsAAgY$#I?uK0a%vGN%js3k!QzX_^mFLg3)%82G4KuCVPmx3XX2o&t|=_NtvbUXm!9 zIVL1B_s1rqT4jT=c$ZK6isKa)awzn#dfd2p-eJuX~1o^3!T7#_hKCAv0 zr>efAKcs`0;p27H9N@<<}T)9Ne3)VLy0BJ zeS8l18Og3*cGU82ZGRDOblZ>4Scv^q$Qe+6Gm4dA_>HJs%J&LEx;ZT)<0iT66D%&t zIAf8tk0b3%4cw5i5h*C6Jo%@U?Axa|;zj%dHG4}7j1s|2VYe~!PG9wQr>t>kK= zIb&?1sPISo*4E#u?X2`$Ya93I-nZ$My@2ygtgiE+T-fy{nzGv3T+41`!AE_&NFU2itTIEai&*Yc@(S51 z4q15Y-xbQbAFU+PBe;h0=Habw*yKgR+me4$pB297oeB|gaWK?o6Wyz&tcrJ~%AR)` z#`W8C^veDs-9i2%EVlOLZIJqC3vhl#R`m9*Zqr-ay`nL+Mtrw8J@_8ywN>icmC)5L zZ13Zdj4nenF42%{Rrqsh`B`tef$dsQh*eI^s+0W3?OT_Q8At1QMcww4Z%MIo3%HfD z=%5(`KK#;YdSB)AYhxowkxO(Widh_%2z!-I{{X#L-rfHIiE2-GGQHP6pbih#bLZGr zx?9s{{w5%R$ZxEo7V>xWRB-Vx&)S=^8s$-MqCs_{YV+C8b0PJ%$2`j0lmo`r_C9OY zv(q|}vd|8te$S|3*49f^F2l$Ued~EXiKtJezfZ@iMHE*-3~(X|;*^Wz=c{YK9K|gcc*1JpmIJmk00Nm=1?R4lG zDAhp`sq77IOWJJc*ELJjc(jO2cF%5tS!UpRfOj8pOQu_XSjlgDZo!^5W{eEr)|dYP zN!w^~dN)9%4#N?neMABJnE3lt8_uUqJ|f#*NbKVTl6c+oS+o2wVVx)%`N9!SDU+)&7+}nWPOh(&pY)V9bPr8;=I0>Xvr48rf?rnWnN(3e4jH z-1!6VTCSz&{Y7DguM#;gCXFRXVRa;oa!C7CooO`V>>U}CXi^CnJ?h5aPLAfkY>zJG!z+)_E27=r#bu`2N%H=Ze$ArP}JYUXw!M?U!tfdy;7-vc_XIq-xV?8pu&EsoFjAbFhECbo~nQInw7% zxRqFtC5_X|3gr6UnATIrC~T|!InR+>Ps95)y^=pxVtp)~!1f--rZ=4|b$uQQJu7J< zW7{N}lXWmG1F*(+N|-_01Ek$pg+OJlheD@2uL>KitFq_9*jI0V&Q*70L+G@1IJBXG`X;~}vY z$Rt*8P)r?sbK0)ik6l-zOQYY*6zaPqb0lm#V>LqP`$l*K;2zb|`m*}dR!3g@9 zvGsVX9bU%b%Gw1Z_+YU6^Hot~fJ3m#pRDc!;-yCk)^$*bp%CEX{Ge1~|Z59@@6^7#kdL@dkekz?@y~vD^0AMgYRi(}Klok;|4j6;D z@yIn=6~ySr^)cLWQ=w%u1#hIBG2*9Mxj@^_(T-}UO}&)?$qaL!6*5<7?ODD4Ydct^ zyqL{#AtN9Y$*94R9e3oZF>dnt}0Kp>ofSuIlFmD`*V zS{*`7h!C8C$M5Y~EmB?cI2bAq^shcwmux4r0!b&6NzEU%C39?1_oKZpnt-FY;*5dz zpim!bD4N7gU2*ygU9blkBVRQpgZ^- zsQ&;;Fny@)LFrqb1#7w!S~@nrYjdBYcvczX2C@s|%}uhDq@jm==l&}e+-%BvOE({3 zX}1Iz{WZvx1D@Ci&28=sH@b1Mm+CAB2a4qX0ESw({-Ej0Ntw4#ZZC zh*?7ZvF~4JD>9QP;XaH{rd#y;1)AWJ(SkGPs(;0_q?Q(tZjekPUU@nH0BU=$HJe09 zk_k(h5s(Am`wHc<+}sPeor&KW8$W8+64|;}e}cl=_=1OIh(DNcMN5Jx?x)?e(~>cb z>DY?S^scb_wu&yC6_f(4jyV-)VXG`wg@PESMk8xipDB83T{Vk+v3(*izy$}~Q^knq z1RQ0M>UHgH-2CP!zIUCYO%PNDkMn1dP$gGYBY}#O4CmJL z+n@KQ?st;d2N><`On57qelGOt>Y72lQp+W-J9z}xJJ)(g^8F!itU}IHcGHubd)H#> z>sy(;Zf>rwk_dY-?mGdF zaZ;}#TY;uo01jnh=N<5W;;S_Ca4#(_V?mZYA3W3jQR-=$go^~2WIF--j%%l;cAYm` z8ykz2v0vgb^wEce9xFF@`Q3ESdeN@Sb<2^*8UE&_#b&xim*#Hc63Zz58lFJ;sPgI! zE}s>WL=}rMp+2 z0Je%-r&S6GKT4?a_O9*I{{V!(t%aKE>k4{t5Xd2kQ*K5Lh09d&zg z65CkYTgP)R&}46!tis!3zdqljsMwZe={v)KA$n*Qw@x#ZY-q)HP&sTcw95%(I zg|@RupdAJPIQ`=lk1X9Hq6=>oZqr)y`Z*lIVHz`d*&WuOeW1xc@= zI=ArR%U-p(NKdBn4Z#NkaP3@csB|mNlhJSNF02|zCtya?jjTVKyW^C*xUqNbs?ho~ zUC?w0Z~9MA1nO4%=e3xOa5*Bm)|04feG%0*_g8RABZ^)7hbl*q2=P+7Gp?n!m^|0B z#WkcQEs@l+Fe8vfY`R-ow@#V6)RqBs@Jd9nNTGp^yMhm3DtPah*8Y~gUnZCMo1i|s zqg)2M)4=s1J;3jrdsoffO=BgVt#J&1EAQOd^Pg(^7x3pv)PKNreQT!0tDDJK8wo~1 zQQK+pT<`G@@Y|^1w*LSc)GToytqdvbYUF`O?wj%kc%aU^hjjMem( z>|-%H6>M{nj2fkva>xK2j^v8#E0y5PY&}&x{f$Yo1jsOt$;StgO)n%822VL2^zEdN z4CRoY-_1)FS7Vk<9!`MM^`B7}TeoLNXMCBX9f2Pe$FJ`i>RAi7b}f%$Yh$lyR@a&x zoc14?I)kWbZIcZcL;S#s#7S=U@-%WT*HeNjNu{-EqurY%c8Gr#Osc6-38i`sp)mY4;`&Uc{+~ROT{LLLBX-Ha#(mz+DP1jgfNZ-G)qcCfLX^jo%*Ou3Ou5OM}GeCDER z_Q`QPSH@X3+~k4>>1_U*ld5VDHjz9L>1}H=%0tWn+qb}~%_2v-wS7KTBV&5ee%=27 zty`_?4;H_h(e7P?%LMu1ha6Xa=&R=H4w!~bN#dSVi_%7shWsBmu4S%hH%Cbl$RWA> z#7T1;k$==h#xTp^eAT~0GF!o9=0N6L#1}X!M}zHJ#&Xnj&X$O2cfaA+Fe|mG{uF_K zP(Ky6ys=xW2b*b9Mi?grs}-lub8D$X9p2ZvB(Cgu9f&_}D?=wyOQ+sRX>kc;C>;qr z;G9&-UGUx}=U8vy66#iI6Gp*ecI2{w?^0}SY_%(7K?*cVN&1C&yVRjNbkN^zRolKb zZV&BC(6bBcVRaDQ2_-N`^A9ziv8T1Yg_hXNYXUIw#{#Y5jiZl~&O0w^@L8j|NYsF= z2_qC;mWC#s7jvlX@mwvnu9?2D>J2|Zw2^NncbSG(H3y&RTqCY}j%`#dHu_!6D(k#w zIV0Y?7QcOGb*Nfg%WRUgOn0&Ej|)!eJv5r0r52+itZJxHpmhW?_ZY6)vmRXUH;2qt zR$8{G;?mLy?iF(0kOz<2wtt3yhTTPVe{-mMZ>PZ=P6W;X8@+~W=^JjD(<~lo?5wTr z=agW{8USjmP|{Fo^4rKHg4qEtCVS_-bH^ja^DeccU)sqmGvBPG3!mXhxD%doD>I{B zM`fumuLkRPZIZ;?93O9*+;uL4{wdTk=-n+7UNCLKXo)Q$KK|IH*FOsSk4-U8b*4;8 z0lrql0)4ovZ2thYojq#30jKEpHk!mz$ky}B3PwkC&pG)5ufGX2n4$bZyq`;1#k5?) z-M*9H*HY}PuT*_6ZKzT9bevwvP2hw)hBvRglKCIvmsd2OlTaRr_bf2i` z7OAh>Ytg`3TIKiL*1_x^6z8wV=hdwEBP$mX*OGOk7%ATZU z0~ODaL=m)cgk!jmKJ={;vu7vz*RU`#Pg(^O5uPX<3Id8Kpew^MT$8}@QSS8^Ei>w| z1LMtAzfr*|zox{f?r~bj3sY&=yQObTkfZ0#S85iQ0>zry_OSA`8hvUR2dV0UgkTao zRHW4$+xjgT3Rm^xitQ!EJ7l#X`SnlEwp|!wcVk(OqSbCJm7@H-Ef_yb2IT(Ld(~2U zV3jGb_alxgoaz@4UNWI#i*YLiZcg3hmSSMe-f-?>G{%2K>$`H zWDMa?iszSH)YW11YisRI9yza)*_lZOUJLsGYNqc=k?rK4^N_iX{Xa~<*3IrKOQ>}{ zyxltXCf?Qw!sFIO%Sb)GD<7w7Nnv|$JhqVBtSldE5{~Dd)dt6?HQgPx3wu36;xl-@o!&p3 zc?O!(WWCd8*&8%h4t|+b=V(6PH6_3Btyq|8#l1M8p7kYkc0W)fw`%dFX?m^xqi-Lg z*Krb9TW=dk>~rl*+QKcgTZy-WF}MIjDv>Oi9l`di>uJt~W2Z+3p&UP+JC=CA`%Rui zfcqNO{>9RCgjN^Yi480k7Ey_ARly9I{{Zde@J(zwC2e|pMw3*JSp3G59HH%DAF4c_ zb6D*IP}DUJqk~E6U0LrpOTHUrA4SnWrP;l{_3iZO^o@U0(q0{rs=R<8$b_EQ_^Ch3 zg`7GE;x|g^olVpCI{ls4iDZmA?OX|4ILGf?gF@;(bEcZ*E+$|kgxkYyoT{PokN2*v z)QZw{E{|(1y}*h%jIu_J%$OWx{p*=@cSqlKW~qOxUkNSkZR2^O4ZwCm!sON`9j*N~ z7B|pzuTSaFO%Y8(`Bvg~ald>(Q~6lJjn9r4k?cid zbxyL2O3`%ty=uxSwF}5{j)V|lUKI%NJ?jstUf*k)wXdWW3k(BqXaU=d{-5jbTIbQW zr&;_#z11}lJ%oY>n$$oX9^9N`+MBzzu-CdllIGd}0QC-9No2_gB3?N6&3V?W<HJeQ(F1<^cB37J%#7q7`ir0+kH)_Z5Yo{(-LzV6qdtjGki}=(%Q#Py4SBR8ut6u%Ww48fWH~7CYhsIX)!ZJ5(zW)9Cj6vxw)D$ zF0G%^GDx76AFDm_TZp4+?GZuAVUzy=n$}!#2+rzSb6yrmfKtHWhl;I>rUkXRiQKcW z{bYBors!Zmg>v7@Jk zP6mH!=`!lJ@Y)&oM7u^wC&%8iHqoz98=KiBFxtX%k~xt0#cO_s1|2rbSiTV7DSr^H`P~zkwQD6Y-Ad6&nS%j~cHBLyDb_MW8=^$0V+62V<2dXqdRH;AwtYKP3F?W!#@5Nk zJbkM{V{tq>>}vl2!#6;t+LNv5*48q^BrUots4|W@D!^w4>}x%%#WXTlYS5GE+yDvA zcDUfydW@gy?GdE(A&pMua;FE1+Vo5^X|P9Ud18WN9@Uf{>ru4*JM-6&O7eyiL^;Rv zXWF&a+G?azv$+z)Pp6+F-nHW;v@NyNP9}j1Z-I9%?#8^?T!fs*xk;F1e)W=R?qJvA zouqRE95DAMiqn2sncTaZ~Dx92fNELqa z?2G`wc_+ZCONka8PB(M8vQ9f>RM5%Zbgi@9hmd5j`bUKVnAU9JxV2kJU8J`~B{S|l z&1+eSxOZTrAEk5PRZZojQX@w*Dx)#WRnX@*x*f)`Z5rF6#+HL=8UFQMGJi(P=8sy4VVE>bM09}Zr_)Za9xq)A5#1KR%K)rG>{Jf^+lDbQqOC^j)yJ$}*7Z#C-9J&-K=mAi9fC5uZ+I#!s^f(lWM_ zn|p+ljG@laS~j>{QpGN2-~;KX2Y`LeWk3k!fenux`KxPLk?f+h4Yj>sNcf=_@@V#R zX_pf#k|I(=k&K^e&01SM$IywpJZA@wwQhA7;Fn2yA9rc3O0HI%$P)(vPb? zYR=lz7jqZo=WBN4uLm9tO}JKAt?o0&>Efbl3{CW`MS$Q}hvvh@KC zIcy%sjMS^?LfRGY$9j!sH%Q!{>Ds(r%w#4p$<1Ps0#-R=oD6ss8b=DOPl4Kht8bGl9=FpCp|7SDx2= zW}p-bN?t&$sVROuQg{969jF$8j8YCf3S7_>1DZYP0;mR0VMb`@G#+zM2NX~R6b4E5 zqKue)MsVGzaZcAbd7+kKUvG>)IW>ip`sd?Z1FsO14_Gx@^vNTrU9o*U}nQ z(1y}xSc}f8c7i`wz^{n-8VSU2*Tmvhs0i_=Ldl?~4}y}8>jPZTO~Jxk zDca}<1lAtsrX$rfq}6n=SfC%6iyW(bd{@4b)b$8;C(|4%`l>>#oN_*Eos#s^r1a*g zGc*>?q{LXNobrARZok5s7=*~g%sKt5k@T**&}(j!Mqy-PtgYA|2D<%*pf9bKPIyX z`&Z6Ch)_oNt8od!Fu*?i;=YU47x*%=xj=rL;<#5>Xso8`fBjtl08bt()9`aEo>80W zt9Or9hH)DDs-z*1eL2Va)vm45Ka{b#)b&;`ET8niJQhA`!$!1ge+r*b>PSg~yKFs+h|f!XZdVn|62BiCDa|TkLO7 zJ6G@9ioDT!B;9H@mQW|HzCb6G41hb4pMg^Kvq+r__-U(kz2r9y0^8~6!_=9MGCbql z*KFy_j-2VMgP}tRvJ#I`9oz?#X~s#c=U&|D{ThH&7JACf%a3glYPQD1dd zs~c>@%k(Sfk_T$@+2q`^K7#7rtCiH)X-?A_#t4tN9lO*!Kf{E#)1Zp$P?9UTo7G^g zkiLJlRdgpyJ)WOwd3|v-cQOx7NF3n%inQwvu(j#*d1klE5%NUsHNIe7ZsgWS5t?BPBf5OB%jdAmxb9 zdT=$261}aJt=!J>6%I}Y^XDGb*BpJYs92`5D zUe1X>_<@xVrMeeKA%Q)!@l&*mjZ)J@I@N}ubc_$A`xN0w?a$458hj6V5;fETZlenu zHgUT+_!g+X7JB_*Q zYEO<e_Cjcd2Q1tp&}v^<;x?P_O-`&0_Svtkezt#goXk z&}s!zy0+|O_i&>|UY?R`UrHuuGRmk1;or4 z`6PrM=CyK{r#z!CgY=vM_VQ`VIK-C_L^$5zNFRE(ztg2ipK1p5h%Cx6mG-KHSB^ke z3KfCQeroNO$3@rX={;9bPeay23tQtq^tW-5SxrR?UOr|LWriFM^<%0bTeB|a9-@Ls z?rEJrPg{>rJg5w7xe<^3Pl5AOQCHF}=7*?8w$CIGT*98Bt8mm?OjWy^kvaBD=R4Z z^w1VQkB*bRMa^~7=Y0KQ580BY@;EQW0|-PyMigPP~^-OaU%X3$7D z86Ik*Q`HvC86*q{J8|N!1y$>MYTsH&s=Ju>#d5=2<)uX0Hk+tA+=RrkEfoE$H&chEdU#Y)(y=7JyU}>SXO8VDF!vll% z6+1`jYmIFrwJMg$7X`@V{k`jsX#I86mh;-lcV-^Z7zQjbS!=bm=9{i*_Uot5906By zl>jg`n|84aUi>w<)ZsEFr8LUeA}$6;o@*bd^i9T-7o%%!Dihh6a$D|erRchq?Sed4 z`E-wkaCmB$eX7NKV!;ODM|KsQa>`v6O)`B0(#s1i<@`Q{#7ai+->degb=OP1MmtM3 za?IE{Zd$Zf0?1huoPbbwEy?>w-qokI{3GbQ{+N$Zu>8f; zmoR7QlqrSB$C}P{zQ5Euh!?u9nG8wUS)u^_s*_F9`l{%SI?mqaCR7sPiib>E5Wbv%Yt|wpjr&BkffO{_lT!opoi@Z+m&Fbo5~9`c7ke%OSLSfA=3e zd9NFKa$c&kYsR~t)DV|Nj!PV1mH5qQCDpVzmQ5$7bt~OB^X_e@w3T=6$7auNYF*w5 z_Q!Q&X%cGI7a9%I7{n;@$ugGPDg8kH^+4BcZK$@QmrAz_CP0j1KIB(G=*ue|LM>CK zZ|rRgK&%$#Hy*1$fWGyQ>HCX4FI$q&QPMv)KC}pUVBLZJs>V|6&HlL{iq_Q>uq?9&yMN3@F3?HYz#MZ; zjS}}(hT8UPc(n6|GRZsoamd~NocYI!_hYBpX|^#Yyszm^8GA_;_>7a^9@Ps{eKI$m z(tT#NdJ0T1C5w?yPnALV!zUCj{_R_!YhUKb9NYWqnR( zd-#dAndTV_8SJF_&wST6w$yFz?Jpv{v=UrA3F$j`O``-Rd(-_RtjD57tR#2lC@*dO zA5!2F>c_P@yIEboR83b%nB7~vR~D9$RMHVzxz!!ux8zrd~wgYC$(K!j+k_A zgF)9FBdJ^5EQ~bR1dvSUEF>I`YTxkhKv>~TQu-#E_G}k&J9`1~T=%6lEnlW>?ezF# zlGaPZ^`Ts>%kXQy>2_&t3`jna>4z#f8OJqe8?~;~-D7oh_M*bc#7!;>u{`ZPz^EDq zfdmjYtfL4H)nT6<>D_k0&ajs;&xly=EB;efnrZ(4+q;DDz2@o!3yUxM-u_*j{yADF1e^_ z8U@@o+I{3o7;`(2%)s{olIa=ER{rwcJza7k1OSDG&0Hyel4`2M@d0hRn8~W!$u*p5 zvO8E#)LuBxybe^eo6n58clB7lCocn$Ocr|Xw@ zec1C_4Hm{NFfEh8TW__o~jTis~3t@g=#*aC;w)E2NSpmAYS6Lo8pCoJjM= zyMa$BRY?`cQ0px5$LZT{IAhsy-!i)#YCyqX2Q;nJS_pKh8Yi(?gbfV$I z0kIr$pC+Uk{;IZX4J-UKsCgxfyd(}m9mnn}mGrBD(aUcl0W2&Xefd1*t#wPQ?MGgT z84x64n0w&)r*)lA{4YjWjA<>!!zwbc!DY`RR<60Udg&{J`FmzmZ&ow3oPLp>)vngx z*NP{!%Da%QkLCBQ-%MMiQA_z$kVoo%mi<6~mao7tqqlLL*#7`(8$_2*0_dZvm247z zd{gpB*akt!IOBkRDn+Y{$U~2)sPp6Eyj?~}RUfEx%_2R=J33{CK^VME)lYjH>btRqLi*Lc(+-YN#7Z@sFCi zTXdb;b`9z_a1UWk`a)}Y;E<>VP7Z&yUf|=`vnABeY6(?Ao!{p*qrK7A+o9o!awhdd z5_|G0y8i%2OASS2hB+BY&Kvt;w-Q>WrKKV~d1YVkip0lq?HQ4Hx~7G1YajhpaT<>Q z0H?{Romj%_MrCP0NaGuZJkvTxnJtCA%gPcsBMia(=iakzs!elcsl=-DE8`jdP!D>t z>T)v~9-+eIk=~@~p?65Fl0p)>@M(ZSZ`5<=?Os7SVT13GYWiiQ&@SHU{ypuuMwrL7 zS}wO8-TK865CJ12j@3oe@HBB;UL2+rr~q@%nziY@KV(wevWDDF3GgaTc#TGW@q=GV zaUz*70sR1+jr%uS?5!HsAr>gNj+s>s3+%75YKXH8;a0jhZ;e)yr}!9l|4c3X2e;@1y>mMs0K~hEDz9egIFP}f>j94aol;TtNB8qPDa|FD=tYbuy-TLtoE^U zg4k0Jd>IUpn0egm;V5U zj?{5LXWEJ|d+|UN1p zZ)4t*AKtG3$M>Var3;>OM}7tcK!3dl| zbBuVRj@{_b9q0^kOPqUB4kW7KCw>MMB*m4;L4zwcW3Gw}Il`n);kICsryH(W~_AsZNgeXBh@UW*PnJc`|F zcFB1XUO+(%03dm+-OZA=q3JYk6!51W_4l#7Jn?DK{aqEblG@*FiYW%|>O6ti{poM@ z-8)hAuVRSBb!z>`1dk2&swN9duDuZa84_?#g>`M zIVVpEwEaz0;0)>lsr~!b-&{#wePXjf^dw5=8+9>T2kh~@mahjPYF z3D06Hy|UIEfLNRTQrg1CASB(5&HkpkrlTAmh57}kwJC9M(h^jUsj@le?^N0*jcIMH z+-ee)Pe}J{V~%rKj=$g7PZv3(q7(f2-}?& zM%#g&02RCGj-JrK=%H&r6TW*H< zk^A_?UrnRiX;;?*_ET+teyFVmHpd$`JHhtjnzr-G#(7gsk3+qQwAqfL@~n}xZeBG} z!QbuMwOQHQoohmvYH?ZJ+ona0%rXRIbN>L_BfbfywGChVD&FTzZ_DX-!PqOR?lVN$ z9mf@@Su%O-f^X8?2v}2X0qCP#)&7Z_u~1({FWqtAx925vW+9^xF6HT(RW+wnKwV2m@<{X$c?@8?@VdZ z-|PPXoYXGuXKSdWjpLFo7CwLKWOq36OV0+C`aXysrL|2`<>yP-h>B?CUPvd#YU8Es zZ@&;Du&|o$2;$Qbq8ndq?to{3GE|9 z8g#aDTcC|6Wx_aqGJUa9!YB-VIB# z;MT(1q;&4C)a;~Hh}=j3x)I0%DH+MnxvBb}QEHtVq21`nx^%Yj%p$h9I~~CG$8-0o zaS7JtTG5+r)omk#RcS5fft8W=1yY0b?Z;#DRu`Jx&rpxe-^ypRMOgm;GoRze2W{T;kdB{q z_>ZjGT}0oMON&_uF-sA_+x}Mfu92o{acYn(hzdUikc<_sO=YcV=I>0& z5-vYgZ-wRFm3US_84uDM+{RQeQ3_vqaR8C z0BXziM@-puR3DpYLtVm!UOzSH$K>4AV#JLDP`2yNn6Q$rzv>c_fzCm7euzZ(tS;HX=y8n*>cwG30FDbd>@+J=^B2U{yNuJTAk14+!uHz zBMZ-P1#1oA%`EbBfByhyT8^-Fi&&l`YY8nL2PF5w_^h4h;dF;j7tuz2MOJ2v59S{g z^!=`d6|SUj>~{JW3${r8^X9qFSX|H3*9~Yb9k6?p%^(qN1>}C)M z*u)XBM7%5KZqFo z^Vrt6CEF9V*IFX!JxrHxr);)R0Em4cun!LJtVLC4ML3w8d^h+#u?)LGl zib?~X82ziUNq27+uW6>Cj7uyAX+16#i1YTYa+*~D8A0a0)wFl0kV)yF5=SDOv2Q2$ ztzS>|KTqD=MRt-F)Ggo;EDkWs@5M~#(%{PLjRmh)4^?-yb*i>8-+{n=Xmm4+Pf!-2`$cq{C-tUiFOf~{B%PNc&sF+W#&gL!!I$%$9eaoB^9 ze)Yj2>-}Fzxq@3epHdV!KtKDc4>_*urD_&^Ri|6ss+BUwlBb44ip9cXT9~dd)1}_f^nMXl+{@EMR*bbGtcy|K!P$WA!wqI zd(bTuQ9w~eAt8IvEfwI%6cT$1jV05CBpegstj5tPQ()uU?gP#RYdg+E7rqa^;*H$VVgZ-&C!^uBU6;HoV+I=0W2<&^*caKwwHdtik zk2y8h!ZWq|Uq>0qVHjTo)n2QvpG2%T2^$~g1GQ$atu;86rjqd$eVwZtt#x|ZBcQ$# zkT?;q2DLDgl=Af0KEDl_cf7xnM#e#pIjbYr_7m6v`Ibh;KCbn{AF4Gg>2}2BL!50@ z@#@0qcW+O;IC%G%${4gU4EM3BGgEHhcx(&4a;+}gtOZu)l)0jrHB z+}#x~aC6rn+)?@2=Zjw!IEO+V2tM z`NxXKoV+hdx)97^mE*kS|0#xy|dHdAqKN~D(SG2Z(DmwrNu0!KO(vQ@#QF);ZpZT|(!r>~8M1+RFa`m5oOE z$@*FRfm#lq>YX-yHh8VtN!{3PbH*#3=vG!!TE6R7h2vl$fyOx}y>Ilso`X%7eZ))) z08D*>u99wYvZh{jB(}G)Ti+wZia&zec$3?j^FE+vx@+6O(`+9{)4-|vwe_XOj`ngY z1qUckbw3qfFI4GPniP6yg$#vC2MipR_c*CPrEvcM#U8G`zSbJvZXr{c)b<}WveGoZ zp6U*QxYeW9?$cb3+^d$j#_$F< zZTI?06w@*wqH4E$lC(k{6!h<uSkXUDfpKpq8%UZg*^oyi2!E3p( zDZvH3&zjt1+DjCd?SH1+JadVRivog7U^f*rT(G{m*W1&a&vhz`gEUB21dNf-HLcJ( zKKje3?QgW}s~tLFW%;!H=^mVlM<+dwPhnY`xw?a1)$b;Iw32I3#%F+M=6%9OYaEeDcA0nNbME?K? zO*>Vvnk$dZMd~btvQ&eNA7fDUJBwy`rZ(>onTM_}IUxCAj|aVPTyl%Ky)LAl&iY6b zPq(#&=5`rXpB#h${{T)s>ax$M=AJD^!YvXQhOFv|BdN?Qo&pnA7kb>*&23>7q;kb| zXd<&qp`DF_<4pK=fp#FCNcKGlvb=B}B&EJc~2)t>4* zi#S@^+Ek1bbL3Q>mFa7_x_ecg>L}LESe%I@AErq8TvoTEw0$S8%$M>>BsTE7N$5a( z9|IrnQx^XK{C`)Ar0hC+U&uurK^KG@S`+J%>!*7<9XxtuH&I2S24x zfmrtZIX8CNmCSed7Z;v~=2Y7-V7zAzd>WH_<}EK#-f8-MjQ71Ur?tY`NFbi}QJk?D zA%EtvntxEk(&tkD01(qk4ON5Dp#!RYi;AHsssk>&`Pq*qrJUU*q_Ye7~nNe*dU!`L`*nC%d z)2EL9#V3r6vJQSRUo*p}OVb@mbEHW$SInTt>aWzUJ}bRxy8V@u8hwsJdeNv;^X*%o z#E4KrNqo zxBX!fV6s?B=NrB})U~#c(~()SiZk~#$v?t(1cxK(C$O(!9b!Qveyo1xxm#;dj@ADF z4Kz(!X1JBy$j`rUILY>|ebnEA=J!*a+uZt0GU<=fJ_U8V^CRjp#UAEV<(PP{cY1PM zMu8=Ldf!E8fE$+$k}_3&vsZ&;aWsX1 z+t}im3(xA{j0*89F^I+nLJ{H1eWAXI6!1%^el ziv}v?4H|aaKCq!qZN;y-=sp z1oD60vwCi%x|P~ohYbvXcH|1{i!U~PI&5T;c-5L24%4=-mc`?=JJb*}x1T=MacUMg zN|Zwuc;|st-B7pR;IIA`qDz6u7~-Brm_^bx9b)Ed!4pF~Erg7AWgqiUdYeQ1j6+ku z%1l0}{ZpU+05=umQoQP80toIWfrAb4i~`5b54A3_ZL0NAkNiLc5Gv&Zexc;kcj*=| zYj)aQycZU>#GAkh<+x+m)}$Ek;QBC1sN5I9tUd0Ywih~Pmkwlz7M3?}$wW$;)Sg4{=g(V3JG>hN}Ci48EeN91v-bW}YsF zSROYn0-yP*5ln_BW?Ybm0DJt@0!UOCA7f4=PE}bOlfeMiw1$el(okbOV0WtRKr~8> zarGQFD&Z#dh#r}F6y*C=eyJpK#7T^a3uNF_sT8*wdQ8ldC~r&?xOWxlB#t`>VuY&3 z3ETnX(TP@8RboVo^?0c9+az|(?zzwD=f5>oUDR`nO)6MPD--dNS#FSuIc2?5w`)dt z@6Bquq86J<1yH*N3;-Nrv)w-$+uV9lobMrt$Lg$K_D^hm$_Qq7%HXRX72!@71mK=A ziqiF#lleQp%_@zP65M;%Yz(mNpMQF@juC&;x3QS6Y^5lsL6l=!D3n{<2-SfEZQxfw zAFXybIl;l^wU#%6OK37n5_uW(NV1^oP)7{@pcvkAPJC5+D@7b>oPu|EtBqi9mKDN~ z3D31tO3y16QVOR4;<2w8JH3ib}`_0#bVWn zleiF-U^wJ+SzTV`{{WQWG4ofNoyZ`S0|Vc=td;YVDH+KB07~I)j<`*7jB<15%^&YT zBxD1O(Tc-jj`^d-6#yvt@B7kH&;uW8Jko=JX+OOI+~R?ZV9*XI`0Z2}pizo3P!v!P z6i^+76nLV5{?xg^ppoEGcc3YJ5lKoh+Ne(*=<&q^u@t#A0%DH-X-^;uOpk2+=n6aY zK<_~8XaV%(P&xC81s}H*1~b}$#RJV9s67Hn#(dPfIodZ?&mi%S6$lD)Cc*A;>?;{f z#C=ovY19L$I!-iaKDD^m{PV|SRue0Wt9Fs`wXjL%dZcL@@>)pbL3M;VJOf?V zQMV4WFee-^ueJEUFYr7~d2Fs@nkO-kat(F=0K?rx zDKhXy$>1L+70YAOzr-S*NSS>|L2#q_hs9}n67o;W$r`XTM15G(Jd!*A08w22Nx5R< z!?mPF&T%Yf2;=Glwtecx88`UD5sIVIwNLSDSfq(sMUh5A{{S!Et*u*)j7THnwS4@i z+q9`9I;Iq4uLit&A^x4GB;&O>AB+NWJ>f>T4$}0&>oYq}_8^UtI2%Cr@6BL867^`B_xvu@h^*p_ z10Fb5^NQ7VPQCsMehigV3!&1UA~SGjwsh%W8maDFS(dUC4yAcayf6vVrJpnDH$ zeg)eb$gZ2f+p{0uytSbiNkB%<3gfW%uC=9fE`y}mL#WG((DvhQPtar|llxNAMo*(U zQ&iTjE$%F%e?}GtR|f|N*mq);=|#{k=665DbMNpf7eniQj-xJ{4ZNaN zjF_E!COwCdTAS<0x>nOs)HOTts84zlIF&F@*pC9SZkmi7clxfm)Jt&&?K((e^$R<3 zyWHlchkZ(Gy(dtXWVez(T6>57AKs$r6P>|59DNauN^~v zZ>^U0SY{JK%WO~bE1eWuJrii6Fje&uGAcTKREG6O<7xME%%w@AbQppQ$ zK`Hu%J&j}EDuH!xcdT{C_+(T5LMw+3vD^)*9Drnk4~*95QMs_zudRB2QNOpdneA9h z=t=(ow-PVuEIV`US?kL!FYyNPlG1r#)-511M>K~9=Wl{MHBs2D%qHq`M&6`d&!kK}Zl%_i33Ww;3~ z%&oPh1n>dzk9z7hI^?&}={jw!ZKvPGWxm~W^h^risVA||YQpstmO9jyQEDp{gWKE5 z9E|7ck;Z%DvCnF_{>wCl)WLd#Q@Xg1@|HH%(Fu+0;*7e``t&k-NfBl^~lr!=h!`$f6Ytu;vG)mBq+ zYc!FSWCObM-277X%D(2}^w?=Sj43o)y_4(*x}Y4W&)T|up0giQ^qsZU=BpN+s_!tl zoPZ0Cc=iY0vYjKQYB!e}t;M{S?|BuTRssge*l2BcQ zjvWW{3Uf}qOY3Eo2+xu1YE^l8m8LJOdVOy#n^LnT3%K|@eEsW`Y8RIWRvLxq9;LEu zeTQ!0UEffKMKU@1k%wd2xbIYGY}%aAhhQA=zaG`=__>;6Ct~TT;JVPPt}W4$IU)=L z9GZcwSiyaE-n?rk(lC98%~pOL-itjBEjr>t?G{4k!1k*P)@fyxknID&u2NictzB0G z{6OhevDa=T0}#7z2OJ#MBT|8F(42rz1di48C*nSr1o}L35uP1J3Ah;;^JNn+YlZv)t`+Z8pr{w+;!ms9*W{4TQS z<0HxvTcFttaDRHP{8uqcCdfwj$JBiNgZ_25(~ zwZHpy$3F}$E%lC~zQ1W>SS?p@+}JF0*jGi;Qf{EQy_HZrEUch^kP6mFNoJH0^mjb@ zHEU%wnq94~nE>0I7GB|gGg5|77%SJ++9to`UaB6)wJd7i0?X$ll`74~q$}aTW?(}e^6S&|J{`G*?zYJ|AH&?4J z`Q*u6-^-Je#aZdSZDpuAi+Lnx3VWKLd)C@Tg`?cfaS}3v^pnnOILz_p99PWUS)yHZ zPf|peNdA)*kVf5^Nw1+gYDo0W9xZkkFJ*TUyD0wv?SLzjbtKoni@KG|+Q6*V5t5I% zA}VLjd)C{cH5Xop(&bBK^bwlU<}&$N2sq$Xmf!LFXBgW_u4ua1NTQS0lz>1%^(9$H zer?;(xgEPV$IWB9cT3cId#NV1djZ(1BF(v(?7CQ+Ts!8Br#hHJF+yZJG^E)fU z6mozDK?b)zIG#(Zo9HD_!ste)oxP1mOY0a<5~~x()O%K9eLnIlcA4OkLC+!bN9|ZG zcUii$$Vl1_4q8U-^Ibe9neuiy^=lXx{-PH=fGQMSMFjiOKS((L06SxkdilRn>O1MA zJ1;It#y95xpNfMQQeML+sM5b#K%@{{S_tva_~&ZcV-ArkVaB z4bP<+*V9eVeo}xRK1qU|)`FUlclWY1)pCx&+#WsUA$z$Z(K> z{$F~Sz7Bb<=SbdNUB&s$Lq&^Dv)hbiB}T-``*92SockQjIa#cLaPqNaW!-QC5h zTQ-{%>=A=VB0_%IBCf~cy^X(4$8B{ak?L`_7)S}nHP3YJwAVUcsV2CEnk5aHAdux7 z9lO?(sx7X+6ExdCr-s7LGi#WyTG(I{+!hs!mRsRvTz(ZeY$j@El~4b)-8u;(Cm z^V+kWA8&1-Ilbx|yUSIUHrp^lRsR6($?|K?m)G4knqks)%Ug*W-Zt9Nwh4a#{8l$z z{6N%tfi10XWP6JnO!{zVXg=Aia+};mpHItStLvJSM)_=^kTj9{&5igx439MrsPwPN zYiSMi%QTKwStN_<+NZ`UvcY13pchCXig^PwmE6&;d>-|>=^I-pb?swNg617btgYHb zj_FVS<{~-Avkvs$rmHAddQAO84ECCJmAb{H;H(_IiQ&_Ywe(h&_pn6ntj^Nz z#DDiF?oD2ABBW}sCZ3Qyk1`RI^+7EN9h4uRZq++Q(dE)4o^`mmn3%J0wr#>AcxL|q zYMZ5M+Fp^Xy}YnKqiHRn%xZ%vAzUxj@lV0f_qq;~CZ~UK=$nYdscMqpq)hNgALwcN zRqlb(eK@+Dmd9G2*d%K9%Xbk~Vn$ma_Qg_Z(J0mAxLY*UE$!6FB1-vL2qXp{_WV_l zyV7;Omb!-OTZO(x6NYs!BdHiDrlLiwPo-!RdO9EFt!7{r>SQWL2Mf<|d)1m3I(zi& zx9A7ct-7@9Ipzy)GO?)gJXX@*Ua+$0i~B8WOL=bPht%{5;n?SpKbIAP=&ec}YfD`! zdsyyoBV| zm2T~?C${vZEhI>JD1JPO>K9*#npMGqeLajf4TO0xKB4npKWp7rCHAYoPL4ZRp&ptv zYmNt+w6W6R5jLTJaegg~VomW4qdCTT@miL8HtAaaxfZIAX+EI>mUFeXo&NyZur|F_ zacp%hF2_|GY%|B{%{Qh=n+JjKPe-BMYBp19mQ#~$8V9!oW!!_?Bh7e|R*LuYw|btR zGU^Q)rI?N&s2|*nbHy{e;-=Kv&WznRqoTwbO-kXnEy5GEqCK(qsgr7!_L?@Cr8E~! zCo)`0TZV56J_T7^={My{k{FTlBt+`e#mCSU#_-rMo=x zq=Rfy9&^ta6^)v5i_J>*9cno)%S8KjkEaALkL_IxK-DfT?zE6WZ$Z~$=k;?`Jx^|( zO?>xPS25b&M4LjkJvlMp5$3f089YYT2=2dtZR8HJZRNQAIj*=)Y)I&LhClK3mjp36 zAo#5&nK+hdRJU>l?~2Up5-gV%_tx>^A_hqwXwx<2hVkHYuy+Qvt;V`NMZg0LVnH`loMsPem^Vy+A4Bzp>z zB!N|#o1Av{ti|=k)DxMP>R0YP#aw3UTf+UPC07I-jFJsAEXrIE$8VaexxGPd9eEpf zed{r-^+wAr*0MTETMLnpD{~avZrY4U%%CpO!(a~}d(tl2yZ)!PyVK^ij@|Azk{J|mM{0@D znl##7tj#JX<(gslnaX6L( z8n_5fa6QF49nnxx{{T|=_NWHkpqWu)B?$0n{J~qSFdG?vm$gj@T~T5+YX^Hli-^WS zUJ0swHYK>VNhXb>lV-^muu<<@3wvmj_`Dp0*wrqpq+DFX>A?PCOR8h%j zFYg*#VYVAcy*STyKK}rHFy23~l`@l-dlv=6^%+I)7+UhHOMEOC*}Ip&~Ur>JF+h1w22ulA(iS9(Hr1y3Mz zpA@jq=*J@urL(uUdXSryFb+d5O9A>#MUfAuyplo3J+oJ6bld=PiIRJ_y?A?YH%JgS zfDii95g7;}cLE2}2bv<6(Sew+Cp$GXzPPn)? z5}{<+nByn8sP6b-kQj~$q!oA3yw>tYrvb?W?Ns8;EMPlVbc!&z9OAETS@?AUPH~E_ zmJ)6NbH;O;x9p1DN(eP=H`12@jy9Zfrn%kKv9q|6IY;Ph5-X(KBS&$PF&+j0{{ULZ zb!MJmzBft%j!+2u)^FKkJaD6MAc5Ec{*|ZDkxhLj0ve^8W|;fOdKmSOT~iDU;Vc)-Rhoe`yF zRAyn3?^RQ`&(6Vv=$-k+DDA}*VxTEA@k>XangbquQjP)Ul8OS3KYBlE1p-oz z{?ufiDKS95YF>HAYESi}#Q~a7N6*@U+LQZGA9^Us@@S-?N0I&L!NyK-DFN~AN(L}! z0Dq^zq{sE8801o8IiOt9cNBJ|_@F^W6sL@zdITQyl&73g$?-r@ocN%5?M5*`cAy#n z%^v*H0C0R)r8xbo&N=T!JJ4C_w{2;29I-K0MhvIe*VH{B)M?Z`Ic<2vI|THl8RQ&S z$?-8>0nf0mt@t(7OJS(CnQ)UqYD?av5 zWbF3w6T9oSWd3h)QTjssS#=Cj%@9!1Z7cp|eFG~E^OzZL+W4hAmgU1>0PjOqDiDQ|B(Soel&MQ4^<5Pwk zqY{QHvM4?{t3-JrY>X6fp4``mIlt}K8|g8nVvJOBqaz-EDX5sR7!1C7tC6tWwn(6W5 zE!tN$*R;v6uV*7Jag2dk`)y%DcS$|DpwYWt0%tS@db{)B| zOkmGXbUW(z5$ZR`(zltun83-$it4&|NJXaE+G&xztiGX=Pp5K~@G3Qqr>5wd1+DI= zshlb%!N6~9S3%Qm5@dqxZDo}=DNobdxaXF-YaCqhIx^*Ys$p#^+r;qtexW;BJf6au zy6L6U@9rI%JE`ndWe+*d?t2mQ?^|PMYjLW6W^g2S;~6;Ov%OoQLb1vJ0J@6QT}Y+n zX-H^$_gDiJC zV-qWnPT3d+89V@e{l$9MZQwfeq`T1Mo(w5mT*Uw@jglJ-#Yy94X`T(kC$ zM(o7+II6j|O*u7NSnpz)?v?_xk;9{m?PYI#)U#@1O0&GSk5HP{`rg(VB=mnRcu6q1 z?8E&k&cjN(8d6)2M(Q!TEBF<{um!krj^K9&qlm1ocuqq?ex3&2~~nwcM`yIaz9f18qLzkn{qYCrARdU9XW2SA`2YKgLUc=^p$V( z4>e2G9SN-3X?A-2i+2l6fqxPl7!H442XR`pk{hJ5wA3S3k{O*PTRBRyHZ!_Ee{w2a z_N}c!Z1);Xyq7WD4@zS=ETwUP`1kh}&sWn*-BSM6EdxlpwYQH^TZI;p+{AY5BeBPP z`L1)XyGd#PeZ5b@k6OB5A`x+s@qNv>c_To#d*-Q zn{9ijr@Oc&{>t$b+(`i0>9ck_eDW(;e%bb=>UeLiY+dwuq?<*IM)JV;%mk0r2Z5S$ z2p-EwU1oc9n3y(|kLi&y*@^GS^Hv>NzxrAOsOa*rW|m7Un`?jxDm~ZR9Ey|Dmb#3| z65qg1fq!oH>v1Cg0MXAm&$dNhF7%p7=~xmDn~SLxC-rXS{JbliyC6AZk><7+{dDj? z?Ha-|9ixI6IFV}BLIYVq7D505`2 zinh5_OX)7+F&l`&PXrLlzZ~+vCZ}9pT3_5s&pftQ&V?gKk313jPtJI$F#D`K58;Pb zN32_6VDSS)lf@r zu1olZV6w2diZT?o0|EN0t`~DmSm*i;?43U}7xs&Z;$m~2`SD*sX&08dzf9>Go%&(s zLX%0i3K(`d@mv;be@4)`QSrxW?cEc1Yi0Ox4W-cvy9;5CcN197S<>UzEHGgNyzLz)y_JH{6fn5XeN}(te^wn=i0ixy}VM(a$y06{!TnqzL(ItZT_8etLiWY zWN-btKLCN}6};#8rjb7lzYY^k>1%uGU9TAjX-z+iFTy>grX09xL)%R@XUKPGLV{tGVV zIsG*SGZovGWelSz$DE3;=*#IYV7dImotF7TQgiiHlx8V`o^i8p(g5c)lU!Dnv10Ghb)DPErCt7AbM?oPPJPd? zt&W|kE|`;BT-ybbKsId|@7UA&W|*F;L-p0zJc#eD;Sq9MloUDpQN3gDbEgigy87-Jd00WcnRZdkG zdbDLn=?C=>xT%XNwU2a!N*@6HSD9ME>3KjvIrcfNw zR0x(%N&(~TT_#d9s?JUQ!ULUfijT&_+l#lKMA+k!Soc{p$s((*(P47tGJ3$(1md>Ygwl^=@qUkbd+ILZEGG4_jTZh#Yhz2v@ zd{nn_by+#T5&DZ!yN(?-9wx{LfpSmYn7y~wj;fM%2AM6&Nc-kMnB(@YnA%>8bu(Y- z5lF10G(}g1KQ#Mw4fGQrzSGj;B6b&1ll#<>9B*Eer6<;*TN@eUv)lYwgJ6UA@mubi z>7T-#S4;j2JXaF^C2nLpqi^@A65Vu6TAa6+x^k;;!F{|2_BEgC+dh`CxVFF1uBDRN zNjF?a3W897+G`eb%E+|Pe+DdctEq4AUQ3%oPo*?ZfDU*hdsWw0StMFQMblSo*Rf!{ zVYe&$WLJ$Ruk;IDF_-gq6WgkSkxDV2aa9Sabl$b8OEs>cd#8GdlDn|Gy|a!g%}xz* z!wY3`)E9kE2A9rLDb*w!XIr|FEWxAv`hLpe zM2$cNob501k2Q~Nd#L3%%-)FgBv@uR+RWhKR?q(cL|jO3&2Xclaytw z=1orJpuf0srea@>&IUV=d{glCjn7V5Po-$`x?9|^X9ux92&OJICTmD-?JN~8qssnb zK3Re9_pMJueiThMwZJ{x72N|Vz;+H!j0qMWDDB^?NypA5)BUj z09yt)iC;h;P$>YMH`CmVSFXP5jZ3I!var-65W!@oHB{_*6?rDIOg>sk4ltn zTZwbF1D?%~B-EF-UT$=lG@U{(@au@2O&BIn9+Afk@<8)vcdgk`iPo6^}mU+}4qz?G_sl7MWwh5r#X`0M)+-fYog`~xa5urSWZ-V+8f^$ z&f9s58=<51Xz5!Rpw%>(wB>b*(&b|US8U`d<2ld0U^h--^lc}ibq=7@Be)aVMy#)LI4_J62gi!#pNLCB!y&7jrGFktmSJ#g2W{d>++N)7mY@t0JPp>;q+)LE&ll>HDjVT4l3I z9YmXBOl6Nee)Xm!wtgP|8qXV_&FT!6igyi;Gq=BQbH!=8tEu!3mup`~M;Fku9qtYs zH@U7urE8r{(pMnK70E)lDJDT2cd5Fk;v{;7v+pu7Cuxn4WSX)|?@h|x$M~h9>$bN` zsaOk3mH-wUO3Hd5KcB&ZH&nRrIVbDtF- zqcnTHLsgl>`iO^l12`D=qwt%jZuM;kRJE5d>D)i4=L+sS0BdEWT1%xv6gp%Zq;s}M z&M<3OP3ny{pke%!7U=kB*XxY&&1J8m4|K2UnA$cR`_|ZKQOk2}EyUTC2i5-oamQ+n zt#tB9Yb@@o9BSK`k>A?2GLwbUpH9?gvATyUS~*U_bN%yLShY~motQcE=Cjk-`cR@F zEV}_xKbD?`HchIs06_ge<~3}IIN_y&@J$hZTOQ}VRCN}nZ7mVw87F6OkUc}5^{V_t(b8QvbbD@2PS-`lFa9f*O=odr>cAJs!^d3t#@#1N zEmKyC{!h&l^r74VK5F|*{QNyR{vj>=kr|{33`lYNlU(xl?PR*d3do+vy>0Y6hPuoinu{8wk$SU`WIW(_r{`r5ypBgWb@=;J7RDTYVH7UkoZ zfPiIr)ZN0C+ntbMJ8g2VgnicdWLTdn4WCu>hPCTAPs#t)ZMuOXM*CRh;r@x{{c}LdOaKbB^Y# z{{S!&Qke{=&y3R-+NbCBEyE(%CIk6309`DM@w4qQpP&!*q_EQ9>}Wz@s{&gFs^kCy z*gHu$r;_1?(<3+}e|(CFvntCZFY?3_;;zjZykMY7vz#B?RaT_KP|_x5h+z~ENarJFxkf;g{GAgF(Pi5 zB4&IM@mAWadMpBh3t$0U_o%|E>4V)lTx|#5qE9Bs&i?>B;~zBayH%tB{fISPbvnDE zkEus`=W2L}{TEBZQ{)Q(~FV<*2d&yZo-~9^IlBmt#y?D0FntLcp`^# zsfYHVVFF-LgGY>!P&F&3QlaC@kVhZb8pNFGc9j&HkjSJmw*+UkQR{kE+cstAkU{v( zd(&>F2Wx->F#{cqTTcqy*ci_M9AdT3H9K=na7h?R6Y4p}D>$r%@mk@?8}~L&Fa>UU zgF}BvJV3Bhk_BM;iq2IYuHAvS!LLR(X@-*G<4o3UZX;HTcp#NFMi}laeT8cDJ3HMD z&IzqwX>u^t~q)Qve>OM$35m7pyM2k>{)=8J?Tfjm)WE3a9KJ`0T(=5gOQf#TNOa*5IJmd`*Trkbz56_ z7te4S1MXT+nx{2HEv9=9otCk(sKB28{)d* zH#tUybpv&%lOzUvJAzr;b~z&%KW`N_+fK0!>7UAKYZo)zmOi%A*ed*1S+2y|ZOGe) zW>i#OFuCtqO#*AnrbU=q+dY-Stc)T7mNER<^GYqObiE^5Kc3WLxwAxX%Ujz=!H@pq zI&jU2-tR7C8>#>HTG4Kjs~?Sd(g=G<&Y5(eKPxDe78H>&1H>N2tCOpACwR_j71^ zH~6eq)5{If{H@iruaj*u_F_BdY)ZQp2fk3ro02U|yp!pvaoc{m- z>F%u&>PALYlWNYf$`lvvxM#j=I@<3?k5#u(=y7Oz_O9SeOB=KU8+#~mt>dP`B! zAh6P{b!g^{zcX4l>0IO!kLy-(XuUV4!uPkSaXqY3m?VNcaNzNue2RL*T1^XET}s~4 z8=Wt2@iMszo-%w9SH@0`&*|DIv)ALczPX1~jUyAs>W!~1KbV8x+NiZ&pnX?PxasKh z`->^9+DTU4COae~=aJ(Aj<4!ywVhJeRE7^t?S^-;$Iwp-aqU%F?yu_WKc0$LiW`W6 zHq*%@bIog8?KY?}TH3%7+$N!J5!M2{9(f_X#}#{Zp+nTYPilY0Ry!Fj)?+aRl}H~_ zzB_ZpQfYcTmtL~^6K=-9%%#42_|0E*)}N?pHg`AnEpU=qzUd(-F(RMTK0qAO%|x8D z*7jbesd#i-i)%Z(JCiIjmmm}!v7ef(zOmL|)ug-B)^(a$KB-R%sYW zK8euI2u#qs4c6eBh!`lbNW@A03y)*iCqerNW zJ-kj%P|ACceE$HwcYng2X|7|E&PhQkHvoC#@8-F7q0*Y9dOTOHY!=2hF-a@7*4R(d zt?gGIh8pF?zOe)nAK`M55%nB<1MT;wQ+V84$A^EW<$p~XvtA&$6J%s(9Q;$oLoOHs zE5p_0(a!pY>gMZSjz2;-j@#;Ej&WC(_ff#?!+`7BoYXA$MK~(Eq;J*d0;ty7cv0}ztm@j+yqA9 zQ|u~>r0pZ=m?XEh8;b$Ci2YCQO=vH*g$um_&N&(GYle3#mkyJsG5R!ax3h2wjz`%i zj1$_mJwz^cI$AhGA=uy6vmI4!aM#Ot(fvyxk#X1&$gM4n<<7e;t^8@UyD4wD;EL&c z+cT$~E_*!$EEi|^Kg!tTw~}krP|rT7w}?o$bM&d;5${iGV%qBPT1gk8@xNj`nyu?= zo4qn5v$m5Bv@j&_2gOOs^zqc4MQx|b7D8hy^o(}@0P$39*U|*Lmff~VfEW*?)5cSf6W;k6yX`aQTDCglXH0ulv;d{yE;Y`0yrNztx2TqaiVLMCvCmtIJi#cLCt6y z7#)^td=+K>Q{J-Bbkshw%<>s-NGF#60Ou891aib#R^lMQa0B@j%PeK*ZA!O~P)L;U z1B1!)QTezo^et&8{f;z8qI?F z?!MI~<@s zrEqw3BcD9f+lzZCX8szLa(FpENu+%(wh%8RVdQwtZcl90NY$?r;jOK-=P|_LB~$=o zK1Dlqr=QG6bXse6X2Ju{^%Z3vfdp76@*_VahW%f9g|285T-$Dq=E{-$#0(0%iK7~q zOxa!rW`;Y0KBkQRlHTMBuF!fhbXm`>r^6!7gk!>kRyI&9QLDi$kf`EGN#d5`Mvi2U z{6x$p&cJ#8^?isVq&jCrm9Bknt-%QcF9e?%sG6Rnx=xQJytWWU8xj0N7(9LIb^U_r z=heNKJn<&z(oA79=BqUb#OQUrE07B{vg6j6>JCPusi(HnP=AMMa+rsv@DQzVKkoN6qto;o+np2qV@$Y4)a;l? zEF+!79z)jmIJOGeZEmfaOQ{)UD7a-AEZ)^F>#6lSOIv$?QI-Ss6x;3C8q?fahtn2& z*is9dfHx#ug*8bn!dsUbfQYOy>VV@X z2j>;e_5Pl{wA8NUjtK7IftPINLO?8V1!ihb{+41? zJ;@$wyIL1keMZlu$s6c*v7=ltLFgeP>L7L)_NWm@f28TN>N@J%-^nuwZSChIJVVQc z_N$(-8n%m}9WLm>Z=+3aj}cVmnDQ~_Jol{k$iQm%PbRq@p(OKansQI+qQ3?}z5pG8 zsWR)fI+s;m-0QYiww5gcNUb6LNHM_Y#Z+|NwxM;eLv3LMmlC7yRZ*Xw1#fzCYp$p2 z%b(6)T0uKOC+8=-gawTN{VF}`O(vZCLFqxOL34csApc}aAe-|zX=&1^v{xOqW=K&{{X7o+jVWNiD9-uz+s&6*n3sp zx-sol`2PU8dav>#DC1j5mMGOv1xK3awh0B5%o0y;9O3d68L%_p*Gc?ivXfE#MZJbN z-R5}$st$J_ist%=HrI%y8`X+J8ZtW&Yd;@GUAkXH_07GWyEUexV+6L-sA(a$j0|lY zC_dbCS6Y6rq;(%tM|QE>=xrEj5t2+I745it)+y$}ZPN8lxYM=knBv#%!`&fZuO9)T#{~P5Yo2P!Wnpmk@*E_D zu`9`3_5jk&=~~XNWsX9lB|-0xpK8wPw{NN3iBu1uF;fzc-%ZNM3@hO^&h@`R#&CE%Tt?K()8P@#8$Blis+y+ zsrEm5*>&eh#k)(M=TTV_dxIOX;K#;C?^BI%sK107q*L4-E$-SYeXS$H=jnIPf9YEb zy;Tn5_2Kg_n`ip1mTVcxnAN_0imlM`RXBF}Kye@U}} z&yT$@q)mRdp5E!+`5Gr+2I1L+{9LoL(+!Qcr!>RjVE zJ?jnlg) zhP_Mqpfp`aQ7~J{^u%QSA-;WubHnMFx4rA#I_6!daSL)|Cj~ynv$~{zn=)Nm&V5K& z6;u4nRvmfxXDytv-)WbY_mCz%UqOK?Pus;)-gH-1=r+)5S9a4!2>_`lxW!*9ty0>F z)fyvN-NSsleJhyN{*MR9tqc>H_vX(c76b{N)J+Nvm-SN`*6-F%0w5aj(PU%{ep1EkbJAv*q z&TG}ioRungmFI#@@r)mToLrPbiA%nNChO6YpNd;Jl2Cu6rIh#YY7CNF*w!ZVPv$!n91# zfPr#;O=m%w_QeaUNse#>dsmAuP{w0jqB%SLhnn*uo0xL!IX~Kyc#HLrRxyBp;31V zz&^sVx`dKjTdaHeJS1z&ACp=wR#Uu!#4ow-O;oHF;wc%<=I`}WUqY`=l1oU++^UdH zcX|H+@zYoOo#o6jGR)!=& z9Bw^{$;hXr4A)BEtg#D^9Qdr2wyPo3l~uMz_yAU#Ys7%={Y(fW`c|dd%9V8*TTCs= z{cFi1#b@>K-jX7bm&i44Xa4}(n}-=@;2hR>TP_56B(_F=)otN#N|;psb~GbsPzTzV zUcUY?MgC62RD&O(^^t~gkbSC?Qf7A`kT>z4YV+ll>6tX~DcfxBNXzzGu104p{eTz* zkDh7Urx8M^#Fqa6QBll-D}U9=2ajr!`z-W>s@z8!wmBz)L9CU;h2&y+=B+iGrzdG_ zfuA)^?rV*%xXnU$&lIEj(gR96RA^^3lv3jYfEe>Yly zKn^~}jAOW%29Ncm#UN450CPd(ic#CO1pPMc?Pp05wz8eUhl5{F{v7o*eM_N2 z%)|2$jgk*Pdihco!*TCj6Y#UETc@?C)>kWSa6&lnJ&kqzZ?$&Tab)L+V6 zdZ4jYJfAtO0^TQ3Dqt{Sgoqn1(#E;0{+S({6kZ>|<;aPvJDR;}H zSX;{|kZi!+*q=WY7WV!XX=9x21CxWuH6B#Bnbo2FEI!!9M%3Z7)@_lVLmbgC5@6uw zvn1PFKONjL%ppvlITbqEX58HG2aHvGHfXSor|MDMc^`VQum#zDL;#N9Q!No(ZzE=! z*_Z>Lr|06Z-EXH%E!mN9LC<>HYgSpErh#(l&ORz8sIlr6gfc4~qd51iVwJ|MwArq; z4TtGwJbYJ9=(}k&`Ngt&v%Udl1L*>&-$+!{Mi^!{1fJc^bqi@A)2+j45pcP9V=*ikFXBBX}{a^!#Y)li-5%dsywq(jrF%cil~E}rW0cgX?UzK;G`mP4Sneb~ zqv7xz9|oprJ0+LXlEr;V9OV>!BzVd8u2-vDWpxcZL$lMYqw1Y#-78Iz6f8GHr1|)$ zADQTM{MuYuT&1P7n_xE5{{YuM8}{>FI^#ssZm*_Tw8`z~lHxTipp`-V%D;N8zOl7^ zMRYwLIVP02b}Jq|0Kb2KH6+~SHf7|o*7X1`Ep-hn2ODOENms{aWIfJ2)$dK-TwLAU z=?P{v4Kj6TQsq-;?!fn|9YSRFBe-8A*FDuV>22=X&F!Rt;$q6O zXK)$dADY|?Nws*=`q~K~mfiLX%WI4yKaBbP>N?u$7gOC^>ZDuhS@n^wWEhtN^ylCG zYX1OzC5o*E_-WV8KCN>*!zu-6qLXZxtz7+UXQqBaZ8ixt8*ur!$pTHB{RiJZ^&3dj z66y)P(5SLz)!tP&kC~t0M@Ws^tP|1 zzMJ`5twQ6~w*!`rGspwm6_c=Qsjv5bStfF!ex=7h0C}%^#+2H2s?p6Vl*wdeInED? zzUb+k>+xNo4L^6Y!WAt4s7^a!K2aed)M^C`KPveww)3B3RBvVI&q(LPHip zc=xE+P$%W1g%|42Do%4+Ylz-J;S?$EerlTL6jH2DD0wy89Ja-dL)YCsG4-yY!4VAX z6$|j<`b|3VrfBjQ4eEF}9!Je|e@fQdP?qZQWq4PgO!JXhjbBPeylb5v0FcNxI32v2 z>8^InZS?&?FWO11*fJhUlh5x~c2Y?+$#X1msz)ZkjCpUG%k+keCZB5_p(NNBc?AF@ z3e|pCOpAko69PVcs};EQt!dWRPjeWEjPZ|dE1PIKmHvU%vRR2F^c~0u-Lv4<&r-aV zuR}DZJTMRc0C4xL-&NbXYYTY^<|Plm-k8ocOZr@O9P`bpMRFLbHaBh<$*9+tBJoU@ zS$RMT4suBU0E%;3ne|;NIX3{?2P3^jwzAn2L5XK|+{ZoZbB0wZrQTb(x`CYK@FNEq zt=~sp6jy@w*@jR3LUW3&y9U`Jk|Ep2`_#y93MZ)&?it)csh2US!p~HaIM}tkJJj*K zd8~G)smr6vCYI1ljrCQqOuSbkv%6seu2*8?^IFUUF&yjkwqDgBPDw;KGmEz zI4eJEuik5YK!;4RWnzRo%)3>71#O^RO4i;>tENK8s!&JBZ+fx+011v5OluTM#~5@N z#XBq^K#y+a{{SgHsVZq5=F>GWJsW-Of9hd&^NRHjo2J{xz2Vy+I3vA0sIl$|5{<(d zLE60D!6Vu-rc9saBfU@3tQLD{&dYL8ft47~II3hfa;*ExnOL4%`F`~oCc4vSTZeXk z1QFO&3$0vROvK86hbABU++y>NdUKVc+fXHfMZ0xLY6K60JB)YBR@tzrDsia zt?PYTU(ht2)|#2UmB>>Q;4%;M40x&?6H(SR2+T8HTgi6ADiux_{{S^3Tax2e%G}$u zZ7y=a}xN4pZ-2*3)Tv?_S~r zYeKKIWmjqDyl8!5`t6i*+-gQC;g=6?+yW|e+6v75X=Z?7K zH0UkuZDU2d7NLeh^O8O4THM=TdKU59#dv{-uOS%V8k*9w`bSLbUYD&rk=*0AsKvIg zwOpo`HMN_>mhRiwmQ^?()}*!c)*76vGzQ+xXKUv>hs8Y(wPAj~l02Bt{aj&c%9=^D zw~zcR!6umm6XZy;r|VYtsMdOl+D$As`ds(S>O)Nb09Hr9t8pc@z2Inf+)9gtVBbx8 z^o{QMy+*fo8$%8%E1h)=eKB%v0Bu6j=^TVj=P~?&Sp5f8)vS7^@K|aSTieLsOlCO} zpC{zkR@FLw++0a4(Ix%!fD%a?A7SxX&1^?KxSq~6mf-=nRNO;*=iam9JE+v$ z>3W5znuYd?ep#Y`e?=9ukbpbuSpxqP2jocqKsMR{2$)LBMTgX_)9!lq* zwms{Z^*2++s9K}gOCV-;{t^yA&$Vt}b!%ULditfp*w|f3756m@ z(`o)A$TtjoAH7*?8rMt1r`^q`%>>d-HdQf_e%})53WaVg;n+{je70H@ZcD$H{DH`xb2Vgzwv+);0x4+eF zme*6dy0yJ!NMnt?O}kDQN>jmP{k2&PwEUu1Xio47p6M5r|s`A zb=0-LNQ81kQ!EJYT=wgyLTXDim!na&d@NJ#IODPr;+^evrql6lblrN=&#km;mp-(H zCPDPHY&?qOI=pcUkt%wRwL`Nva>vbgtBX|Y@5AYYdO}(18c`95p*#{hoO{`e#t=}Hv ztaV*J=c_ey`3)?i6aqVV26$17U#?V`k9^fX zNJj|j56kNsRCgC@&or>eJ09SFO3a>)mREX~g?FrI+Nb5DguxzWmHz-toNz^NXV&4m z{{Y%q$9WVN5i7#ug2UZSV0zD2)84|%TZ2ruaFUqiu^;r}9tR%vN7dhmJwd3ofQH#@ zAXN=*1b_Xp@mI@LdUY*pMH-fdRuazTPQ;b6`T70pm0#QGwi-0?Un?%C2?KHdq}8s6 z*Ecr$MBkdece|CstiZd*d|uGUI7g`hDzA0D-|p zCx$1C{QOp>I+OCV+WPJq7GF%EIT;;|W-as?C$|$@D@dVnCefX|X0IZHLy=!io+i_U z&A52p<1EU{+^_!tg;rZRNb#y_GPUCvZGD*lJ@M>n3_V{hzOI|%SYhno`1{pW{{ZJ& z@(3*N)bwjPpb|30b^6Kg$7qbW9Bj4Jd zD=j(HR~mipx^JF%#20K?;RnGpuoq~}=(L+QpVSY%Y4nf83zEiih1yaS zjNsz4&(#_}ucV6$*d$5!Dx(Zwcr8HC+RpJU>@EhO3gST|eYX7k)!mnc-E>GbD7ADx zvYpw;KGmqvr`s7R&lnunC(-XO;?$(|V0Deb*r&EDYo}^W4YJ$@3mYA{&2JuJ#>CwE zj(d@wL9Y)xEQMP=vOHB4wyIdLQVGsSH7ero83mUld-$p+&3pnV$oL-B6Z4E^CmXZa zd(;5rx2L})yB~`4G@Ev)Ic#7WK{QU%IcGmkPI2#0H4S15By}uF?g^(+SVno}xEZQj z%P8k;$Z*Zrp9ZLjKBTfn(@V?aAd|w1sD^1TMLA&C(=Q>LO8`aeW^((4Ef182imG` z<<0D;dHDd2de4{!@e#4#NC^GOuG zl+FVf_jeiKgYQl{W$Q?{Q!6nC=o!iJSCdHd$d4ZdzL8LXhBV$dBy-OOp3@nma9r?* z=^phx>8bRyxjPm(yeAb`s2?5i-lsgdl$P!RI6n1PsmejypBXhWvPP=5Y0swaNayJl zPdN-peB^LB=M`f-!B3_*z~_pjx}R?2pViNA9@WNDA=a z(tx8PkJ!=00rN+HdMKbVj`UDD98d)T-jI2(Kn(W&lmL166bOB&6k>oV1Mxt}qmODl z@+c1GiaQL^K%?B!4`WIPBZ@=Z&;yR*m-eJSeW=IJ+JOH6T078a9q0}{==kkNZ1KsX zup_+z$DHDU^Fa0#3IGZ-j%h)~ApW!nIrB?Er13z$C=_Qj4n4S_2*IL^Qf7nFkUP}N zIm}K7J-Zr&3C9)f7%9mnv6S3L)Bga2JzSkZqn#@0^Kk(E*m$jhCeG#8h6LfW;D610 zyU^WHH%;p{*ReYVRvXtn$C~d`BthBkiD zauWfEoK@|nB~c)73FS%iSh#N_gAgz+8v*ylXf)EZL>XA9PRBW}*<->vN4!ypO&mD!`rJHI|ehSxhjMKu8!oADVo3(NHH4tA}L) zm8(@K{uDcg9{`j5r^PvB{{WPqZb{sOKG_w|{?+#8--ue3^jF%Q zrMO3mH2oRD0QWV^8p=yGD{@Rid`NP6$B*k>U-2KO4c4VC`drN!nmiOi`tjnqP4do@ zk#JgFoC3qZuDDJZrZn=cF2bOFU59$;R(9&Ir)05ao-#*~&2!$LR=d@r+@o&l==Rsk zYpGkn;a!pPN%*Tdi;JvW+b*-HT})K9yhtI12;;XbKYC3T?o{<6l2mt6VpTzp+|wE* z)1`z6tj1Xxm^W>p)Am;QyL0Oq7;p(3XWuo$THLOSN$rEe?D4|x0{viTpMSk!=jhvM zB-J$w9a{3r=ZVNe|rqJQmX#|7a0JK`1bj!`kUxC)>j73d9JP_QX>!(w%6H#Jds-a{-4qzw1Fei zPO9$C%BD@KA3U$y=BVN5dwoJVb=WOG^!1&TZ|X+!<))QB=4jgJ z1dI)guE6p3Bi^*SW}~ddr$+_zNQ7=hos=A(ljPRqPwfiBrq?zeIL^O0HNL8gdq0Bs|{ z`K@O_GwW6bBmy;zVYA;Dsyk@W=aWyEeN&90oAa1SdYk*Dd|G zrh4KumgOGiPfZVUM}LZ~yOQ4e-sTt?noan2Z(;3L{X)z1;diLPBCD-5S+6dZK^wzp z*eu7pS4sBI=|^XEb0n{11Bl}piH~FPQ15lCy**gIN~s(X+PXygC5$!_8$`^6W9K!5 z>OC6n^&S|QM)>7h&&^zNmT;QV>dR4r{>mw0m03v30((^ky{$=MX>lYMLIOBqdt$lO zzgJ&qR~J@t06i8XBeAJB9YJr@wk>XoJ$bOKN#iw-DNU$vy29-0(c~O+(^bnQ)!xr1RliHlFuZkX$Nlv5B08-7M5R_ zR6dzF+x_Xod=O<+6+QFjsw9<~Hc42sj1iA&^0yv|KS|r)Ij4&4VKjzy%9S5i0f&mu zYWfV9A!Uew&Q4Wo&|XCIs3#1+=Hof3i|L_aa=Gle;**5!jGse7(YqqFiU3{QfnMG> zyZ#iCx?m1K;MT5Yj49h5Hu%Syh}Qn1moW{^{%!!ROp{6zrdbPjitVM9&(s3&2&k=R zv44ecFQXqM4&+tE{iV!F>IPCr(uwc(ru3+$l@I1-OG#s5p&NkI-i;tlt--!HpoNTz zpHB15c!pW;A(CbUMtB_KZ`!U~rk420BV9+Hc9l?eoPT<(kEUmh8fCZ=1w57n419rC zXsXrve{^4%it=R+KCv0c9@wcG9;u>q{kmHnv&h^A9PB^$RmH2?M9&*cuk`&u42=6z zw)zI0scEfo9kNF$Z>SZbjg(`i+X4*qw3dNJ(TT{V`jO3f-;MtuA1e#ui+$P(HT*09u8m&3B?0-tFLt9yM3| zxIB^Z?@yaue^UnPd+T^2k%){)pH|b`id~D_=`AfSkcEkd5&dI0&zw~eu>7Q3);Pj5 zVU?E!y@>Xys{?7)UcRp!H$H*b0yfe|`MIc3b#9aD&vzogmbUAXOXa^~*wmLxV!{bt zc)^K%6^9(;0iSMaCZVldwX~?QAh<)sWaD?WV`BVYNwsO=R2McQhZ;VJLz-oy2c_ z<0#%n4{w8Bgb>-<{&w|bg^(4G)EU@*LGM)8r$^N#wYQs4w->v{CPg3<-)&WmJncCB5VFf*ZED($)7)C3pW`Hc0|DdOxn-@w zstBE9OmgnLH^8kwSoL%|yDhNOql$QeMqqi}o=@B2tu#-q z`P>o5(mPi#Da~DdGBI3BaIsvy+{kTP5u`)(`yAGvLh4SLwA1dJUD3tXqUz-?1CZ*+ zv0+yhzlfH-CXwmZ9Wh{*(a2xdyN@q%9)6w=YNyfk>pr{dQks%AkLPABh@<*KpN|5y zy{wNB^n@3N<5aNMEtw-lWm!ItP?5^x;=Swo)~{*PT0Wntr>c;%$eWm!QJ&udyC$Ka zbdH3U@Y(5cJhpBX7~ruZ$sTH!TnYGo z(94z!^YdL7@d|EQ<_H+i3Esvr$H&-LIn^|6a?3(G#FkcpuaEx#q&o+44}d&Yy5*KK zdqSgQVy?8it!t{Z=xlVm5pfNZ0`AL#S2_BRwR_bsueDnp64AsS zm7;9h8vdrwXZNVrH`kp#HrrQ4w4aINg~%-Dza9wfQ(7ZM1@4*E1|1$rS53K!7cTp; z8IT;VDQz^pBGMSOjYD1Eb-(`ra}Z)Ae*g-D)awqV)Am}mj-IxV`ktFy1N=a9jzw2% z_IB4=ZJ3VnOp5z`W{9B!#a&+gqD{|3YE3oe%WgVp9=lr!GT?tH$Gul3ptd$k{{W~o z%ZIdRnAtjwr+mE%`b-?B-&7aveYkDm6S>5T*^4#Y#eHh2EtnXFZ z+*{qLxJQ7_qE(IifO{I#byk6G(>IoPaRhaUjmeDUgWnZLs$L$n)h=%Cu6;I+G3l1$ zw*XbU>a$b>PPkYWa*4oG!2R=EPJ+L%u)UTIYD5;1kEvUo-)f@Qg_ZU7 z{pE(pZR31J9zRgcJ*K!)M%x&X&poQ=L)4e^aYKAkJAL48E1Z4Dnx)P%Ng(HddsFt2 z$#E!w2+N-MqBZSnYjdr>mt{Sj-y_s>7lsCB-dzR>3jbrDVDbZz0sxcI2U z*0Z=E23ZlgaC3oM?I2!tn_9uC#%^t`t=c&D5uOJbsXt9Q#?%BbB|*k{^IGnY>TmFg z8W{;N%B&8-&U|xJx4I?Xn>w|{ypbU!h9kJoin4fYts+T+lFS1DN7GV$q;#&6{GG+T z$$2uLP;5qF%AarVP_8r`M@)N^Z&pi4*fdNz=Ci#aaStKrmaS-ZZ^pw*gycEaaKK7p$ljA;er_= zyC8P@qd)nmx*dUUTj$iVZ4z zCAwshrE7UMn6b`0ADZ$0Ga-w4w~;XWPZ&A&tFd>hYDUJ`&Jm8@R8|XJ>N}U8>0lL< zoR9RY{byNHF3W;aX-BM5G~XZqF5rzP8P&vN8Vv2p0s(8IDOEnwz%Q zB(+RN#DXwa-mjkKIW!frHp66RI3KCcy<_4~C%{z%A2obuq^WOzEQE(lj`*)0qa^FI z4#0!%X`N2vb;GPA7}NkU=jOcW>;sL%l5x2B`K;@dT?nU^A$=iHE9YvDUBS_o>&Kj4((7hMVcyaBwOV(j*>bKI4pe9&RU5Zwxhdq;1g6@jJan}bIwVtStr{b!ak5csj54f zK8IuE{U^`fxo1Uf^rLZcv}c}blTnbl3J!fvd-$sjLO`UQ*(?CS@G6dbjBb&E=e9h2 z*ErNMeK?LEtl)v)$*knk861E^BN=lMU-=qPm5Ji6>}FW+Nn^}|Bi^f`wrfa?VMDKCGuoYWg(O9h zoSnG@e=TOocGRgoL#Vtq&lp^=Z+QFS%npA2po2 z&{e0nmn|FzC!YqcGDBt)s8;IP<|wh?@DHDw)AXcM-&@CXoGU5h)+Xg3NQ_1$^wDif6>y#)kF~(4ri(a6zvT8CF$717rJCO-@UNa8!|u_V%LA z`KP*7+CsAAXWqHV!1b$ICa0v{+fB5%QbF=Q)$^B8-Md`8LPvPx8&u=XeH$mKZ8AHb zrShkbA2q=`*FkMRTf0@|C1WB1*b1^#s!pBNS53Mh(;>SbV_Hiq=9>6O$3CNApK8PJ zG0Gb~n>hD1b!B@d#(V@L3rQF&Um8ZMfZHS;tmv5^mMhN*evAomm?pan#W9lP)GAY34&1brk zMZW4-Urf|)y$eXN5JJ0)W8Swe(@t$|_Me`5 zpG>%E^vKm!ZRa2n8Sxo2?LR%_Ea1@VvsOgPuwT*6FF5UqZ zxlxpi5yeaLz_XKhn6|b;`ptv50K|<%d5N2FFcgnWmM=W7vO|rCeOd zvSZW9ZUM$XuW^vb8M}ec&1!B#+siA)9oUj{$J(=c$v~`CcW)g0R-WqQI+P@;u;AmG z$!jq(BgYc65;21MRq2#{I=b$paOsGuIwDpx{pw^W_!`t+CV=S}UMH{;+gTbs! zI-6*^iL<-jY$fylU;I|q=JspbIHR<;RE%S5ry+$!pKnGPmf;FJ65JkmBBI^o-};Rh z0Y}xl$g2pVcrHUq%tUGQ;P$T*+Z|y-AtMdTdk<=o@~&C0KR=tI|E#z zD;w=THBX%ts8S8<8Oj1Gpck}j**z)h_t=RGjJ++%gYux9=m5f z_1wCILvlVH{9xj#t*#}tVizCuEVSJk%mxWw|%mWuBpfZvi)QDbTmsSE-lP6+zAntj^8Jmk!8A6 z-zr(J2S92B8z--12}4B#iUgpN(XlHnQztaCq-t zpo7$pCkg<;Bif#3SnxeSFh?iNV{K_ut38f}l4@F%!B!vBxaa#;Hg2qws)&-qPq=8* z;5N=5=BIU(_PU0k1@+oPZnzj@o!>aEPff+A+F3?)zznC{MTlT2;1 zlFcdM>AQVKcD%Waq>@GpfH8yeY0GySG*Zk8G<=P{h6lN)uk}e%!DO@xAe3XjAGLF? zs@3l_3!hf#Ni0z?W>z~ z6I$IxF5|ooK0eik)w=gk)S-Cv_?F%VV#yfb#(w_Q2TRe`Y-(Dh-mzB4rJR@l0L5~@ z<|#c2@-Hn z4;1f6SZaN7ttFfd`B*#1(XWr6dU)e6T&FeBe+_i6!~I}Q4b7Z_@)RFL(&1%3ar@Sr zOwzP;>R(RF*0x7d(a#yq!Z;}36_k_k>L_$6=F@IvlKR?ATq@y9Mh{>-ADX|POcoMZ zYI-D6TE{vp7dGz44gUal!K)>esMKqEb-b3JlhiNaiGePJ_aoxD#-;doDm&^>MeDSA zWf8ZJemhpi&O41p=~8$^klNv6^_L`%x$#W(7vf%n)5{Oor0M@ikb9kB(>ap9!ZW2=> zJ~uN0duQ63>oseO3wzjYC$ySKLo)$^C(ppG@ew0N(QdU(bj4?K@xY^bP=1FW<;T5P z>e?*2XHW_4?4a6HX+#-2ykq9I{SRktZ=u`Fg?(j!WU%Kr?^s^0{7H{Z)Gi~kQ9Z;! zsy;FUdBtbXn!4cEQCw;ooXpqq{!`G8GT`wPe%SJBnCdpt^)9HIUY-~vl7)+T#^LU0 zzn7>cVSlK{cw@LcGpP#y0P|N}AE;>~R9kCnZ_nJ$q&%}_Oh^9QRNt2!GH*}mh3Oql zCY9j0xsGFNEvbC27;xjdl{BmnA^$fP7YmMbbK}@oM-(d#s5BV}8ecD*c6X%PZC^By07L!o4S{v`Y)# zpN2VJIR->$4=VXB>}u1jbk2+XIMQOiOIMRy2tO|r(t3;=9mqUjR34{6_${DX+UVD+ zFRn>5T)X7);4gt(*47TD{8iU|X5Vuz0=$QWLGDd+=PsJ!DJ+S1Ysi5)(>aNNXCZ{Dyr-FvB7X?l!P-!O9uszh8qTR*Gd zVySF(YsnPfLwNEC5Hsfk3{M|(%{Z&%-s&%`brFWkU(_x1yLAN0u(s2ZK9EnE#6GI` zI&>NXU$e29*LPs5I9_T-uv<<401v#@Z=$`p3?%%Uw&KA50GN)$&0ci3Mrs{Fesvwz zrpP`S;$99;a6Z*0w$ExUKT*DIKHp2X(O{bD%HR`o3X{BN&O6num*I4p-Sz631b6HI z0K1AeIadeyTiE8i0_hOx`%=Ov?N9(1Mx(d6KK0Ey_Wmx9Yq@N%+DpsgNdV=-pPv-; zx@2zjO;X+M?6pat)6!{~1*t+t2lD~`^%q#No2INT;*u#Y?e5oYy}?j+;PQSdyHB>% zwM)pa=hS81nI)xS#x?iJsS%&93z2efBUw)PBqRgueX&U{nNR6EZ5H=SlSy}9@f*Uj z$28{&60awdVSIKhIN*4yePgC|8*4aq_kbm(+mePh$d3o~ z=fyL3Hk#MgGimYM8=#xzAml8Awmt{FPQ|p^EtZ?p^D&xJ)C)O?M1=0xIVT>~pT4?| z{@UDIw2eG$7t$TFdz14`i8ThkxV#cgG@nz+CXaAVKw%x61!o7PDV%`Fh2Ez(XF(r?P_>+ z32_XHOmi2&PrtoY-Q1WXpHGfPX!o724-B=bS9)n6>-b~7y_)XbF4E<_LX0vu4}bWq zl)8{Nt#KLyx%aeq!0*^nLuK_xxL`;y2|PF0*S$wedl>=%e@=6eRz%*>u4NNQ?x9s# ziBJz?O}0uD8RYP5(TwcQ21g>CFi8+y+$)X4&lO`P&<0(nz{W}MPFopZlsNrJGBMoz zRI5EI;^9xHvl!=gF`D-stlmdcP%Bn*xU3l z@JE`Hp>)0C&+FY;$r>=qmR=27&7}TbKUQl*2*+-HzVz1(X|F%w-A$s~+Z(%ge@K|j zg9bcz2DAF#LS8kL4+L@kSh|F5z>FU``_%@UrZV3cp_SH2j>w4pC*rRX5#jsYwKQ5<=w*M0hx^h10ju>KZt>y1940fMyjVmp%bL z)elwaC3$W&D@9L6Cm@h=3HBc~UN!a8uWccUHHzJEvKC%J@@q4W$;D`sskI$e^48kt zPYAKeoSqNuTC3aWq||NWSkwoP4#V5;Sp7?=uJupO9VQsw+R2s8(+{YhicMl$iEXso z^_iraLKVsnr|bn;ewC?RP77<k#KYHIIHLhBTVvZP5PzC}_`6j*fC5@(?phk?S zuYeG*li!-F)FQr>&HEOL43ijc>}m$JB&Gi(6EM;5l_;@42phenZYQGas0LF=MY>* z0NTm{JXEuSE+m7}MF5sVzy`gk+&~T6za6QmE)0sD@wU7YReOy0C&{jRn`qtCs@xBy zM{1+Llo>Vx0s)+R)rIZQL<`w@z^wM6bON{2^#RY#a=ffpYBxTlt$=dhPaf4ns9daZ zkTHSaRJ+;2<-yty9QmyE)V`~pK^d%GCY>>!%(E6Gk_~zHrSa`aT-q)uA9^Sh2}lhn zqZ9^s`K1~2M{sEW09pj^OF+#7&w2&zNsdU(9MQqapgd85iaZlWIG_mTgYQ7`iZMWO z^Gn{798f3>ai0{pmwu276IJqly8?nnCZ1PzcQeWSUd)MrjA{Kx5jMIix+P z2aIz-pr3vZ6rG2P1s^m3<0l+af_eUw5B_449^BFeAKrjQ2qKVkLEzF*e*XZ{gYak+ zpXpR6_oIph7^n>9jB%guNGVS=26>|t549iGfkitEg->!RkZaIx{yfyPXy1Mtb)?-b zti?EU=*U9KzA;}$$>{2q@!nbxQc=7xHSy##6ktg6?~3jpgB^Dt8YZCRuXtFV-xcZn zFPp;u03KiQ{{Z;oo<8HJ-xj;m7UDG`;?(_LKQ*MW)j#~5Z#=KMH&CzdocF4Wn1!^v zkdqvr(29;Fxwp1+Z-(^p3XzaTYw20HIa@d-j_Dm%L}D|aigME0JB%4vDaT>%E1u~6 zK|FKJV>r(uGu)4A*4gW*>a8Z!B< zJ9|~&WWZ2P2ORNHLyZSuUfxIi~oIO>j?yTAI!)Ir)C9jl;`aH2-Q z08>eCGui_ya7iP@b;jx==S_D+I(OFWczvzMV^Q?k)HcF#?ViL}O8i#Q#jT&HA;5MG zxOT2n0No%APTvH0rv901Z7rsU>WqQ`1vZ@L;<_J6TuT^=UEC5GK^&9hRtrnfbv--M zn(`?nv(V0374qxb)ho>|17cL>hSTNg3L4 zRB?2?J0}+EvCe~;LBR(d@#eIbcL=w*^qrm82+BAV+}eDP5Ok5EX61^H)$nU`Dw<(# z^qoa?kI6wZzvd+VC$4vZqq*m`XSEKOg3G9_irtvvk}vwW461R!KL)xy@!JbI8dZ_M zFSr1l=RY25j^C#z)wEl+yS9Q7P^>K{20y>Wbl(hE=CY&o)!nYG1=K~RnT6CbpRH6L z{{RBIBwa(K^#-3km6hGf8>QVM5J>{LuAtU-kX_i_+Mt#d+xdvto%pGp6V-6&(MhIi z4v{o~2yS-%pnMZea!xpFt#oO0JIHTLl1Xg92Pd<0ik!OG(e;TpNL52^0Q(xd(PpyM ztS8c%KxAn5AtyQc70$YdT_&L7buA{%tH*qCR$cIP>NfhyyBE*U;9|6TabG|cImbV0 z=N&0LdbXJn-}R#4k80lNUZN?2Y#qal*DsSDM&(Xe)wg6G^wTVg+hZB$B>U8YJrWhL zN4W1^3EF)?etXv?Fz&6yh({b_#ZqcJ)C0FUIL%+pf}8gMf7YY4R`Of2Y~7xD=C_5? zS;Gygqudx-T>#&bdkU2fj}ypc9mvBd_oj8(&6BmXw(8LycpQpi&s9i*IChU13df)8 zUXNTb(nX+RAEjBcGILp*$y(m&5@aY0hB8l|y=*i+Y2?bxM1cqDAMaRRx7HvUoRI#Y z{{X}VJXSEu?^SM+X40U%k&(b4GBMh5zLi4({am!pWYoc_0-IlLpZlEaa<8vwJ z86CbW-lNhHUdCdP7t?;_yjKUa>Md8I?@6$hXxjsNF#1XRd9Iz&zl%DCy&GHI+a&V= zl=S$|?NVoUvsNC}`a@1lkfo4hiFPX<0sjEHxrVpU{{Wf3f62x}DPGxo-7xxZW~ND8COhBcybty}XQlZcp1advj*7k5_oy6amFV z)b$0@r(0AfD~>yHPp+pNmh4J`LFCnwT`C#`je^Pb6W=~Q)oEn043I%M@9$NU`g>MG z^%mgbmfO{5WrT$o`a=%FwXKaU!H&|*%FH(7zigVt>Q{P(pt~$K5?cV1PHP(K%WXA; znGX-@VO~0WRkNBD{Jb(`9ByHZn$9y_o7%q9@cLiQ{&P{3%_-+=b6WieKrkFz;wdwo zr;a|=V2&eSQc=CnWgptCw3|U<<=nA(KBJS`v6fnkA*+iEnJ(fE;Gj8jIOE#A>o(FD zHpL-8+t+T6_~ z4=Sutgc%G*GHXfHT1qR(j8Hs}keTI;QB4ZzzrnbT1g@nLCg6nk9bXw{N zx~2S$c_TJf$}{y9_b0_}dM8fT^eN}D(X4Etn&25;S3gus;eEZU&ra#`boHj3o|IP_ zmE5QRR{sE`zH?emw9z$(>HSjvJF{zXYM!AHakyu<^saVEiq06lFH)1IdXrPQzLBMh z-N)u4m5xq-P^}K9_@fQnsV`4h#3O_Btm}nikMCTr=KgQ+q`aCVH|88~kq=rXRPlUT{89VBNFTiAheE5n7rkMXf&-OTI*OXrqqA-+GIOW#EXWM5B8~=UXP{p zrN!D9H@t^*w+_P}Y*cM?@qI&I5Jf7|a@99gXQQ|jGU)OJzEusqh*g@hB503dPW&1U+0Pt~-?n)zGO zW;tPuoYzq4{)xT1v$r<>rJ_eK@llT8-1h>v9ZRP4eT{;(=tzHXUS}#PzX0{wns7)3Gt>o_Z z6?b8!E{yk=S9dL_Ufi}GLcINlu&akcGFy##gI#))LcFpu;8cmX*(TjSF&c5X0_Q(C zspv!y0c;ez4a`a5Y8=*rJIi~RuFn0Za;f0_n&~c$BhRf#YZ*3Hq6A^KSvK*L@m#Lj z+FP!yl5Jbmy0&ROGm(ri?Oiikp53jbk)}~F8@3(+=i0gMq1RE3eIiRh%;0|#JYWzz z)zqA#pYabyveV{;o#YDW(k@1Glg(r8G<(f{;VrBKZ)3~u&h_~p0<^tJ)m9qp$hw8K z+=ej8un;r$_{~%F%okJ4Eo{QVWS0vnu?0t-eXA17!Y{AC4d&7;(e~Y58RI^TilC7v zyMNnKWBe7?CzjeNZ)~9T@XY2+5KoL%)s*K*>RU}SLb{%EtN#GGjLEt;U^&KnRl6>= zCao;e&t+o?A)WsKUVq}AJ0y(ex6}G9oEKd`9+G6ggrNNCCE7>!9>CV-)b&M%k!fcY zrk|%qfB_0}7`C4F3S2t1wiP z14X1v43Z;AxM^MfteWJVOM77j?3!U{+DJh&+_LX^TO1~Q3f%QaP)(ret$TSQO8dc% z6bEU?y>liPciLCywDg7V?&UAE4bnF~vEWnLX{|#KX=ydItNt9T{Ai*2Sq?c}$GN60 zF11_DHMGqt3v*=8l{-O^KIh5#t9yQv)^BaVx}FOa87~+ca6E!MX1!b5X?j(f-Py*l zT>?Y2au#MEVOsHLv>i)F*JJ6(?4~w6Qt~3gnI6-qoA0LSC8I7V$@MJn_K^ z7RziR^zv>8l23}wSv|a_YuQy*0|)eQFyoqAJzGwiHk(l)W{hGrjW|4T5Bk+RUPRW- z2#JPdFSs8602Nbfxil~FFHcan#1{82u}iR359ED?MjA8OU(FPuZdMf~nj?@tN5xi0 zH017%Vk3m^RV0wLA+=VymF1J@Bw(1%0Uv6K9^{>5vwu;ZHE+;_e@SsdjpO+`)IjE1<|383ME;+rV!n^y7>T$FV=B=C3qeGAOR5 z7frokLO>o*ijk#s_0&-VEvWjB(!=$CO1hg!v$T*Px0^Bm##57%NwP&Qo2SKbd+Y6Z zVF&3<=bwMIU0L+jp*E)XQoJka4mi$5c++$nxh~#&TU&;YKS^HL_o>3-?%AY~g~?%% zU;LxwRmWQ8sMBb=jK&v&WsCBtF}U|R`KRxOm8he`WXpuPj>OCY2&% z^>B8YV)Dvu9!RcXd8K4O^*}fkZN1f8T6FY~T(i7WNJd!^P8v1?zs_nDeKHbBy;orP z-lPmLUo~dkRXwy4y~4qDI8f>75C9nS=A>C_%@kI5)4~}wG9!1-{UQ%FX1A)ERcRMb zrQPZFHy0)B(qi~k@1DT?)16n-_N%V`Y9#fn-wiUL%PDTys9Md`cJ`Nknf^4Bw$*jP zMes-7rpu^Br|C8}(8xbEcd@0F+a+=4votDtTUGpqu{M~oDp_1M8`K?uJ?q^4NpES? zOB7_at*akQ9~rA1U#IQ0pG4Zv>0P-YCbdE?Dt^?e#mFHmUR#Jd14!koxAU0JNh zDq8AxKBEo;H@T{Y*H-F#X&jZecEgPRqe-J{7Lr>vq{*1fcu}4KKJ?bN{uHr@bl^Qs z6L)YAlUMd_XVtp>ywJfFwhKlE(4&R>)n2cntQJmvEA?~S z(xjw=g}`3esTnu45WBJfzyhbo6ify(&eYUa&%F zRd86IN4;gQZvw{3c^T|HS2s*zE%oN`!-9T0RcSdVG_K{2d9NVk5nSzVib2g8%`a+z z=e}s|%^A=1qL37L;*Qi0aX?YqG#`x7KyyU`fIHAHao&v54&2Z@;*fv}JWxFGng<+E z2k$^W)C28B0qx`Bm&E{aocW~fK(tZ{Gx0#ZsGw)T#T3z^Zt+ULZ?ymqGy{y|wG^13 zW8#;-XdI4cga_V^KJ*N8-j}w1MFMyCqx(_YJf3LeQU$>0oYD?CrN&QsOb@+KQRm)@ z4k`kU^ikrdLI!B@ON@`T0-ylzM>xd-j`RjGN!v8MXNoWfngWAI9jSXzDxJCJthB57 ztgd64Cn3;+2=P^e?M_1>kC19fE#*JA)xU=QWd~R2q6>ymaS#f?_s_j*?QPh4h)*a# z{$cN5DD+oWT=dqd9o#HJZq#`aOl*VFuOoB46F_dol$pFDMT zpw;c9)2@Z}xgL`?2*>F)F3VC^Dp!>)^<%aw{p_K=j$3J!Lomi`A03RkcB=N10s(9R z;EMG3!b-ilwRtBH%1$I7NgisiQGo}kY6_Le{XQ!1^Y-NUOBBDvY|1=B|I+O75Mu5QhqPFyLmWb&JU~y<$7abC~1@A7j|pqphUH9ui`1&Hn&3 z2UiZ!Zh1F@&pv6btGsAB)H>dm4g5r6RQiYcPnw+0fbJx7o-2fOCtOX_R|eivUdluD zulYVjb~|ghFRkLawU|o_jD{cSTrN7RF5*nMIXLgf9Mew|x($zv6Oe1zA5PuhR(l%r zBu>g)3=ny%1wT^gS6a@QEwdzZMo@q}=fM@gHH`}QM!R@!ZQe2up4If-y~+&6+mXMu zLe{!#OxBlm%BYZx0>g@%OE$=KM^@-M=S!xUtjio1kN}ChfWyWOF{rdGMw={VI7@%+ z?za6T`x8~#{{Z1!+HU)+AN|Y#a*N!2)!vDs>Dso560hcdgY_#C+gh$a@ znZ&mDZFO!=*#Z7fgYj3kIcMiVBqh0i!)w-GO zlN&~4jP}RHYFS3#N7dqK5lbAf^Nb&XS^)}f41_8UNY5s@KTqnW8`ZJ70UQ4Swp;xx zrRldKbzRu?F@kG{$&Rk$c++?BiG&j)?GU*kK*=@Y!&Zh!ta@(kq<6THFLyY?6yeNG`{4wVuVJu#tVS$m)dVcRzSnWfC zS}95I$p_6zvbI~Ol`buoFvNX6-a(@CM3rQgQi#Zlg1v!Xf4y&w^2?fjA?a~k+Z&5; zhF?q-bRVrpkG*pV0yOC@##%TE{{Ra-_vBZ3xJz9?PYc5F+u%Gbdj=eTdgI+)qR*k~ z4CdbuIUqJTKl!a?8Lo%ZN;JU+qiP+aly8ia!jJORpH^t|>hS*nh}huBiX3B}{wtMf zU2!~mB-U|D>9k)|N&cd@{{V+QV7irt=IEvg?%>J6dlu@;b+rzAT6 z0Fe2}uEk-083&mTA78FW$}%zp8o(9VEZM@p~id);o+wCc39GIRyhD~ z6vElb7EE#%ApW0vg?J{kDqC z)VdQEl0}Jjfr2r?{p)8WGF!lYo(F6WYcG4MdKU%>Lt)0@yTxl8yRxwQZN>h9eC)fu zH$FUl>vyH<@L#~p>=gFSf3;HHJQw^dXMTHuQ4XIxNb7Fx8FScs*7dZNvWoghq9p*4 zI}eJAX7yio7mwwvmA5YdCA}@Ro6zlaoH-%$~WQKF!aNzxoNj)yx6K830Y8p-t zgPzq}1+}z=p|_kC&N-@kZC>FdNSZ$50fFHA)rX^QGc)c^E_0R7JXg+k7J9El>IGzq zOh|F*{{SnGn$p4ekp_)4cMw_@g`4=$9^m{|IM(uNWY}vKv+6pSm=XXu8S(R10VB4y z!Na&*ap&f#pzFOWTY+Y=jf97WjfOE+R@2FF$Rv$pQ{3ky*IapsnQb2HbLuYAM-}Sg z%I)nML>`#P0gqu;uv%@6Hw=I|H6Hf<3#i{uT(QRD7r6GU`F$>wR{c0`BmOkVS)Y~% zKTTU&X_4upFvP5J^n+gXyEz1GWo9mW5m17viPM(IOt7rU`Ev_VVjs zjD`!l12s2V>g_tgUu1@9lyHhGA*t#!CBTjqX{3`VqdaHknN14n4BS7Zad9WqP;#kD zhVLf+kJ)t;rt*2@joRX6z#qzk-l=t6UTZtIcwsYun?n}HN%AYz=B8R{blC4>wv-{` zXX|fl`&J&~s;ARk&GZsn+z?VA8|VYzR``gvzSbkP)1FOQ=t#%vNFzLF*wsa+SKX%5 zXQv&iMlcVPfJHOWy)AjwdXMMzRVikTpG!C{J_TkhTj zE_9ZX8E#^NM=~#{gnEazYnkbHcUtbMtP3r_`H1>J&w5M$0LxXXo;!HeH4COCBl?E( z%eRbHQ$m9Gs5-;eVDg1ONCWiNgId!TMp5gRhCDX+J@ZHJ5Z;zUw*7|E% zxO<=DJVdkZ1eGmCfGEZL;Ov590gZ8XUX7`fsjYd}UL9?Bp(zNKr;xmwn zIs23CTa6c_CANwfV3fc%a;e-C+*Gcc=-Djp&CH7&GC%7Pw*-6r>rxip#xmZjf$mQt ztp6++! zJ948wO<_O6mge-m)RUu=gXk{+{pw77xi_URS^gkj>j^Ejt+QFHH`gP6tb0~(OzDfw zX=iI&N0BWf5<7<4Psq=D>UY0{mWylok*mmNoQB%tjCrNgx^fK;;#*l{m936Gwf=uN zsg675va9?!w9%hTm9?9T(|KsyfRbD)=e7lAH7={xG%aHCJsDQ!85r!CrdR{xKGm`6 z8=Vf!h+)&%4CSVj;4%LIddBPhMFd2P6jUkz8&?A#y<3cvwO7a0onh(-0gy{E`eIDv z=ipP&;s3_|IRmu2Z-$OA>gMuX00-2^3IXgnu2s=mi^qQ~aK#+oNH3AOo1RC-YN696 zztzpf$heZ*aCNkZm5dSFC*rK$xHh%w{;t!Zv%S)u%+EZEVumfbXXEt`VO*>5<_%@_ zsoPCuhIsRdB|l7f?~j_7(}Y5H}+wpRok#B$m1 z&w9ni?{yZsma}`V>#b{bbNT6+c9)5;2aa)4{{S&zqpIn1LeNKpnHheq*rd~RxHP>o z2h%qT!r78yxjCr@3yZBuwGBe$C1HTu;{ibXS4oW-y?aOL@oDO`o~6qiv$J6T07~b# zcETH#FrN=7WA?YpI|SXVdi|kDfj~>Y*%jeP>I1Q>z%7Gqn|zC}H>U zShJRFbM>@)rXmE%?XY+?BG*lwzkw`fc(w${y?dkJZwiZ|O>4EK_ zkgywF-MeSldsDPkOVg7h3wv2TcYGNZK5CV z-dV#8T70PBmkNNWVOwi%m$OM##^;?|nKP14$*TzT+gn!VB;2Encok&5D=Ve+r>eqI z&u@Xa25;1A+S8|CNXpN9aEQEs_&Yw;Z#B)7V6!0YmCs;n$^T z6}8o^sWz9ErY1g`L_o{<@9$OVf27*qy{*QHce%zITx1{Grj1igf!a2Mcw?0$b~Wbf zTm=z@tdcZerMnN>gVb^uZq;D44{Q+ajJ68 zTCGtmZ0}*T)8ca@9DQ8xCZf-z!(h`b(apwq1Aq-R>68s;U7uG-<8=|FLl__HUbGwk z07Xr!%2F3_(qqcgPqr&*6JRn(cqWMLTk?$iGmtWK$f383`5>P5U&^oW_kB1W#Uzm! zjvw{6VUN-&blFnc@nw~87dX$FStOd`XJs3{O*liA_Rh?kc?@xy(#p3f1|!;IRpSE{ zTcIzjFocc8IV^k%vA(_qTHY?;XF2REQgGHiD6cN?4AGM^mwD*fW|2CM`8Z-ardA+P(08%qZ9z=G*bTbdGSD)qL;tN%@hfNMkzhORDDOwb0YU!s3MdctqvDWKQXwE^$`&7p(@#W`> z8BNF9HnaNblf-udGL76Hijk^mX{g#Qz{jkkIUVvVkbVz-BBjJbL)2u;UzqxB;*yV z3wU6URA*qgnRd2Eim**O7~I2d0g0Ds9x+zrvB@j_HCb^ZyA>yK`8*2R z^-ho@xb)*jRZ@170T9F|olyas_AR z%VRhurRjQH2Cfy?V-vhXQtQ=?C+LiBQ`a-vkL9Ei-JdbpR-)qH{ z^xLr=t2@(OXzO&^ZluK-WFSa;_v~q@vC*C~*aBwSM|C)=+ZZl1tBD%X^BbMVBau?n zv&0%1QIz&H_=%AhYlma)PPiBPUZWJjat7@ES?^X8Sli7T?NwEAgNnl3-b-UEN4sQ% zWn7K{`_=DHYw}%NW^fi%J0)NAHODM9%xYF^sQOM+xmjV{3byFv`Sz(gF1;joMjN2Q zbsdiZzSXyy6uyY79ER*qgIKPo(`1G~(Ws8*-|CHk{X(^lUR+aJYOVDpH^oY*jnE&b zl0NlUu0oogg*q&Vj}5>XK2(~n(6!W(G`YqdK@OeI$gA5=%G^P4BRk`hYZdQ`&Bsf< ztF=i#DXXf$g_bzb%1I;aMPA-sM{@$&+uXor5tn$$`j}&kRej&4);A=&$+h=BM>y~W zXFn^aUEkZ?sGP|Q;awbtLEoC1x1*&$RqC_pxAEJBbc%TJ3ve@z{{V4SSI-6Rnslp~ z;*iXqqCatw=kHfPiB?T;uw60SA#6N-vOWIw3d_+p&^*?8K!;<6;2Q0ZGnO1``r6*h zS)C9(kt2N^VAg}9S~&IStwS-6N8SPK8$K)EuWM%)QVon4I~*oF)t#NCu9q#IuVNln zwUaZ%e^xx!Jax)q={oX9cNzS^8HElGJDR~otG%YEtEMp~Rm;Q=3c&cQezEH4udOYw zv}r>lW7JYP`3x&5Ydlan)%4$@Yjy@$pRxEKdb04YnW6P0cVIzsSzr0H{HC^AKBp5a zD$X3BKTnV=lh}1WmDD!oMzuCG?+V2a=`}9W^5)*{<%!&zbB|E)u0Cn6D6;9+ZeAIp zJ5JWeHJrLx(n6cY(sPmCsqFs%5Fxp^jtSy1vEb*&+O!ukS=`yQ(acJy?mL>8%@qdU zRK9{=;;AGa2=9v2X?oh-L%EnK1I=V@^^tLE$^x)% zxeJNclCB8%s$EY&I)veZN40su?rSA$d8nCYE1y7HZY$Zb{KGj-!Dg!6x%uLqj^~a3jx?!|~Pe*5r zBR3nD{VFsO$!#J<3i_~3`qhSVDtQ`b^gfocvbRf}Iw0{#a?Ctct)7)R)n0rP7B+>? zpL*9?S|kw^h9r#`aG-Hs&5}bKuuLC{#Q7J*)x-K$;0zZF+OyWE43gdjD$Ls#{LE`X zW)kxun}z=XYHUFiQV z(^oe((MIjLLLl$&S)HpZX`+Xi%X=o(L&AZL-!$d^q+%;)Vz>wSliTL2I*+M?x?5UC z>?Am1zpM7INp0#}zz@)y3C4YfO?Q&sYo7Fke-EwiZlsXUB(lhN76*m*rmlYuw7Y#W zP-YWdr`4UqET{QvJ*n#2-lM6#ymu2r7(?mB0R2P8YL@0J+ZZCbytulO0Cud4zzv>3 z_o;0ry{xp^uKHS2`MWEKA`VtJQncWjsa!Cu z<7DY{#`OnGX>D#9p&(=gF~~vh&1c z^k7ye91+H9t5AsQ4y|)+u@Q_q_oRl>jrG(qf`z0Ya6Rf7)h=&CL3+0ED-0_6CZA;p zqCNXzToWliDvn#LYm1g>+G*|bRb>OuzAE_2n_t`5$7dX#tE`H7U8HgFYu1}>9I3VK z(Fn=LJ5>gNzK)}I^T|ArHZ~^Gc@=HcJw%!=oMN?u)xMm5l76HIwP&NWi|gxab=mYy zGX9wTkNZ_lt9u`#B$pss#usxjIT`q>I~eu*fV0PE6cT6k%t?1YYI{}CH4ErcEmrP0 zl}_NR!mr=nx=70}tK6;plj>-XJXXLgNbAFX)eEOT3bo#|W2s*4va*@CWw<#10JK() z3!9j(md{VJTbP>#q-gj)_0a7e;^I`cNZKfZkEK6IP4xU&w1Ceb z{ZdKEKWe;3w9&1MR;ZAv`k1lv{^q<(s;}l!+Ri^zCl14b{b{N6=3Od?wKspgM-Pa`m^20{{WWNE)v8v zm=YEQFU|*=Oa7qKt#tFFX`yF~4YE%ocloZLq)==B0O8jYDYpV=&+BI3d}65m87;EG zkzILQ92`{N@cUyUv)#rrctAU!inY`_IxRb=VZ4=|OSzntJF$g64rzYT3#TPZnCE+m zWm#cT%mR`Wdy`k)DW==&y24LBq$YycZZT&Yu~ixtktDXhm9Tfbowl(D=|%qlyWX^E zp(jjfZDVU3f1J2ey~*Tf=A@ixi>-66v}-0d?RSJxv-IgNP@=W)B|$(;+xfaFHh5Ef;e3nW9}8R$KIn^&mD}Pn-=r9+p*BLeLw3^wF_I# zYf*chI_d0fhv-QgEXU6kZ+#5?+!FN8t0ncU-jhm5B$LHyH14I>O@ucOe`pqEKA3OR z+~bfu(>A(Lc|BX}l)u`idPp!)zCP7qbRe{We<>HNy7UH6}bHN^4u_Y$Un5 zXSv)mKwY^$!oBFSTE`H)ytD}+J3wa))t$Jq>J4F4uJu=9jg*CW+CBKMGW5CLB9l~j zjsau1{U)_8UqfAU)pmC53quKjakX3qTzl09qt;ehn!TiYQn7MMxtBQohkBwN6w7gz zy@uvJ_zl1HeAlsTZ66TAprd1Ij1$ioH95VTdHkGdDo^H-4D0KZoRbDD9!gyr_+)Y&4W=qnj*^A_FTKJ>BaHmbi;<%#FoylVYV zrD=an&D?&WJ4cOhegCq3z(@P?F)BO<49OkKqkU@;%QDf?L%jIJ0S4h=DX zB6@NsY>s{@p-k6p>lq@qUEu9eRbsWOu+g!;^7 zAa3V{9`!^`diF=Nk~m5`IL9Z0SnW?tb^Nqqb-mOszL^v@LJtD98$D^IDyC@2*`EXd z05wqrPo~~9{{Z3c_W{`M&(pWZ^sL#mR7len}S4i0Z01^1*N6jv!ef}1(eoVE$<=0{Z+>_>`+Dz$VaX4j` z`s0Trc3Riz6!&q)vtec4o3K9BWp859X{{q5%)d%!{i%&3OnaN;3~~o7JLax+P>}%h z6SX)2PB3XD(oeR2?!cs~p!%3xx525_u-i`P*2JqY0fFpKz^N15Mfp(-3QUp^4hNd` zX$Z1`hBG%OAaOXI_XRodVOZ1RL zW0U@4T(iraMzmv8x{NsIJAcdXSdD8?^)uiTjAzAKYg(2fDY-Ix;Py3+xtPr4ljgkn zI$=GVcizUl`_b{-(cjH-Xk>GaD9&j=dQd0|2bwX(8UFMKjM4ol9G>)epeXO+k2DS_ z4%AYUl6b~_sRaN%@x>H&qJR{A#R7qv08!$OXcW*p3=@g~pilw$pgA-HlfX0qMFHEl zdQtQH&wM~VZ+am^jO8a?R726O#r5|_8$f%c_d-qb>% z$Rh(j=9Ny~e2VZ7p46k7USP7*bqTEJNuhF%rz*;O8u~l%%dcbVO*mU!Nw)G3Jo0`; ze8R1c)p?+6*IGU7cUI0((1YK<#cSdDufvx8Uf9bWzPY(sWdcB0OBl}sh81z8Y9j6f z6M&L|&0;zytgZT=OO9xy0_8>>3G8at=1DANTi6@)@avlU5=^G!&({^D)pX>(iI}eJ zjB#AMsWc0VSxH!lOy?k1SJHJGd)suHBaq{^e@XVJdhU`YM&Jb_g4K*~jn!$xU3TYi zIqiyMl6GB=u6cJ2$ZKH?JnyG8Odq##k<#Bgp!;-v>r@^f+O?8YK)Dqa1Se+9i)E&o> zS+nh?Q%~xBU#5t*xgM-z1grPQ!L8MYQ&`Uf>JZMwa0^GDsx$ID)n2ot>77G?6QomP zZZnb?cK)?VZ=qjlaZ3BrP@sti^Cz}yXpWO@)V4D$&Y(*En14)wOE0*p81=V)qqTy< z7LL|YnGeNL+3zCK`qh;shYKNI`2PTkv$;rMyK9(dF^55dIZ%J#)YDsan??c!tRuLLA5F>beT`>&KdB6|wT06d=D;c+o#Xz~?OLHa84E9L`0fpGvdZ5Y za{H*K(ytz8k7J-IIuG>~>!kJO(mI}7DW*S>)D%e*x#M@WZTg!=TkB~qB2nsX!;F5R z?_8?yN|7R4XC*c{XeR#vDfTtef1G3eYpdKs?quG{nGlY9XT@eDf@1#wnzV_cyN$Cn zJFplJ<`qNJeRU){f@%7xD<B+{B&X_bYX-}Hm7b{`_Ncei&j%&?njBQgOpDHz&MaZ@d{iyeB& zV4Yz%2PIf>yZ-<+eGWU-8fwF>es&o< zijvz!i`?2kvciS)zvz-L<`t;vyZe|dE-+f^*|_wd1c$C~tJ=$^Jl3*C!BO(Ac)-tL zT^FK`?E(djt&E0HWrdC#Z85u~RqNMw`Yp|=BAguJu+sTsnGMTY^T$ zVU}V40M052)Ge4z6nl3k1Tn|&R&P2@Ve8DmhWb|r^?cTT)1?;S+Tc66Ck@RcRkSdq z$c+@iB^|*y=8-y`Z7$NsQIBSSOyGSv`866{9zhd8=w|0==WBmj^?B1#HHt+unD+KB z&-bgLs*Y2Ibs^P<45x~f7?wkUFF3{xbC~q~O3niXj-u<%b}`7$!KH_&b*&=dP4T$& zhXm~0zk0@4F5{s!o1i~gR`X3;!!@yHn&BLH$B|5Fy-TO+P>sw_ZZY1iRv4ySq+@Th zS39}eN}WPKQAeV8jD0|!!{VZ8S}n!q{g3pH+pAF(jk$~!j1mtc-lan)rxEm{2p5jt zD&Lb+gqZ!ZH+?NFz;9Ru!N5JSO=-5WX;!l|@3d|>b~q#cYg2W4Nodi1Lc<>Ts-167 zdzcYl100e#`%-0nrjV>{+ftEJ?F?Mfo^^KqNmkpo-y&dXCt~ zA!=uDQE~l~4H&=!KHk*bQoOyJ*SL_% zd+>YJw^5zCWw%>&?xi<2Qd@e237K1y_NRK6rLH=MO^E1j4XNaYBsOai(y4E80|rGG zCB%w+XWF_xm20VLlMyZQz*G&%9{>t!+<8?8N`4&QhK@VgQ6SxyNc)mLYiVWB7Md$h zaL?(hjx+qVrLc+{OL$;hj1KtkNvlOA+LIIRj18r8Qe9m`O#IiarOgyk+?nkVf|zbV zsgr8<@L09v>OuZh?}77GK8>Z7_n`2d&bakl%`%^PZB$Fzk-lQGe@mHTnZ8Yl% z5#z>VCnq%2c2+uO9vgk2cXs)yWf~Ps<9>Hw5A~>*a(Z&INQ~Rg&@qu#T8~!umhwe0 zf>`}>4&FHawa>K}H61@$Z9?KXXP3wWDt>8v(8RsgE%aVCN6waHXTS0v`qRQ_u z;R`KU$7?*Wd66K|kg`b5o3pE;ch{g~@Z<_OE(f zy|P&dw~l**2+rfCtyDS4qJFYyjMWcIF;q3Q8kBHgm6cU%Mh zQQ&>)#xrE)lep;XJu|1Ixthv1y#xgr;d8}3b<(MKq1#*D$tA>yFp;UiEPH0JH4Pj5 zM^KJ;xOR;P{T$&*_dfM5<|Uc7M(g|~2LNDZv9;2drFuHoLbYZR`m>NkgE#>EeXH2% z(=E$Ms7Sw-1eH>9%~ui+@cRtGAFVD4C(U!6Q?F)A`EB(HVz$^e`gz=Q`*x(OsJhh> z%S@2ngA*zZs;}))(plw=_9BSoQ_2( zxtbP9r5OeI2tEZ#mdCZztn6%E?o_KF{Vs4xs+jD>!09Y9TM{2XvY-5fVyPKHUq;BAz=QZ8}#-vjS<5+*~jJ0CBngwPv1*pb-t2$>*{A z3TdR2`mH7eWa9#wO+H(x1kUWRsLH7GT9aKO*4_m~X(eHS+vcF&%A!rG+_=vkYO7V% zq!7gtu0vry%>$ zaUy|(kA6JS5U=dfBS~V;K>#oNnqfU3R!G^f(k~<8teQ|+RH}|Uny$EkP0(aqr}JmY zpp6s=gsrx7pQ=v4*P_2Lwxv{!*caWrehYRd0orPE0T^%$^V{^H& z^?O&QxxCegfm?XUCjy^?Kxq?m%0_!<{p#M%#w|7gv3Ebs?^0ub;UuQwwM$4NOakC? z-!&HId0{)*KZWi)nw-+2I++-f+yUmJU8>H8GJb>LcQw2ERT?C^mBD5tA?|)E(Qyz6 z6ab^gwE#zKxCjOZiiLY{VubE&Nc>=U70%xow2=!`xoKx1TMWYl{{WN^HIvpa)rs`; zu>k|*)V*f=(^iHuT1Po%@%H;xGgiOaJv1P({YMq%xqGgd&7t4l8;2u|eX0Qe09sOV zf3+uS<8Ip}D4~1t-inGb$24HjJ8?w-G4nv<{{R$t?b?ptdLW=+b44EXQA>|JQVKkM zs1JHM^G6f|Kx2+5_Mm@iC<+PYj2b8p9jNCw>Pk(801MmVn^R6&Xd%>&+#6;z_V#`_38 zzG=LlaA`(YkBXHV&W`HazMIrzxq--Bjp?2UucWjcX3weg4U0cELMYmh^EZ0jU@LEOCJuQbg>MR1V2fs^!+$L(KJIk~qTnb-PKA?nE! zIzMncS3kYdZW2Zy6SVzAb{{p{V|XtjG032v#8q|oOGCB)04PV-!31$x$31aX##Yth zb10Dmfsg=6LAJgz+*C`*VcZ%Jp|SO2ftu)=mq9zoKra&>eZ^-rK7!UQi!^q^bkBA6 zt!`K>e-3UL+3c=lPs&e}5x-*9Ro0y=cheWmcV-?a9lnyi(xBOYi|BVq;t3OLgSD3; zx6t+GovN|2)vb3Vz$OUcTDj%=YE8L0)$bNzD$eU7o?Ls?owr+Guhns~R~!~61&6V% zH&uQcdT|@Q6g!|hjAN1obGhy0hDMG=D&x3e%}ui{j)|k{uxk=Y`D>3xZJ7bEFn`{r zMQ!;zXS|Z(9unJSg-w%P%FLJ}l|0n@t#ayE#5rLmf9hwFK51H+ItNPY zHVdeJRqmXyf8e_x)1MixrKil(#Ez1NlzyT9Z~WKJdIXC+lg8|+C_>77=i}zOAK{l% z$kI;)&RTvp5_o@)y<*0tb;xcQmfx0N(sS+YS-z#wBT&-7f=F0osqj4Fugr)9F4$Il zc}#C5<}~4bU7`pg6DQK+>xyslkMf_9SG^6qKG{{Sb*u4kp$f9c(S^170NZ#!lw$MUc|8tKON#N&rt(1|PNA(lz3COMRUlkM?Z z+rP?nK9nT2l_ZxNmBGP3`Kdc=_Jc&sgs zfpE8iI{~@cUrl5lJ~8cE=C;->^+cZHL2|OmnH2yB9~B{ExP4h##>`s8vjzf1!6)Ap zJZ0?CCY{x~hf7>Q)~)}~!QPU?F<%4*h; zNhUbs{SS)folW?0CrMrl%TU)A2lYkV{k{*)W6I0Q^6M7*<&E4cF?BI#B1P?0+SI6E z20P(0GZTe5#bq?@4%=1J9dsR0gAf^^bM>MB04WtwA4&BMozk>0%RBiD*ckg(r1raS zbo-cQkXywc@iCla5PsEp9-1x~M{*GZ<0C#RAEN3J?iTunnI*jOo*Z`1#cpl29X(YB z;*7(B{l!f9Bv;ANV!~&+)9#u*{nHs!R<@0E3}Pu19FNuKG>NOitkDaM;QNeHHm7gv z4X?TT*FE2B!p7BZ7B*d~Ti-YssP_i#7zI{!Je(dWv#7ZwEO`UPOH0=%7iI-#u2tl%60v;~z>dA9~zscG7ACg+)JVcE?L^NGss&9kE@eT8!z! zwGNxQk)+s#V$KLX%~fCM7cn5jYyyq|ub?jafAg-Y(G8&FXO3z;=Sf1_%%CcffCfAL z>Hak|;u;JsWQZM*IzB@^b`FS|+f}!g;niAbakdwlcQFv3_RGZB<7nn#Q z5i;_2`Kh+c=|#7NQ;eSE)w%J)NQkgX<1D0;;}tU8OKBu~;sgQxDgOXdbfA-+l>Dr- zE?dCBu2&|cR9;4sGkqkL1dJX9d$6=3E%O!1{+*(qb&VPL2Y&|?1(i+*=^yD=%Z(Z_ zHpp1ZCP?jyZrml=+@o(f88toQ9+BKK+0Qi@ErciOU@~(_crWH!;zd0=A)|xCz3(nb4X}{)cR#ragNm15;*-VkU0eZ0If-$@Y_YXS9Uv! zs1rFdNj5zaGx9$5X6kf{Jm`$E5)vYQjGpGB!*^j7!^F~vT=1j+05w&q>ruSEsv!_W zNJ&h2K~=VwOLC>=f;*`s`p>5PueK|!oHEudtz@STaHn@{oP5AK-W%Sm}0fsBE8TzAQYN>up_a>c7IGPR0yPS>*=B3@)3xET;Tnp+w`H0)45oMv9m% zRXHpNCZPRS637Tp5P0|Y`_zm1)-mgEZU;Ez)ChGIhy_k_^%8yPJtQ;2>9lc-HBXMh z7Xg`fHb0yFDU`ePCRrunTi=Wda9=IXO8rWwxHzkJAnICSmT<_M1bl+0%|H{(lKK!U z1^|YXj%w!Yv#K*V3Jx+42CDBSk~x4?${*6$s{}k=h6z62;1>5Db5|2w`gUu%%yF^7 zJ-Dh^^?42aP~2M)8{`w80=(Qu{vjJI%+cGU5(q!ilk^zWJuOAIF7Sv*QaBl;u~cwW zpbul(pV+4j&ORzF+Nj1!0F0AD6_L?z z{8UC)nTdV?><53|gUU-JzNXaLRPE=zHed*MO2Pab)Q2w0dyE|53T8-;ZNtBBdXzIh z4t9dRF-<9DQ;ZyY_@|7R1OPMUqscO;Vqdt)6jN>xo!fq(DlC^9Tem*=rskcTVMa6C znr2zn)+Tuf820a3xoMMkGps?RY?0g#n#}5Yqkk6%>T`kd_NVXl0PQ0&`f-2<6^_<5 zV;ZsDmSgmVI1td+}Mfc94=zY02&+o(6f8Cje3X zr~@>+NY8KUQcABhpwd$I^HB-!#VrDi;)*|NJ;9(+iXnZ@d8EgRIsK@jm!8yOlbmx$ zJ*WZZkD3J(1~|%t(KppW$0-SfGAKsLl=eVb!eE$G?J^Nyl z_U%hhCyY=i??*HM_RTMEnmO@E1pp|c#T4W&F-eRJ()RKx0iY-pxbH}Pr~%l}JDi$P z$TXk50osZQ@6JseVu3)U&x%~*B7@sJ=iY$_28?5hGmkV5_%s0TN4_&dcRc2dljK!^ z9MSz~9MSiv4|*u?M;OLApgp_Nc%>8p^FR*xpdR#Ny&uwn$?hh(ZS%-vU;={2!0ai% z6n6QbQ%NL~P!BYoDRJO=r4$G#98h@80O#I;LHpCNKGWQfnq_#U&If<#Qq7K&_;L7! zKTX{%6R~?YJ6Ip(uI`2{O3iQd`2>+4s|tG>`4$<>WSrwQ(*FPqzY-?t%cQotW_vbZ z3g`41^?onp+%JZGdUDGjar7pM)B#VUF5@!(l1F;f*lMYAxg0Y7q3u|7f(=pxzSG<` zM(zzEySuYKq+qLq$j@F_f%Tz1 z>gFlTn^sKZbAjTyTy(ObH>Ysy9u#mmBW**QL(;A#61Ad&y^7VL(~MUVTtLhfhtvmb z*Sl$8U;_ZHo^w)ui5_ikA&=-^9{g2TQS?@m)I-%OBDp;JiN=2Z^?fuj$~eIwaLZ5_ zn^hlCV0>bv<#guyhv8M-o0%;xW4H^>(lAYC^=_NKvsZVwkr{tb#y}O_Eu;MAKDAN@ zIq)gT^q9mfE<#MB-^i=IaGo!m65d$gl4Xg?rv=9tHK6Ee<2s5(EWU{>3dy?yy5v10 z)AQP1LLo7=!ZPDLXWqDOrDHCWsLO4V8YjmeekyO3)}KL(@bIO)@??YbIP+7jWgr!h zoy+{y%6e~Fz13|ZF%>sf_+EL)_pXDcU(Gb@6ol?n8`tOk>Rf)C+fL9M$X9V2hB)n? zy=HogqM_7ba8r0z?f4bt{$WX*_T?o2x|4 z8WNGpPdNFnU*Wgr|M(r!9T2z6xFt)sOfVNacs4M!4;M3FT+bNp&y*mwp-2!^$&*m ztK_z@zf(Lg!m~dL>BfJ0^6}j1@5ykO$Q!%-16c9j2MlhHW!2ps`mu2ee=mR9w>>?q zjY{0i_U@(f3Nh?|;+%ro>iC&sm9We8LoN*^zKt|68+&AXc;u6Gn@&c3$HiG9nYK+Q zSk)3cn+HpXPGgX88~5{Gulg?b<4`x2nvpD{gpodyJ*m{uj-Psx+eYW<&I@NJ{i{!9 zJ4%Yn9^VWJgY4;JqsN9=}W!>r(^IG!& zm+6oy`NhA<=Kf-&BfOAB_4k3b)~(>he2!)Rq9 zGOf26#acS-iJLh-Gv=kXaJ)0^)7EUmF#1Y);MAzJi&z*eMM>}p?@_M*05)YIN|D=k zcv_uh6WlP~NGbf?t5)51lSpck!7*7wqWC$fz_v&8sq>!oG9w-eNCc#N^NM5$r78eq zBigg%Y2$2xS&|{2V^6}fyg(}BjCZG2L;wIgarUTEYqoGt`F6RECvM8;X(pxGo_l#D zeXqDE_B_{^zz6t%mIsXX{pwU#F}kTq5t|u1PHD)Lxjv>o{!K|u8%UK$sn7oaf;$@X zB01cJc7i*T;-t#U7z6bXY8B<=QKLyK`eVLFdXsfX#bHgkIP>E)%s!hxDX@4xYQB9? z-jT6bLO;wfTD=RI9l~QiK^?24#C?@bV_!z8YMy(KiQHg?7H=!Mug z7|woa`Bh;;B0xz12KlK@m@aY(h2-|lM}cw}4&Ta1%~?}OyQP$sA$OkMaB5efExRnL z0})>d*el7$6rQHgd-mfVX%aT|JxLS*JJdVN!E8uTmIpZ$lV;C5uppJr zc*nQRNkUmX^TthATTJ((a8jx}mf)JO+~P43k&fh=wE-K4(%IWy6sX%gGlna&ag=zhs@f`2PTjAqUhMmSBwvePvI-9x78?2Foy9o_)EgFWS~-9UWIpOIxXuGEPX0<8i93 zatm1}wY2o3{E2MOA|_p%!N{#8-k4^XF;y;~r1t`-ZoN1zXLTlaRl+E20DOw+Ipvl| zRMaluxwO-5U87f#j=;Z28Twm_&|YbGR}n{Nx-cdKd5nEe_s@!VPKsNLu)tc!I;Phw zG8fw(^=B2>(kxM6cNLw4`xKLWMVGLZD-aKj~@nkF&^CTX9sJ`{XY`hJgnrdr8y zIFQJP=#57T$Bg}|&P`rBcw@P^Nul)zs?nn4pgp&Inu#=;msZ|e$);)vZD|nt(?3>z zMNR4{Y_warA&e>(xpTecKhKlqn_iBd9YW@2*5$XhY&*sepE;+mx~53=0ifuFO>lq* zo=!kM{{VWhi$qw}mg;G)8gHsi&4A{T>{i=#O@wp)PAkT_+w_MEjMeSE_V}695&+MTE{bFQ$}E^L}O zpdhh)9QX#eMsG<-^%!x$_N+dz=Ic=@=x!^?bJ)^BsOh`6dldCKWb8#feXAFgL^G5* zsv8^Ex3YAN4jYvj?NT(M`KyO{5VLW(gId=j#NJ6OIRxQI1fJy6MhRZvxsYt{f##Cx zMX+Xjg=o;82=h@_QzA0LCJ5b|;*dWjl(#SR5D<(KYtk%sYrbDjN9;X?F>k2LbVO+p zT%EZ1sfS6??9Zt(JIdVb$?s3nDz9}5c>!jTODV@Z;;W(5E=;ZHMTm&wK53cl!d^;X zx5Dl%mgEX`E(%P5pHZ1}f&8QGSNm10G0Q9)=a6s#3r)S;SnY+6>i5B~52;8kSf#5V zCmWu;$7qtFLzQR4b4Vj3>va^f>^sYC1o5y`9ZGwRiw(LKw*!~=V^-$ED=U4>a-ie^ z=9`j99Z{YnKzUflw~yYRp$I@yIH7F5Mp%#Kt0WhXf-$q6;>}%Qd;e_%?9OKC~4jYWBMgbpj+N3y)vjHdXTJ(pF`YM1y zQgQT-)Wq|%j4GT1-1($sQ2V_?$~yr>yA^k<9Qzt*+rW)ow-dPIC)%R8Rg-doyXKv8 zN&vV6#wtGHhAeVNv8Nu0@Zv{eOO2z7SYu$N+ZgeaO?rjZxGJaI_pdG;&}FgXj`cRy zj~9%L1`d6NHpPktRSTZr_@{^q00J36u=kf*jyLq_G4MhHMi#y<61aXEI! zjPp+1NOqJ~JM-Thcc^ns9l9OF@6JH1+_aaIcN4{L5oZ`9vgf^0YC3>r-yoP1ZGJlDOW(+77s{XZ4s;+x>u9Q@HnaYt%^=dhp;dIz4= zQ3^m9!+4~}&w2>t(Z@b$qmP;Z_@I60^FUyIsG}d!im(TtG*OYy)6D}I=AbC!+K;s_ zVL*HHNCh7hP#@Bd7~+$;G^@`Pfk?pQ(ox^N0)XwGG^B!aicj{SWbr@)+;K_oOGqde zoSIf7pPEWPYHSpE;(^;78V4qT_@j_9?ML;aJZ6BRkDk;6KzJiR`J=@h=%7CIQQNm_ z0pp((1ui+}lQ{;D6a@hLQP@xq+|eF~*k`>v49tWO#A2B9N)9~cvu4Ls{4@MaxasSa zv%Ha>&Bz23`fKP5YpYFS*)DC_3b^`6uZ&`!V{?&@HPXKhe-ft9CQEC%8cQ}Ha(PPi z{x{_K>kpH!RnIJ4w^p^1#^yVS@`pdHcKzz-OX?Cr#dM(<0f`4YzSL>Dm5)%^D+fne z2M4${S94`9lQUsNw#;*keuG~}zAKwzb)y_cXxvGG$WfZ6yVmU+Gog?>cNp(X=u<&+ zEQomr0I2RhYJA#lgnPuJIqXlG#gbKrG`&;vP=OQf9>=(;Eh%A!9C;o^RNLvhCNo*) zHXqQ{n3vQ5NTFEws1_N$83yt6A8NH*n9O@jgsC5-_o~@YJa_~K{^pp9;KL|Z`+e$I zN|SkTumljHOg?kx9&_6uBn$2DTgVa!uOqrF(njNBrZNDi9bIjv z{zS)Wva+^81Htz-pVeN}e}-K@C5^i3jhBu=`Wb6&d#6V$3)?(y9G-i8RbN70%_f?# zyg^bSv3br%&0nc1}uVDI+DN;dl6OBqpYCt$2=Ou zqNN~qK8@61lgDo2sxNe>u$1gWCA6m)AItJg+%CmXersM@<4Gcp0H{Eb^3VE#t7~Og;&xW$N9i8aNvB(t`3 z4?oitWZEY=muZI&Ok85!1LzdUX^ z#dVQ3(7na3lVS;!BA~`sx&5iTPOgiBmea|fBp>vuGpF58a;-hWal+@3S_^MZGq)k+ zBY*{F$?PL)TArZ6Vzu;gc5~9l0Q-LUT$~91Bo&IhO@nN z*Y;GgffsH=V-&^Z)Fb$I!*j16PZ%_!IVQs7sBbkU-%e#t2tOoZpW1&&mUCT57(7fQ zErlnxD$ucxJUR{F@>kzmf-LzSN%V!h{h<1 zHbywfJy;zyuZ|~&&S0(X&S~^h|UKY?Mz59k%B<+N3K-}CveXsRo4Pe zLCMD_v8I_M-M?|ivYKfwqTjT>GBMAZbV>+epB!VoO=tpb!N0wD5|sTt$9(fi9@TBE z2=n)+2d9F-FK_EX3-hu{%n?aFfbmYpXDpeLUyv z4pi1wSFaw>B?MWJ>C{`i2;-{eC zn{zNc3~^pr{-gDG7#|hqe&7QEfO}VrVZIGTk7w!Z#enyw2Kz~{K2HWZF=o=>%T zkuVN02>9<>kr8DAA+?;wzvjk8bNy4OY$Dg;u!dNSSuE1731{{d(h-y)+`JzCYKrrt zI(qw4x74MwM7V|bf}93EB0yg{F;-c>vmfZ76w7} z6Cvg6q-t6Yo2XmdLHT&2X@*(VKqUK`%IQ4`b7ykV-3>liRWTHvne`7f(r5OaBU|79 z0E?(kq7BW4QOh}B_N#k!w$fq6wZ2|v#sczBxvZAI*7{dKYI13FX@#c?ygHub{L~FE z@oPj`TJKOZer5Rd;^h!{{pwutzSc&=K!913%tqN``h1>q2@@msau`LqZglN!`+ZbbT_omezE}Uz) zrHo9mx+eq<)jvwn*H1whW!eYSf99-gV1!1}$m4N5C_U;@!i7k{!8v2*rUI%o ziXn9YQ;>1VsAoeF%!?r102u?Z`&H}8sHK3|fZ%`KP*vo*kg@mR3Y!&wlG!d)`cY>f zDCUxJg3Gi!wlU<@m{Pz*22C(6P)nI5`nli=zEjzyMaG%x;2FeVkEv8=G|FjKwqX8P zF?0OHWS`!yCo#zEMmA9~QQi$^Zry~FQi{W16-G{2NBAv_lClh_KJ zM2=488S$Era2`lWcG`o1x4HY!K%U%Z>A?%+_Wi0VTQEMUQvU!ZrXpf2sV8XdPVPwVIi{5%t`PwW0nc-aW#$9|zz=~@RpdMz z_v0eGjm*us_Tw~^g_37*%3Sf=#wsDW5gc+)oYRsxM_>mac0Sb$e&Ss60nQJan^_Y~ ztXFGe2exa(bLa{=Sz33N=V>EzgiVjbDRmOYJCICEfMhW9Ib4Pyk z3Z&=el8@~`CV_GfY~qu*%`Ql!picC@D93R?pb5z&(Z)UK6md?$z@z=>$2`&s1?RUk z0q;OKlud7~Kw=7B(;6y#aMH#h>kd(oaT;)B2Z86I- ddAcSHYC)>yGQaw;)7PnwDc*uV>1cqIym0-#{5lu}7R6YS74t&>}yLZycl1sqY!+U#X zq+7a_8`N{>-lqMCP+vT95CI<*X$8_x6C{zVXM>+2p-E<`E`9$1o5cb(IU%sa&%G%Y zR@Tr&cG{qeJe3BfK^sC#70D-#Yd`s!qL5*RJb_l$x{;C)lJSGwR&1*l@sZzVo6CW;WA9SWWGu+m^7_%1$Qd~EQc~e(LfZk{0p^->9MKhN3YPDRSk%IR z=WwXAfhVIA7FFEGj8jEDW;}tk_Q!g1MN&uvoQ&rmq}Q0aLN}a_1AEXmUE`1={Y#7k z;+$w>GJ1%Ef4}}~-qR~!kU;hwslbLa^o)#i>}qV$q>4zg3gC_i9)4-LqEooz>i182 zoUFS@TlYi?zek%Cvl`Za}JpQ5% zJJdvGSxbgi9{$w|?iR))o72h3IPp`gtkokPqXyi#7DmAVK7N)DO%v zNHR_j=_j5&s^(i&c$z(fV;?nIx+TNPLdZ7w$njdoNNVEkk}?cVcpp$5>&304#{rb& z^T4ZX9U-m5n~TPrjzI7#;sXk%1|J_7#b)QF(zeS;Lm#U+$??TZmI#pS5vt<^F!55P zm03|pJe~lkH$h{4?&Y#T99B1K^h?;#A{k}_Bw<13pnt8%eoCm0|T$75TF^AP%<0|Pn1@N3+Ay+&kkKpmTksJytlNrT%n`cgkA zMne0NYT5_&Q_~=$4t$gK;0yv|T-GuWB(3Qu69cK`7jo&VZ0UYeA*xnr?v< zt7Q_SO68rqvmcXEq;kVN{QavpJ4p~un&p|r%R~-0ENB2H+|*rbrWaYYFvY3d+A|Q% zBzVgoYO`YG6O4n}m(#$a=QzNpB!^cR;L-!!6O-rSyaSF8(ld|^1T*9e;M7ur03Z-)u&T-j zC!gs{kE;c?{?u*?paMOpJpxYRy_edIaf5-o&zkeQ4T63L7397%sU)mH+5utP zJOfy-{YR~7TAFFv>;a>>l!&fk{Qw{3`_^U?XZ*C5&_$+c$!Qdf(ZDvNV;E7}CbJT2 z(%n7MqiscPs7b(M=N0d%`jBaMPRo+63MtQ;=e;MR-d{A@joi}+-HD7jJ-!8WoLw7i zEUz@pBHjN0F(gKL8zbt;C*V_m`jNNEEYZm6ydoeOE%Sk1bpDTlBx}2n(iX`q+@FjJ zwX)C>7ipCYYr8AB@+({PoF0hS!wXzq*~9Atl*)dPf8Lw5lJ8u-k$p)b)573jV6pZF zrORxxg%ah|cloOYop?psG2jehs=eCV#bXjAK#n-iCcMdW0?w#+NbGwjkG(pQs6#FT zbAW0(GPT3V6f0vOfyt?(XxFzBO&R(MuI;K1fl?J2K#w3U2R}61$-n8^N7aHTk#N7S z>TVCm+M2N*r@2UgNY?}m7Bv}} zx5tWLUXZ6~#t%8G2tykxkn(H?z#Xb9pi)PuPJHIQ{{VRoIXsGJUB&u>p$D-i zy$7ZU27aJ_v9By+TΠaZ4oeoQ=Z+7^Vfvt1}EXDvwVl69GuibMIa~QL$G5W4|=h z-EUrT&p$O4=WbZ-3+?8l3p|1M5s*)QDhZb@w17T-Do5tYjO1ZR@m2RF{{T|$+7G{) z#a)(b)r=H5G5e0@tL2o+n~nhIAX2hPAq&_JPH7BEu|69)@$M@+wVj~JD;N5CT7`5O zv)_uBaXe8g6#84|&1SWYaw~YbN58cIC>+oz&IJLQOw!TbfqeT?W4#nn2k%7~`%#}XQOBIn4H=?=e0}LLiUk7L`93Q%}8EZEm{k6GVz-P+3p zud_L1&kbKi^lx5Sbv>f8N(8w2qHK4sl2SrH;;ys~qP)>=l6z@dCj=f3ar0e%56Hh4 z7o1qQ?e(0tiy?NkI46dTo)6lq?yhBmMM-3nVw|Zbm8`c!{v+FUCA!Bfq8sGnZhuv6 z{+&W5ONAbzcjLd>zP1@mr^@>+>|}B{AXl{*jB z?ek52rq`@9$J6x;j(bwue+;rWBj?36=CGq;D-m`k7{G`$c$9C2i$h2V#YJQut#Ig zYt)i$U#c}>S?Qw@%F&UGGWPA>ob?UU;C~?fBaGLLkv2g`Ph&`8Q_4se$Of@jO7?!927X0(LXyVduhZ>bT0tWHUqhd7GzCRngcX1Fs)m~0HUJ`z z-?*kHKopUH!@=UEGOm3^I3ReYSykWa7ZV8?z#Z$}oxdMf8RQJ-0+*O2w5q@(agS>9^8p#yPT}X;ym~}P%$OMWsP}P%Qz&oR zq>7Ag<};Nj#1r1E1cG>iIyz^*PBT<3tHEg|W|XO6^aD;<^*xR9nAw>hIL<3p5vEqc zfC_H;@lofVC}hmc2|c}qLWnyBbYkQj22tLhy3rK^P<2yie0g5J?P<7!EPy{L}W4HKaRa!9H8x?^?ENgyj*>rbnij#zu3= z6$(rBYo?MWDp&QcNA;rP@hhM+9kuW*g)(n-Ll?Z#Ls9{Fh4`cyjCu~ELjPhlif`|7BEH? zi5>W=Z3jlzVAZZJwQWHri-8Zq`TCF3c*fHjk;Wai5B^vbVl_hLO(5M;lv`ern7VhdWmX zKg&Uos2hK!OOYPJ?NN*Y@l3p>w-R=by(2bGGI8uS3g;WYLp5TMnQTmv$9fyBL>LYY0G0c1b7*z6dW#cpmE-d1cA2&9FFAEo4%3;2`0Q`F6IQEkzRKIf8L<= zDwBbq>0Sb=o`0{sDRK!pB#LY@ws{B7$g2mZV7TO;IIj-f*mmwld9MuMoM#1dUQ07} z1DsWeR*-NzE;C3#AQ9W|;=BmSJcI3uayUpETe;+OR&W472W~;^XkK|EIQOqb41VMj z;*<4oPCsgIY8U~R3~~4GO$oW!xcmIqsSu8GJ7=FX#D*nN^=&7DMOc;XpJCm{KJ?6w zxc4U>ed;U`UNgvNm0CRgA8LH4QS*)~QG=>L0B1O=&Z5)XSJPy)j#Y|o9ytik))h4i zJ^>^J8OWzm0^=$PJm!lzU~YOlQ`Mn{9YvvvBw$-_{{V20HKDfAZJ>=*xH~`q0mWM1 zKd7V=mCs>S!OUd&_RVTti3uD@-|9WHP2I|+HsmlB8QHQ%PJf%`qd8&}F~BX&YC~rj z;xGRI3%|{HSKPn?Ys|7Vl1Kr-QNR?4e@c(j-##lykY{7Zj9>xHIRt_L@?&!W`j5Rw zRR9*w7azavK$B+x633hmYJu2JPzmwByI}dIrJEtQFkGAra%lq=Qqr6r$u%uw3mGI0#|FHRi~~P{M}GBU8Rka70Bjxc z&ox)7TFY^Cu{Fc2KxL6UpL(!pcyqXb-OAHT8tibRh9e~RtD-4l(QUN$YpsS^iO6T{ zKWdF0rz512gxIRb>I;BJ#c3r#2Ki)FLB?2sD-YJ%^^;l+I>K<$=lG0=g&%sGklIw8 zM3XKFSMgQ%9YYGnaD$fj&MO=)=7u&>9gaSenoA~Wu5%!e{{WQ$&T4s6$$a{>jUzM= zdW(+4d9NRtxw*?5R#qK~oPTPx(6skNdFB8so&ol&J+UX$6a(>AO00`Zs9UX zo2TE;K2lNj1K%Dh>fs|jz{vOWP>RPCjLM z!Aldgkx^w}PC*$I>0V@gfB?A9aZ#kn9KX|_YV_^6u*s-5GJzQZ$j5Me)Vk9)osP#L64+kpS3f4cj+q~z+)WdvD*ItP@;wk$A8|q=bni+nXPpca3SPp`tw*j z+xaf!V%!g5?Orafq`7igvNKFqlPtFDF_2^Tqt0mTC?B<9Mt&$AjTB?;KzQPTNlQQs zc{Ff*iUG!ZQhn&9A2fU7jwtg$51J2p1~~?S-hiVW=%A8*XcUZ5icg9NJ*a?CK1Cq= zQvLf;OW={kCTO5`J*tA2w_%Dw$>xsL0*>6`l8Q6?&@c6)%_nd9rN`|}Ao!&BpmxO= z{w1UwrEKDTpq%nkw9b$q^a&m;8)N80Ehnoix*lW zEv54r?K=(Jm9Fcd>vo#GvRqk8vLg;u9@X`JFP9&dZx=mjp|)+&0K@+tcrUMU|PiSTPyBw8$cknSH*InTXL)8_PL*x;&>j(Hz?fFBFF8*%oh zA(*RVsmJFs?s`mjOeab8u%GSTDhO;3KZTQ1-FfYWbqt-bjeT#WnHVxC#a zlVKmjJ&EyBWpauD7$D$~dyjg^-0G6gcCp7M06$mH#b4?7v0lRE7y_dN6U|!%fphBQ zoD6V5KAdK;qiZPLk9_UN^siz}41G)o116#g zr4eo0$BrnD@HyGAf;?iTmQ=Ppp83xdfU!H!fWx}d7vmf+jCQX}vw{c>=Cf88)F&XI z1KZ}40lCK9cpOraGww0on=xF)r+mJm!#u z-WdiCJ7>LVl#ilKr-g3#73T?^*dVVw(_yjoV+403b4#&vxH0F)e2U7GCPf}Fe^$&)1NhQ z{hDQZhfFujHf2YESDN?J-6U;plJazIqXY(S58PGWyLWA*TP@AN#t6XoHC=bqEpTH< zJw^|YsaJvVTbF$@)4fnq6kN2dIN#39oJ{k7k7`18uLo;m10&4>ZURlmx{vEbQi-D6s#DuN%>aTj!|MaZBC4r8=RRl#nl)Tw zliMBZ!dx_x71&16{U|Yl<$&kk73mm*^?fNQ#!zHuHRpZ+aNGfkK+4(1bHJ$sO_iTjwh8rZM#ZGwoVQ4kvt)FlkwraP#0-fB^j`G!h5Y2V?Krrj_N%D~u3*`)0fb00Eyo zk0Ow}9PA+T=f!w$pcc>ctDx(-$T{u6uK|LwBl>u+9;Qz{$nWhZzj=0g_X zk>lRIM!m`BJa*!|C}#SGKWcejj05qUcBNQwev$zCg$}|qhEvF-^*1gT10GF8xRyb< z;j+E4&T2`qA>?id>^pp#ZI}$>%|mOc4loK2CA?E|ToOoAyyJ}4w3|w4f(^TgC&#r# zlVpWUk}!B4^wF7>g18FgWkoo{3JYYCIQXr}rh7VAatHMGuL|LqvG92JuMC-7E^@=1 z*Q8Q_v+;%P??gJ;jO`tddh+rF1gYoPnvW&M<>2$=`_l!m#fix@kxo3J$H^Rg8j9p@ z`4s73r-Hv<6w3aet0z8dQUvt_?V1{H4%~Z>6%yt^`B_Fm z$SdNkM=t9-`^`sMmfqg#S>i*rRXcsE$EP|rNNs;NdCcT}F+XAVt(sWcM&QE)F_HY( z99OxVqcA0Z;-)xBcA9f*O)J;CYi26VynuTH_N(}MW$oNzbV$d5ytlqhUR+sPvWW~z zrEo(p2AQ~jUMlp>0R9UW&Wf0`~taaFWSv&4veX~%doO6OVA8ypl?;`>p zLI!vOqRleG7z2)Y8L4V*?rWw{RFX5^sqghAMLBGD6kU5f)B77A!y;LiImc>7QARhH zRoibfQ-`^P4e2gLxg?pL+=eV&ch=_CZHZ+g=^~Yo+>U0{nIT1JWU?-14VnA-ea?Sg zd*Su{Zu@?o=lwkIOPhjLargjkmqSWOyy=Axvs~}%VON@+`V&l*vf)kz_uUzJag*cD zgjEvNe*C?pp6BPYQ@XFmjqb1ME~rc%|8nhdc9ao3tt+)!xa}Im2s1|;VtY~Py=<6G zC(dJ8U!>ITU0~I=pUAZMiZ3d31-}ZZDG?SvHKb`t>e96R| ze}06F?UY3`l(Po-hnQMmnu&l}&$UO$Y>>jC^hUL3Z*8Iw&7|7U$;x#sHVi3%VBwR( z$_gkSI_5y0a23|e)6Gjp(j7?{71;>(q%ar0fkn{8$jmPxOc*)t7##{1BKR4BqRUwn zWQ)|&2Ak5+mqljexLG9Y>-uX23BaRd35n_7(VLwNx*T>pDq`;!5kcTV5`^GgFW>GnIB?cj&qD_U*pwPl`bAx@u#&}uM>7v*<_yd{`&Ij=#CJLUA#Eu>bbB+H2o6DQ>@}{gRk{@rnC)2s+-fbvD%~3V|W~`-E@!+em>tJ(`P7R#& zKBQ&5F9(rP8N&R4eOPra{{4&5*U_nSfvuZQV;?j+Ke&FW#$dwtMNi!RC$BBu4|XkG z2)wN4?w)yH?X%~qyx`2tk3F#-)^STD@+&cVF0{`cgCHv9+4q6gmsf60p&ge+udA-? zI(7ZeoRcfsm}&2Cb4%AB{M2ff@hqzquRw7Ad78Jb#nmzOK*|Ou9A2%iNFzK81-{C*T2^O_p$M^4B_L*|0_*o!J zxrfm6bh?)i@Blyg^N5*>KUqGi2OHF|JvSe_vppw+wSV6gXGLF?{B!O^V;TKO%V6@U zMkVPNdb|_&4zqMHe#5JMFCB-sytjDMR2${H>|y7(_AgDVr=Fg5Ty7F)SbQ|-xDpuB zOtw4Tw>k;p0rq!_VDh9ElFy2a-{R7;6D8YB52eTT4;7pna;%a?U0*)gxR0|O&f{k= ztS=`?VCeV9-U#(jJLoj^Bk}9-oUFD~sb>T4Xv$NU;?X3)G{_&?Vs^@M+_|-M1-$qR z_=ZjRZ+`sg2+nN0ZrMRzM@7Qn1KW$jQAcmOKdP>aRIPM*LotSg*`w?qIQyDCK6Qm^ zC|Otf=jHX`XNq~ZPUGkYn)KZ)BoP`J3Z#3wv4R1 z{rWOc8{9d=nFBup-}P9B=7slkKh(t`$9){hv3uiPKGYgCHYbkSMf#mKHcKa-xR7G3 zyM~l{|LU8h(UefBe)?EXvw^K(B19WKUA8IKfiuL9#J7w(e_I-A<6OfGa2 zruWB}y!q^D=Ls8-*RF30&xgNY_`u!{9?j*|LUR{S*UtsG$9P(2l8D`fgXP0Rxt9z) zthuQVT6I`R^#E4B=n|~9G5^t;b>w<<3LM)$xyuUOWB#DUvc|-h(0Osz^V8H!@wj9? z>Z0tMm^$@qS)Kw+Kw|L4yTY$q7XaHKc(ie-0pH{z)R+jzc4Tf39ESREPFaIk)W*!^ zo;LODryJUkdoy8r3ii%9-^kiG^+5m=T})Y?H1s&TyZi=j6Dd+m-3!By**<#PG6+Xc zCZ~s|yJ2^+UWZH4YDP981LU24 zU*2*9huzQ5mz(#X?Y{N~KCEiR+hm9-$HdJPBWCw?{H*KIi!#_kWQX0xV>@(eR94%L zt+=iW+;qmIq4g>82 zSk;@c;XydG)?*c9r_flT*A?NK6W_zy(+sa~ww+i5ha|NTf+Bu)hUI&&8k{oyyzay? z*8W#_aQ{q! zwpB$vp6Td-N|f<8+;FO?A9oNURREQ~=ya$_>CD!G+&91TG%pmX!tisQc? z3%MUXPqY#D1XaJ+G2}W`m#g;uxLqA{E8pFQKcO5S|A1R4`p)mtj^j4%T$N|^XfCfK zKUL$F^k`sPJB>W*wwZiOIF!2pe7#x)u6-4jMS8kSpqADF6&kRM3VD6HIr1AYK17y= zImgB~+a^sEu=TV8f3BmU)KYLH*;OWn_;VTLf(kPM8Y4!8vk!&Ql;&Sa9|gNZNs(kx zi;(p9WlWKo#fKaf-!{cRQ4nj(0A66{ZqzQF63Vcy%>>$@h78zA{zfppVgDHwMg7MH zc*PcbLZ{Az7a@g4k>{9c*oQvT-F+Pf_ZTjGRsXc5O9sT2rppu1lm3Gie9S5=yh1lO zwWKJZ{3)TM>V@~}aog0nJ)b`0X8a4e$N{ZQXr4byLtElNsRtS89bmvSRn%+{fwDL~ zC4iaFh=4h_#XOd3CM3-iSwRi5(}i>GCh#bytQG;LbwjT4Pg_C&866iP!wJFiE2Uj; zS`6d9o{;DCcbDb0TedOWpcQ6f-PCW4MxmV5%YyN#5kDD}-gHC;`v`&o?v@Ay6fR}* zbn$wOqynLD{#Axbn+&%!5-gMm+4^LGrd4DSW#9*Tq@HHy#far7e{ksvp%~gvO_ zYU%fQdh^2vai8m3b)ZWb(~9b zT<`uPxMTZP$k^$RzTYc8bV0H#V6bMg%XVodfGh9sY`Xs?*K`xYc*5)3iqPlx$Cv%# zFq^#+l}VmWy+7S@mEI3m?R!VnWND+rdPQL_8MOCkyvc}bbDV86EMg4{R*)Pq`{wLL z$Q)-#bQS&V*xaq*6G4Mv0mY_n{g5_B*6!JH4g_L0`hdgFS(6uEtcPTzwDTM{4;S$|4E|91LpP4>zEMe5GJ_j-Q$UhGt9!QPXZiI6bniRUK5 zw1kx@EMPTMI+xzC?cx69CofHqYx?+E5uq<`T_kTxv=}MHTV>-j!ZKflJAZ%E{V(Lt zILT%e|HX=!KB4~QK?^8$G{EA%cet{bfAuD2GiRzS^7(Q)XJ+d0N%+RlZ;+MtwrF=f z#hg*}6L&kO0_*M@A?^^B*!pm-NSRMcyub6zWShM&AyAjzmWZ%^y#qq;Lp-^1(lXX# zUFLE}yk!#N?Hk|U}iGl=X05wNV|M+RTn^eWRu z&Ph)Ms3-X+Dm1HrzboAn1>J*giX&S@jhpyVa1%aby*L#(C>YO&S6``oRlXR*)T+I| zFAx|FLwqxv?>N$8R~Uyg@;G-oHZIVF*zsMb6%rP3u!V}il<7^W#6DX(yG)(;Fvtf6=r#iRGF=2kTk}w%=8KW*(1cjO5YR9|JXJnnRT5S(dknH1a7+(8wYARF>YXb7 z>r|!(q*cM6urlq3*yR76b?ve>w`n$T*W%>@$r6n9D!K@pCMjH`-^BLos3IP~|(YOUue^}!TtNZi?4qkpQ730+RBf`h0g z9>&br$SdK<3F(oqgl&xu&qCN2$1^=)c)(yhuyero^QivbPlqp8+Aa6XW3UVVxM8vX zs>fzd0h{wK+$I**qM?2qK%Tzq$CAHFmKc}Zo>2D$U0InQee|gb^POXx;q1qtLc%EO z#Xha%=vA%F6}dVlZue=^IBQuq&RyTa?@I?Jv4#BTpWj)1Ymm&$v)=^clA zckbtU61(&GgpQm;2h6`((8&r8%?*i7{VGT*T+a08)tU*hz%8>KFGxan(Z(>aT10Af zp^@o(h#4X7RnQ zE`yITFDYip&SFiPdA|zNC-|hv+Dq76BZfRPWwj%d=|8N*8fu4l+^$!7Ii6$_CpU{) z3$TZwyW_F-NI=BSA&2LU@UXQLEuuCYw#NW7oS^n1o>F^~;k9T?bCPgshy|AKs7@mq zmuc*u&=z&Rjp0p6c4{nH-q|6k#h_4~aOZCk4WNIb5|nIA8?)WQS(a>&Bw*5pShjTb zZni(z{NSY)*ifth5QYrNO7Nc%5U8GVN{EHCF-91Tn{L`zM7 zx|Gmh*D=g!;z*%|=Pkcw2V!phxZ~$~ZTG5j4mvb6Yd<+jjIqWjp_Qf%{dN031-|=6 z%AWUscjlVM@yvsM+&wiG6*1XBVA-(t(2irvQW(qnGf7{LEg7YlJ<@unZTx<~!DGvz ze%H}YlAiARq4|%AGvV{)vE9DE=pu34ZD9z!y!7BFI}gvlSEyOyq;K+?cW0&{=R&M) zzPk^y+uf{o3(h&Txo#Wdzf!#0bZMGte}ZG;@`!M+Xx!sKTaw=WU-~lo-tKsv+*ah; z+Vs-#Vwa(f*p)g8>9*&GCkOT=-`IRQ{23CVl^LH$)F?yS@4^ z{pgU#c!inZ^Tp1z`7ZiKi=#t#HbJaIw#IDy-@aI11H>4Z6YKOG&w3`Qa5vtUX{fh4 zc1+LFn4iD#x%keDkn$5hYZ8kh!+0B;=+bSbO`#Ajep=*YZ{xBTHy8Bhy^M3XHfG?- zY+B{@PnzJKmya2;)?yK%gKSZ|?{d^)wOt?})=GC}1%Ej7;E7e<$Rpikz)h#A{v%Cr z{`X~#bwO!`9az0RiKlEx!fhUUxMO9r+c8DIg(?4?)e2I7_~N^s4;Qu$QST$&oL}&z z1>UQiY9>>{^M8HoJ{FHuiz!!|PR|;263W>7j<2Lw{j`rG1evO?Ku?>$+Iww1V{~K3 zalGZ{O9jc}lAZ*$hv|}L9C`*@zM~Ta4o3=fh#3-m5zIE{SEA{Xl-6tb7ReLA6Ui|L z`AsG#9@o;mv5Nu7@&(a*I-U+sC{?>&wA1?w5W*kG!BuS$;Y%E2myAU$6B1F^)jv-* zrIm%MhO#Jxzd}b|ZP`EWfm4x3MmNOzj^RX+_SKu`{FBqQ$Oh4;Ok8R7IiJ_cZ&P~y z4;wFW!u9y$@q^ivKJy2Sw9hP3S0?VzipDlL_WVzG3Muj#w@E?|j!$1x=O^7~ZsL%^ zQsB#U-ai!$Gx_5?pDJw%u=4jf1+G{y8P=AB*LY^T>O4~iAKuR4XaQ?VScU5=NWLpo z#t=B#B9ncoW=K`=^6YyygLL_;atH>7!+s@NQyua&yqE~sX+5Ql)V{2Z2}hik4~CDz z`4OJROZp@+Gez)B7|O&BpS5!^Gwss@S&7b=M~QixT!H@k)id1$rq=XJ-t*fDx=R+m zRsPuzv*zL+kTM5K7PEStIK%d8uUmf%PY>_CWq%Myoa@d&J!l)9gKrBnxurv&O)^z} zXr{Q7myE9}$N_R7Ps2l*O&kk$#I+qCHYGMwqQ*O8TmoY8viUCme}tBrV7CUmez`0w z2==kj%6e<1`8S@z0m2F{%(3ujw4RbhWyUp_^fTD&Y&~Ps${u7cTfz!V&blO#;=gY? zcPKtI-4>uR1ylRUC%jVpdahVJvBS6klKbAjQq`y zUI^h1Pd~7=YHH2Nq$?`yl@O;D&zYTvUj# z-lYF(;XB4hI1eldHg$-R>wh+J&?9#b9eMs&1;L~t;4Xfwa3@ZlqI^=~C?`JNdGtw2 ztiHQW{oEyJPkh&^uJf~4Du(=`{ zIrsUo+|Vh37YRcwz-jm-3;>i1C6aTPLO23mYw?4Utjj*+pD5Pp<6~fTwr;wKLLQr_ zq0Dtq(o$$`Bn;5_r;kPq`YYI8P_acVQh}{0IgeBn$gkbrEO~(w6+V0w=}x4=5XSKW z^e^4PPIwe#rf6`XWEHHJhYdex8=+Hx$SvfZjnb1~M;ix~l}Pf~%L>-1;qnS+>3 zs)H=qQi>$9A&Bbc#KLUuWMW~u9)#hBK~T*kBwIY7FwASn)xt{t?gXhVI)!Tf6*7%5 z@}-l7Hf-On)i5G;>ru8LDbjHGCk8^@;w0hw&WD-_;stRL5I6I>2y~Y%w5mlw#m^-G z!0o3dyDZx2>%|d)O%SSm8SK@D#&Zctdh}rDg_6ZwdQN^9>{tZoj$sv$@CpcF^`Xx2 zK`Ks7reXxKa0Fz+4O)u=zw=9ICLGF89h=Og!iv}c@*yTBtHco^fq=6s*^aSO?dlV6-& z_SL)_-hb*#Voy@Q;f+QALd?ca{oVKd@&+EOzQt5MUB3fWH3L9WQvvsm@4?^Q)|0^z zz_00eS$Z(`#f{7{*T3sxgPy&l_TifK#PqtT9zNC@P-&Tw^e8}+qaIDU!ZKuaQ{gZdZ*xDuE z9WA)iR<#>(ps4<6&Ek)_{y!Q~! z7{T!oE8UOo^NHNqf_PwXWL@pSHvx4^r=-5;)~?liv)3v+YIg0_t%3V)HaU?fYj{@L z2ie~<*8Y7TDGiVvk1_cbjhoi^Zyt7ZyxV#xBxuubh8spzu?^$!+Kpb`sb20WfoFQT zzvs;d6uNSB;oGqHuKlciHsK=@4QKli=lABU4IA#o;#|da3u-)U0MOt`Efis=nxIy~@iXa_z+>i<3PmKiyOB@4hg>fln4c zFLKP|BuF7O(5%c9X29{Om4v|z=)oO~tyP7dD<)Y5sZ&@lW<+PZ;~$ z7LyP7Ubh|VoBlD~<0Z-8HzT^eQa;@Bdaaovn-CB%@F+JN`sbxe7kOd-q4S(g%mfps zp$F?Xt^w7GF`N>(b~5YnzE-OjPT77rwDm9d(XN?%)`GM2uY~(I0uZ55DGA#SZvJR{ zF-G3?u`|@WwlySPNzAu>7SI0YRcdMJ&^LC7gKU7!A_=mVjg#8pDP04?lQWME-kn3B zm)J7En;B(~KI?D3eBHMn4U-1n(h5!*1G_@E#Y2?6Z zH*rZOle%aSv6&PY2Dw>OpfS=d_L%d!|M{Q#7fgykQ6QvEQlaL+T?8Y+8q?0<1Z1Yh z+tVuvFV#^X1swm-4DSN7k;{I+0O4*%5=8|W6%>G32?>adT8tQC5TVDbHLtyjRE}gp zMAEHlvT{n`hwxVpu`%XAU(?G13LRpHl8b?-Id~V~3^M5xWGe%fD?pw7L*V&}viAjv z9KS>;EuwmmRyJGd#MQDmyi)e%BgfMK^3jW5+v_j2W32?Dy34@sI5f(}6tj#{nD#=zK+ zcx)AFg6-Nu1hWGKosDbM3YElmn=}m3e@>~Uupv~!YK*{%JYC2F?nH79eTX-JWloUO z`rGx98*)>>8m~5p?+oXA>6_mVydXnPi9iS8UHE(L+QA_nDxpXM&4N^T3>{8ZyRbpnnQ1X|#OHlQb zYhmZYujc*?>?VI3XkNCn{b6$Y{68tWpRUHu&(VW(HS!A0{H>IP#K5Pd+wIBkDBZ%> zJ0eklllVeuP*%SlgML(#kuzUh=l7zH|C=#4aN1H~TKTO^d@9_{?vX?O7BOn1w%$V7 zR_CFlmkFcCwyf;e74Ku_b=^*l$Jp%KFl#n(y$vpAq~*^a?)XJ?i)-%P^`$1fw_lX9|l1Bb{Z?|#hwEf-d^o7|6zWdNk5VCeskZNI=fEu z=#_{n%fY~^eb}H*_cgJ0O+D|lOVQG=f=V#Ba)ef7hLXBQf6vjMH4A@YP)?89$Imv6 z{uff2j53}^YG@1ldyZaYj)+9xPzTKo{3ddw%bTu8-?>+B`XwfKn@f<|Wt+O|%Toro zM|kYz<90{CSHCcyg%s-Q%} zeZOu^|4|dB7X5y8^n-$TzmkfbsUl_E+-m;evXy6kZ6BN%uv*yISNc@Z^D}VVu5is0 zhZ{EecBe}pvGU?w>cu{`J;O_Dm=2OqwXb1j>fygkd?+??nY9ZOV#nXYAo+V;dPNsM zoU~h!Z-Q^t1lRfuPR|9du!lUgm!+WJj}fjaFRURe0mohY8LBl5 zgtA&jBOhrv*$m0LOdqrfC6CXCBc~oiTxxCTdAz8TA65$N;Aq>WB_Xge!XEfJvvd&` zUt|{#=rxgH{@!VMTBIm4eSC@5G;?f8j4#puT;D6yPX^7!aR;;wj>D#f4RVz(wfpt% zBbiqvDm5*id@ye?NfW%Rjo#*}+O2N2L=zNZYm?gPWquR; z=MoZw_ib-4$_bTfV+2-Bwt4qp`W>^k} zF*xmJO*(BCw2qY3KPBD!De8~M5aP7Wwu5I<0?p^#36PVUZTw1}#z*Hgf*#xJ zF<(>p+p&Y(Ux!J8eW!`j)21{q;(C<*TU9kVl{Hcxcc-{}$M3Fxh2-q%=8NoIzk6G{ zDl4P@{$6l-%hL7d{)Nn_7vJa9y+6IR=aw>FPpPLlwF|g+UMz zI#fP;v7T8{9a%&;`vzxvFpnE)K;TatA3uKM)IVXivI4a`bJ*X1N>IzA<|urfBIs;KpO|dYoKqP^jU!SWGGtQ^ zbp7W#b;Kw*cB$ftQ0-xx+8|zjHW}Awz}~&eZEKV*M9C$MuunnePUM;_+hFhH<%7t8 zDu-^Q6BugG{tmLR8ZWG)&vnLlaDd4 zm$UUH2%r)HLR9{)W(ptB?P*>(lHGX=IonAkXQ|ox3VBWrUq@;-*p9}i$;cvsD{liA zmVCr)N;GPx%Mv3COLWXYnM9ocJ{)18U_H$H;ii+Pp-7S)GQ2s)Lo8U7lbok=k1+1Y zXLeAcpoo-qoKUPI39+@M_i`P`1<8jX7>NazYH-eBgvA2j9Sw%U7M(ZhoEN^X9G6vWSULBLoZL_@<(T@~ivTt$ea!rxhB93FE=_fvf`FLzINLAvR}wcrpX>f-wZ+i(XQKL!_;Jgz$8n$qGp%d?7qZ4O zSHElXIaFM$H2LRz{a;(A!zI35H+Yo}bt&CdzYNRI?I@j)9-EA*=-5VHRx!RYFLhIr zG-~td_vy2WOmtcfe=;gKbQ_`D-_V#$%w)3THeSg+VNd5UXq=AL%w4u>v97y2!R(Ym zdtVp{`aaYR$hJ-LJFndks?dg*>C*AhxH|Y*{;%=#>4f<}jmc61*R?8u+hCN*dcVEZ z;{G_HE3rTPx^m%USHc#TgL&b76+X1l%haDn=*hwAl;df4$9#7DuoiHedO9!gHpOcO zS4SS(ov?;#U|EBQsHl=X89$=H! z_ski2>}vj!gAX2fhfPcM_0_?4m!aFYhm#hgHcb@AH}|9I9HR)olkMMK&CrR(mN$QY zGpuYR2GVfWc42wpU`ZAfw7zCXWpd?)12I$y^fM{cL*!Idm@2%2C~#Q~5+4EIe`IRQk*5==l3Z-uriDWgB#`_|C59 zpzsV@-_l{F`K6p-$2fXFbHWF9=e_IOVffMDb$43U5)wvk$>Bd*rV(5*8Bjil9%oMM z9uCPgNfQQh26am*m1^p(k2kZf&23 z5mp(c-$NEV9@3JQ`M};Eb|o_U(Z7Cds(OoYzDmA9v%UbiIOdbMD&G+|Q+$8bTht2= z^k4wPr>|Ab(V7~!c_-*`2NR2>ZFs#^`8~sXGQG0Dn3B(YQuZOfzWWNQvbzRN zU+nr@F3|JrtAk8X%PQXPTg7-;g7$1M1wzWON}c5)gBBYEhrYWmnSD0+VOP-n&Uc%A ze+#<98r&KsiK@Tcov`M@!(*l-zvM4BWap>yULGEKl6h|2>%Ih!lO8`4{OZZ`^`WN^ z&ke>uKAlu5KjINQGPGC5(a@HLXM1k@@^<{xzmR=hO)Am*|0!s-gkyBQw6_DM`TQZz zp6A?72j{*VpJ}PyxbH?;T;_44arF!{vvK8VQ;#H!kkPW7nSUT8->1fD{T~J;x zA4cqu^XmB|Sd=b+D>uZtp=t^uR0~QAg6f+Vi7V30;6;H##nwk-1SuW-;3j!yym)z9 zm;bb7r!gEz((ytUe33GTe5n>`J)Ts^{*Svv$&Z9(jR>5)Yi9kA-58BJKcjM8cLQm_ zC8c3R0(w4hOhSb7Qrc}Mg$jhx5p#|D4@-c1>KukRR2#tI;Rj<>QzatU2xoCprx~Oc z)=~?=HqrtotS;0c3*xb<&b$Fzu5QpDL>U_byJVMAny+@%z@j)V_C z&4*>6RmnPY);}S+#ug~fg{0P3j)3Dhf zvaFw`mMum_VsGh>mTw=e-W_6Z8AeWJgsN(u8=9yhG7Hw?0;o@To4RjH{yZTn(&1JQl* zLCy;@l(&uObMLQf@tl4c0mZ z07L{r)`h^4i@(ec3uZmh(}?@=h!q!HusC>U>xpR%t%Ea{btRvA{L}SgVA}a838jlpl_H49DcrdhKc4lom zrxG@DC1zg%)y|mCe!Ro%&6o>47_Er?T&?oF@?2ScxagL5jM7THUE3nKQ@gNGs`GNs z&ZR5bVk67`30uKZOR+Y$EA*B-NusWg1v9b}CCKjftyqq$?%msd0*M@qK3ApWdLnZrVtD3j(ptEEA6JIV-*S`-^5{F zttBz9)8x}vg^TGmq!dFU`o~YW`_)oS{3^Ei)!NjWU&8964b4lmB9W1!fvZrp@D;3- z2<<8D7=ex$2{@*S0_U$9Pj5FwNCCpgCE2n;3{kM1@@J$-0kJdP*VhnQyM7HXI?o>i zJOv3!!U{+n!`=433h`^Y5RMH+B&vHkd1_oa@^2S83XJied6^NKga@bNINKN5rUy~0Go_(Vx+*qyRWBn6`z>{{CEB!Yb*1!%Y+ClA>v;nN~myM`Qp4K)2=K72#}$TLx$KA#~Dz z5lm5dyud---x)8U^`@`O$Wl|d5h}7UCrfOX?rW&~Y9x1BYU#^7k;`OE1pA4%0CNJ} zafSy>?G3o#QoxvHc&j~NQuAtoKR)|Uxq?TBrCt++FXT?ZPy%?!Lz@qRj$vSFx z_ap)F7|%>Y9%1$IA?PmQ@M^FbMBD0S!eS!v2&R%x?HMZZL(m85-V&(|7k^(6lEDU= zXfK#lr)M<=z()snd%_C7zHYi8F2!Fv!SXBsU;(02B$*UVXeb$E8gNGJf@2NvMPi#| zh;s=f(F&>_VPyjpY#T9MWFzB4@_+=1=AJ@DI}PzH)D-7ufS@Z$CKwUog%vs=8Mwne zLPy4?dGhrEBPo7_1KfF-Ak`R=J|lFg{bMV4GHmhhoGP5zf1hIOIuP8|3FRT`oC1xQ z?RfBJ!q5J9MT7H!MowySGz!d`_~UT1BGCF}v|H!<(u1E(7HG?mjViX2q__A|MVwRX zaCgP6SF5ze3^7F87Aflddzt%?N$9Qaf-ly4YHu9+5oDdb_g%uM?@5Q6x%je!mlb)b z_qm#XAqPd8KTpD&H^+3N?|Rl9cph)T-EChPl$O+c@~;>YZjL``k*Azp{lmp-M6x)n z;R#0ng&?03(hK)wJ57y74RvcQ?mgzZ{EtmfHx#F|Y#=;iu?D+~?p*XuJNbNmAUk1w zc;m0I!#+j6u%a_76ueT=adOS z?AYs{ss1m|6HD^uCW6Ji|NDGGPutAg`w#VuyxL?*U9O^W+y5+He~RDY(-0jSS5ZAP zU{M_)o@DQ?tsI`;D~u((yv>L4XQnK~swhi?wb4^UMNQMv5}VC2=jSpG6x`AT?D?eE z_cWH#Gj!ot|BX{s=G@^jn`l~gUwsTSvhCkfP}|En{Nlm+jcTTiF>clhrbwH^moml#uj90{N{3eU&c`MR>}B3VsCE1;M}lT zzo~uI#BT5D)&~xxJo@7lc(QEahm;PK$Fs;oNIA+^$P-$U^vc41FZ-)~L>uj!!X9!|54us=KRJ{2(ks@s5h#q8)E zpbLKmBf+&3`|5AsD5={bVNTcHYZkd0b1BzL32O12SlJ zl2X|_U9q>|^2;wD`(}7PjQPCPMb+JBmOheKbV&>5q(RC-f0L7UWSeRp4AF~De7VI_ z2k%MKp<=mE~?5VdBJx{R`pd5LX*G{DGR#3XExFVyGCASkxdQ&ihl7p~M92 zB`X=$pGS&FPw70Civ}zXWFc>n?v5MgLo{SF=db5cbM1r_DuaweP+=7qNSHsg88h6D zFw$uigf~a%EPP9IL#KXoDIyENMo!=6UkF}UK@}pABN-a0nIH~=FwhYskN|AJhL5C= zIss7xDzOL{z8a((rT8;clr)@pOJbuG0?TkkrQV0}L7s$>z3T?R7jd(`3t6}i-ib_9 zioZgv)9;^HWW{#P1EfV0kie%4tS)+UUPMxkIZ@Z6C()CM+gyR_ph&Cc`!T2(RlY4j zD;Q!0qSzQS!HNlTsQEMU;A$5+54$wmso;k@5uA++B`wO{bacdA2ODDo1ergXG!6K) zl0-!fk_~JqiAduD5QH^IK}RT5WYJ9V--FY_3TTEDxbtd@zQ zeFb8PlQ*vdWrPFK8f-#-gvJ$X0P;4(>tSWiKU#`3pc{aqfs2OF1p%<5R%#Q|MJXjs z=3~IWYKst7;R{)kUQP<#&0>D!a1qY^J-9!ck|FPvaI!T1~NhoH=VONhJ4_CJu3v9tiyoUV#A8{I44P@amI9e`T%D zmV6d*j=9=Du|=U8d1XvZ-0=94pkF877KS}P!qE=#v4m-H(VGBieI?A;z!a8xP$O3ERQf!M8TaG4;u9Z4h&FtTGuKJ;cGKl0L;S%~QJ(H3)>X_> zF^Jrq|M|4^)7;jhZQXQ0&!uutRFRW}S`{S<192_~fAUM9k9Kgg_(qPyBT|6L0orYO z0wNrWo}?=)pxG`J5RyJRV&n5Hl{}qZkZjA~=y+1lUGWxCmdzL_n_z?y4)F?p2_<4w z=tw$xGOb4n>t(6_fY9ZD`_s?XN4#SDp(E6-LYxATUPRP*vNC!>`=YPO?+R7z3U&VG zEaQ`fh;zJOMcNjGA@7$^<(-!}!d2!^8aSv_o(e=NSP%mjnXqin3HL;F#06qlD1Udz z1cgmDU}Sg{Su0eY(k;v^PZc?}hPDt%!4KugS!6|T4o>6F0Amb`vp?L{iV+_gfwwa^ zh32N4P8`YMb_s?PL<`@*2s~a4h?!@LAUGgrQjg?pNY|U7)M4<5Ty*W%85#DbE>E8B z{LKAqvh!DH28W8`LzIYmM5zN~+VFp_C%xOLWL{ z(*n5J2wR|{xL}it8kC47Zs6-4<^0uU9t(@YsKjU@4dUEP_afO6Xq+hlL;&>Qu3CWs zMk7Yi`m`mh5W-5S`PWiG{FD%BzSy;bi=#4p>mmtoK8pbk zUN(FH8#2POJv$&apTU;s#Q4H;JX?0NCJL~qv@Rwn5%5~w#mS@z57K<+w3-Y!i4$aC z+e2Zv!|I~Wi&1fe4kZk`8WNURWM=-&3FHVZ=7u7``W(caf}gmPCQKSzP{?wFxTJKZ zd)V~m@RDJnG8Is@$vJ0#`X`hYAlMT4Qc;A%J2#A2?#`HY}b znb+Yt*WqSXXdKGNG^cc^bEr^xI$?;VEi46F52R93YY_!={;H#tBC)Gs2A9FpsFd0q z6(`HL&v&{djnmyRqYmEbaF<%$P#6NFuc|y8b%4=#&9vJhbAv?#?}ow_|J|*~x`CS2E9G327!syc$H*)5w#2JwVgH1IcMM1#`*kK_;DZkyKx-1o0)tuH9_8tQ68lG$bW}?5>;~PYRcr5}RrLPiiz)5x4 zx}0{5B&8k21=tc>fPD^&0b&JNGSC%(3@Bg%wb%t7R0e;E#Q7^E;lC){Ia(krzX_2j zQfiAdWMhV$3-B(qE<#65QF~9Bi5kQ@QgDE9P*fD?&h$}=%1Ho|_^>KrL5v#|?9E1U zDmDWOC4jO<4g&~%6!3HTKW%RU5B2u{kH2Rzi><+A2^owrD$I;&kZtUvM%L~vRF)xb zc2Zq8W|+zrW4n>ABuU-dy-1NZWG{ufWly%~qMb_W|2EV$ZP(}f`2D+&$9?nmKIgp7 z^R=AU>vdk|{Z;_q{h4P77Og%5J(4cA9MxeuKM$D76WvX97&s%U;Luc097$UF(tg>` z%cf3D=f{yJx;WD(6}%K2Sw8G%QzwoXw(7sI6h;r(>r88T^hFRzU`ppZ&GIsOuT5{HyKiHvntzolaZ zLY4r&tKyf40`TQZd7>b;*N(u!y|__g!_g4>`rH@u)ZRLXVzd@si8dkS-1#{CrrEj6z$F zL#!p#y&a6uq2O9+Jz=j~ldt;Va0hC?iY=+{Lmd0++YqZWe6n*_H#XJTK0#X#`g1-Gn- z6ZXLFlfV(si+>dB43q1Lw7)XrlRP*Gu177FvS0~R^y|@johK94SDe9IMjhHgCj{& zRTGwg0{FqSw{3HAfpvp^fzrJKJ51&gBL9C@*3*@OELw?T_n>nWhl4=P&OW5AUS#}HyL?#cUVDp~Z(tj&5y4-3AE|PyE z!B1kV=4uedl2U%AEBV`N7&^XF0{u)4qxXJR`XlTHqcM}8w^_=mgA=w?`e~WsrB=mv z_K2`Y*o$D1*NQk|K0Es7Gsq(((1;j>FqSEvfyrSVQa%8Ru&L#y)PARZ7e7wM}VkW$4AigiadK*3Ai6@k5)Wq)5VE=a{?@E<5(!Y0Jq`muntFbtYuGN z=W_O;#&?A&z7TM;IC3Cey^p;oPw(W!1j8^H+_s2*ab)hB+{<3(8Tur@$>&Vv3mfZL z%FT|7woRR=I00%A)EDHEy@5S8x=wZwYyqpzGxlwuW?UX&4K-A71tk9V{f9B^s6PJ)sUQqJ)CpMbmAns68}AaTHroA4ZSu zOKRPd7ug0z16@4uY&`4e8>prg{l6D@}JnCEQkTqd7B^&KZDA)ZxqB~B?>HJIO_0}2pKsn`(iE^ z)?{c8_@w+y1UJ;|5qk@eGxkQO!ybTd96WdoyEpF{-9+gMCUWY;j6*{@eYR-X#QKn~ zbOdMC*1n?2Si{iXuq}6$&@-DSR=!V;TmRWN9oK2cpq*i(cJ8@Yo2 zBW|<;Jlj_`g4=Bn@{w`821+4Zg^E-@>3kqFrr1S@#J6w z*5OftW2ZwmxC|9kpV==5TG^5jo+DVrXCE1TUarAVSl=*=LEJw`-BWL?*iiDqroU}H z$=W2)w*kT4Q=oTyxx{EvSkEu5##QN0Y-abIcnf~X!~m>(-#*3w(_6^CBBW{;TMx@( zy~&Fx$_v>r*h27CytE1OS~ibot>DStqry3KsxK8;?^}nBO`$p_znjWWp*oxGsngPX zW{GvEdS;zsf^~3KuL8qMODr0sEYBxl6%c0gq%UDrF1rqJu(SZ4Sx5g&%+E+a_LDI& zzlfRJ)BY^hayc~Y!O`}i!M+3yr~_y42r-Y$p(~cOVD04;o^5EjNCkU6LVM~9<^V0R z_F#W`gIg$!~ozc=8;R}8|1`8&CiFu}02T>u@+<(NpGhRq;2G;1?mXCwvdU<*H~F!TuP0Lm+J);Ir*zocW^5tA#}O-Q-huTD@M%$8v#z`NpM)>Ma0K>yUq+juZ(k@alC#u6)R{1PlE z(SQtM9V~JB3J#zzWuc_h#{sXPTsm0o8KmYtEZzGWY>5VAq@%*bBAIfJBXrO-OygRK zpo^3G%x2~Y@%O{a5jx#h=3X)IgLUeLq@>sR33&sDQ@~3CA~O0cEldUy&^M9UbuXVfnGudRPaWjvs~PfoI#m zJ=1$z+c}SteW&sh8kecJ;NIjX2)#K05{mW0MxVqwGc=4w^JDMr0pp*6gjKQFYanz| z)!^b`a(D!UmbK#wY{C+YinJjYg z&BFPF1_j_ugM?LET7y+Z?W+7{jseqP?@wp%uA{g*cCx1MvfHe2-A z+J6aIJTuzAx3!)327BW^js{L~epvop^4za}f#LjLD8ky#e*S)eJ3jtqW)`#u=Q;$yuE^0-ohaD3&OGIsE$3!zSy30SI3FCeiLI53P|U| zmVZTj=EhsZKPPXm@HrOFO@5yD=wXh|`$^8ocnS#Ocoe zZC)@PLE`yx1YY^~x6V=dNp`_@9|!*k@eWXS?L9)h1H*CrhQivm-Yh?lPdL)Re&zu( z4+;zi9}5Ga_daRoV>$vpom#m;k2E-_k`oLZ2~-Yc$+O;%@?jVb6mCa{0RgOH>ZL&YjI>gEZ~n6 zaMqtx=A+c`pK|i0fNY#6)5({NqbvaKxr#IhR+sSt=PLB^WI2B(SPH$n( zPQJQ0eLk>r_w{i4pW5n!+WM(6NClbnsX53IGHIa$d+=xSd?S!C+EyT@d;+aN`W7Cs z(!qi6$>1YuMaAjNb7k&f^C17AP^VxIFK>Pm^Dz5=)e!7;VS1l#gIWjPou>k9{;wR& zjq_0q7DQZ!qzm%szl6NbZ9|H}MX{^Xf3+$VA1LT!w;{W8_Q3qz8(`xesn=h6r3rZ= zFX%QsSoZRV%=Nv0U$_)GO&VUcUPa@%lx6%OQQ2adMz)-_|A&wlPftDg@a&kj_0;p> zk%x!xn_TlK?hNewUH32DW4gINsFKaxwyD==uou8x>WayO=*AlRKYh-Hs)cE z-#NBC^2L*u8Sp>5YnOAUUp$>0OEF2_Zd@{ZzvcSDXqB1D4`qA%3@_I;3;AfR>{IwK zGxPp+xyiNXLsgjwuak5Sh7Gco?dsh16UC8p4tF$q7@yzP&My6xD{lTvpS$||-y2>^ zW~VXb>&~~1xBas}YdFEkIEc4%s^Y=BDMH{3Bib#2|%>0=lt6H1ghlwRWfbobQj!!33xIn%$@^jPQ)Etfu) zaF2Ak6p!^j|IlSW`o?dhRX;IFkZm4bwgH_YO=r~-Yq$B7l#dIo`qO6rk7uQK+eDsG zH}KCMwEF#BP%3s8Ga8*&|2e=rRWXg$)ZHem5rA5W=o zlgP=`{asew+Zy^5UJd>BMqEVb#@fcBpeBsnKbK0FU8O}D`cB0`?&YG&zx1jfvj2&2 zA!*>S*H7x{2Lf`leDX(TM{+|AHr00qY@u>)o;#!hr=%V!v#5SKdt={(YCOX)cd+{r z^@Vf8bbv#_Zms7l-uG5||18doi+cRP@wZ6wk;tM(t`=@N%sBd#T=3fLeQG~!yyjS& z>JKSG*_BqM`{D+8LrykMc4#Z-81cVl8$u8sSKh6sq#fDUL-f9W=Nhf*kmrY;yPm#{ zjn?0v2DApobiLp7kMa@GnWu06%2_6bOjlL&a&$3(J6=Qe>psqc-~ao%aK6y~y(b^D zBAPBgq^uJBXXq4@Z$c^AFboxqOZj3)ot+#Nc>^;>_*sg`qsvhq_B9ElXs5# znx^_3=$8r;QCQ`XaA2zL5AjX;dFQ%rNgweFICNXpDW}<`Y!_oi%fzy?_u8Gd6tB>_ zf015z%gC_hM|r!D)F{o6{UUEQ6CGEMw4N*cR zQJuYfs`#dh%d>qIIzgu|+_Xwf-f9pNaqqHX3(99yr}dVlQ@&=oNYyV{Gw$jQH#_0N zE3buDHxK%J`UU6i5fy+s~ zif!dwwfEg>sWC_Ij+=*n&?uTOTbH*^=v8(Ht>ZjvJYLH`)*|^ILSw4f<%wt5 z3nFNlF@}na$W*!Hag12Vro3X#eXD-)J>5PeI+N@Q%OU)&nS18sg~W>8j;=o(w85qM zpPsVH*z-VhjeDy9d1Ij?9tD3FJ!=gvSRZ}=%)aT~KcS0{VD z%fqu4%f({-{1jV{ZF%E);)b)n@b4Dqr1Gq?w#6dWq!>I1SwmAZknpJUR_(A0u&*96 zTt&SeM<_LBmLOLT%ADSbHEg+%Dzzcs&wua{ni{-iU=k}Vy+s=Qe6i;ho%@6h5_kSg z?Aoo-)*ifL#f?5&lL>kA=vBwGoJNR_%{Ly2K6Y7New8Q9D~{UIS)A*AbEG0jW5roR zJDnA_+LyMh2rTwr{x+z~>hF=&u#(n(%BB?6ys<9x^j<5#|K%mofIS=Y&YtV&im43^ zJ}>*63d>IPJV=Q1JMgP(p-)Hl^y-e)@*@!rKBeo!v%8ROZK26ckrEywS8m!S7j?IE z^kfbmagblua_wYx)gH%Nm4@aw2+p~f3UhlWgDsJ8i z%HvlNVn&0WP*&PI{6!123)XvbCv8v34Fw%$>9n_^?IR?4XL-gw>^+K5+HsMCP9}~g zZ(of@k63*8voOK@=ex)1URt~LDsPTTVBPtjqxbycs_CNbN~L`GAUt@tkqg_V zsl%$TKK7vQW(BggIP9hP6Gw(Ta6kH=bF-RZBL>;3$`wE03k(~E(hri8&E&(^1iXQT zzBxafr5ClXJb5)| zZR$YDEcQC;K~qV1jO!JvLt|A{uHGH)>VL*!wYH1~a=LZJ%C8ST-}xu1Z>(&vsQK;W z0Ow7R{#E@PtrTG62JwyrUBjJM3ilN3Te)3!d}B}O=%f1?mQQ{6D&;QUmcH9G@aA3- zj_3Z6-eKIve7Oz9c9Ns;@o=k{8939oLg7X*Bk-6vdDl#91JU?Eob_Mto0P6JEA4x} z&Y{EI=&ErpQMSKHtto}OYAR`y=)G4tdCfKYQKp%vmK*DD9u8u!QoR*0n7;GZKTH`w z&r9WkES*bx?szUggE>_q+EA|)Ag;3UhG{JQA)$kk=9R2DgTFoS-rDi%y@$vCOx6r9 z-)z~Ba(!%bH0#vr4cqWf)Qw8lSYA3CH=Xn&S5`Gq&R@x;?}^M`M+bUN{@u35<(YGg z$K_BMORg#SsHJAOacDuLm8Pn`Rb%@JRmeOuK4rWPLgGh<~sely^P-K z%6%ynt~76==|3FWws8ZEYQ@2{vrHoN9fE6gWP?|k1o7_cTdXRxZ$_Jws+^FRV&Jx-wsF&sce(HcVu-2(eL;wl2YES zwS>2gtM7K)EHpdo8a(S)dhft-y!fBk_hb2l-iOCE$5(4sNN-%%+sG>0(Pj{(oqn0a zyceo3{phrabel|ur5aK7Vz94kNZG)OHCi?&0&!yb1BB4fpAvjXDP}q+*Q$$%m;9zs zEw-*W5ZwM32`SLq8FITfaK(8d;Z)qto%Uy}R_&~ym#)`jcn2zHa-?W7&=Y=VV2aqB zb3?!D9l{=>HwR0mWo*GT_L<>!{II3>ZaPZS32||4yKv`Q-Y`S>{5DKOFI_?9eDmYN zbPLB#zf1MVCbqs!d!_5!R;jk#tYZJ>gj?CY{xPDP&ZYODPZMsWUK=`<>E@P<2~tiC z*)b7#zdH6W;a~d)b!3kH>6k5d0kYLS?C{GBdgQ9ovDH@xucq-fthTINNxK|CxU-d< z8F8nysc&pc+r=Zy+DC^TF>SVMh=^9-Q?h-k9bS$@+wVXxxb)9WUto~oG~&N!3f zwx^|>GqWz(Eq`Zv$t!V>?YbS<{M&(wc7cC%joe4v%Uo8Fe80Em&%^n4?{FMhpVfa| zz7ZT)l5jA$oSEx<MKfQ4XDrNhibAynj%gy3EkaI`e0- z|CS@7l}_|AZPwvm58s{Ka^7v_{@&ZxWpaP3-D;9JRaKR+VMuYdbnQ#lJ_qy4QR7Q) z#ycajKiss)UjAMNv(7=KV|S^F?G>voRL+)^pM&p2Ip)5zO}JWsi1K)xD8JF8z)2hDH{4g`^V~$0>#zUw*ORD@Cp^Q;H&Q1*K%zQBIbVroDW3(ijJenx zN2V-H7Q6T!|ht!K&SqC`>32R&6h{0f(sY%k&SQH|W`N7zyhj)2~^D`1mzrdYfst24S zKRgGcTK;X*z`!6djCY)iNnOEsoCc1rvzCgZ>CELI%z{E$VCsOMm6!v>3P%-;k8u=% zk>{erPa}iK@W-6Pbs;MOPLIM50Otp{Gg}YF-gcfpflqu4GQrf*C&<5z;-W;%TqcY8 z6%_fAssM`ocytkYpP@(C@#dd-$D_Lp!q10mxiLwVifs_lTRZrMsXpu z22s@cI*Rkj7Eq#=hT`Hh#@A7tPvQuo_!;(}p}1BMMFENU62%3%__{2v1=ARFD6Z9C z8j4f_6hGI}kFq$QiQ*?Ksoy}6FFH#_k>B59c6}*}^I0!J6hFiMGZbk8C{pLl(x)N5 zL~%hbzJVfb0Y%-Vp}1B6#l;DiIT87U;(`?cWpVA-QREX1s`t`lQD?5dPgDG=M(glR zgaC@vIkUOA)q*LeF60A2>S*6IBK(IIH~x}w{Qd<^G4=c6uPey7?~6abFA$<{Fb>T0 z@x`AyXL|qJ6w?+nj`}U}r~bQ2>3)N8|C9Lh`}+?R`H4J1#(iJ>^#o8{`+f1Jeqa1a z3n)^ShN7+jir*4{>c8Tz_jMHcL@!zV`ThL|ieHNV+RvPc&y0w^Ac_JK@r4oL_w`L# zr0Ol8NLm_-dW%t9`?;2WG$L#NRa5Nul>yQ2%<H?_FV-alLc4@u7isfi!WHm z@9WzN06M61#+XW_EXf#?NsD<$`<4dK{?!0*v+Aq7s*-N&`{0*B=gB$GLHNX z7mxH69KX~7y*YL+YW0~d5e(S$1q|bt^0*)xU$-R`ur(h?(h_kLh}igb8jI-s6l&`& zQr2&{$$YYxj^k&m{a5_E`Jxd4dDQ>DuO%3==?fUfFL31d^-aB|fGffrjugEm;wTWa z@oQYZhNJ$!z80A0{i;polf7gd`5i7E=}UQ>FSrrJQ9xDywaNMmIttok%D4Sw{!{-k z=9hkn{`Yl2AW)?6Yk@uu@g?uRuLEETlFvKp+`97LNei+-q^SS-diBwk=>Mw&l&|~A z^JFibcmJ&ed}0Lr5(??NIzSN!6)F5Gs&C>r-`BTw01OBCI8v5~jLDqQ`?{YzPxjJr{LIpQ z1xG$HpW!I5Tz#_1l#hjpbL7p0~GT2bwD6iq>u#+ z;}<%>@9UekgbeOK@OejF+719^ajZz;mwYas-GWV~d@MDd1Ly00@;uo~<{iJo#Up(M z$1m14%I90TpXq==tVjVDk3|ao1&;i_zKtWuMLv#{CE~a^R;2LvmKV?N6OM~?;OlW0d)WrcYz&o@_ZHY$K71;$|oGGVdgvf;FWKQapd{k7x21p ze?D1`BhROM!7JZ*g4c!i^GPrqc|M5)UKj4q2hrdugN1(Q12fPBE%ZC@7~{zEjvaVi z=y%>(z%49x;C22!g@675tWTfUYVf*ne}2DtF&GqqJ$|cQfnMQ$L4o`gh63)p2L*s- z{ByhFbAFmR2@Ima0(Ab*Wbm#QiK@fLLW_R|iPc(5C6jgM49G^X!2I7*0t$a${G&|# z_b}h>+WdbVd-2*PFgAE*KyZp5{~88r`h0Z)Zk}||ih@4gF7Twu+`M(xg1=e@&K)q| zg9EA>2+HE=3Ya`!57x)y58#N4D#RC#Xn;lFbGN|~1h981n5UUjAu#0s_~Y6+E&NCt z_(#5J014Owmin`Bu3#0vH*W5Kf+Q?9r1LJr!VwKn+!vkI0NLy`PaxPcU;e<;1>ZP- zv3Q1yRqrEhOO+d48cBC9n%2_ciwpR}yd-@oHv%OB|2+&z>pNY~%guKl_)KO6swf1; z{=VGID>da~MZy0fH-fbo|BvP7VK6>Sh^t)v^P|;K5foP z)}rd`k#s6r_jKj+0!rA5;xfeimrZUhQY z1a$tZ%i+fb@2g$U%gz5V_Tqf9z}VllH+*Ek#eTjF<$seK!LpM7$8z(rHs$;FMxd-> ziE=Yvt+J$bN}xPM0MxHCR8VdxR9(`X@1{l32N$Y2!!y5NeMN5mS9|lFuIJ_EI}dzj zZ>aw_d&5U&PHy7{P{Tkmw!Y3KlnEvi&>ViPVqy4kLC=l2NO6#Y>HzA z1?~#RdHI6JhCd!5_6r0Ln(hjiJEZBki?zc$d<`xv*dIJ;>ERU`6c&c_@r&@rh3)bT z+Zz_{9T2u~pm;t$;TP#qKA!IVR2KRv@D?ZxnpcvA^Od0Y_A$8QAH@Wh4ZrX(d+$*5 zpn%|@z&UEbleItkvA{F3;Biy%03pNMZ-*~<{*y`qfBA+p`tgvVg}L*>IoeO>Y$g=4iJIzIFRnDtgRRsaP2w+6BX06ugB<^Tc?7lOkPLPA0a1OkZ`N25_Fw4|7r zu=sLGY3b#XSggznWd#{oB{?isQC(3jVNeMWfIXXtV@g z7AuSYpZ|TR0whpEd*JRchzbCefWRamA8G*w0D!{gs0BX$gFwNr{0bqEDDba#7ytr; z!JtA=a0XB~43L6=O<~GpxTL9&142s0BZQNRq#Q57s+v_VcWit3)bp7%UMCb~9+M_R z4a-+sYvJTYpsDLxo+v$619m76wx1jB<6z(w0_6_}{&AfI0EI$eP&gC~gF~S({vRb^ zlHhQrQVt#=LMm7aC-rzqb=y-_orj3!W{%Wn_)v4tnh#xoD2z{;1YiQZL3u?t|7}0Ht>Q9}MYf@MY@{K~~6)8JKAXP?)8A;W*sJf2hHUM<*^qF4QYq#Rk_= zAZz@L`tgvMwqu>L(uuk2)Ba(bK7<{=aKSRmbOLoTqiH1@K4s%mk%hQtcc}ysnZZF1 zpFcN-7&ST+$JS#nPgc%%(VzS^sN((U!m8iBT-rCd>^rV~nE3%<;QCj)HKmPGGEnN8 zs-V73PJ6nGo(I~h{h3+6{ob@tkgxAgdzM|F5 z1xfNYL*bd$k%TO6r)?Fl`^4}Cubm9zrtv+M5@hLXZOUv%U-J3b(d>-u8^})Sl}{PA zDmxTYdn83`7`nXVs`+fuKt;;|p!50(g0mV-}l!jwF&@a!Qip_ZM>e55)*+z+F z9Xj5Qk0hMJ4aQUQt00H)Zz0$IR!k}@-oa%cOesQbC3w0Gx4oY*P&(_*j_v6jNa#0gP>{TpX+-vKvWeOHE~;dy2k&; zW<>Wxk~9bLj)+PeEcIhwT0xI!wXQoZWmBN|2l9OJp$;@of;bs3$;$6sv9&gA#eIe^ zQo4q77CI4-PS;Y|k>Z{eFqGOjq|#va#>>yxbw_1D#_*|tH<<*R#O7tbP{LZw4M4*+ z#nwL}m%j<{D+ZFUqXGg4soZIW-^Hp^Q-k&c%H6r9h7z-Fo)Ulf7Vq@Ob!Wo-Dj|if zR;HM&i2!zb6H4!q`O(YG^Z>wZo}~T+L%__b2HLEJv}w*;kn3)hk#Z+ za$|KgE7#Tb-Gy$pz8x|ohi;Ds4r3xQi9OCgj8IU|yY^x*T~)!IuWg^0oH>B1h+!WW zqHS;QOoqzCJM-7?;lZ;X0=Pa#Qu1ThI6JMZH2IL59;UX3E_y{F!&{PVVgnlyJk1nt ztHj;0qg1A8Y0hR;IIZSs(xY-!E*emJ?ci>k2Q`OB(9i#>d??p~=pKhVO;c$NRf7`l z4f^U-p&%O>I7pJWZ6PgHwW2fzR`Hg=(=rt`c~=anG~Q}x9;Gar)2+n16;U-RrFg); zdUJjbodn!+JW$-V!Z^N*#?#t}FS5ZeYa`JEXlYjUX(mHO^(64yg?6jf*6Q)xGl0vx z8JG=zHxa-_iJhBOaKCWRdF?SI2(`(mCVG$v^&A7b`YXmr8QZP?0nI)=n;WDP+UG5w zwAn)`vlxFs8kyCPoIDHuS)^ zU+zC0SdCiI`{%DI`QiaM6IIKD=(CUeaH1<8T5ZmX(YH+cy~+0#f@9odNn&8yjA|~& z`HDf8vnETP^ipdz3VREytTZ!dYwwJvC#sNBUzwTusVK{{3v&RPFA}=k`_O^6F2MPV zKiI^fZFmg5<}}aMVSYIQzQ(=03+?8v;~p|-aTx#)JS>=UGV2K|ZtPmthJ$)}?TAB9 zP0wJ@zKlWA95Kfa9lJ4Y?VHG6R)gPt?5|ZAYvgFwW_jC~_i0fQ*hgh`YDl;W5ZrR5MBg$&e7fF{jiUAQ2J)ogz8V@&z z_|Z1jc_MV>T~#~H>P4#FSZU&`ErttKFa{Vh`&O$yaJ=M7PLQ{kiyOLRVii>;)EFa8 zxaU%p!tJ)a;bPp31n}{dhE=g@z#1C7%&Sz>J;vNLaiChpS}FUY>E)ILGn{(}%r|{J z_DE~+T~jH)YrzHRX+1hX+KfnUM8xu>Byi8dFW{t<-$AIMq#Bi2E-ovy!#d4XFAr=|Yjl#_mv-}g{897dz!=N{Hl3seHC*+Lo1~AHabVDVsqNbLH~UGbu0R7n-~Slp=zZw)<_h*Y9gaE;DlsG z%u0xgGd;D;I`}vqEfYkm(W*Es;{LA4%4+}v#b}FPG|B*i_Z6IqSz(&2N3Z)!6&?2j zCyg~?=HBEpdb#?78IBrqY1`NpNohIq#a4vba0x zQsLt)^o{)XjJP^R;;(FY*>@^( z9%TRqEYqy!q?J>-&gQNA&*342=N!LkUL3DO>wUBAWw)8*5ZrsGz$PwQDmX(D`AFq4 zEhtiCizwz{^{t$^$pWfg*j`c|@HUp79$(|b(=|6$*p7~bipumiB1>~b<8p9lcwDfQ zMl3s>;1DSuQ`M>^YULDdSNH)?GxsDTp4wOGyh$*3lY|&%xGZ}m8EGbQfu7M{HR9-x zp=ZT{B5iS{Db6IkUo=(vb>)v`u#jJtuN*qVJBtUuJ)J%V_51)3Csb@tOxa5=Gg-AE zlz2$RWkz;zKWwT}FX{MLiamKeo&?d6lA7fi)i4inC1SGAiu+xDZq#1Pdn8MUj3=JI z<^SO5)59>dFFafNNsW7lq>r6q>jPxE$~{~4@Ic*%TEHQHB`*csitaKAFZb*}MI*+H z>j}<08y%$XurwBt<}Z)i+_1_v_5fjzeH95O#dcm)1mR{pGY6yyeYnI-F+#Fp}*#<#*|-rDEwiPbKzB1V@Ew9n(#69qTV+!cYcvnlyI!uXUJr`0DZ$#G zVIkS-DicSSl{8k3w|Kv`1mEY>A=Is@)mPHMPk6KQ~`UiL@Ij?wEDRhpQhI+XYAD`i%;uhaKw*H?7GR-Sl?q1S#=NO^e zG)wz98+=vVdN&1eAL9gP-KJxnoZ?#Xrt|Kx1Pl3sV-7%LGKd)(_cYCj@ZuNls6~ZN z$Yh4d&BpQER@NW@{}aD)&@1;&O&aESUz)x>b({LNzv-F^`Q7StW};m)=K@~xi1nRL zfTCt2u{_V4gtt+K=r+?hPtu#2J3|6wfRtX-fO~R@g<=R*j*x9}Na8F8%G0T$yHzDV z&0?i#c0`zokJ7FQo1x&bu%Sp?^cstIh2D=iNyES>fu13Hh!cjJ7N*rU&OATip2jF{ zoH9?d;BsT1mKFT6dqNnIvw?wlh)PqLw$=|JL{;y2rA=oKdQGo_T$1oM(J1*f*8vltbMv@( zJQRLVJj#h$6`t~^$7&n$?PzZ;@qbWHxS=BMv0f^sDs>8J7+)=5f;0Xr5YnyR#6Y^k zF;Sypt)_8Pj%dmnqf~W&^ap?iAaufNYup3mBcEsHLwYQd9fAtVDwmbiFfr{~4<1iy z3J3Pwd7!-JS14i`(WAk?YBCLS$7$Pf7FJ5-fIOHC( zGGBz*RaMm5T@9V$B@%ja?IB`{@s-M@qHZ(68Oxk=gA4oHJ%bwQTL2YiHMgUpLOm1s zl`YiFBZy`x5b*3VL(Af$P^N6EFjS!*O~3$Ul5H>u8nVWsf2OcU9+00(mPA^xjf>be z)r7!IF|nQy&g7xOR-7ojAXZg3o7*4FC`%Q_S&CB|iLgGEVxv2x=3(}0uHEBbYl5TV`&0L-^77J5n_#2%`wn-rO>%~nWa`9qS3r^3dtr%6&8F85{RZA!T27b<#cA6i6;8zrT7mzo@{ zojJxLY^`O-x;NFvtsIN-s+Nkei*mZ~TvY?2oAg|ze);~qbq$JXUaA4OZSbw681DsS5YyMZArP*@JEAQ&HI9z4d_qytH}}=4ke;@Eww=aZ5TDm1~gM=+jHK#)-@CE0lgNO zh~dKPvK!#bY{)WPM%N1#{R!G2?WYyP7--EXOAEa-!OpyuH6`nCiV~P&{}L5=U$%RS$x5U( zGQjjmClpsZgM)`i7?kvQ%WSZLBW0UYFhJrk07>WGhdyKv)m?&b?9^8}v-wbszd>;F zfXEd$GhSLAEKE~>;CXi8Py;HEFl4GAj)8}I>L7_s)IO~%IkTzoZKQ&u(53ZAKchjdZ*aAvS|O0F>{-Q}({aiFe2-{!ySs zldZIkiyMzq`&HcdcT9!^X17ficdLp=$*c7T-NQ`}15sGN9(XoU#59iQ9$93HV|3Y} zAqtV(|He1F9NhD+@ZC|hK6pAgE+u?qt0o}6@1%{tO7R%aU7;q$;K0}`tQ#t*(rf@9 z7Z+225-JT~achT!JYMOsaUGHP$k;7qsOjd+gYLk{p*By9xY9q9@$RoA;pxHHU8MW6 zRhPNr+qmLdT6oJ-qX$|F-P-X`Q5Nw@3l4KUB$zN{0XUh->|`C53LLY&UC7*bM~{xn z8U9h1WPi|WEjOo0N%sTbP0KdUj-6Vs{=6r3BHZN-o+e62UuGX5$+}%{PchOTmQHU3 zjiH_nveMTgAYU}gaX?$DXRBmesVVr`(gGof8n-J->No*v{jw+2xz`ivn{8RzCa1^~ zZ6q}1sd0HmcYP&o$WKtIz=583r%4KAat0ueafL?jS~ly%-4Q+n01ds8^i)p{I;rl> zlx0J}#rKVORIabGE6OsO<&l|yZPROuG+dG^cjF_boUAeuRz|acw+f357&kK&wko8p zK(;~M-?Hcx8XZtYT*q?tSYAQLJ5`C$pibq@=)eaIi_QxqVW+)x$u&GtbaB=j#|NYA zYcnT2JR#=pZ1L{c@g!66h&$?)4m)R4!y7!B*4L-PQbKej_34{grWz;oQe*V(nR+?g z13z{7+aNPs0V&RS?8(2_?$5#@B+tRi-uByc;X^#_&eiTQOxIUTSW=?Mv^`2oWei6! zrKlD=1^kJuRO@NpU+QmMq$u1e0pHGT#q}}Wn(YBRWZXX&Zqeb@E6Q-}ZoHhNTt=`*&?9p!Z;!z#XMB1btgHL|A=!4TJA zNO{1JohHFkGSA~@H)WHU@5ffa(i-b&0Vq9$7(s@rA(WV@sR${k=z&;V=)q!K+J;M&s>2M5g>|zeLmIQk;{2^9 zSZWQNdfiQRDCsmF@(g&of9kL+CG#Q$lG6*5%}$j_ITM4%C|gze5dsobwg5T5Y{ak+ z>?5rSj-SwZX@>TT&x*-fNB32oDQXpM^Gzl=b-lAjt0;Pqf5}&j%*lDUyjaUx2ar#H zn~z4IB^?vpSR)RJ*DX&OWo(XXLg&!|kzwdR(`7;^>5C5L<1#KiY60YolCkXB{r(URj>?X;TB$0r>; z+Y#{eZb;Q^O*`(w8lyW9s8Frj)8CIVw_mwKg^*Jw(@b}lXiAkuiZ@P5M*2Kth>3^C z8zwcoLp(Ur?APUU7yhoA&S#1$Z zK-g7cC<%}P1P`CPo+d*YI!i0TMV{8YoC8a?S21?$=5hAm4qY2R?!!zx4aD`phsp3p zcosRDTl`QqDWkd+!X|XvBkayF-ZY!zCqiV%O^#JIxRbSE!~=(=f{lYY@C%Tu`kAnO zYQ3cfYH2RE6K{zMfbs7;9>P$BfVTuK`G^-L;b)uVuW74UE7mWQNFIwp<7^8=PvSU$ z8?kNd{4lW_zP)le;GM_QB+A9n%2CKrTvubd@1s>_B0-I@9xS1uSg)F`J)!ZzvUbJs zZ#Kl09n08lPRn^$poe=J@bowy%EDWOntS;N;%DUTafe7_$s^SDqdxuN3i z^Wz~h@KiEN4qk!ryw5~e9LSDAV8wd?(022>VD7W~c}a0^rk#%Csv8HhnZ3sgsFfiK zC*czY&#DwucVmJ&RCy3_KLelWN-iCr{tK2V@?a>>u8=?<=K|+A{<1^7!zLLJBwRx! zQU!jSRV{RmXZltJi0H?&jho2NMZJgzZ4e#ODDmqI>2#e8;9VQ3a4gr%ETAmS+M~t~ zmE2{NEY#jej-TA?h?9uU|KT!9T#}xsZpwlOWTkKwMpE5PZ^Cs=kDZMXx5w0KpsX1GhurrmM9B+1^Z=^^6@&<2Ccro+m+&vc+* zp32fUt$p>IB_S&aHiKx+lZMa&oA{DdNJ#~8Y&k|tQ`#^S$l2bJQC(nr_N_)mqH8|^ zJq=@$`tI;fHYPG#lAUy;#J^yXL~ja5$`91548$;6Uwc3BLi)@*Oe zvUlsc(`iQXXUJt#11J(I-Xaa74M#(4d!M{A6Gz<Mmo=*B7FbS|dRb)(d{xyqD=k63qgv+5#Y|UG$gQ9ncTacPsHf$jD*vHJvu(aH z5w$oYI<(y@#vfa4U_H%cQy7W+SBThFldCM)?&fwa8De-gx}*`UocNev%iSXVKBg_+ z^5iXAzNT#H3?tR5?)CS;ZBn_WIY?QA<8yzkx`ZqPDQ-}3GZSd?Re`4& z;I&FLD-_${fR)|&etJAj2cPoyGJARRcv$7uRx9W1%ePsr5i7IeF<#}Y7EMWdY&Apl zX7yDk8%e|iE}I=!rT!pOQOo~!?;3PE{xm#pVw{b};CAGk)_G&`%rH~4Jl?|K@6;(e zdo(92@fRX3&7Dz$uhi;?CPRlrW^kzcZrf#~_A8e%I36oUrBl;HLbx&X36wY#-cpc^ zB}*==%NXA17MW)OZ4ah!;$)ue!ULXBMb$iWAMKEg1EvP_7`%@&h1DP7aLf3Q*$T(q zcG9*GSV2p|k9uJ*l&!PIZKfRZY7d>_zV0!C?663Uv!`APGi?Zb98w%_bgg%TDQQip z@IJ2C40~ecbR`7WA7ObPgGynYtG;YIQ^-~&c*Eeo6)0uG)Al;~;UDxuQ7YGifn3K% zD4;$=6dk(F!pFy;r#5oqm~5>7`4WPCSbwdnY>o1tJt}s^!+>;}zgh!IBC<>>@+8pk zCa&x>t-p_w0F_P$H;4$7fChy^rI!{DArW08Z)(z(BX&zcTV&Qh1Qgag8F+T@wT0IQ z_4KaGlh#dSB$;_Cv_~E_`%%6d-=RVBzTRnr;&jxLIJ|$#W=r!7+*mQoyhS)#(0fV4 zWDy*r8+p-j<3CXAYeXtcr+XFkc7aILSd6SeSOHy?W}nStMnD)zJ&{{%@b0sc{ra-# z65RID!#lH{-%-9^DWBJ9Lg8I9{ym4=8Ym;HBXu)nk{yz&;vv0m#HKD~)ulAToe*y| zI!pqJtdaL&yv<*sfDTA0aVQ=Q>^`dTBac_;5|M7$yd@$qNKHmkb7y2T27IsiZ2Gu7 zJe&9MdD_T}z2os0UnV8i&`~-yt700eD(!AmKy<>bOIGd1#Sci)t9`1VNFh_>>klOr z=;3kwY6LWS$_&aZ+cuchER=6?^SKligVG=8z-=TM6I>ht{;bnBk7`;r;2dxuw6F~a z33M`()tlhB2eK0rMP}~?^dGZrldj*_=6;1?er=8TD3$(lC{hIi^X~{YC=#Ej-}|VS zEO`f>s_?X+T8GFngiLY|%W{;dqMC>Pg8Nj>a1Rk^M^)n`lGYnaZq%G)FRyASv@Mp9 zHfnRH?86rst5-05Q^(Yy&Cq+jReC_wej9xHZC`qs$O{F6@{SkGNVS*Mv%=bk^>{E= zKMF$cIo4AEZHjHiB`sf8s3qEma8`Ly1Fw1rLX>Z!9|Wm=-s z3~&3;?y)M5hsjuDn!%9Jm*fC9T|&a4D~>WS9L(hPK`!1xBDzz0?XBK%{0HEclLgOT zmzhawXV9*+g(*;6`|6-Tcno@dT~onxW?J4WQMpVxuf2$X@whY;eBUMnr=w31cND7` z>o*Jl{?J0ab(^IqHvl?4?GzmTw$QdsYE0-{GY@jULD)>Xh10>^iqA>yB;%#~BHqVu zH9FPj>o$oh=UHMgu~o+^u6ek$O&^N8G0L@uTf|hbiJ9rVtGF`@9BR#FvNZB4$%B%J2Vc z+6;LAqfJF3r{-{0x@zv&p4?$cpGSJ=&B$HP)KkLEhqgtHnHPkZRHomaOovPU6Vm74 zTf!FaPup-LAQ0TbN)$0qvN7xNI&j#^)UxF=Y;Uu*RFr$ax*q|ZtwFLt8aJkF%46GW z>-Z(N#>vD#Tsepicyh~PDvt-Gl|3RL%^H8gMPevs@WvR%%EolrxMEICay-X`SmHov z-vJiR*mQW zKIeTu@8@|v&z)!M5d+C;UrIOD^O00x26DIb?WD)Nmh#t3PUiMSMPEo!`sE$Cn^j** zDcyu!1?HDFu0C`%->Afwxj_U0w#G8+*){mbUov02wuD5^cN^Q-Y;qzyP#t>`Ze;EK zjR19&CTCEoR!jMa3Ib(LWFs_C;e|lCQgXjvRAPCpI1KR3FN)CX+&kQg*Ji5DYKW@t zXcp;%m{y{oBxR`t9lP@D2Q}M~PjTCnnq+ST0%{+w-}%nz>(HV~N;nnoc(RU+s$`#O z*n3~Hs?^#wIdDpkhcxZJ|HXq350+jMH*hGB}KuKnrLv!5+v5`6-`2|zF9 zpAab$S=GE2Ohs=q&GkW?d%dEo$vH+*=-X9N7;Z9!3xCKF-p|c|BG|s*%q;o zLDoy~!DE`BfQ*<;M;^<%IsMBeU(TWJuv+)E(eT9q#!aC$-*ENWR2^BYkq;y09;ck# z+l#yAtg4*Ny;Ls7L315%zKDH(7zJfiOtFs?Lyetq5*{P3pRg?|zxv$vcF1be&hCI8 z5WRp=zl#<6i9gU(+>5VcITrZ{{@{ay`1H5ImcJ%1mk9v8o9LkyrGwE7E2`KpL>&5? z_#$$|7?}sfhtP`y`O>MIuf+<3Ld)#7+%5{0qpjhX9i@Vl6y4+%J`}mx!o}50_v19` zt2`fSvW4`(6EDkG_~5<0LIeM9;MiKxvHL1e7c;#HukR?HRGWU&aWO-d5Y-`d%r>zP zHBUHeu)NT@~N{_|~ zR~l(R7!V5uBxlU-zAlq%muId%Vd8282^{9a!d+)*SD}&)liHK0JyURuoee#7?kAlI zrum7L^4q_V!GVj3MBWNs+z#d8KFI|ns46URmBPkI#AZ!t`*!_UG}<%e1!%Nz?=6M= z%@i)r>O20VGK2&!9<&;+uAQ#K5!=z>bcdWF;uGSwEL~zjnejLV&EAVdwg2NmV^{Do zH)?|TcuwS)u~BuC*bj?~wK_SXKdD!r30d3Q-A0{7Shkpg(^)=|!0PAbn1FxKr?3^- zS@72J(0U=Ru$Tb5B{xh*6^BwV9aS?>`g!+?b%L3sD(x)N)J$3Ff((_iEgz6~Uh|Fa z5O_cs%2SYIspAZ~l=AT@%j|9f1`qk_?QE=GlX*SGImX zRndA^>D60%Zr3^2KCHlT<+7$Uv2Z(qJjB!wF}Qo%(aM$&X^#fG2mYD~kbAJ>tI9G! zht|5wFgtZp{g+aihf%;GD-4pk);jG293=>Puw>v7m$0`(H{7uQxk>hc;I7~;ySMrkE67fKGn=%IHebd zOy>BFb=OKXi{R`ZnCZajAh6iyzyF2a`IT$gjEfTdE4HOX=Q z4u9e_7U(TKdeMPnGN_f*N+LzC$Q4%w@+Z;)_g}_`|6Q3F|F%D1DiiZxx#HHFsEs4E-LO~Mckmx#b4cV89B7RPozTe*XePznM|T9G$+6EMC$aMTzc17-^1*#)?6>ebSev zx~XCoDq#)XAVHG5<#zZ#zrKmd*3cFMaLHT0x)BO?ZXOAoFc7!5#GqH7)^I-+k~w*^ z+6UI^86>wBUCS$!KB7Xb9ybfQd+|Eu)uIKfhc=SH=Ug-U5-y$})K$~{%A?MFClH`I zW4QXdYy@r%*uGnUUeA=lA+pJ!Eoo`zu|%J}&w(M@P)ZyI|6700mUEAO_m)&ycl!q(8_2%?D~ zZve{W%7m)}MuGM_xwU+_5CP@oH@A{RLqaP=OY#qq(W9VI*Nkg41bch-haz{R;;XsV zrzMh24n&`*KhnG+Z%l39k`t#>iOQ%U3_pUnD4_6q5`4F?u zYzA9os%$CK)F8e47YM@$VxgKabe`IP9mM{EA)5yME*kCe{?_Ip;P*vZs0C4;%e(V* zgQNf_{NO{?IU>WbON+H<$PVmnM!r!wZ|xWGKw`G(eq`+Ye~h}5@kdfHdf#q6LQ_XV zA-_M&|Nm3Ro-t#-EbcNkDn^z{5mS6cC<0!n{G=NqhG?0I1yDWNC=$ zy@oWyAK~DM0a0cZ!2>bjdhF%`*^^d#VPMc zFLou}sJAz;RXoRIs|dY65;;|@l^W{orpsA?l>3=WZ32ZE{LnNQ%b&1Oe5CQPXEIy{ z=!ts~lM@w~-pWgP^e+-d1)$kHzq{hh{XBQ8Ax&WAg-Z)1jwLi?G!3Ut&~!J-S7gY0 zuJkls1gFvL20n*g2-b_wTo&e>y7^~+P!_Jx4EI@d%u68_HPFxBT+`c*rNFFA^38sl{pDp)mjz{cr{D z=Q<}PFFU&I%jjU_x!L-*-7qMh%cdo1H+-&I;?K;PAWjfN6QlrY`8U8|fX}4ubZO^h zBGwjO@061AhGvu~@3Am@#>G+afZp- zaZJi0!4r-$nRN|elrdVMdyB>c5=`5k-}q#PY6qTw44suFe_9$7&6y|$FU_?>@rirg!^FR0Nl$Ri5mDCGH#v_ckjt%8%~2fRqZbIw#iH~9WF%qy=LvEVqDa^M}i}-9Sp||lrvq+tsZvgho_LWi^qC+t4-q0Z3sb0F0pg2 z>WRuRr)_p?IOQFIx`dv~oF&60P;p4IOM8px{&g@f8Nz!$^vR9=`jtz2XVtIzfMG>? zWew)&UlkV_Yr6$21+%yok`UtOT7H*^DN$>eSC~=+{k>lUg@)lDkk_iX1WS~e>fu?P z)#slsn)JChxdl(VnWjh~U?|55^<`PxW#TrEhcz4Fnw__W~~zR>|)afp2?hODX2jay?F;vOKU>E zE00FjdIc>Aa_(h3`{QAYlD9sr2RMPB_`6;gr@);@D`LreG>nfjrW}&r1|E!y@Ve+& zkmbq}-?#`!k5jmHS=yy(zmWO>Q81r@=b{M_a&MLf!TkX{&VRVa+^oeXak_A==V&FbM@ z$dAGtNq_z@;^Gs*I$u(`9-=5k9+9i=Ibdx{GEDGPHI>LmK$4roDS0t=DL!R2KMMXR zDATJ4sZV?4j5`OSosymEt48!_n*cJ=CHzo}8_4&5!2`_1ZCY{Xo*%nr_JxE8nw?Y2 zVIvt?57QYlt$+c~f~2#>0#pW@>?Kam?d|Pog?6OAo6%vFM+4(&K7b zlx5B6sGOg_C+1KlV`uPS=H}Xk^Y+CH1_K6 z_5ME5Karw&NXvJ=Vhfo6SM!l9=7IX|@h3j?wkODG2(#pIrq0NDlY@RJ@#&7*!smC{ zdCs8Q{FFh;=?%HwaW~Ztf_BT0RcCSf8D|6Ff&(gZmCP&N`)d7{$tXe{`-2G5j?pxf z^URaH`g{Y7u;XAs^-|%c2jttpdD@S}G(#d51k(d7m8YAwF2bT?$E?Ge52n6u6?3FSbnT!iqu2OS3Cn%UKq_`{sR z^LN45oAK9&6DCK|y_yD!k5gFtclycbBt}Jj7ut^as3{A-GvO=69DAr;a(;DB1$yYtW=ud%rXAjpk9y(zDoR5>KYtY`-UqdUzVSXERWh zI>5}PfeJHq9>u{-na617h7zHllaO{E&$bgEreKTreiW4}+cWHxlrF>0lCgVFTta~1 z1g|A{OcN^79|9{lNNdU{YLl7GkfHVM$UHHaCW4~qDo)OqMuskQ#L-r4Y*o15euRQb zP5A|(a4!#u;^VfY;DcF8&PA9jLlEP72`)sPs8?g|2kE86H9cM(^z;L*0^5fi5fqzd z$)3CL594Q+$DRBCXgAH;+SfXoH?#*#D}^O#nLW2iZH~t~Zq9_6^D1Oj6}&DZ^Nr0= zq^8k0rsSEteln^mE=+;Xty)UdYt*ZYXC~N>4_9@;tO}0yMU88+U@h+<-91{qrizah z__B=PCz!h<9a3l_-Z!IAe~~~b!?r)Lbl=^s-S$-$+4ZdUP3s#q+QMGVr_=fgs6o2-=cSEM%P%l;F}eHr1*pciKiz)1w<+S6r2^^E}YGNoZdh|b+xJE~Nl zxs{5Cl{C!!lgu#n#oF}@Pv?7wauXKGdCVVfwz*~Pnu_*YkyiRi3^&-oKp8S7M@}jv z?nQw=CLRCI#AWi(yaQaGKw+8v!>bS%&$vP380z~#>NrLrJ_S-RuVGsj0pck1^YKF*$2zuM|9+1{tZ`j0mTnK_VuRJ#di{2}}lfe+!I5 z#!fm}A$cZrMK9&)j?5lMwNN%6?CB?dLKzyZ)l%938Xn;s_lZ1JV-h~06+Fb9p7FKp zRy1F|qR50&y|!iuM_ci@TOn~Lx7#QPMwJbG-FTA1Ergw5l2;Pr`XG$Ldp;q$x105{ zh-{2kEAbHcBGqeZn55~T!@%w*vY{Jik{&Z!Owj4&&qdvpyNK?^VcF5wZu4wLV|d3_ zS5*bLKg@<5;|llufZ8+PJma8WPB7SH^5b|le&S}-J0_!q?|G&0HNfks*VRI5h>Hns zDcv!FC?li7{iVlZ}sep8`0@fUjMiLKHmSmO`SipT(z zgUx#(8Sc@v@If>LG9bYh@zq~5K!@mt_nj_9oaq^i&zYaV9l<*5zpOgxcOaiJRryUe zpRyQ36q9G7hlmkstOspDnjOQ!LPYy?vl+&NT*=JcIfUa;IpFGSwVlnkRJoeg7@uED zF*c}ZxG#+Cp}7)u4yywlebt=E$~wR)cGlH@t!GIl0C~*mx*k}0d$|ao)UaBk3*?)~ z6^(hS?AjP^x(Y(XMvH)WsT7(t(f+bbf40n*JjfOWU>(edCu{T^zw}}>-E8ZRNvwzE zBWA*)7q_u2bli(6V)V!fgl-bMn6yENryDGUB@8rBk311(JhA@xON zKY)C4FgGy&0r;b!LXL?gt>(!rO^)h+Q*@zje!oBYYZr~a|cV93lK|L2?T%=5Mn@;l*oAxQ~X{oip zI-r`hXbm_xzuTO_V+y-XefBbUGtIXi8tzUm?+@DrFUb4`|3L^!ZR8C1BgwrUb^S>@ z$A_s@bRb>V*QVU?y&Pd6?6kAryCdiOc})H_$b^T1P|+8uVka z5}X5s>c=(NgT2O#J3!x!2}}Q5*e{!+kb)yG%B8t|mmR_ywr#o|%+bx0yW)8QAYzv+!5dtZE_i(u4U^aBXDJ#`V&TnB6Pxx9s zedcEpHo!SJt3R1}w`ib-t{oS1taK{q;fL7Pi{-tt(1a8snu2X1A{L_3t3~yPn*yAt zaLTs0*=1MbYc4k|A;`f(r`j=sUk@D{+-~Tyk}i+f=3F9S zjEtIfB(D@tSKY1t+!9+USJB1ghGDJef_f{e4<8DqS|xNG8`><8zbM)hm?a3P5YmpnEdPIzT5if`ij`XO+&A56Bu31Sj1u!FjK4aBlxQMUMi>>D z4tst1Y>PSlxh5F*sMOHo#Tbkzzd9$XM{!U7L_Q_n{^M=0fy+I;49)|b5i=ELew z5QGE=Gh!G8e9c8sL=v{2i%ockPpiGD)D3-Llj{7A)+%MijYK)|_2E({%@o1vy?yL- z?5gwxQ?YY=`HGoRhsU2CdfDly;7WgTxxMZh!svTlx;Txed7#WQhm3 z^Mp^#K^m*kT$d^Hk*50&qC*(AL3W+Hch7yyqU@$;bVQ9Ow&B)HNHPb&AZL66jn zQCbIgIt6~Gk82)$9AZ_PZY!EJ>NjfYVmp9%hf~)q5T4Uz5iyj*)DauUDKFJ;mSqRJ zOVt1@uaq#gD@jdWS-tUl-^pOQP&8vFFhT3TU`gXcVMW)acn6)>$_66?vOaPLj1T>L zkLS+`Vxjk?-2_VatC#D)F!EwF{*c!NFAaV4!N>KxR)+y>7(f23Q43>t zo$sNsQ*8EP3Qo3Enkvl~fvXdd%Rp}jXF+}V2FClMIHe`U{bn_rYsKnJhisZ6RGstA zR_$GRm8vO9PpEp8Cq*Snq_DpZGJSFiuU&(&AFza;+NoE4jn_F$i{l&waCL|haUA2y zLf`2GwOiNh%!WV%%X82h3|8?nCPbIQ-7`R)%y}~dz3cWnR_6XpPrf>g z+++qb`Z~XJWd1EG3jdGIQ7qVS)_!Qo2ev(tp@TBQeyToX-Uj@bc zHniX9Yk%bOy_SQfc^Vk#PWq=y&N3UkdktWOsNnx@ER@e}HC>ACM4d>c1r49M%}Z0*8u2c;$jOYE6WyQKun8NWe1qJ*M+PnQ@`0 z0h^Z?CQCeK>O*7T45-TTe4`VsncIEq9=|jj8f^HoF8y1hRtbkF5?Vi1Sev3w%r*Ky z*F;%~5L~G)=Dq4b!*S9}OsgPI{5J0xp`Vq2a&wm?>hWyin?E(e-L%<-uGY*MZwBGP zxp5v%+uun@PWqoo;|pE?AAv$zgOyV#>9Tm%dXqf6aAu zNi<5$O*tME^7r{xHof`VZ|jeKBb7Z1g_?({?!Tu0y<6R~z`UG#GV@UMZ!Q~_8)rMp zj3BJHmXWc{T@^FU&~-{ZIYvuS7<`;ha4I@-_;g)t%O7>BJ%%5GWCt9MAbU+nZYv_H zcEu^a=5oUu@cul}=1jJAv*z{V9u0zZ$IP7DVHX~8;E=Ct{JJ?)thW{I&BR|w+_i z5aB?*rg_-=>q$G|nBDX`sSPH@7pihZ0K_U9sPjS-S2`S+k@N5{H+Ai-tY)A?zECfS zcH>)GQe&_y#YxPB0k}r`{eht#i!FNcnO6gD6CUTeSfFSWveH5&$W=G z30KpLR*4b4NVTgmj70O|`q;*X7|D&y89>;cI55#kSZw<8+gIdnL;P_t(1J$9Kt{b5 zm!pc=Ooe0BWZjsd?ll$<=g#Yf5D8>2wKHhEv7MA%n&fm|prIsCY$@WclA~$b4en{D zYz&-a=5LMO3LO(`CfJ%+e_kI@?sQ#w7|{&kakJ_Z0B zw;tka&ezY8PX1t@Ozw|+R(IU~7Q6U(K(v_ibvK?Hher-k)2B?4vEx2wbAx6wJp1j( z1Nm4Ih4i}i*zNur;(_Jy2);%`teki7Rl*A2P4mm*s(V~F2R4K?>Q0o(dt~SoVs5lJ zcpJC3#E}=S-IDXj;aT)2G8#TnqDDboR$Kt#%%{c)_ctbAA=mNA z9;4Z`J@l1Yw~8qrE7wgH-UZjBuX_z-eF(jV+)*p!3JCQ*^LP6zOC4#(c9aV33t+(Q zMS-+Blvs@3Y0JS1sQP@3xr2-Npl0W1WB)1sJ1(b1;sGX8rp$#kB(oZ;iXz(*%Nb-J5i~Lm2k5^ER8{HanNWo!n*}fK-&F$PM>Q?r{6$PAiNu4Pj*Ex zj$*vsm@rwj=rj_c_lOFWQ@#Hl3+hRUcf!p&)Q1!8#B#sW-9)cG%RFTl1#mx1oN2$U zgu5Jg2X|cX<-Z)mFcLblti()u*U(D;{!;G{?|%$r6M=}3pg}-e-33CTzh~0TvwUyL z2Nwp${)0?kyZGLL9bz&tuzvAkx5RWp%g2T?prWI+^duI%+M2vE?=Xd>P`t4n@0;Xv zZlf&>qzC+O3aZ^hWV{dQOZY1b(_<^Pyj7b%W;xL|d!*gA1`FK%bFBuS*)Bxt+u;)2 zY(!2Nd>~#}zR4M`X06in{sypE5rDBa;{(82u0CiHmbbLV|J;CG$dM-xc3Y3eyOB)m z5R_ftMD2jpPrrIT43^KkM?^ocK3&-5cwLQJ5GkY9&Q1)-k^x>cT@7#M>n zGeqM4$iNlpV7~k2WFs@{+m0w@U+0b(*J3bhw~HI7XgNY;J9!Zmd5-9Ph>9bCjzlza z0{moR?M&3^J&Tz2ywK@ugst4~di`Pp!qMy>F0e#}X6SyBDu{wQeWBb6-!OS_G5~Xs zr2szi=aGvUt$0ky6w8xUtaZ?B zUyloElvjqEFw_D&XWza1NW77Cg88@KUuRudvLrVI6Jx}?=TDs>+=-M*&;Ob;9+;UI zmBY-g&13YrIFk~4GE^9-i1+7#>15r|<(uArEdLPpOXO!#ipr@Ng1^Ri|Ds99%3q*K4p9dXDcKwffM(k1uLTeYbYyFilXS*tk(I z?DP}N2jH=VI)`YbIHApRnF4Xap6@BQhlr_X`d`L7o>z7;+L8AJ|K%!!`+W{1;px^HOc%%j5aC%Y6WFSf%e z=(vEiOLw=%atdx-Zt`8#Z*3d4#*ACpOo*PS1)H4@;K3j2dwjZt2AkHqO4S?-IS_>3 zDztX-T@J1B>u^npz)Eeac=LnbJ>8*WYYsJN*G(9yW0aIV-N=zpS}p#;Tiy^TVPhMI z6C4=H)VA&DW(h{8i~!Sseggkt?hxNcxcG7{>;uWJIe77CTY)qnckjJTxI4w^7kmx6 zFb7_fEDR?t2T6e?8C~d>r9q)=d!R#6gQb|n@D2s6~H+Zmba~t9>QE!R!ln>=#PR)$2yTT}t zt!cH$Z!V$-v*#V|H2+kZaZ^xKH&uh@ZEUC!OLp-_i)i$AyA$gXflxQK6a>d)M694yQITAc_ zRh~dXPo3JX!<=K*&=dyk59M(hZ}|9lr~-5rv}K0H!((l?gg4gr5|UOOjzmz zR!48X-q)rhw7J?O$Gq>|%Qk;5lj7{{GYVB;2_4AoCxKNI#$H696!$ZLGn;E%D2cC1 zs%fT!aRC_Zit0|Z@3M35kfJroK~qH>3OIS=5*~XE1L(E#HsQ_>7TDLZC2ERwE~(8u zyTKBi9DlJ^lVzo@S=p#eD~!t?U($r|CarUq(o=~fg!k*kW74>%UzQx;iF9Ok9feLl zGNC?948l`_?nEcldsQ7O<#SPYwEq$gu8xX=2&_?r+>v6xstNST0+582K9S zg7Mf2ak6U*yO!!)742isgP1OmcILcK@DO5O;#1WaJQ-djSSTfe~D zqeV(bjx}?b6RzY`1gxiN@mil6@N%t&O7=eys1l%G(Px6{*GTHlEUUMn^#jT_JYVCM zjJKzgA5~e^wW~r#Rp*7|(5RIKJ+!SgPaqu=aUaa!r3JAy&opmiFgQYdGkk7a9&V*LM z%YLxbA;;1*Z#2exiS7osMKB~4HF`EgMY(&TyHRHtvX!)K_F>*V$2Wmw z{sQ;OZdT!b14WVpuDAMa;Ql3-V@2JE)%tv}Q^6Q|n!UBRxsbw)l2yN zH?~;lsix|vfNm*_O~LiTCY%MoM-I3(&(d8_yIh)(Zsi;mShdG?!=S5#V94%dW|rX3 zj;0Xq&IMA$Xul6wUv?8Qc1?2hj2mCNqQ3DpwDDMb!Dsmh zgRDAnXy0e+(Y3Pu?S{YW{R_n0`ksU65ae{{UQGK&^F;c|jc;=P`=!b|=1{!lGp|J{ zdK%Nd#wV(mk~MjZ3*P;3rtX0V?P_Q8J$>r^)`%BG;Y~^k?&c7LXbnd={DO2FKK)RY zH~sNuxP$1kn#@O`B$6P6#yB8=h=&7q9ln4Z!lww9dK?7Qh4r1bHG~J`Kb(f*jve3Y zvM-izm4g1j`FQ$`(FlP4Bxce*Jf5DpDji)N|_;tZEX8i!)es-q@jMeCRY!Esi270$1!kp6O zGiN;;ynoObOgXL+F$XF+~JviSiSeqF|zwoQAu?))J;nVj#PF=y5k zpwczEd)+1{|A2Cc**d2iCTY46MKuP6Amc1(?xpped7c=p$qSERCQ+hy85RE2kGf?u zWuUgdy67{QafB(@eGuW8n6>X8(-$lI0HU)+QV3vVb#qOEf5?R`rUG0E0D8k#2Rt}B z;~SfLQhu`W?jM6%{=;c|`hin!w|O8+OzJ<1u57(n$!^OHjj3~8g%A~uOxUgZa(>0H z2?j=$koBF!GjgRJ(8jgG>#ga7j29CY-=ahkzFms+AL6}fv7&hK7_jGQZ*{QVjfIc6IfKc64pUzn$OUh9ds5x zH^>krsYhpk$Y*b1@W8D*ErjIQ4ml7XaE($#NQB=d6r zd@&Y~=1`!WkevIz7!2zL~jW0*v58ilq*$pb=?00Hs?JX$tOslI&5 zNv}WAJZ2<1sP>9w{ZN(>KZG<+7S z_yeR(EK>V$P5LM6Gb}@Jy}X9t=(Hmc%*$Sv-qVBTjsP@VpP>zw`KHIVVNYj_6<-#$ z!zus!ZN+6gbxaZ(ExHJu3_6pcGlX$#+Ef`#E%neows$?)ae?6?M!+4q9(=#GuwKZ$ zPy<83r}t?wGREW7Jr#)95wQG4OTji4`f2a|n)1yMX)Xz0=9E|ijDERPm$DagX9nW{;^M1Xn^nBs^~3 z%RoiFkiPjPg#w4Ph7sJnBl#H69mTV4ZLNSe=kaj0q=nB~ z=+)By5o7PP@9Ss(c$B^iy;5<1FoW&Vu@;Sl@<5{1SrjY1*p4t|@b}&KA;w5HK^1(5 z+nx%9Z-vB0u(Q4%$9*lqoAoR!ii&d5YBiMD zJY0=UOs%>x&Saq<$@su@Nf62!MxNkz1T2a$!uWXOn~%tvjo~7;$;JB>Q8gxQToVj| z2fek*VuJxk$rP5*WHB-YilW0rYQv`@5AY9MEVq2}J{Y02n1WGaC_PU<-tfkk z*JlgnP;P4qB(*!c-(eU@aI&Fje{Pi3wY!iP+}EYMTv72a<|83-D!(+I3K`Asy6YE| z^c?wIswlng5DM|PX?$>!c**QEZ922E^B@f+yL5Yi@dhn%{GqEwSOlfwP-moCf5Avc{jR8~VA2VrAk#rpYb0Az{ACewMaM{(0?)vl zQ3T{aXF@Wz_`Q+RB#Yq8o>&oR{5jFvbn|ts$({x9lL%uc&6K>1*|)3LZB-6naL5>+ z_(a1`n}P6A4livVo~}f1=Iu3lkDu1-g!p>Dow>{pl6)c$tDh!n!5(3?^e-U#qpB<8-_m#ZEd%ZaOZl}u4)9W|3_b-kA0_)%Rk8u}d9M@MBSH5R#tvuT* zu8z3<>zUD}^978&y{_<69l%-Z8z<(;jMxOr5zUtWUHAnxpe!k(kzaWBea9rMW z!PacQyzOIaeI7t`?eiY;7I}<=3`24p{R#)SW*n z(6(=*X)}ZaXVup+K&hsxNY{SVjiVuM4HwWf@zKr6PsWU7i1NHp_lO-DD>{AH%ZS~q zJbx|C5r)&!2Gf{M)ZGop2v*(bCWCjsID}1522$=y}vIy>?fdC%k)K42BNS4svHF&aPuGqZ> zL=OR8cUf--p3MX=ID1?A-@|P9aEU|Pf?il)S^Qu!@IDwsvTkExAfjhkbg%CNQ};tY zrg}Uy)^ygFVF{4UObSv&dIP5s%G|}4WV2cT>n>Ig%Q%6fiPY}HSH&)%z~d{d<#lz3 zl?>Z%c2P4%DY692?-+iB5KT^FZk!#7ESt9>%mA;Y8tQa9W^`@}K?XmoNa<9@%{6`?0hz>fDwatbK+T z<#w)`U*p^nxy(;#S`j(9wS&2h1fy#fmmxfKP|riHz^enhf-MI>xpRT^L=p2DB4k+RRc+e0bNwx%n4Y$Ybk33p7~l?g8PP2c`v-J;Fv zTwD=QG*eS9UurUf^6XwW2RI+`3737xZRARz>KOUKiH0HT@a3fR+jf!%JA{n}rLiXu z*RqW#BmN_nCac^dFn4NwA%kv%3b}7qgyw*4_)Wxdry#Y)R5v|%@2k_3cIh?({+V+@ z(`i)wV@S>w~~-VSpnlzg(%s4=EpyE~m5vJHZ_9@e7b0qx@6;*m7dnmE>`w!@0^P+47&OhB@qDx!Hhm$Bwjil(ZA9_g_ylGu03#cE3kM(3*WB^p zEYRxLbryiikv&$`bzDz)62IeYfl?MER+Z)1EGs$ywqsYm2_E61-oqqrYRTAg2sZl8 zpz37C#qvSbQT~7E8GMBKV!_8f^QKe8VG2wr_W?kYyDJ44-PB3q%j<%-gJyDyz~t9T z>%)c3ZbCIPhCdU!I;x-9+X37oAs{;9eW-K@JbfeECdRUz9A@zK&J9Q%6I9<77?durIBrjx)7ei0*zXL}3IU3fj-tIUbV9~< z_bPlJ`pB5^=g9Q6HI$oO%ZIeD|@wee_MKuknH`3pSXY}~)1 zUmyOv`OVEt8`G4asl-@HUWCTaaSE^BT#NL#(eGt1gzP9?c3Zg~K#`pw;<_qrtr8qN z{sl&A!7t$!+a0f@7~%04U=8h%{W`y`s5+@1-D8FQlWg@rb%CVbT(i)Ehl)vcv^E~c zcBGUS6WpUz;9$~XQ{ccq31#0mxFo8Jldd0#x<_F1OT}ofZ+~ow@Axj`L-c*k@t!Y% zxm6?g(dVxsrdmsFCNDeQUZyABPu2;Uxqe~v&A)(y;IE?A@|kdN_nY=vw_7jTIp2xx zyve%j7o6&f#+O?U3-gbfNT<5*L8|W_TFbUQS2!NEeDELHe~ByKWnNW5e!UoV5=653 z{m;;kr~P-ueaV8G`0@=Y~g@iFN1 z7kzPJ8MV+uK*vk zKFH&c@6lR6@-{1}DVi06E_m0T=+dNqbzdK$cOK)aeYknznTQ(ljog!g zK~#dA^!_}wvyq4?j5e+20lyN{kRqc=7%HrL@*}9sY9Ym&t%rPL{X1NwO{Vjwojq#o zAkLfZz7k2PvD%H}j|z_S&oO3xofJLsMyr-J314PVF_p*w1OG|5EzGse{eTZlIW(Cf zz`Hnr!hSk(64KdKyqJdu@9AaW2o1BE|G+Fz=KmBMdc~%Rscn2be!%rGWB@m%fG=h| z49a^=vsjB@EgHpu*m7=I#yKtbjSG|Y9d?$C_yg%REf8p7b zZ)Y)U;wz1Dl?Pm&)LJaeO^;)9f>pU5)`ATOH+blhDa#4?dV1LIhqZlo8V{PcvI zb4K(PsG2=3l4_ak6da9lD2&*_j4TmNur#U3G=t8QF|NVNaJxBp9;NZbBI;RZTvsU` zE)KPW;MOey_h)|dTVcHX9;?}n$;2;Git!V@?N4Y;8Y_G54jBPb?+o_azyHYgu{SU2 zqH%XHOE*`_^AI=J^>O9k7+N_n10hV!Uuo<{GWVE0D(n-yV|xBUDHp$#Ye;up?S`uY zJr;8A|9&BoB4bW?G!VEkCqz)oU*kE`MGznyOp z=tdJ`b_8~wckXNIZyG*Yal)qLKeE@92Q7v1s?l3IuTzSZ3v14?PHquq@F}Av^imKZ z)@yk;*+6LaUxsQ@`_sk4xG~r6@$Uw0Qe_OlI>(9WHy`oWF{Ziw!pZ-{TA}jxIf^6@ z;@MRAxUS;F_JzH66`vdbCi{jD3|{PL2VZIZ8rnKK*`<2?F|*moAmpKwwqJgiPp_V_ zWslkA3`X%5T4QP<`9Kr3jZ%A zDZxTb(-?HVzvcDwG0*4AVkga$ya@D@Aju|-LSvfe=8a_xsjJ+<^$fR=JUz#)Q_5mM zsb`ad-rfBscWmm&G$Y#DdtZVp@%GX0p`3#$M&@t?*g0?^!h7GkpoxX&QwUO2) zH?Ml=4`CO4NLmK=Y>5lz+(%ZPRs~NfwnTp7Y0tAxi<*ul#AhJ-zAU13*an}-41zb0 zzE(=@0|suzj)%l00>$o)_V(OYqgJ}{hGI4E>FVM%CyFe zy~?;AAH3-ClPz7w>y|mxG*N@zlke_|Oz3jcu&lScb4v#)ZuTCDHG6cYjql9!^&g5z zp91(s5gL4~ATQ=Yaqqs&sGtV{Es5Cpszr@OwxYahv0KJARC`|cV3l2yo#0GuXf9vu z{$hqe!rRFB8F-RkJ>leKPCTM+M~;V&u3>Yredy78V;2u_&+#I?I=g}aADlRz(qn)% zg-V@sNek&eS*Mf(rbsjpgowP77H#)0;OLR^2QFb}yTuf)y|8*D?0275*IgaGw-{Tc zgx06ijTBtn4xIFFQFXt4;pG2Obl(3|KVBSv-|O1zx_s<$am~82XSnvdHYGbGHzPYE zT$`+Guk1~P?2(bI$QBocvPV)9qVN6w1NVo!9_M{t=lOhrSA*WT+6%(*e5JExPdiw` zzX-iU6{0?_5L45oy!dy5jm2&f&#dx!SU38^8PSXSA2+!* zwbv8WOW&*WIIA;Xm7+nsAjVCqe?Tc#x(xAM_qXy+~q`sUB?R+4pqaM^uhc*+mX7x|7u(gI;LN%?=4-XxPD;&E}GT7zzYpc zm^`yll;_p?*4a>r>4<5+4AGkV>310PpZsNBi|gXt?r>ozLv5pEY;%T}^kr~^R?4NK zQhe>~YzbOM`}(sv%86})%Wq`Y>977(fk8czp_}tTKTbOR*zhnONXILi4QqvkFOyTJ z=}+x;V-CI5nX;YtVfLwe{QDzNp_tFJ+N51iY?SScDBkKY=)gWnOJ9AYC=)PEVf^Xq zGBP`L>j_&12~I^pizr^dkwC!7>6;W-dU(dDg-IlYb5%9J(`>6VedWhG)E56ZZw8Is zAx|U(g+hKp=KSwDvkZ=Ang&{`0$l<2g{C% zc1EIY=j^zqWcFZhm(}47=FOyti@%kGhg-+;Pc61*$iK;Ll9g$51D|Tw==BYE%pKJ` zj{SFuR@JXzZOH}S-KFnURe4xn{vld^qwJSfn5|dE=|%l{@kk620ur)4qO8k)n{It7 zVxTl$@dHsrd-2^#DdC&{rEPZA%s#c(;@(+zO-~O+l;e`a2QBkGR%%80|1O`I{FiUU z^-W2wMyK`UegTJZOWyOWrYJn?G&n@MW8c-CIz)?-q($eJ!oi!{h5U+ru!Y%SuNmaz zKj58MJ>L{Znc&=MzmHzRrd#9Nwi0}h)SglGzPU|P1Az}gpq+2ucdhs(-1S1WH?*v5 zPHKYIl@p%Z6O@!Po@~%vm)0(PmFj;d=IdskX;}27bGA)gjcqH*+vJzD69~DHK0o|{ zBA4ER+FqVp)q}D*;|NMa$HSDET?ND00nan@&`nZCit+io4dq8_)c07Uz#8};P_^C> zzcCx<`%+or{vG~SB6)O%Y*t)%YpVPxG6j3zR&rF7d&6R7dmjWCEw)l%`bwKg?uobyB`b%Ti<^aWmPf(sgta# zKSOdN{Ze(v**t zJ=bOP`8>1A@4_K&vqITnPIUZa|24z2IsmJx5Mq(@?IBDl%4ZqeFxY0{#2!re%Rgi$$0qdC z|7uQpe{~u@-JW9Vl}Q}4l&mqQ(x=R9lrHK)a97bpC2Z>2ODD~oWs;U_E5oB{?htg` z$KZ4X%VY#HzV}bxqucgu%-{IKkHA}CkgIxp%TR^OZ}Riw^^s;{HmCS)qwwhB?$eZ% z3?3wq{@o!COSADX!%{ji_k0{Grfv;#`zyp&(sY(6QH@yg4ML=_T=2eTYnxT&(%mTY7i;ODf(~AVQ1sQoH z4okABhslo7JRX#<@tV+89pa}Jt=uhAw>5#mVd#{5?&C=4038bf;>?uGVqFLIR5wcC{zdTzWQ0uT09Zh0pFQwwi%-I zKq@yUtx5Ct{XKrcLPjlzqY!W-?32;eAg0uu@S@kv&hD#3V@;7@w>%VY6y*e$Z|P4Y z(~!M@FQ6^`bqy|;|HBD;c2vr)r8IhBPioP2iu8O{rMWIi&z$K$nhF%Eo=)-aR9YM{ z+vv<{7ZTh-I#n-6nXC%m3CyBz#v92Y#Z|bUJ?k!$O4{{O!k_zg$j3lec8<=rG2ZB`hKv+b z8xJKW)p|iM&k2iY?cNk=E3wJ?nL!C<4}DC0E%0WmAl}fF8K`3K)A~kVL=p2 zLY7iX=jciP``S2uEN37Zf)d_`FKo?w+`eQhsjzT4WXieUry;bjQpC|~X-4o`7 zV&@7p?k*A!sbAKDI zF$tj?&}mj)5mcOj8#BKEtJ_jQzQ5gy&u1Oht+Qs&L-fBXWGUdLGwAG zWPQqyURVE8B)z|fFU);VUs2`yeC^gp7v*bmOTj-y?^uuc-0z?(Y6xRjfMXJjWPNp~ zr(sGhaKV>s{%!fJ?>z(<)H<1Um&NJ4*6HVlp6i>tkaqMKqYHdbLSs$ zsGb>`P~lsz|JZo$iIn_WVQr?~-C8sk|G`W^zV_$#PleZvwJ}L8g_q`aQeQ7NilLUu zlL6Ktp=E}e>AoNLNwVJ2R%zN^aoR)#UuXW@KXnRacV6vD`}#S1pSjD;)0Q{+^V7c8 zqd&}Hi8Fgr1|C^Or!Tc1Ju_KFF_Ork`l=74c#`+!n>QTnTVy&(De!s4!+XhvnYx9p zHd_}BXYxNt6c;SlCzKfkWy8bfNvs3dY?czW9nLf4f zrEaE_qHfvJ_>pTdNvz75yGsjkS*4NGe!Hd1Tm{N9=?}?0ul$Ewv15w;@bxgqf1HFqI${zBM^0)W> zM2aOZ+cEf^tXWX~+Q^h&{I$k+<;*`5B8p*j_vSm#lK5kLliamn=zMGc!TMe;0!NHgM+d85>5vx^~wRjd8@){#VO3p&$RiW&d4~2-{1K$3=dwXZ)=K zEr(btNfznf56(=>lYZCm3=Q@xBEzi%pkh^tKNd6>i_mW!PM$Zxt>Vo1k zeixk8qUn}P2e*7%K2y$}z1ZrS^kX&0NOS0>M#9j!X+D`-L3VMNJ;7uD%HDhbfZXhq zPTQh#zvJAx(EUtT>29mmOlx)W^_b5}b+L<1`zC(vOTLXxdI4`%_mZfI`FEoOeJrO3 zwRV`tyK0b_m|VtqYo&O#%7a^TRg3bGzCp3{-?B_eGVPq_5!Z?T;TL|bJ<~foVy&03 z4@~^qucesfk>|cB*IIYn=g4H9T-eek8+xalYbM{wout56U@PE*#cI)Va0;w_@}&OB z;hEIbL$R!}=9A(C`}dXiXTs+88q!|JOmY1%zYcB~#i@uOm|F_>RSE`8(iW%q)gjYt zkJjE~qwtOd(Ho$UIOQ~iBgn>7UJ;k4^O2Dgk9fIHLp_#LqDFkI?V%F+a2@gKV77n2 z6ybW9;9BPD67gBfW8Ok z9UumdXGUr3@Q>mJ5e$)HEbBZXo1kA)(x@QElv?{cj`_>v(G=@m(tXR6M#KKTMfa9@&6sxNsN6Z44E)2bV&(85k#>}0GnVCg zCzJK@tV-_7G6&>S$D3+<5T>aM3nhye99sgpz5hP05bs5Or3$2dmbes@#*qvsJR8@` zMkn@@^w&XTd}Tpxcg7BjilbfbCZG+;@s#B7SSrwA2KmFHcqa7-vYUqBV!%IvEO(q{ z6CLJj&zOVBFLEktu@z5eJyrZuxi|n6@|&HG!H`FC1~W+UbwXea;$eF6=F^N-ejidK zC4k##-yPnzyiOn?D-KD%aYdvaWihsq{vFJCr0OyuM0TA2p>;Pw?Z=rpYqBLv5|4mhi|i4GmMmZNKwXoL2Kpl2vnVm#VqPiMrMDqw2MCfQ&w~ zYyzNvF1)%niQMU0Nt#KvdWk=KPWbl|r=@6wP%=FuKQLwZLhlA>q_t^&WlX-WDP@-Y zywhJ0uNSjiq(D(z zG)HHdFKskp$y!zWAuv@lb3FqjhAcBbQ!c&`%kW7?fz$)2mBZj!nseF zZ;tkpp3G3$G@KJ4FZ%&=laL_B!H0~suN6yss)+Wqvzu9vlk#dqbf$f-}} zO4|1>S9SGWy$Xikjq~$N@;S*ffbiLxa(NiJ>3uDu{Q{Ld{HxcU6(tk=nlp#)w~DG3 z%%;ujt#mc0HDITo`aP!A9VLQqUp_hZVdt`5kQPG>@NYOrv3Yp;c9bjC%o!IR)wN#~ z+~jOW*v_g%PHuz*mwvio8n~=Ys(koM$I~V4E9JLdmL0>oxqFhI_tF0QNqF_-Pn3s> zQtv-A1V{EM+;L??dR2NiyY2pY_hesauMSkpiE(`rs5Xz6;0KJCe;{2sw|D;qZ@^EQjOcHgspoP9!8_x3@D?K+#MTL;a;1x*OjoL}^PNonW- zmG=k4YDWF*-e=c_YE%|p?=&;AYdrcI4xXg4jt?}WrB)nw8HLYUlIO%$q(tUp6(+0C zBR(0xACY!2p)Gj`Z!q?gx%iG5cwh#)AclpCUEFlP{?fj{7gw(Wj+D*M9W8=$v zW27U7BLBk<2`@!f4+$e>gi4B^JJaeBU)i!1f2VdOd8>Ygdw^p&rYL!Azq8*oLgjYP zfAgOtoD=t}WiW11!vVbQ=hkZ)mX9V$;#~FINxoj2duBL4$b!9hT{4uE1)2JEbAG6q zebUzYq+iDV)EZ&8-%%Vha;t7*FSN`^D6(^&9pJm4N3PQHV0O!Ulz_eEbG|dx+bQ6dYFh|-7ruc0sQDsCdf&^0xz!%bH;`*2Bf%)7P- z|EWjq{RLX}zDRw=Tk`R@n4u0k3f2uH_zi+v_>b#$#2t5Ysy}IO0pq+TVedF zqP3xtO3!BO;z99^bKC2d*+ui8y4Sfo)vm#CWU275}1&*p*I&by;{{g7#6>%kTrpz0~%V#8h ztg7kZ;WpR{52b&=mZe@?$KM`Vkv65+;wg$`+15i(pEH|K@~q+Ki+cDUbFKEbj~?FM=}mf?C)yn;i99-( zTpGsy4JcgJzSvSaZI-&cjt-D(Z=%nK-xd*}PtlPGwzxLyB<{?dTa+HX~9ILs%W=Ig~gtDa;A1z>2XOqNvWaGM(-ijq+zk(&8Ra$Py^^sV}9$ ztOF`xn2&4)>f^gnGNX7LK#t7??4M~pt#!XEKsAc@(CSxNiNr!t$5DSHqLFY)9MWY_ zLDL?p>-<5TVD;ejpH^wSLWogCwo#oDI#y9heZD9DI9B^dx1y-z33RloYT+n5C&8H= z&rBp15t-*q{d(|Ohf&|0NaPv%ar?PCQ42V1?huzC|Km73DpkfeH-m;O0bQ+<+w+51 zi@Mw+oWvBRf&t$ymf+!`QGm|?INoNgI#{VskdExv6|C%;PMaCQkq#N5pbfS<#*$@& zLCR_wqPHI}8}NT*kBIzGkbgDwfQ$%9)H!^0@=a89qg)iXXetTMy83w1O2;ZTY5N_sN`ESx z(DWzWa+K~$Gxz;4{BI@jF;LBgM1`K<{sAO};3WJ3rZk|6O8wN)G=7s2=|XzWT`@+U zzm-HTO!3#Vqlj;Xvc`?<5GGYKs;J-aoSsT)7iw_>!x>VGoTl6;QZH|H9rC!WRFApw zWEWCt-qt~&Xz%;`R3gmCc@#Mm0DTuDYm-4Ko6~G=0%-w8l-}xFjN+&cE&{a^N%Wb4 z*VhSVgpeI#E)=JSgaClLS2{5x5sP5!8vxK@QcNZCjBi;Bh?#Q0!MVFmh)WW|DOO+k@aPA>V8zBux~yN2g|6>3pv6bZ^jh zp!r?x^q<1Jx-ZIKZO>ORlUPO6dj47+@tY1|jL8Mxd)BNX_Uo3%-7LpKc{%yo(1Jmy z&=0q41QtHtn|#1sx#=v@OgLpF5q;<=1t2$cxX&oL6&qfdYCT3n08 zXJy|+btE&q9n?|7^jN10HE@7cc9s?BfSixAU66@^o7qIVkA%;QTin8~zBl(JxEmTy7OY%lLX`lQsA}c3 znjGFwLST=OQ11Gkq2IL`Bq91}Q`4iE5t3#E-bRwri>!p{PT2`Yb7 zDsXqAFpzU>RPi`N`cXgioKT!hWKmD)p&Nfcxl)~1qaS-{pEp1aC_F_>GxyK8v~G|FF0O3Am^?(QX;SLG1k_ci~Sg;qSD**3$KLadxH!rIepJ)Hdrq>SQDYz+Ldr-M|d2RX`AH?Bw?2~s8FX6~& zRkWFRw)|I--}lmYRohiE@3EN=fiWm;t9yOFV(a1>Wt!t|s6oV$n0s0M_)p{{YYZ~` zXS2ZEuLoi}o!{8%KY$h^@1J6@&uVG5 zolou~6my&v-xKC{`Xq=|QF~#wubT7;`xh0d{d;s{64XVdzua~iTBjVlvd#8GRQdt6 zgRHit#toa>fsRRPlI?AOo}2tWlk0qx^lc%<&o=aCXO^w9bl-^rTL{$O?02Q>rxXjD zxeIKSf6zT;HKh0@?|{JwOD(N!cipcq#n1m$G|8l>8po`3elBIa$%g4Udw0DobUC@4 zqFtOltG|B|iZb5rzLIw=z$vT%5ouo0nBa1v&-QjN@%`GMN`U7$c}F z|GU(?=aLFJ5iz;TQJ=~)^ZUMU*PYPf-Uc=d^lNY(udZ8E`pKN;O@aDBjjLoatrg|_ z_X)b&ZPD_-3Mb3ust6_Hhxf|#=g;PUAH7H;QoFbrV^Nv^d+AZBmUES?l)!o0?rxd$ z-_DGtVf`Qpk$j_TDOUVrqvGuaq{yABJ9J4^yvpXYyBQktnZkKb%dJO2gCp~zxtIKB z6joNPU2Q1_U-miP-hXU76J%$&>wA_b(tg8NAD~b}!55R#l%BicwC^MNlFR45#+-(} zzGq)iU|HpEa*_3#jpb35L1Fnm8`o?=`)^D6x83EKAm@&~GfVu(`r8b*X!XY6Y2@p- zLy-720WH>Xyd^%#bag|e;%(MHU_Q9vV}9kIXEv%?9lQIkpDl@cCRL~$OTW6>C!Cmv z$mr!uzP$f)X<^|kKvd1T?MhiG^y^MnHl|2ps@zV0RypfnWy`IiN}wu?Nx%GFi!AlP zFp4^5?-o8FYPb5&Gut&~oxMwcLfSW1PC1auS;iN5Ntj57<(=O~6-bw675#Y;!JWJU z)*4?+uPFSl^07FF$K9hTw&0LhE4|7eWP3r`eg>%~1+2c-*Jotz*h6&2H3hB4ER-Kp zw7O+iA6ziw$^<)=4CD{1FrBWSk<1T=NYEeOzhAcdNk9Fuf3nO_DEF^d%J*9O`qGWr zw82&!ud;cxBWMGn21dMcaBx_$|0f;ShkdmN>`>V9*pZhnL}MZ~fSm{Bn+xQMu0lT2 zf!7Y{ZB?5)#Ka#{$UED>lj)_0Cb2LE@Gu+wI26=CQ08j)qzb7g;Ov*|go?>>ezT}Y z2;udQjflPIfsdkzI*fGbZalP8eb6Jm^XXFr~JXkx-TVa!AX$j1W5 z#j8}uVCoxFRlfLC#7Ni-7;tIIs-za?ZlkO~Xj! zbvJU5DBK^nN#1x>0i}w+%�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 =l7^$8J+A9S&q80?wG5#D0jN1dYI4`z3Qh9-pc% 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 + + diff --git a/suites-experimental/pdf-viewer/dist/resources.txt b/suites-experimental/pdf-viewer/dist/resources.txt new file mode 100644 index 000000000..e43d368b4 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/resources.txt @@ -0,0 +1,7 @@ +assets/index.css +assets/index.js +assets/index.js.map +assets/pdf.worker.js +assets/pdf.worker.js.map +document.pdf +index.html diff --git a/suites-experimental/suites.mjs b/suites-experimental/suites.mjs index 2e4496c79..979d0a866 100644 --- a/suites-experimental/suites.mjs +++ b/suites-experimental/suites.mjs @@ -190,6 +190,14 @@ export const ExperimentalSuites = freezeSuites([ name: "default", // optional param to target non-default tests locally }, */ }, + { + name: "PDFViewer-PDFjs", + url: "suites-experimental/pdf-viewer/dist/index.html", + resources: "suites-experimental/pdf-viewer/dist/resources.txt", + tags: ["pdf", "experimental"], + async prepare() {}, + type: "remote", + }, { name: "Responsive-Design", url: "suites-experimental/responsive-design/dist/index.html",

      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 DMGf;erIoLvVL-r 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 PSmBHA)oWPl@aX>r09E@* literal 0 HcmV?d00001 diff --git a/suites-experimental/pdf-viewer/dist/index.html b/suites-experimental/pdf-viewer/dist/index.html new file mode 100644 index 000000000..ec976931b --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/index.html @@ -0,0 +1,19 @@ + + + + + + PDF Viewer + + + + +

    rPXxgzKNKw?2K_-yQwq_i&;rn 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 aOvE#3o08%dx|q8cQNTl2xIX8<*Z&7H!AtD` literal 0 HcmV?d00001 diff --git a/suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg b/suites-experimental/pdf-viewer/assets/earthrise-apollo8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ed41a5c333223ab10fced97741dcde08739ce72 GIT binary patch literal 64801 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 literal 0 HcmV?d00001 diff --git a/suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg b/suites-experimental/pdf-viewer/assets/grand-prismatic-spring.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83234a0491c770da162c2e40f54e5d05138904cc GIT binary patch literal 285676 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%0DW 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 z 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

    M=mU54I1z z0cMX!(UN7J>r+OzwuTWhiBPLglfX>lKKxR-=CtydM-ek_z+iYQlg>X%VSlVis%g<% zz02G@F@nZVPTX;{Wb?%)^*}(z)4`=gxa8FMPsW2p^CP|wBrJhZz{!cT`GERoiuz`S zacg(wYB4-B7Z|s9JRs`KNBWL`g?t&V4*M6V)@SHjOW1C9T*d^Dz=k-+f9|n7vHG9kOkr58Em_^r%;(j|BR{$;FW{+-#-9$Q z=0vuS9$}1g{{YDR*17ENFRWWwAvT5p20{703mSodz<13;$)jC%S#1ZEZn8N@#DgRe z>dtAKKx4OtHIZXNePz0uOJ#W;8=IgH+Y5^za#XI}^7A@t<=~bt{GoCo(jJLKYnbVD(GL@2(?+lLQeGU9dew z4ujm98&Oup6y)gyUHGQvds*I6UM1i+Kx%#xu>SznvqyD)qRU3p)CnaciI{Xz?pwVK zJOOiiV08^jNo;IfG_fm;ZUd%AW$Zo8F0>c+np(x@yCD6rjTqrT1OxG$;8&Z?%(T|@ zzxVWaaPhmt*4Wd9uXLA9~9T}x275?vzR6w#g!mnlj0Kr5x)VFi9NyM}Ntbd6$ z!z5pY(Pm*Jp!v6}fLEW&pwV^}MV=_}d}dkvKco4diBPLF>b%A=&JX@|ti9X8q**j% zgk((aBPZ&9YN;;lJTGL%KiW-`l1^RN^({!WI3L7!?QyD3@ma>@=aif-J1Eb3hVoBu z9!5S8@M!TB>uOq)NVYMyNp2cr>^>{$G1p9|N(jTFD*TGj1$Y;Gb%^#UN3l78ViP?!0`d1F7JTx4l_1P3M^q<_uu&C!e6G zUEP(8ua_GxN2QN%aw%p10Eq?3Yba(>FsU4{o0S02S8ME!r$azGps?bCPSeIw5yy8fc)m&pSsW=j7CgZ*LR{ zZ@Jkda(ya4F!?lHosn=QkongG3+A^_I}R(7#bIG;w)SWp+o?RU`qMizB3mHpCCE~=Bx2tSq zkUg`WtyWstC*m66*K@J_y+(d3L_t-ht;~+5P!~DIdC&aQG!aG1f==84?afgo#@SdZ z`ia|~zolDia*E+(J9z&90_xN(d?yyDXvH1Xa;lNr#EZe?Y#lynaxwAfe=e}HO3Av+jn4blT6=HV;#g+jLj{u1mx{UC$A^l;)I6gD|@)znVvLOF2H0KBZ2g+Y@%8o zi4L1;P1KVa5q(2D_K#sjKDTeDE0yycdPq-hvbplAKSGJaX4#rlG&w^ zVqMCr!x`*J@AS=M^!;B`l>*AHR!Gco?NAF0@@rqE3qz$UMGBjwP4dEwcq5|wQ`lPY zDz#In%@SVkwrMvRJmRWkz{ubX;~zE4gofdo*{mdm6cC9B9%F;k7&yW1O$sD7^UN-w z23Z^yk9JAN?(xu5?LJFOIojt?hZk~zH%yJ>S>b*N4w-z8 z!?)k1XBznh=#cr6s30IKou}OVRlX#;O;YLZmhk=(JOW>F4u8@ub9h?XFCMDC9{u5x7Wxc&rlZ zYo`dVuVQ0t$7-`bryuGV=N;+gr;GIMX+#zhZAfFr-KW%j@<&=rAf@Q9{8Y7u>h9k8 zXEX0Y83OST?S}84;fnbLwo}P~aklSJwlPf{*58&>GT?owwz1)T8sgJ! zyjHN5*wPe)2}0+v_dfpBaCGd6M%|<2+7^uW8k92L-Z(_S^5M%iJBrb3z9gT+--)!g z5lIT|*cvA{Sw-eL1M zfrI^iDap66tYG=HAL5O*%xfN_X)&2sV@w~+$UOd2jCR1M)_T>pp>6o9d3Q&gvB3wQ ziaK8g=rKaA6@(G8lE*8OpqzTMRxgL6ot0L21ON~cGq9-ZpPc+ux_Te%Fw-WE=@!_4 zT*w4*#+Ymo!Q<~=L(r@*t*w%4rV*W?Jdi^K0QKF}n#*`^MzedUf}Pg?EIAV6>h1@BAsn7LY=!Tq{o&)+nWvk;m4)KjN#wzI&;Sz17P$$Yb*f z3y+c1*V8pEe#cAFXSck+ir#mO5}f0nFuZar=K6FtI*y_(7H=}tN$YXX2N(lAK1iYL zehfc_yjSAu9d)D93rZ%(nQJiIhaLI$_^-FJc!K*#i8WzmY$n4p*=`I6QVBW9KNXq2 z)3i%1QEYVRCXQH}DLg#$p5*oBw~^aRHJ0fl+c%KFfzRtrYLJ!QL^^(@YpbJ2Br%mh zN0+;Ealqs4KtZ8HY2p|ziI3Vi`gZ4v$3v#;HkZabIHrxD{Kt2w-hVuc*;Z%G704jZB8rZ`< z^OPQ=Be8CS>Cg{~2UOK!zt%3GOPLs~eu!W=G7e5pOwjN(?z7;#>wCZl@!_d!$H>dX;N#OdvuEeBQxx0_rN`kX)P_R{{YL(Rzy4`VG6cD`LBvu{{V*? zroDP?C6R5)4aJBAt~v_(Mup%f@P>|8yNOUbq>f$!Bxo9p4 zIhc~CJo|EUT3tc4D^Cxf^Q()gE`+2eVNe^l1%1A1SMecA?8Rylm4t5Hv6sJk&)PcM z-876y1AtV3PHDCIwwg%x+>nQ=H#jsm;B8z*v<;cuNZ_Au<4=yFvO-&7&m&6%Bud2! z=MBp7%>@OFbKA>vF2j^N5PSR4H?JMEVGw$V!O6h`>s9HEZ4?r#Ntb_5AC+lE{eE!2q1u|J#)_U-qfuPoz>P6h;CWc4WOem*l=!<{@( z3vINy<%OmJLI&HC!x^cfgl(;s-N&S7A3RenHbW+xJTDqVyt3u8RC|BT72&kkZ6z&Z zYidM;Xn9o|a{CR{apY~Z#*pvB-V@TV^x<+M)y#o%&m0To5B^L>N7}yO;hiSWN77(> zSYVD~su+xAzxNT}?^qoRSc)wzq`uU&va+heu|V5Av7U3g9Q*-aO4B_$ay7huVvH39 zhFp8+r9+!;jibhvMn#%NfX69J{$&Fyzz&)1&2~o;IRxMgf(=n>=lsEuh+BQ209W#{ z=xX_*5t25BatGXd=8*CVp7;d0YK_aMms2=2$95C z#xS`(KJ);l-ArC_w}3#yX$>y}KW=(cPaw)ndjZHK5zv$FJJQ?8mV2363y9dG25844 zKQzgt0@0buh68qbbJOif1q-E$Ju22o5T}|wQZ(ua13f!)MQNJpxidiT3rL`DNCq+O zgV6EqLR>)ZRpeKDeSkbp+1t-2o(ZF^^hHP_meykkSMwXo11vGqG$8(mdQ|HyzlJTD z9FhTCaq~pPvqK+|CoHD`^~lXCv^NWN5sZ4&mfyiRC#UI7y!Cs6NF!+6eh2reL18S4 zm>d=Yxa@qQLEv>2RphMJrK8Cwt_N!D4E|d0Ibu6il7OVRZN(oBfD%SKR(}5E+Cw9% zmfk=?-zJ@FE={|}g~z_mD?NX9yH*gWst8z^oNjMw#hRfMI+mg5nH`iw9J8tba=id8 z@BFGhA-uV~(eAvpR{|0O`I%Q!*X}>1O5(+2^Ie=z+FHeJG}=ISbS*5CxnKxAkn#7cChVTkxFR)7a##6tS=)xQGc=RJ?uJ3>4~+i+YOge8op?33`mKhfVx2t3 zD22#XAft5JNbApf&t1&hB+a8ujI(V&`SDS<@g1e4?QU#iWsqP#{#WLuZLMh$UI^|b zo#7;_#})=p)Y9ve#ND$adX4y~wr|}a3gf0uek)SiY@*FoqGW7wlgarscBJ|Q_r^^o zH46|2Xgi5M`R(+fj;$8>;*`7PTXSIkfYX$&Nf6_li?uHT+{L2*0GyH}1%UFR$=RO$ zDt;Z)*2?A^iBuy?8!PYOehoT4A(r;(Z64cE7MoXaM7ttAQh=uZ zqS&FYk~bQLm}QU5YdB#< zAgf4s5s!iIS)F4;hSegD-soxGWA0RiR4jmf@+p>~{vl}VXXOWZ2ExooRUdBkhSv4; zyj{>W$tn}cW{i4y>zwiJ#VM&58bz9>hjV=@+)r@DAOUdXfKEus?s`=>7V&9|BsSWH z<0@up6!2TP!RD7ktWSBUHMEygNf0I9a2Ru+o`6vIQMRKb@x?N*gEq@fHWJP=#pDY`%PPq1^8n(OsQytP;l`$yEWjHLSsrmTLW}>x?AZLn0bu43d zskj`~Q%!%UG?7mh0rYx~-?!45r-5A@*8D+hsm%?|o>tooydFmwtd!8lKB*m|$toj| z2|W+en`%}UR+is}v$sqSNHMPNPjC6JN8xMHG!opl*rLGNpl;pVpJAG`(oLDMj+>`j z=$7O|wn^kU4~}u|NUk)Co9nBaseuEocHob-YBgJUpV_N?W$xgk>(!@lBn z?if3VwreO#TPA^_Xziu)+HJrdgmo0tR5o{30#rp{6e@;4m){>WruykaNxm|O;}I!5 zFS!+5T7*pyw2^`aA$PDlezmiklyD{VUu5FmPbflNSd3$mYv`U2)#C8;nO{YUd3I#G zI9-_i?m@@3Wb}yA)x`F<0!E9hh`V$04rtrC?j?~}Ov$`=J$}@=`5vMXRkQ5A4)I-& zir~2{O}vpEj~g&0l#bsNS(ZC%m4*v*EullRac&R%*UP`dyK88?MK#UUlieyn9LP3+ zr`&_j(5-!pO1g!Z!ZPqm0!riDb69B|P?upp<7Qbf^DVqwGD@IsKnLXmoR8&4Tk3YP zznX{5^A})XMpzD<4xCcGM{T)+37q0WBUTvBeTe&2DWtu#Dp~oFl{?kS?sYx0&)4ln zO7a+PrIL2IS+>GX6%#o)_x2UU)lJ-zMz|`63d__CbDRn;(%efbys0sef7~R1jyvQJ z=|gye;q;v_-P<4q&qX-{wlF%-hn6|h_g>im(ZERIi{xN-=~G3D)Hs>MQH+mK-MD*< zR!+;rI-TyF1dn94<7r&THx|Li1GmL$T=jgaJ_ofG)i$}sXVi}1nU^% z0RHuGtb!(XL>u})85~l3Ynkot9yz5KDi1ElfZoG_Mo+C0f*&Uho}gq8lkGxdt14Jz zwgI<1%@XB7Zus^cs5?DEYvcx4*+P~UY zH>=sKcS3mGS82;HR?px1QYjlpXs#j>tCP3}1y51*?^qA<7fidkv}>C^uCf0B+(W~W z@k}jsU5Y}Pv(6BoKtCg|9~5-=_V-W#Fz>e#svL}aW2vIXkfXr&tFCxbO+M+>q_ton zaD7pO(C>fL%WdKLUh+5?+DZzsRUpUTCYS{>t)nDUE@X{*XWeTzaWvD~NvAtGRykMrp<#_u*`xme40Q=@G-Yqi1+~nP0qhCL z`fzJv%qE$gho?J^Pau3(&A-EOBvxAVS2G}3Wmauj5f&{hvro%A0TCaG(6hAO3^VU6QBEBaRZQv%lPOmg6_r~%Y> ztY?j5HkLn%iB*KMA_gOzW`%}R%4g8zi}6Amgp|h=i@N|0nCNR6d8X<*UaH#Wi37_R zKevE%k$vl56D%4;Fp>^eaLMMW(n>R|US`rxMh-G5iDo$w!K*>66}z-n7;UmEU=(lk zn$XxE!@_s)8>hIehnxqBwOAoh8mIt(FbU66D^F^ZixDiPUO+L0;8f7%x?zgSLmZw4 zK+Y@F4WzOcb@J7ikM!sGSE;5fACivc$R)-&;MY=V0-QO`T{@Oc${%N3;)Yxk@m*1N za3_G6?k;COSl-0@cNNEpVmN=wfDv@F>jR+fT_cY;9P z*c}0)VL>qgnpaQuiW(#Z@N#+W$)@|y0QSx+gz?28*(@j>e}#L4(xckC80V!hXLg));<~N0{8uxP zgNpV>coYZO)1IQb4<7Xq)04rjfs=vBJuyJ5(I9_L_^y+a!5=(vQ5YEpym>y{cI`qf zyb|DNzZ@EpkPznwCm%H&0)Vc1bDH2kBk4e_nLPSQBlv+`3^H-Xdy1?8LHHbIrMUGx z{L%|J!yE%r49lKzk^DWYssZJj?NK8H&^?}348Ta4QSI0DtAT)ImB{$*RH7LOQMZ$f zo+{|!Y{?rsVR-ix0yO>)@%6`tV3SL_-#(cs4dtt0kmvIc?O%J){83{jpBh+9ZZ!NO z2i^}Ss6O7+`EO(_&1uD!GT>qT#DZmk-2EF=s(wFA;I@&5pwE95`n-}s#ttA3Uj zXx519$|Gbk=Qt<7*1pYStXdmrpmv7bx2Py#!uI>tG2Js)AJ*1TRlA-My+zJjp1A&% z>!n0~e`bfF?V5>omhpV2R#AX{f|dBsRs21(LlF-t{GfZ*(vpmAn8i7|MoU`NBw6QE zAe9t0a4-kbiqSkdZKG-JuXuzq+bkjBg}?_4bCK>(@Zy)d!zmY6R_p<8Lg4y9_ULI9hLd-z zUF?O{7^CBP=nwjjzAI&AC7qmqfU?~oRXKd+n>|izAI9RjzDeb?U&)$K=?oQk8%17k z?it0}#pIC}=G~rEJM-N8R*L3Jc%l4F^zlP!AEX64Pyzd({GR>Ky=JVuM%q8(E#410 z;&$AkA%hxY7N>Um0O0I5 z+UeU4BN#0!4(-oRkJf@Nx<;ImUn+)FI{^IWo}^WFSN7UvyUQd+7_TJvKl4Zgw;n9j zC9;k8Jjw}|B&;eq#SNIZLhEY_zZUBb8byxYG69tJ$G6tD^Y~uYTXe91vuXB2bg!RO zjD3w4rRa8A9jtb-TbWEscRzM>+|vuI2}E(klPqWuA1y~y?oBwvl^Do`_ z`wFJZqKk`(tX4%3dGa<7pPn=H_7t=5AB&I)-M~z-+CMSv%`{;fND_8tWnVxiii*b+ z5J>PD3(4pt9=`xm0=+j(Sk%1EV<p5quKc>=1B5QEyHaOo=_UqTfnkHis3@W+wghZ z-#+Gtw9BZ zI&|stRNUN4GqZV&vGiu$w;1Suon|~isLkY-f>2}pr0yek$KJDY@P}SlaGptRV=^cL zM>3Q-QhDTH{{UL~RAmgP(WVcdXh$9Y0242Ny=iU@#p}U!I+F}1ag0hzss6Q}^VscT zfB_}3W1nls?f0j|_DqbUw0583F1H=bfJQGCMmuwXymTLW`j>`o9sDU`6+j7Yph#Q{ zXXm%`uaRpE@qdYW;ub94Y^6y(3XRHs#1GQGk>H4h#+>Hl1|n$=*znS;!)dMr$yLfqRH z{PH|wbe+2NT3Mwl-rS;F>N7>X^3jDj9P{6wy=S6^cUml3i^7n-#%04e45Yq4bQ9i^ z+}oQww+j)EVK^A)@9b-HJ(Z*hZ6tBUJc{IgA(f6t{_OPXb4agr=~tiwNZhzcL%Yk z+v!_u!puUVNKh#x`u;J<;=W8Sb?qBjmR&9>mGaTJ*}OXPJNBV&kan$~a#gp~oXKVQ zVvJ8A{{V0Ul5^bsJJM^dPRZ?7^HhH((VRq(ucR@@?>Ddmpsde?;_;JST3uXea3zB= z=6s@nI+8P*@A$WMNSk9br7gi+Z0 z5^Eo(_?F%;#M){l$$$HDMh4)$zz2-cJ_+%*nHGn0q-!$HtjB6?kIW9Z>73+X^I3<# zu}iDyZR2}{Ao+4gp;>X??@Ob+lHM%RczaOL?k@#~vcfwlB>joF$WYx5Na^?BRqLspQWr=B#Ck-BfnL^iCD70q-}dsxj~tNjK^+c$DZ25JyL}&0 z@fVBqZw?E4JJ}>gop9R|c#MCfkb9qRYQ^|-#+TZLrFUxbG}D5A4DpHZ}lqueD><8k=-u)e6% zP39g|Rh*xXPxG&!>3$H9**UP17#19U#x)A;8?NKmr@a)s4L@eG(?x?wYpceSe2$>A zl-f`O`M5ae*i-249iuF!CsDPFo~_3`cC7pt0{oj4kg~+vLb$T%Pl@BFDZg)im4QZ26%cwChL@XyW&$?5+9 z6nPa7^lu75r%CvWnZFe1z==Yz$>;lu*M1&3EsB)Nu)qU?N3|}37~`}METz%dpUs@} z+w`W2<>3wo0AS;wt3#s?CWYl{9(1ufM+}WQb-`kL1CFMT7wdRZSnV2XFofm(B({15 zJ!s8Z1AK_$a}%nvZd~o;V|F|IW`nb6E$^m|Mg&K-2H<@}E;s{>(h|X(*DTJDsajvX zv3q%$aT+e$YwS-p1S~VkM$-C3Ie`*6?I$wfxdDBF;DKZd< z&ZOm!Trumw&1F1auQj|@*49@|BzJbgdywQXW?{hk@%E)AinNwQY2z!e3+jm^cFQoC zkZ-_d0b7s(!VH&H;3}QKFwLsZn zow@JwJ6F&&2D^6_t!9SV+_HkWQO8mT3^SUzw3diT)*1Qg>rTCs4HPnv0LVQ@+M4OM z65A+>;N{08XC+UyeKW<{MZTY@TzO6rWCgMZq!M$F)K&&qE)!C4q%QIlu;e#-iO$s- z$~AyHn2Suo!j#4a@7@0Z&S*&^SZ6{>0dNKf=I5!R^?Rg-^Nv00!$m9!*WA*DS4qs_sLv zrYzlfQNXXU!{UoIi5YG!p@@LVxv(~o$KQ&;_)5U>5v5-!#xPbwGNY$zX&&pl0|XQ8lw_kg$sY&aq_U-$`Ry7q zvga7V2dD8BP0Gs=jl|2pe+9@Jhx$bgCCtlqt0eFuqGSnCmD#}O9~3%jHd@`fO#oYn zA(L|rtO#}X9q0n+iMYCwQ469B=Obw&*#7`ALEGwaM)KxZ{k&@W(=_0$V9S6gkX?#bCp0d(6u$tuh!1wmT(qdP}p|>4^Ew`l?Fz(k(jL& zTOrB-NbAy$hTbKM5vy$rk5S~+86fvRO0>C1bJU*oXjDef;iX&?lau$Nyst0w5rf7B z4W@y;nSmob9^WFZzLduszIqIS^Hd~-8l3AOnmAN|Pc4qMn!D6OMnK)WZuR3G4?TNR zNByHp?94+j3Q*(^tpls+k;@uQuo8goJ;rMnlS38ac-zGGO=xZeL=xlobI%<7`&TsG zHtRsprG`yPTgaPe0!~7F1JDYqT+(N-Z#qXVgy1re3XF6DgS?YbpGw%SUH~~(=tp9H zYEdtC%<5`w3u-p;ApN)laR70g_3kSbscJWd|?aXnLm2i!)kqT+(@bAjNlF! zdr(#u*0=9GEw0+x9GoMjIqmAA5B9cWo1-~vple!;?Id|Y~PM>0P_L$XTKTg^Godi0K}MYkihmoo0iL9gYolQHtPs# zDSswH4-7%1$W(a@`**Xc$Jx21Qd=yNOC_}G9Y+XLaBTL^YI!{J%Wt>IXw0W1@&r&JB;2vpS5X~VW zLt*$G^ZY4o?xhXLw`&NS1Jt3;27czMmgeK}?RI8sXWA5Oe@`FZHA;EOO;9GWq+HuD zo@mkSZd8?JJBZuwkL6l#0Qh|0SjVW`B1LN$Dj|dfELWYxk=LaiqiFV;-IQyoYS$MJ zZ-*G`I$l5RG;*bPp&1_Cl^gk4*?6{`1VyrbAne7dYuAMBK*d5TfEACEfPyYa*8^~*zArB(s z%tv4d<2d8_RabhRfur3>VY^7BP<*nANzbtZr2}QFYFeJ7734S1Z3~f|(VWP8f%UBS zbQNF7u4_l0DcU$9wrG$2wa)B&;)MyaGd<4s+uQwT*nHO78+!w3b9XF?S)4EC8-c;; zj+KzqS{qO?%?A6UE( zV9|tU2r=fbQ~v-Jh`NP?EYf8F0HPJ`?^}&Zb+yvvE;3O_033YP^b_X00jD6^f%UgR$&_y|tZVLnLK`tGF z1@&|HtAfS}NM&_*Yh!b=-Gqva4;cgLPV6!T1JtSlHC#UAB}G{8SSq>%#WEH832s!Rr?O~#r$`y zM`|@F?{1OIex$;Xe_!S~sa$wV!#cI7y0N}%c8ukcc~gA6@B*%J?M!qZ4_a$Fj5bmq zA|U5e*r& zvRPSMKIgS-EPNxPSm}1~M`3QigULgIBMkNA_3Kiyi#HNmG->6!g)E2wUv4u>Qjdgb z6*|fD-Fw9MIz00!x430ly)cYoLGBOqr`EdGp{PPGtZXNDY!FP~DfrkAHEyk=LvuUX z-o_d@$YduVsHHN@G<%RO#Ayo+ggav+;-br^W3i}fvt~K1?Smdv$c3;zJ*X$RxUzW} z=Nz1ntC3x_)NJLSe3xGV8eQD|dwm58CXw!?Dyrn?W_bQ>V(2m73;jXiQk$BI68xbKZ)-)~&-Bl0`rlDr3Pc zPu7G9c`MQ^WU#!F)CMTM9ase0+O5>>kuuENk-!8HGI{DKZ4Xk0<&2@4d5@%FNFaM= zn_OEx;t3fx%Af#+v)|%}5Q|pKjpPE{yQ>4-pdCl|s6}^}*4e>DExb4*xAdmh_KzH! zUmKL*k_Hz()SBkT-Z>INhD1}IdIOyF=~7jVky14iMJDtkERH(+)>B^5E$p=`O;*Nc zwzs*NVV>Cr6oPO_9ln*KSsqBlYRWUnQU(X!mH37OC9*1&+Kd^HjoZjQLG41pO=YwBW)3tkTOG!4<6f3hBBjUb4 zu10Kbo;IIsGP7X+0H?1Xuk)(I$tu)FegSFj;nihz0c2t7JY~PNeP6>@{{V{c-KjAv z2=b&6ounR^tWSVb%h7~w<(SPYzm}dn?(24+O4cR9?p%)m^tlMLJentvVb| zh}*mIo1zSw%iuuZ(apUFZ=LA zQfaPQA?A&{wh>tm8sE#R>b4p!u~Q6kBFTZmwsXm^p=-8r{t7d001ChleBjs2d=qCf zYnqkC$}`DtmdSkK&wPC-O0o^Q$DAAKMAsKFEPI%$h06PMuU^CcUo!(Qs~IP-_@Z>Z zM%!f5Dr~q!z!~AQ?O7ib-%qLEN2NeF$tVHYN%Z9PG`@;h%hC$aEvI?49bRw@cM^q+ zcOZAITz4OdwIy)7c)`idFOu3_J5P$<-YxMWD&siE)84GpZbzCCvYoM3gUYuG28^r~0{ydKST6H&*_cRhXcOc5a1J?dM?!H#k$8Dgg9C4_=>IpgBEiVpb!8z@SBltmN$*urkNkd)ES$ zJm)65j^;h2;dS&bCN*C z11kp@tE0F5n##_A9N~9!^{N0Q91cCrNu5Rr$R8$vI(C*NOKl^y5e9N*hY|UFjGUbR z09xc)eDhni&fSp%fXr|S?gzQ)UNMmpNUofd=p9!c^oEP9FB;Bwnn02nBXn$zfrbhC z&{7e(v63^vBduQ(KoVa+%q+ldDn|!A=iaMz!jK3!pluZ?C^Cev$T+QEhCF$#Xp=>@ z?d~B=0UW-rJAh4P2lJzJ%R8Ifg@yt7*dS)%LHRW9-bolN~ zq)tB-G!gGu#~c&Tds8hwRo3H|R=t$l>F~&^@;6hSb|<@#57Vt@G!Gg0Q~W*B7e;Gq zjb3L!Bw$&Vd075Lk2vdrk~>$>d_UoROT-#fGHbeIIxU1Gm~4E^n0?*Iz}|m_ar5xD zzgK@>{qT2wKRi=zO1}R9^ke)>s%oAty-Ry5Qx2VOe_;ZTLVL3w?e(S5=+{w9w#h1| znUds;lk$D5d8lhzVTJUq4k9B{hqz_NNIevHA2f?q)hxU-YL}O6Ws>4$iBd8QlCvBP zFH_s6y>Y+Ba+S^7I@je?dcjf*(zI)PJ2n8hZb^6T?^!<->lYeq(OCF)$lcGVgBZWs ze3*dihUv##R&&N5;$EfV0@_}W{{Ta8`6dp*cMy3FLFvck2e&ly{5Us}!7Y{aYk8zj z51;1}RziQ!Kd7%l98|J-(&V>|g!pd2>5sLf-&kWUrpnopG5-MW*#2*!=j&fRzwv78cP2G?L4-0C+qK8I zBBn{i&%A29p1;*)@eZdJou`*=>>>vk-}CS*>7Etvq#hk&g+z?%7`gn-{{R(=@Sc?h zoS)~Hk-JJ?5JC<&W2rUt4G!vi{{S-L_(y7vNeT{IZ(x75Oc$0YM)JZMDH3OA@>mi! zBw&+|_Zl2C-`#mb)?*nUjud>=*FGY)cNSWF242sP-5(~E>wYGSOn}8~z#L*$92}qY z`NdCCwl4x5Sc3~p4 zOBs;iPIHm(Pi?GigitU^8KMQZs^dB0ts#R;0>Bk=@+brZ9Sc*R3u%{HU8%g(rBib+ zs6>l_5bQpGy<4Z)Oj)IxF|j#}d;1gfOp76p&5^f}!P#{$amN*#os7Fu)P=>;!w;XiUvS#FR&Sp8{uH}WoJ(+){#0TGcJm8z7~`ir z{MRPem=?Ea{I?CY*zo&XJPIFKJ1q+Z3P}F|w7jujlh}LIiHmM6a>4E72*Uv}=~X1~ z39Q}9%>rDkuBD?2%s}Loz32JXwMERCiDy;15v!svD2hA$v8<+{X(FZ6OCc;_xr_io z1=nQ2eel(<7TFBN_`(NY@jqLJA_F_S4E)EszNg?_FvFx=MFYj;Lvbd;R0FuGw&9+D z1~rB8ui@?g0K|P4SY|10s#?P%y7mMVZ{dp5cwbOSX1az$IcW?n99>L=row%|%yn|n zFDE|O_2`RK&=?O4%i6!?!+j@wN`AyN2rG9++y+&V8DbgWjJ z;ycY^Sz0)5Em=>ibY+3hvFn;P?(N;mqe|qDT#t+~9Z2^2Q1*Jg&9(mk{W7Yy-WVJR z#(J7pLT=syC)2M4rdhA3gL#SIO{(eWkl#nq+f;vO=QD*#w>8?WhF zT`R!)KCPlnc?H$XSBo!~a1I!4#&V+_{uoMb6hIuxACO7o8Tjc=AF6GMHF!Iucss-%C)C1EBW}TICXw^7 z4oSy*{BB{dx(*y20QX4yW{6k1}+lWNhB%5fPb_hL5Bd5)7 zv^^Tm;yg*4fSpO~z4Cs3)fa~ zhEfUKSB!rX^y$YnfxFi<+g}t(YZ1aMg%zae9Q4SoRkhXG)8UpidC<7pMtw&FAAAq| zHJXq`9MGlmWxEI`NeLgc&PdNWCmCb$(zN3J-qu?f8_${zu2EHe03XYP+>Fv~77N6< zlF8tXIAj~ktCGh&WOW}wS`?NYGSQwib)EMrJE`7JazXl4Bv;Uj#5N-K(pX($x0$fw zB>=G*z}!b(y#eBqcqhV|ygHnh4yx9%1~Ec?Ievir4z$lr)~#=KcQZwFvg9sVJsCd! z-x;l~h9Qg0BMw2r_W=9+(?M47S!Jfdq+1AMU&;E60?OE zAoN~(_n@sTQ&L%4Mrc5O5HV0rG5sk_S2Ir#xs~HvL<5$aATS_c;NasJjXE}1WAgmxLFRGYPdr!7`9AN)?{+JhWi+-u*vXvrxZ{VUF1fY#1Pe zo_**&N*IBXJe|PsdFT32H!}u_V-b_H_p?qA?3IaS2D2=&=0tfyg31RJD?k$6ZUwGl zm5$bC=Y!2#r$}a8D36XdzHv`AJ7oU=DS|Sol;dh1Gx1g1qoB~cO$~cvD@z{u;3E+O zw|BTS<+W`-L&*}BWjQz={QJ`X00Cww#=V%&urG#>XI%C%aNk+u8XWi8r|x;#J7ygk0`3_C+m#=04}uh6Eqi* z#t)Rpc*x0aI{a2T{{Z|-(e!s)dw3GyD=SANGVTZ51p|yx_P#vSwM(NdkB0BA?cFmQ zhf$H9PtVe(q-l>V*=p8y*JowaYQU%5XWFuQg_Jgv+u7M$-h|vstV}@z-#z+$YeA=K zn#QIOOQ4HG`AMGOZUA(^0MxFMRd$5~EymNal%2WfgGs6n=od}6NhOqd;bs63t`0Ci z`=K6DrdUrHx0Yl=zy^OygUJB>=lQqrMPc-I8VUG!K=3zFGlm7s?j-1wkB$^ADC4xC#Fp8xj#uRkN zHJh45R+wBkj6~ophYOMHpi|8Rs#>2Se>G%0$j7hup#>YeS(bQ})$@)rIuS)QYb<0D z>F6=qk@$I?M9{Nt2tm$AO3;imDLBdJ1KPESjzb8yx5t0XaY*$msU+SEo|QT0jQmq= zM(1j67#qDKoMw_;6>M$*DI*{rew7n`3xq}X7b$k8LzNMNp-S!NJ!(>{3c><(1wPWdv%(?)7fL_5@Ubw(n0G#+56)N6p$wj|vfvq>`}EUrmaz~Fm~ z`%~8YJ74y`cNhE+$Q_8Ac6(yf@7(l4w?SFOeX~UqnmnPC?jh}kTqa!#1tg>q>yXfJK0g*=X`;IgB zs&#)LUIw^lWB}j=aTw^u0zSQm@(`^dEhDg*F1x63HYj-Y`fnSqdro*i37R?-S z{?R>5mc;D+VOi&+zYE(w^CFF5^hucg`Z^hdmYX z$7*3bch`D^dTbC+895uST(<7L)N%L4YWyAJ8{Zx2l32~5Tv*E=tIlvX22s#f)5&m-KUZhYo5Q!(H^9jZUR)!2Nc~6ZbI%ny?8Vfv z%&=_%M2d~rd)A$`8{1o?w$&kp*n$SeBxA78!1nJ-ZncXmc6gctI<80rV;LXA6&60C z4R=_I*3M}ob(!5UFQW_q_xG$MUL}lKn;7h5++@z>I4pCJ5BIH2_QLMsNZKaqp}6L$ zuoiQx2$m4}^fBijTvhg^WVPrMRl6&tH=QDGBxPN<6v*j{QK#ybmU?ZgOB7KVrF^yz zAxBg1oYNg~_QtcS1F&X7i@+K0p0%m)PJRkO=099k;_XCdHXMWBJf# z(nzhYq>WXNKmi!~{8pbYUjZlyv>i1q?bcOo^31@oKez{KW2?a=R)u22?)5fE$)NNU zlG{=IEXT}n4(;7D*N<)~jL_z&Ey9gQMy&tVnT zII!{Nt6?iVPMcc*hfUZW`t;2&pHOM!GWop4rpB?^ zJFVJ!#gPpxJni(O`IV$YhExS|Xvz>_$%` z=QVMPTPbo$>`5n&UsJZWSai7~=OGuNJ@9G1pQ~N!8iBGfh{einUo?@izM_V-@SW89 zo5r%q99HTSykU0#01xL+G@lAu+OgE-x}Bzv@)wY@=iC9-n`vklW)^groQrFT9$-*< zpj-iuoF0^QzLd}$MQm;zNXeA54xDtr6yHa?R*jNbJjodD*gypQg=nr--bKo2d;;EVwX4)^hG00H-^qH`$Qfs)x= z9^U4N3y{gUV%e1XiQ^f@ zDN?e@F%BJe@Izx1nSKn^w&od2jpHYfK|5+{9IHk|Y#4hS(=A&{*xr0QfMP>ovw_#8 zDtAzcC?Q#WCO({Y`qH3Ih)HEKv(IkWkw$j*C)%-oE4Z|})82N8mPBB{ZTIVn`ev7= zG|MZ+Fmiwr44hr@hgV@)~P2^q}@!#ziHkyoK9G(c z4mjvWYc1kEHs1Cq=bqhXjTn+~&>rCZX*ZF$;)WWf&4!%=UPhZD0|fOf#+UdPOPcoL zZD#F}jJb{xkIK2E7rLC~BGK>v0R5P@Vz^c6J1czr*4M!9BherNB1CM#k5R!is87Nf z>g*zgV^Pzo2l-O#YjnAg#_`5TA(XQ6rkP&A_W=22NI$I%BPhPUSwKFXF;2m(P|wU* z;tO;};=lq9Gxf!KyKbp_Y)_PcgN$c6HR@C}uzp4Jogy6PjC)j46qu=Toz3rFuT?xO z9$*#BOBu>>lTui7Z|3LiUawa~G-=?iYru7{SE;gZ1cm_5y+;E$#d^I=BbKa=ar0ir z4lC8_m!g`%!Z2&K>h(C1o(>MD;=H_*UawUO@JUAOk8k5$MGe-yUZhglVxY%0&;idC z>h&T20JhGC!si`p*#jJOuUDy(vUKy**SnEkuTm?*IDelN?ZkAiSE%sB$%ieT+-Cy3 zo~(h#HR|;Un`a5Y$J(Zs4{b6{5!&d$sq2I9&3e5|xOoho_wgm9L@|0tq%k8s&pzjx z44jR;w`tv^QLZ`rX1mTUh2;r@~0nGUPv{sU5o zdB2H(f7~Opj*Ja@y;&{Mq}9US&iH0T)vX@t;u!qcSimqnJa+@N8>!hN+q6KG1#oup zUawR&O``lJB(btp&{V4#gc8+w`oY){!jM(h;54P?93}I-qGGnvuOxyHvZ`RYIVYap)#~*@GBy7I;kStHFMJ55Sfgn)?eWI#$!r{getDvf zv#M%dVjII0O%P&=qxe^=)o8BIsuuX~UzW?musd7BC++r;f&mHv6eM0V{{S-5rSf#> zt->xjkjay`gUId0dc9M78p>zM^_OKp>O#KeWQS<5mutfYjzvTNnSD=E;G9ap%tUP{{R$q z$>SPbs#;h>Fd1ujfFXT{>DT7HUaex6R%sVkMq^UcZmh1vw(~S^x01c-zlOYL;tMl6 z!KuimRrN6do(COk)#{!#`Z847!eVRLq>-ncoS8AWpLX}DXJKqQeF zAT~kBBe>(Gdc9lnLMkbwX$i^gn}5K;U>)L2kjvK}O12sQ01&98744ARvP-Q#%G9$*ADA1_$9|tmzf?hQWfDh~j48?kfOy4vy;f$~kMX9tK9L2gTdI%4 zN}GEIW5!7CIq6!D5G${TuVfFlW`v(LMhN1)UaYTWHhdHO%Ieu!Ba>kfB-Yr zyKO9ogZ41D$l_j09T%4NqdZ9nmFTuCd zFJ!cmF#0!u0NWMFj|Q-RZ-K5NzLJ2vulD5atOyyfM& zi)a8H+3%1k47%mizArjq2qIfiF5nJH&MVdGV{VW|q@?R|M%$TXQ5gleRt)FvnOk$*j?P4({HrxQ?RjNky->w{jeQ)w$9yJm9o0TE0eRIh@=idlhqe$mUgt{bVz;=Nv|;{HZVZQwZ5H-3S* zE=zYHcB*_vN8$!@L68o;tJUh(TN==_L5N&yBXb`_oF4V6)>R>iRRR5+fd)=<-! zDP~z0mSnG{&Yf^`^HD#nF|SN{j*zBE4R&o;^^WnON~Aucn|j+KtLG5r$a^ zB>U5I;%^X3ZxbC}R{To^lX?fw>t3%_(xPR_G_cJMldEc%BujC2u8@Y0V2lme{p|KM zwjFlj^HFr2Rn_7v?b5wou2hwqDLMnUgU$~tZO$=*xub1iNEmHV`$3X$GyedbSF6<% z)fScPO{y2Rl0eR7^yFuZcl-3EORegfJkwj*Uc4%R;gA5>Bax9_uT^nH87EAt%f%X; z4wk}g(RoUMGJ;p+9>%sYTjx)dE0rNPF~B?iwd(apI;N<1W`Dz%4|T0dWX2E@6m+Fp z_3W*CBhSlI!&sRle;;<9c$I< zxortN(1C3gf%OsUz^Y`A%XRf;yfCnEnWsRz`wg?2|o-5Vr z%3g{qxKAOrDczmm?in9p+ML)VdUb?y#S~@NE*Y06ftvMtrAgWv*`c(Rq_nlvB9`JG zH09x0Jq3t7^rh2(h+52X#RC2u$h()#XvZLSE7SN_tJTt?p3NMbbXDP>73-cP)kd7R zaoIG3bIlw;mfO$~k;Q#8@i!6MMHJ4nIX)&%NVhBlDRw@bo_Hpd z>RNra_@!8YDnb7M&uaC0fvtwZ(+qQDHS{^M61j%HTe uK?gP6NqnLT;4v8|9c$I + + + + + PDF Viewer + + + +

    + + + diff --git a/suites-experimental/pdf-viewer/package-lock.json b/suites-experimental/pdf-viewer/package-lock.json new file mode 100644 index 000000000..f6f5dd171 --- /dev/null +++ b/suites-experimental/pdf-viewer/package-lock.json @@ -0,0 +1,1699 @@ +{ + "name": "pdf-viewer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pdf-viewer", + "version": "1.0.0", + "license": "SEE LICENSE IN ../../LICENSE", + "dependencies": { + "pdfjs-dist": "^6.3.289", + "speedometer-utils": "../../resources/shared" + }, + "devDependencies": { + "@fontsource/inter": "^5.2.5", + "@fontsource/source-code-pro": "^5.3.0", + "@fontsource/source-serif-4": "^5.2.5", + "pdfkit": "^0.20.2", + "vite": "^7.1.5" + } + }, + "../../resources/shared": { + "name": "speedometer-utils", + "version": "1.0.0" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fontsource/inter": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.3.0.tgz", + "integrity": "sha512-RofMylZmjlJEfELXeNHFWBRcSs75rGU/6bV2S2jfnvv/3rPXPGe0LgUJTklcHZ9lM4OZmAVFhcJPnACfb91A3g==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/source-code-pro": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-5.3.0.tgz", + "integrity": "sha512-JxaCODU69HDS3mVra9u96nyBF911La6IvtGLgpQD+PZLxJ1i9IxooNfLR6Y37kx06IFjVGkvoUmg3WPwh/8gBg==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/source-serif-4": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/source-serif-4/-/source-serif-4-5.3.0.tgz", + "integrity": "sha512-yQz8xmIgMzks8zQbpuca3UYtjxK798XCyQAGdDXmzBgvV7sdoK6d0YvE9F9kiYxORCEMRBgGZDZsSYcXj5KvwA==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@napi-rs/canvas": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.9.tgz", + "integrity": "sha512-QviPdJImDi/jMAvBfqaw+19BndMd/sizXVW3NnpMd3VJGz++QXkOHcP9kWR/smHG0hNjHeyuHFyrx/5lD0oNcQ==", + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "1.0.9", + "@napi-rs/canvas-darwin-arm64": "1.0.9", + "@napi-rs/canvas-darwin-x64": "1.0.9", + "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.9", + "@napi-rs/canvas-linux-arm64-gnu": "1.0.9", + "@napi-rs/canvas-linux-arm64-musl": "1.0.9", + "@napi-rs/canvas-linux-riscv64-gnu": "1.0.9", + "@napi-rs/canvas-linux-x64-gnu": "1.0.9", + "@napi-rs/canvas-linux-x64-musl": "1.0.9", + "@napi-rs/canvas-win32-arm64-msvc": "1.0.9", + "@napi-rs/canvas-win32-x64-msvc": "1.0.9" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.9.tgz", + "integrity": "sha512-4LGXk2/0HVzE29K8SzML5WubgCp++B1FH3qgl35XmSZE+lLdr6P9VRQEnZ0MCLZMTSuJP41yyhtoiVNEuvrTIA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.9.tgz", + "integrity": "sha512-YNdfLBzY0W/Pep9fo2L6RmoNlNksnn05LRnX66W63R3ij58S25QOTcjdtEt2v8+PnCESzqZsYzUo+QPeIR44NA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.9.tgz", + "integrity": "sha512-ceZQSknTEcy3dOXoekv59LTCkXjvnLsq+VW5PeNNDHEPQbRS5Ervkm1EaDa7WLAjiYWMLuSQTRTHao1dEX4prg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.9.tgz", + "integrity": "sha512-XhfI0Wwv4llhd6nnWDtY3kQKjq0r+y1i91PlJlJI24ag2U9WrnwbG1qS3+fDLEyouwEVFchiKkTEHozK+5iUNA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.9.tgz", + "integrity": "sha512-012oiYtKaE7i9oxc8q7nraT7kDOpLcaCmFLzVe9Ty34RHDdoDzbWLrVh827CNxYh/EADX1eSikA3ymLjo/nNuw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.9.tgz", + "integrity": "sha512-Ls5UWYFFn63casTZEczbeyEg3vRDRkv9lscuGwfchtY5yLLQhgOB8SN4YGxmfJ5vTaBwZ2YUxBS3NtmjJmFXdA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.9.tgz", + "integrity": "sha512-hLKEGxV7ZiRHqndePTokgDMdBlo/rDfzg7P4p4QIv9pUhuYobnu3R2NIFLCRghG0nwfo+s2sw+c1xZFeCmEAsw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.9.tgz", + "integrity": "sha512-6kaz3w0QMy77PDWk6rJ1ksIihdad3qzEyX2o2oGT8GwCaypfT5mhjr8buOO5hstyLxcWXDScuz56RsINLtBPIQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.9.tgz", + "integrity": "sha512-xrGvmS3v55hmZ86ls/kBLVNMUTYio3f6Ik0DireemG994VfPAwiA3ZXA0Uf1bByctkB3NQ1Sfb+H5bkdUnnzfQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-arm64-msvc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.9.tgz", + "integrity": "sha512-yjmVS3ArZeRVCP7jqbPq4rpZa/BhTeI7ELE2XqJg3snICQBDevLZyArxswHkiTnT34KRic33/4fLirrHI+SY8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.9.tgz", + "integrity": "sha512-QlSYQdMQslB81nlABo9wNfQ6npFhE7/O+saCZdqVGueGanyRk4jCogD5EwQenfP3kIq9e+mm6GreQBjX5MrA8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.1.tgz", + "integrity": "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.1.tgz", + "integrity": "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.1.tgz", + "integrity": "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.1.tgz", + "integrity": "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.1.tgz", + "integrity": "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.1.tgz", + "integrity": "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.1.tgz", + "integrity": "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.1.tgz", + "integrity": "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.1.tgz", + "integrity": "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.1.tgz", + "integrity": "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.1.tgz", + "integrity": "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.1.tgz", + "integrity": "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.1.tgz", + "integrity": "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.1.tgz", + "integrity": "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.1.tgz", + "integrity": "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.1.tgz", + "integrity": "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.1.tgz", + "integrity": "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.1.tgz", + "integrity": "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.1.tgz", + "integrity": "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.1.tgz", + "integrity": "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.1.tgz", + "integrity": "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.1.tgz", + "integrity": "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.1.tgz", + "integrity": "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.1.tgz", + "integrity": "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.1.tgz", + "integrity": "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pdfjs-dist": { + "version": "6.3.289", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.3.289.tgz", + "integrity": "sha512-ZHjSVpDa3D6izMq8/04lvkhkATUmL9px6ChPaXc1k6nU2Mrhlg1/7F0bdUqCwUjw3NsPTfPZsMDUU6ZIcRaeQw==", + "license": "Apache-2.0", + "engines": { + "node": ">=22.13.0 || >=24" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^1.0.0" + } + }, + "node_modules/pdfkit": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.20.2.tgz", + "integrity": "sha512-Q/w03ICAQyXfHNfTsg1udp0ADerdBN0s7a6XSPL7J7Ro6ABnafoBOCDBstIO9U02mvzHEV8HrvFIw5iV5ejIRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^1.3.0", + "@noble/hashes": "^1.8.0", + "fflate": "^0.8.3", + "fontkit": "^2.0.4", + "linebreak": "^1.1.0", + "png-js": "^2.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/png-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-2.0.0.tgz", + "integrity": "sha512-GdzJuUMc6ZSpxFJWVxtOH1bzYHym+TOnveqUjb+VJIbZWbZzyiRGFiKhbiielfpYbgMlhHVhsJ0FTazfuRFkMA==", + "dev": true, + "dependencies": { + "fflate": "^0.8.2" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.1.tgz", + "integrity": "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.1", + "@rollup/rollup-android-arm64": "4.63.1", + "@rollup/rollup-darwin-arm64": "4.63.1", + "@rollup/rollup-darwin-x64": "4.63.1", + "@rollup/rollup-freebsd-arm64": "4.63.1", + "@rollup/rollup-freebsd-x64": "4.63.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", + "@rollup/rollup-linux-arm-musleabihf": "4.63.1", + "@rollup/rollup-linux-arm64-gnu": "4.63.1", + "@rollup/rollup-linux-arm64-musl": "4.63.1", + "@rollup/rollup-linux-loong64-gnu": "4.63.1", + "@rollup/rollup-linux-loong64-musl": "4.63.1", + "@rollup/rollup-linux-ppc64-gnu": "4.63.1", + "@rollup/rollup-linux-ppc64-musl": "4.63.1", + "@rollup/rollup-linux-riscv64-gnu": "4.63.1", + "@rollup/rollup-linux-riscv64-musl": "4.63.1", + "@rollup/rollup-linux-s390x-gnu": "4.63.1", + "@rollup/rollup-linux-x64-gnu": "4.63.1", + "@rollup/rollup-linux-x64-musl": "4.63.1", + "@rollup/rollup-openbsd-x64": "4.63.1", + "@rollup/rollup-openharmony-arm64": "4.63.1", + "@rollup/rollup-win32-arm64-msvc": "4.63.1", + "@rollup/rollup-win32-ia32-msvc": "4.63.1", + "@rollup/rollup-win32-x64-gnu": "4.63.1", + "@rollup/rollup-win32-x64-msvc": "4.63.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speedometer-utils": { + "resolved": "../../resources/shared", + "link": true + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/suites-experimental/pdf-viewer/package.json b/suites-experimental/pdf-viewer/package.json new file mode 100644 index 000000000..ed9a73767 --- /dev/null +++ b/suites-experimental/pdf-viewer/package.json @@ -0,0 +1,28 @@ +{ + "name": "pdf-viewer", + "private": true, + "version": "1.0.0", + "description": "A pdf.js document viewer workload for Speedometer.", + "type": "module", + "scripts": { + "generate:pdf": "node scripts/generate-pdf.mjs", + "analyze:pdf": "node scripts/analyze-pdf.mjs", + "predev": "npm run generate:pdf", + "dev": "vite", + "prebuild": "npm run generate:pdf", + "build": "vite build", + "preview": "vite preview" + }, + "license": "SEE LICENSE IN ../../LICENSE", + "dependencies": { + "pdfjs-dist": "^6.3.289", + "speedometer-utils": "../../resources/shared" + }, + "devDependencies": { + "@fontsource/inter": "^5.2.5", + "@fontsource/source-code-pro": "^5.3.0", + "@fontsource/source-serif-4": "^5.2.5", + "pdfkit": "^0.20.2", + "vite": "^7.1.5" + } +} diff --git a/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs b/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs new file mode 100644 index 000000000..94d39c0ac --- /dev/null +++ b/suites-experimental/pdf-viewer/scripts/analyze-pdf.mjs @@ -0,0 +1,209 @@ +// Dev tool. Loads public/document.pdf with pdfjs-dist in Node and reports what the +// fixture asks the renderer to do, to check a change to generate-pdf.mjs did what it +// was meant to. Exits non-zero on a filter outside pdf.js' free tier. +// +// Stream filters, shading and pattern types and the embedded font programs are not +// reachable through pdf.js' public API, so those come from a scan of the raw bytes. + +import fs from "node:fs"; +import path from "node:path"; +import * as pdfjs from "pdfjs-dist/legacy/build/pdf.mjs"; + +const ROOT = path.resolve(import.meta.dirname, ".."); +const DOCUMENT = path.join(ROOT, "public", "document.pdf"); + +const FREE_TIER_FILTERS = new Set(["FlateDecode", "DCTDecode", "ASCII85Decode", "ASCIIHexDecode", "LZWDecode", "RunLengthDecode", "Crypt"]); +const SHADING_TYPES = { 1: "function", 2: "axial", 3: "radial", 4: "free-form mesh", 5: "lattice mesh", 6: "coons patch", 7: "tensor patch" }; +const PATTERN_TYPES = { 1: "tiling", 2: "shading" }; +const FONT_FILE_KEYS = { FontFile: "Type 1", FontFile2: "TrueType", FontFile3: "CFF" }; + +function tally(source, pattern, transform = (value) => value) { + const counts = new Map(); + for (const match of source.matchAll(pattern)) { + const key = transform(match[1]); + counts.set(key, (counts.get(key) ?? 0) + 1); + } + return counts; +} + +function formatTally(counts, empty = "none") { + if (counts.size === 0) + return empty; + return [...counts] + .sort(([a], [b]) => String(a).localeCompare(String(b))) + .map(([key, count]) => `${key} x${count}`) + .join(", "); +} + +function scanRawBytes(bytes) { + const text = Buffer.from(bytes).toString("latin1"); + + const filters = new Map(); + for (const match of text.matchAll(/\/Filter\s*(\/[A-Za-z0-9]+|\[[^\]]*\])/g)) { + for (const name of match[1].match(/[A-Za-z0-9]+/g) ?? []) + filters.set(name, (filters.get(name) ?? 0) + 1); + } + + const fonts = new Map(); + for (const match of text.matchAll(/\/BaseFont\s*\/([A-Za-z0-9+\-_]+)/g)) + fonts.set(match[1], /^[A-Z]{6}\+/.test(match[1])); + + const embedded = new Map(); + for (const [key, label] of Object.entries(FONT_FILE_KEYS)) { + const count = text.split(`/${key} `).length - 1; + if (count) + embedded.set(label, count); + } + + return { + filters, + fonts, + embedded, + shadings: tally(text, /\/ShadingType\s+(\d+)/g, (value) => SHADING_TYPES[value] ?? `type ${value}`), + patterns: tally(text, /\/PatternType\s+(\d+)/g, (value) => PATTERN_TYPES[value] ?? `type ${value}`), + imageSMasks: (text.match(/\/SMask\s+\d+\s+\d+\s+R/g) ?? []).length, + luminositySMasks: (text.match(/\/S\s*\/Luminosity/g) ?? []).length, + blendModes: tally(text, /\/BM\s*\/([A-Za-z]+)/g), + transparencyGroups: (text.match(/\/S\s*\/Transparency/g) ?? []).length, + }; +} + +async function analyzePage(page) { + const operatorList = await page.getOperatorList(); + const viewport = page.getViewport({ scale: 1 }); + const annotations = await page.getAnnotations(); + const { styles } = await page.getTextContent(); + + let images = 0; + let clips = 0; + let dashes = 0; + const blendModes = new Set(); + const fonts = new Set(); + + for (let i = 0; i < operatorList.fnArray.length; i++) { + const args = operatorList.argsArray[i]; + switch (operatorList.fnArray[i]) { + case pdfjs.OPS.paintImageXObject: + case pdfjs.OPS.paintInlineImageXObject: + case pdfjs.OPS.paintImageMaskXObject: + images++; + break; + case pdfjs.OPS.clip: + case pdfjs.OPS.eoClip: + clips++; + break; + case pdfjs.OPS.setFont: + fonts.add(args[0]); + break; + case pdfjs.OPS.setDash: + if (args[0]?.length) + dashes++; + break; + case pdfjs.OPS.setGState: + for (const [key, value] of args[0] ?? []) { + if (key === "BM" && value) + blendModes.add(typeof value === "string" ? value : value?.name ?? "unknown"); + } + + break; + default: + break; + } + } + + return { + size: `${Math.round(viewport.width)}x${Math.round(viewport.height)}`, + ops: operatorList.fnArray.length, + images, + clips, + dashes, + fonts, + blendModes, + annotations, + styleNames: Object.keys(styles), + }; +} + +async function main() { + if (!fs.existsSync(DOCUMENT)) + throw new Error(`${path.relative(ROOT, DOCUMENT)} is missing. Run "npm run generate:pdf" first.`); + + const bytes = fs.readFileSync(DOCUMENT); + const raw = scanRawBytes(bytes); + // getDocument transfers the buffer to the worker, so hand it a copy. + const doc = await pdfjs.getDocument({ data: new Uint8Array(bytes), verbosity: pdfjs.VerbosityLevel.ERRORS }).promise; + + const pages = []; + for (let pageNumber = 1; pageNumber <= doc.numPages; pageNumber++) + pages.push(await analyzePage(await doc.getPage(pageNumber))); + + const outline = await doc.getOutline(); + const destinations = await doc.getDestinations(); + const metadata = await doc.getMetadata(); + const structureTree = await (await doc.getPage(3)).getStructTree(); + + let resolvedLinks = 0; + let brokenLinks = 0; + for (const page of pages) { + for (const annotation of page.annotations) { + if (annotation.subtype !== "Link") + continue; + const dest = typeof annotation.dest === "string" ? await doc.getDestination(annotation.dest) : annotation.dest; + if (dest) + resolvedLinks++; + else + brokenLinks++; + } + } + + const outlineLeaves = (outline ?? []).reduce((total, item) => total + 1 + (item.items?.length ?? 0), 0); + const offTier = [...raw.filters.keys()].filter((name) => !FREE_TIER_FILTERS.has(name)); + const ops = pages.map((page) => page.ops).sort((a, b) => a - b); + const allBlendModes = new Set(pages.flatMap((page) => [...page.blendModes])); + const allStyles = new Set(pages.flatMap((page) => page.styleNames)); + const totals = (key) => pages.reduce((sum, page) => sum + page[key], 0); + + console.log(`document ${path.relative(ROOT, DOCUMENT)} (${(bytes.length / 1024).toFixed(0)} KB)`); + console.log(`pages ${doc.numPages}, all ${pages[0].size} pt`); + console.log(`info ${metadata.info.Title} / created ${metadata.info.CreationDate} / ${metadata.info.Producer}`); + console.log(`tagged ${structureTree ? `yes (page 3 root: ${structureTree.role})` : "no"}`); + console.log(""); + console.log(`font programs ${formatTally(raw.embedded)}`); + for (const [name, isSubset] of raw.fonts) + console.log(` ${name}${isSubset ? " [subset]" : " [NOT SUBSET]"}`); + console.log(`pdf.js styles ${[...allStyles].sort().join(", ")}`); + console.log(""); + console.log(`filters ${formatTally(raw.filters)}`); + console.log(`off free tier ${offTier.length ? offTier.join(", ") : "none"}`); + console.log(`shadings ${formatTally(raw.shadings)}`); + console.log(`patterns ${formatTally(raw.patterns)}`); + console.log(`soft masks ${raw.imageSMasks} image SMask, ${raw.luminositySMasks} luminosity, ${raw.transparencyGroups} transparency groups`); + console.log(`blend modes ${formatTally(raw.blendModes)} (reaching the renderer: ${[...allBlendModes].sort().join(", ") || "none"})`); + console.log(""); + console.log(`image paints ${totals("images")}`); + console.log(`clips ${totals("clips")}`); + console.log(`dash changes ${totals("dashes")}`); + console.log(`annotations ${pages.reduce((sum, page) => sum + page.annotations.length, 0)} (${resolvedLinks} links resolve, ${brokenLinks} broken)`); + console.log(`outline ${outline?.length ?? 0} top-level items, ${outlineLeaves} total`); + console.log(`named dests ${destinations instanceof Map ? destinations.size : Object.keys(destinations).length}`); + console.log(`operators min ${ops[0]}, median ${ops[ops.length >> 1]}, max ${ops[ops.length - 1]}`); + console.log(""); + console.log("page ops images clips dashes fonts annots"); + pages.forEach((page, index) => { + const columns = [ + String(index + 1).padStart(4), + String(page.ops).padStart(5), + String(page.images).padStart(7), + String(page.clips).padStart(6), + String(page.dashes).padStart(7), + String(page.fonts.size).padStart(6), + String(page.annotations.length).padStart(7), + ]; + console.log(columns.join(" ")); + }); + + if (offTier.length || brokenLinks) + process.exitCode = 1; +} + +await main(); diff --git a/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs b/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs new file mode 100644 index 000000000..ede480b38 --- /dev/null +++ b/suites-experimental/pdf-viewer/scripts/generate-pdf.mjs @@ -0,0 +1,1165 @@ +// Builds public/document.pdf, the fixture the PDFViewer-PDFjs workload renders. See +// the README for what it covers and why. +// +// The output has to be byte-identical between builds so the committed dist/ does not +// churn, which is why every date in the info dict is pinned - PDFKit derives the file +// /ID from that dict, and CreationDate otherwise defaults to `new Date()`. + +import fs from "node:fs"; +import path from "node:path"; +import zlib from "node:zlib"; +import PDFDocument from "pdfkit"; + +const ROOT = path.resolve(import.meta.dirname, ".."); +const OUTPUT = path.join(ROOT, "public", "document.pdf"); + +const PAGE = { width: 612, height: 792 }; +const MARGIN = 54; +const CONTENT = { left: MARGIN, top: MARGIN, right: PAGE.width - MARGIN, bottom: PAGE.height - MARGIN }; +const CONTENT_WIDTH = CONTENT.right - CONTENT.left; + +const PAGE_COUNT = 24; +const TITLE = "Planetary Observation Review"; +const SUBTITLE = "Instrument baselines, thermal basin transects and launch window logistics"; + +const INK = "#1b1f24"; +const MUTED = "#5c6673"; +const HAIRLINE = "#c9d1d9"; +const ACCENT = "#0b6e8a"; +const ACCENT_WARM = "#c2570b"; +const PAPER_TINT = "#f2f5f7"; + +// Two fontkit subsetting constraints, both of which throw "Offset is outside the +// bounds of the DataView" if broken: use .woff and not the .woff2 alongside it, whose +// glyf transform fontkit mis-reconstructs for composite glyphs, and use a mono face +// without coding ligatures - the ligature glyphs a face like JetBrains Mono +// substitutes for "=>" or "++" fail the same way. +const FONT_FILES = { + Body: "@fontsource/source-serif-4/files/source-serif-4-latin-400-normal.woff", + Heading: "@fontsource/inter/files/inter-latin-700-normal.woff", + Mono: "@fontsource/source-code-pro/files/source-code-pro-latin-400-normal.woff", +}; + +const PHOTOS = { + earth: { file: "earth-apollo17.jpg", alt: "The full disc of the Earth photographed from Apollo 17." }, + earthrise: { file: "earthrise-apollo8.jpg", alt: "The Earth rising above the lunar horizon, photographed from Apollo 8." }, + launch: { file: "apollo11-launch.jpg", alt: "A Saturn V lifting off, with the exhaust plume filling the lower frame." }, + spring: { file: "grand-prismatic-spring.jpg", alt: "An aerial view of a hot spring, ringed by orange microbial mats." }, +}; + +const CHAPTERS = [ + { title: "Instrument Overview", topic: "detector response" }, + { title: "Calibration and Baselines", topic: "baseline drift" }, + { title: "Atmospheric Sampling", topic: "aerosol loading" }, + { title: "Thermal Basin Survey", topic: "basin discharge" }, + { title: "Launch Window Logistics", topic: "ascent corridors" }, + { title: "Appendix: Data Tables", topic: "tabulated residuals" }, +]; + +const MOTIF = ["text", "photo", "chart", "mixed"]; +const MOTIF_TITLES = { + text: "Summary", + photo: "Plates", + chart: "Measurements", + mixed: "Tabulated Results", +}; + +const WORDS = [ + "aerosol", + "albedo", + "altitude", + "ambient", + "analysis", + "aperture", + "apogee", + "array", + "ascent", + "atmosphere", + "azimuth", + "baseline", + "basin", + "bearing", + "calibration", + "caldera", + "canopy", + "cascade", + "channel", + "climate", + "cluster", + "composite", + "conduit", + "contour", + "corridor", + "coverage", + "crater", + "current", + "declination", + "density", + "deposit", + "detector", + "diameter", + "diffuse", + "dispersion", + "drift", + "dynamics", + "eclipse", + "elevation", + "emission", + "ensemble", + "envelope", + "epoch", + "equator", + "erosion", + "estimate", + "exposure", + "feature", + "filament", + "fissure", + "flux", + "forecast", + "fraction", + "fumarole", + "gradient", + "granular", + "gravity", + "harmonic", + "horizon", + "humidity", + "incident", + "inclination", + "injection", + "inlet", + "integral", + "interval", + "inversion", + "isotope", + "kernel", + "lattice", + "layer", + "lidar", + "limb", + "magnitude", + "mantle", + "margin", + "matrix", + "meridian", + "mesa", + "mineral", + "moisture", + "momentum", + "monitor", + "nadir", + "nominal", + "observation", + "occultation", + "opacity", + "orbit", + "outcrop", + "parallax", + "parameter", + "payload", + "penumbra", + "perigee", + "phase", + "plateau", + "plume", + "polarity", + "porosity", + "precision", + "pressure", + "profile", + "projection", + "quadrant", + "radiance", + "radius", + "reflectance", + "refraction", + "regolith", + "residual", + "resolution", + "response", + "ridge", + "runoff", + "salinity", + "sample", + "saturation", + "scatter", + "sediment", + "segment", + "sequence", + "series", + "shear", + "signature", + "silica", + "sinter", + "solstice", + "spectrum", + "stability", + "stratum", + "subsurface", + "survey", + "swath", + "telemetry", + "terrace", + "texture", + "thermal", + "threshold", + "tolerance", + "topography", + "trajectory", + "transect", + "transit", + "travertine", + "turbulence", + "umbra", + "uniform", + "validation", + "variance", + "vector", + "velocity", + "vent", + "viscosity", + "visibility", + "volume", + "vortex", + "wavelength", + "window", + "zenith", +]; + +const CITED = ["Bénard", "Kármán", "Poincaré", "Ångström", "Röntgen", "Møller", "Chandrasekhar", "Prandtl", "Coriolis", "Rayleigh"]; + +const CODE_LINES = [ + "export function residual(track, model) {", + " const window = track.samples.slice(-96);", + " const predicted = model.evaluate(window.map((s) => s.epoch));", + " let sum = 0;", + " for (let i = 0; i < window.length; i++)", + " sum += (window[i].radiance - predicted[i]) ** 2;", + " return Math.sqrt(sum / window.length);", + "}", +]; + +// Seeded, so the body copy and every chart datum are identical on every build. +function createRandom(seed) { + let state = seed >>> 0; + return () => { + state = (Math.imul(state, 1664525) + 1013904223) >>> 0; + return state / 4294967296; + }; +} + +function pick(random, list) { + return list[Math.floor(random() * list.length)]; +} + +function sentence(random, words = 14) { + const parts = []; + for (let i = 0; i < words; i++) + parts.push(pick(random, WORDS)); + if (words > 9) + parts.splice(Math.floor(words / 2), 0, `${pick(random, WORDS)},`); + const text = parts.join(" "); + return `${text[0].toUpperCase()}${text.slice(1)}.`; +} + +function paragraph(random, sentences = 5) { + const parts = []; + for (let i = 0; i < sentences; i++) + parts.push(sentence(random, 9 + Math.floor(random() * 10))); + return parts.join(" "); +} + +const CRC_TABLE = (() => { + const table = new Int32Array(256); + for (let n = 0; n < 256; n++) { + let c = n; + for (let k = 0; k < 8; k++) + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + table[n] = c; + } + return table; +})(); + +function crc32(buffer) { + let c = -1; + for (const byte of buffer) + c = CRC_TABLE[(c ^ byte) & 0xff] ^ (c >>> 8); + return (c ^ -1) >>> 0; +} + +function pngChunk(type, data) { + const chunk = Buffer.alloc(data.length + 12); + chunk.writeUInt32BE(data.length, 0); + chunk.write(type, 4, "ascii"); + data.copy(chunk, 8); + chunk.writeUInt32BE(crc32(chunk.subarray(4, 8 + data.length)), 8 + data.length); + return chunk; +} + +// Minimal RGBA PNG encoder, so the one image with an alpha channel - which is how +// PDFKit is made to emit an /SMask - does not have to be a committed asset. +function encodePng(width, height, rgba) { + const stride = width * 4; + const raw = Buffer.alloc((stride + 1) * height); + for (let y = 0; y < height; y++) { + raw[y * (stride + 1)] = 0; + rgba.copy(raw, y * (stride + 1) + 1, y * stride, (y + 1) * stride); + } + const header = Buffer.alloc(13); + header.writeUInt32BE(width, 0); + header.writeUInt32BE(height, 4); + header[8] = 8; + header[9] = 6; + return Buffer.concat([Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]), pngChunk("IHDR", header), pngChunk("IDAT", zlib.deflateSync(raw, { level: 9 })), pngChunk("IEND", Buffer.alloc(0))]); +} + +// Alpha varies per pixel, so the SMask is a real image decode rather than a flat mask +// pdf.js could shortcut. +function buildSealOverlay(size = 512) { + const rgba = Buffer.alloc(size * size * 4); + const center = (size - 1) / 2; + for (let y = 0; y < size; y++) { + for (let x = 0; x < size; x++) { + const dx = (x - center) / center; + const dy = (y - center) / center; + const radius = Math.hypot(dx, dy); + const outerRing = Math.abs(radius - 0.94) < 0.018 ? 0.9 : 0; + const innerRing = Math.abs(radius - 0.82) < 0.01 ? 0.7 : 0; + const hatch = (x + y) % 26 < 3 ? 0.42 * Math.max(0, 1 - radius) : 0; + const glow = Math.max(0, 0.62 - radius) * 1.1; + const alpha = radius > 0.96 ? 0 : Math.min(1, Math.max(outerRing, innerRing, hatch, glow)); + const offset = (y * size + x) * 4; + rgba[offset] = 252; + rgba[offset + 1] = 250; + rgba[offset + 2] = 244; + rgba[offset + 3] = Math.round(alpha * 255); + } + } + return encodePng(size, size, rgba); +} + +// PDFKit exposes fill and stroke opacity but no blend mode, so reach into the page's +// ExtGState directly. +function setBlendMode(doc, mode) { + doc._blendModes ??= new Map(); + if (!doc._blendModes.has(mode)) { + const gstate = doc.ref({ Type: "ExtGState", BM: mode }); + gstate.end(); + doc._blendModes.set(mode, gstate); + } + doc.page.ext_gstates[`Bm${mode}`] = doc._blendModes.get(mode); + doc.addContent(`/Bm${mode} gs`); +} + +function appendArc(doc, cx, cy, r, from, to, move) { + const steps = Math.max(1, Math.ceil(Math.abs(to - from) / (Math.PI / 2))); + const delta = (to - from) / steps; + const handle = (4 / 3) * Math.tan(delta / 4) * r; + let angle = from; + if (move) + doc.moveTo(cx + r * Math.cos(angle), cy + r * Math.sin(angle)); + for (let i = 0; i < steps; i++) { + const next = angle + delta; + const x0 = cx + r * Math.cos(angle); + const y0 = cy + r * Math.sin(angle); + const x1 = cx + r * Math.cos(next); + const y1 = cy + r * Math.sin(next); + doc.bezierCurveTo(x0 - handle * Math.sin(angle), y0 + handle * Math.cos(angle), x1 + handle * Math.sin(next), y1 - handle * Math.cos(next), x1, y1); + angle = next; + } +} + +// The element has to be attached to its parent before `draw` is added, or PDFKit +// defers the closure and the drawing order stops matching the content stream. +function tagged(doc, parent, type, draw, options = {}) { + const element = doc.struct(type, options); + parent.add(element); + element.add(draw); + element.end(); + return element; +} + +function chapterOf(pageIndex) { + return CHAPTERS[Math.floor((pageIndex - 2) / MOTIF.length)]; +} + +function motifOf(pageIndex) { + return MOTIF[(pageIndex - 2) % MOTIF.length]; +} + +function pageTitle(pageIndex) { + return `${chapterOf(pageIndex).title} — ${MOTIF_TITLES[motifOf(pageIndex)]}`; +} + +// Zero-padded because PDFKit sorts its name tree with localeCompare while the PDF +// spec wants byte order, and readers binary-search the tree. Fixed-width lowercase +// ASCII keys are the one case where the two orderings agree. +function destinationOf(pageIndex) { + return `page-${String(pageIndex + 1).padStart(2, "0")}`; +} + +function drawRunningHead(doc, pageIndex) { + // The footer sits below the bottom margin, and PDFKit starts a new page for any + // text that does. Drop the margin for the duration. + const bottomMargin = doc.page.margins.bottom; + doc.page.margins.bottom = 0; + doc.markContent("Artifact"); + doc.font("Heading") + .fontSize(7.5) + .fillColor(MUTED) + .text(chapterOf(pageIndex).title.toUpperCase(), CONTENT.left, 34, { width: CONTENT_WIDTH * 0.7, lineBreak: false }); + doc.font("Mono") + .fontSize(7.5) + .text(`${pageIndex + 1} / ${PAGE_COUNT}`, CONTENT.left, 34, { width: CONTENT_WIDTH, align: "right", lineBreak: false }); + doc.moveTo(CONTENT.left, 48).lineTo(CONTENT.right, 48).lineWidth(0.5).stroke(HAIRLINE); + doc.moveTo(CONTENT.left, CONTENT.bottom + 12) + .lineTo(CONTENT.right, CONTENT.bottom + 12) + .lineWidth(0.5) + .stroke(HAIRLINE); + doc.font("Body") + .fontSize(8) + .fillColor(MUTED) + .text(TITLE, CONTENT.left, CONTENT.bottom + 20, { width: CONTENT_WIDTH, lineBreak: false }); + doc.endMarkedContent(); + doc.page.margins.bottom = bottomMargin; +} + +function drawPageHeading(doc, section, pageIndex) { + const chapter = chapterOf(pageIndex); + tagged(doc, section, "H2", () => { + doc.font("Mono") + .fontSize(8) + .fillColor(ACCENT) + .text(`SECTION ${CHAPTERS.indexOf(chapter) + 1}.${((pageIndex - 2) % MOTIF.length) + 1}`, CONTENT.left, 62, { characterSpacing: 1.4, lineBreak: false }); + doc.font("Heading") + .fontSize(17) + .fillColor(INK) + .text(pageTitle(pageIndex), CONTENT.left, 76, { width: CONTENT_WIDTH * 0.86 }); + }); + doc.moveTo(CONTENT.left, 108) + .lineTo(CONTENT.left + 64, 108) + .lineWidth(2) + .stroke(ACCENT_WARM); +} + +function drawFrontPage(doc, images, random) { + const section = doc.struct("Sect"); + doc.addStructure(section); + + const mastheadHeight = 210; + const photo = images.spring; + const scale = Math.max(PAGE.width / photo.width, mastheadHeight / photo.height); + + tagged( + doc, + section, + "Figure", + () => { + doc.save().rect(0, 0, PAGE.width, mastheadHeight).clip(); + doc.image(photo, (PAGE.width - photo.width * scale) / 2, (mastheadHeight - photo.height * scale) / 2, { width: photo.width * scale }); + doc.restore(); + }, + { alt: PHOTOS.spring.alt } + ); + + const scrim = doc.linearGradient(0, 0, 0, mastheadHeight); + scrim.stop(0, "#04070c", 0.15).stop(0.5, "#04070c", 0.62).stop(1, "#04070c", 0.92); + doc.rect(0, 0, PAGE.width, mastheadHeight).fill(scrim); + + tagged(doc, section, "H1", () => { + doc.font("Mono").fontSize(8.5).fillColor("#8fd0e4").text("OBSERVING SYSTEMS DIVISION — VOLUME 24", MARGIN, 108, { characterSpacing: 1.6, lineBreak: false }); + doc.font("Heading").fontSize(30).fillColor("#f7fafc").text(TITLE, MARGIN, 124, { width: CONTENT_WIDTH, lineGap: -3 }); + }); + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(11).fillColor("#d3dce4").text(SUBTITLE, MARGIN, 172, { width: 400 }); + }); + + tagged(doc, section, "H2", () => { + doc.font("Mono").fontSize(8).fillColor(ACCENT).text("SUMMARY OF FINDINGS", CONTENT.left, 232, { characterSpacing: 1.4, lineBreak: false }); + }); + doc.moveTo(CONTENT.left, 246).lineTo(CONTENT.right, 246).lineWidth(0.75).stroke(HAIRLINE); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(`${paragraph(random, 4)} ${paragraph(random, 3)}`, CONTENT.left, 258, { width: CONTENT_WIDTH, align: "justify", columns: 2, columnGap: 22, height: 96, ellipsis: true }); + }); + + tagged(doc, section, "H2", () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Key figures by transect", CONTENT.left, 372, { lineBreak: false }); + }); + const tableBottom = drawTable(doc, section, 388, random, { rows: 6 }); + + const halfWidth = (CONTENT_WIDTH - 24) / 2; + const figureTop = tableBottom + 26; + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Channel throughput", CONTENT.left, figureTop, { lineBreak: false }); + drawBarChart(doc, CONTENT.left, figureTop + 16, halfWidth, 96, random); + }, + { alt: "A bar chart of channel throughput, bars filled with a vertical gradient." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Reference plate", CONTENT.left + halfWidth + 24, figureTop, { lineBreak: false }); + const plateX = CONTENT.left + halfWidth + 24; + const plateY = figureTop + 16; + const plateHeight = 108; + const cover = Math.max(halfWidth / images.earth.width, plateHeight / images.earth.height); + doc.save().rect(plateX, plateY, halfWidth, plateHeight).clip(); + doc.image(images.earth, plateX + (halfWidth - images.earth.width * cover) / 2, plateY + (plateHeight - images.earth.height * cover) / 2, { width: images.earth.width * cover }); + doc.restore(); + }, + { alt: PHOTOS.earth.alt } + ); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(9.5) + .fillColor(MUTED) + .text(`Figure 1 — ${sentence(random, 9)}`, CONTENT.left, figureTop + 130, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 3), CONTENT.left, figureTop + 154, { width: CONTENT_WIDTH, align: "justify", height: 712 - figureTop - 154, ellipsis: true }); + }); + + const band = doc.pattern([0, 0, 8, 8], 8, 8, "0 0 8 1.6 re f"); + doc.rect(CONTENT.left, 722, CONTENT_WIDTH, 8).fill([band, ACCENT]); + section.end(); +} + +function drawTableOfContents(doc, images, random) { + const section = doc.struct("Sect"); + doc.addStructure(section); + + const listWidth = 300; + const listRight = CONTENT.left + listWidth; + const asideLeft = listRight + 24; + const asideWidth = CONTENT.right - asideLeft; + + tagged(doc, section, "H1", () => { + doc.font("Heading").fontSize(24).fillColor(INK).text("Contents", CONTENT.left, 84, { lineBreak: false }); + }); + doc.moveTo(CONTENT.left, 120).lineTo(CONTENT.right, 120).lineWidth(1).stroke(HAIRLINE); + + const list = doc.struct("L"); + section.add(list); + + let y = 138; + let lastChapter = null; + for (let pageIndex = 2; pageIndex < PAGE_COUNT; pageIndex++) { + const chapter = chapterOf(pageIndex); + if (chapter !== lastChapter) { + lastChapter = chapter; + const item = doc.struct("LI"); + list.add(item); + tagged(doc, item, "Lbl", () => { + doc.font("Heading").fontSize(9.5).fillColor(ACCENT).text(chapter.title.toUpperCase(), CONTENT.left, y, { width: listWidth, characterSpacing: 0.5, lineBreak: false }); + }); + item.end(); + y += 18; + } + + const label = MOTIF_TITLES[motifOf(pageIndex)]; + const number = String(pageIndex + 1); + doc.font("Body").fontSize(11); + const labelWidth = doc.widthOfString(label); + const numberWidth = doc.widthOfString(number); + + const item = doc.struct("LI"); + list.add(item); + const link = doc.struct("Link"); + item.add(link); + link.add(() => { + doc.fillColor(INK).text(label, CONTENT.left + 18, y, { lineBreak: false }); + doc.fillColor(MUTED).text(number, listRight - numberWidth, y, { lineBreak: false }); + }); + doc.goTo(CONTENT.left + 18, y - 2, listWidth - 18, 14, destinationOf(pageIndex), { structParent: link }); + link.end(); + item.end(); + + doc.save().dash(1, { space: 2.5 }); + doc.moveTo(CONTENT.left + 26 + labelWidth, y + 8) + .lineTo(listRight - numberWidth - 6, y + 8) + .lineWidth(0.5) + .stroke(HAIRLINE); + doc.restore(); + y += 20; + } + list.end(); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Budget by subsystem", asideLeft, 138, { lineBreak: false }); + drawDonutChart(doc, asideLeft + asideWidth / 2, 220, 58, 30, random); + }, + { alt: "A donut chart of the instrument budget, split across five subsystems." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Launch record", asideLeft, 300, { lineBreak: false }); + doc.image(images.launch, asideLeft, 316, { fit: [asideWidth, 132], align: "center", valign: "center" }); + }, + { alt: PHOTOS.launch.alt } + ); + + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(8.5).fillColor(MUTED).text(sentence(random, 10), asideLeft, 456, { width: asideWidth }); + }); + + doc.rect(asideLeft, 500, asideWidth, 92).fill(PAPER_TINT); + tagged(doc, section, "P", () => { + doc.font("Mono").fontSize(7.5).fillColor(INK); + ["transects", "samples", "epochs", "residual"].forEach((label, index) => { + doc.text(label.toUpperCase(), asideLeft + 10, 510 + index * 20, { lineBreak: false }); + doc.text((10 + random() * 900).toFixed(1), asideLeft + 10, 510 + index * 20, { width: asideWidth - 20, align: "right", lineBreak: false }); + }); + }); + + section.end(); +} + +function drawTextPage(doc, section, pageIndex, random) { + const chapter = chapterOf(pageIndex); + const intro = paragraph(random, 4); + const cap = intro[0]; + + tagged(doc, section, "P", () => { + doc.font("Body").fontSize(46).fillColor(ACCENT_WARM).text(cap, CONTENT.left, 122, { lineBreak: false }); + doc.font("Body") + .fontSize(11.5) + .fillColor(INK) + .text(intro.slice(1), CONTENT.left + 40, 126, { width: CONTENT_WIDTH - 40, align: "justify", height: 62, ellipsis: false }); + doc.font("Body").fontSize(11.5).text(paragraph(random, 3), CONTENT.left, 196, { width: CONTENT_WIDTH, align: "justify" }); + }); + + const quoteTop = 262; + doc.rect(CONTENT.left, quoteTop, CONTENT_WIDTH, 76).fill(PAPER_TINT); + doc.rect(CONTENT.left, quoteTop, 3, 76).fill(ACCENT); + tagged(doc, section, "BlockQuote", () => { + doc.font("Body") + .fontSize(14) + .fillColor(INK) + .text(`“The ${chapter.topic} term dominates every residual we could not otherwise explain — ${pick(random, WORDS)} and ${pick(random, WORDS)} alike.”`, CONTENT.left + 22, quoteTop + 14, { width: CONTENT_WIDTH - 44, align: "left" }); + doc.font("Heading") + .fontSize(8.5) + .fillColor(MUTED) + .text(`— ${pick(random, CITED)}, working note ${100 + Math.floor(random() * 800)}`, CONTENT.left + 22, quoteTop + 58, { lineBreak: false }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10.5) + .fillColor(INK) + .text(`${paragraph(random, 8)} ${paragraph(random, 8)} ${paragraph(random, 7)}`, CONTENT.left, quoteTop + 96, { + width: CONTENT_WIDTH, + align: "justify", + columns: 2, + columnGap: 22, + height: CONTENT.bottom - quoteTop - 96, + ellipsis: true, + }); + }); +} + +function drawPhotoPage(doc, section, pageIndex, random, images) { + const keys = ["spring", "launch", "earthrise", "earth"]; + // A different lead photo per page, so the four decodes are spread across the + // document rather than landing in whichever prefix gets rendered. + const primaryKey = keys[Math.floor((pageIndex - 3) / MOTIF.length) % keys.length]; + const primary = images[primaryKey]; + const cappedHeight = Math.min((CONTENT_WIDTH * primary.height) / primary.width, 250); + const cappedWidth = (cappedHeight * primary.width) / primary.height; + + tagged( + doc, + section, + "Figure", + () => { + doc.image(primary, CONTENT.left + (CONTENT_WIDTH - cappedWidth) / 2, 124, { width: cappedWidth }); + }, + { alt: PHOTOS[primaryKey].alt } + ); + + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.1 — ${sentence(random, 11)}`, CONTENT.left, 132 + cappedHeight, { width: CONTENT_WIDTH }); + }); + + const rowTop = 170 + cappedHeight; + const halfWidth = (CONTENT_WIDTH - 18) / 2; + const secondaryKeys = keys.filter((key) => key !== primaryKey); + const left = images[secondaryKeys[0]]; + const right = images[secondaryKeys[1]]; + const leftHeight = Math.min((halfWidth * left.height) / left.width, 150); + const rightHeight = Math.min((halfWidth * right.height) / right.width, 150); + + tagged( + doc, + section, + "Figure", + () => { + doc.image(left, CONTENT.left, rowTop, { fit: [halfWidth, leftHeight], align: "center", valign: "center" }); + }, + { alt: PHOTOS[secondaryKeys[0]].alt } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.image(right, CONTENT.left + halfWidth + 18, rowTop, { fit: [halfWidth, rightHeight], align: "center", valign: "center" }); + // The seal is an RGBA PNG, so PDFKit emits it with an /SMask. + doc.image(images.seal, CONTENT.left + halfWidth + 18 + halfWidth / 2 - 55, rowTop + rightHeight / 2 - 55, { width: 110 }); + }, + { alt: PHOTOS[secondaryKeys[1]].alt } + ); + + const captionTop = rowTop + Math.max(leftHeight, rightHeight) + 10; + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.2 — ${sentence(random, 8)}`, CONTENT.left, captionTop, { width: halfWidth }); + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Plate ${pageIndex + 1}.3 — ${sentence(random, 8)} Survey seal applied.`, CONTENT.left + halfWidth + 18, captionTop, { width: halfWidth }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10.5) + .fillColor(INK) + .text(`${paragraph(random, 5)} ${paragraph(random, 5)}`, CONTENT.left, captionTop + 40, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - captionTop - 40, ellipsis: true }); + }); +} + +function drawLineChart(doc, x, y, width, height, random) { + doc.rect(x, y, width, height).lineWidth(0.75).stroke(HAIRLINE); + for (let i = 1; i < 4; i++) { + const gridY = y + (height * i) / 4; + doc.save() + .dash(2, { space: 3 }) + .moveTo(x, gridY) + .lineTo(x + width, gridY) + .lineWidth(0.5) + .stroke(HAIRLINE) + .restore(); + } + + const dashes = [null, [4, 2], [1, 2]]; + const colors = [ACCENT, ACCENT_WARM, "#6b7f2f"]; + const points = 26; + for (let series = 0; series < 3; series++) { + doc.save(); + if (dashes[series]) + doc.dash(dashes[series][0], { space: dashes[series][1] }); + let value = 0.35 + series * 0.18; + for (let i = 0; i < points; i++) { + value = Math.min(0.95, Math.max(0.05, value + (random() - 0.5) * 0.16)); + const px = x + (width * i) / (points - 1); + const py = y + height - value * height; + if (i === 0) + doc.moveTo(px, py); + else + doc.lineTo(px, py); + } + doc.lineWidth(1.25).stroke(colors[series]); + doc.restore(); + } + + doc.font("Mono").fontSize(6.5).fillColor(MUTED); + for (let i = 0; i <= 4; i++) { + doc.text(String(2002 + i * 5), x + (width * i) / 4 - 10, y + height + 5, { lineBreak: false }); + doc.text(String(100 - i * 25), x - 24, y + (height * i) / 4 - 3, { width: 20, align: "right", lineBreak: false }); + } +} + +function drawBarChart(doc, x, y, width, height, random) { + const bars = 9; + const gap = 6; + const barWidth = (width - gap * (bars - 1)) / bars; + for (let i = 0; i < bars; i++) { + const value = 0.25 + random() * 0.72; + const barHeight = value * height; + const barX = x + i * (barWidth + gap); + const gradient = doc.linearGradient(barX, y + height - barHeight, barX, y + height); + gradient.stop(0, ACCENT).stop(1, "#9fd8e8"); + doc.rect(barX, y + height - barHeight, barWidth, barHeight).fill(gradient); + doc.font("Mono") + .fontSize(6) + .fillColor(MUTED) + .text(String(Math.round(value * 100)), barX, y + height + 4, { width: barWidth, align: "center", lineBreak: false }); + } + doc.moveTo(x, y + height) + .lineTo(x + width, y + height) + .lineWidth(0.75) + .stroke(HAIRLINE); +} + +function drawDonutChart(doc, cx, cy, outer, inner, random) { + const weights = []; + let total = 0; + for (let i = 0; i < 5; i++) { + const weight = 0.6 + random(); + weights.push(weight); + total += weight; + } + const palette = [ACCENT, ACCENT_WARM, "#6b7f2f", "#8a5bb0", "#3f4b57"]; + let angle = -Math.PI / 2; + weights.forEach((weight, index) => { + const next = angle + (weight / total) * Math.PI * 2; + const gradient = doc.radialGradient(cx, cy, inner, cx, cy, outer); + gradient.stop(0, "#ffffff").stop(0.35, palette[index]).stop(1, palette[index]); + appendArc(doc, cx, cy, outer, angle, next, true); + doc.lineTo(cx + inner * Math.cos(next), cy + inner * Math.sin(next)); + appendArc(doc, cx, cy, inner, next, angle, false); + doc.closePath().fill(gradient); + angle = next; + }); + doc.circle(cx, cy, inner).lineWidth(0.75).stroke("#ffffff"); +} + +function drawScatterPlot(doc, x, y, width, height, random) { + doc.rect(x, y, width, height).lineWidth(0.75).stroke(HAIRLINE); + doc.save().rect(x, y, width, height).clip(); + // Half the cloud is generated outside the frame on purpose, so the clip does work. + for (let i = 0; i < 220; i++) { + const px = x - width * 0.3 + random() * width * 1.6; + const py = y - height * 0.3 + random() * height * 1.6; + doc.circle(px, py, 1.4 + random() * 2.6) + .fillOpacity(0.35) + .fill(i % 3 === 0 ? ACCENT_WARM : ACCENT); + } + doc.fillOpacity(1); + doc.restore(); +} + +function drawChartPage(doc, section, pageIndex, random) { + const columnWidth = (CONTENT_WIDTH - 26) / 2; + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Radiance residual by epoch", CONTENT.left, 124, { lineBreak: false }); + drawLineChart(doc, CONTENT.left + 26, 140, CONTENT_WIDTH - 26, 150, random); + }, + { alt: "A line chart with three dashed series tracking radiance residuals." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Channel throughput", CONTENT.left, 322, { lineBreak: false }); + drawBarChart(doc, CONTENT.left, 338, columnWidth, 130, random); + }, + { alt: "A bar chart of channel throughput, bars filled with a vertical gradient." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Budget by subsystem", CONTENT.left + columnWidth + 26, 322, { lineBreak: false }); + drawDonutChart(doc, CONTENT.left + columnWidth + 26 + columnWidth / 2, 404, 64, 34, random); + }, + { alt: "A donut chart of the instrument budget, split across five subsystems." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading").fontSize(9).fillColor(INK).text("Sample dispersion", CONTENT.left, 500, { lineBreak: false }); + drawScatterPlot(doc, CONTENT.left, 516, columnWidth, 130, random); + }, + { alt: "A scatter plot of sample dispersion, clipped to its frame." } + ); + + tagged( + doc, + section, + "Figure", + () => { + doc.font("Heading") + .fontSize(9) + .fillColor(INK) + .text("Coverage band", CONTENT.left + columnWidth + 26, 500, { lineBreak: false }); + const stripe = doc.pattern([0, 0, 10, 10], 10, 10, "0 0 m 10 10 l 1.6 w S"); + doc.rect(CONTENT.left + columnWidth + 26, 516, columnWidth, 130).fill([stripe, ACCENT]); + doc.rect(CONTENT.left + columnWidth + 26, 516, columnWidth, 130) + .lineWidth(0.75) + .stroke(HAIRLINE); + }, + { alt: "A band filled with a diagonal hatch pattern, standing in for survey coverage." } + ); + + tagged(doc, section, "Caption", () => { + doc.font("Body") + .fontSize(9) + .fillColor(MUTED) + .text(`Figure ${pageIndex + 1} — ${sentence(random, 10)}`, CONTENT.left, 660, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 4), CONTENT.left, 686, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - 686, ellipsis: true }); + }); +} + +function drawTable(doc, section, top, random, { rows = 11 } = {}) { + const columns = [150, 78, 78, 88, 110]; + const rowHeight = 19; + const headers = ["Transect", "Samples", "Mean", "Residual", "Confidence"]; + + doc.rect(CONTENT.left, top, CONTENT_WIDTH, rowHeight).fill(INK); + for (let i = 1; i < rows; i += 2) + doc.rect(CONTENT.left, top + rowHeight * i, CONTENT_WIDTH, rowHeight).fill(PAPER_TINT); + + const table = doc.struct("Table"); + section.add(table); + + const headerRow = doc.struct("TR"); + table.add(headerRow); + let x = CONTENT.left; + headers.forEach((header, index) => { + const cellX = x; + tagged( + doc, + headerRow, + "TH", + () => { + doc.font("Heading") + .fontSize(8) + .fillColor("#ffffff") + .text(header.toUpperCase(), cellX + 7, top + 6, { width: columns[index] - 14, align: index === 0 ? "left" : "right", characterSpacing: 0.5, lineBreak: false }); + }, + { scope: "Column" } + ); + x += columns[index]; + }); + headerRow.end(); + + for (let row = 1; row < rows; row++) { + const y = top + rowHeight * row; + const dataRow = doc.struct("TR"); + table.add(dataRow); + const samples = 40 + Math.floor(random() * 260); + const mean = 0.4 + random() * 4.2; + const residual = (random() - 0.5) * 1.4; + const values = [`${pick(random, WORDS)} ${row}`, String(samples), mean.toFixed(3), residual.toFixed(3), `± ${(0.02 + random() * 0.18).toFixed(3)}`]; + x = CONTENT.left; + values.forEach((value, index) => { + const cellX = x; + tagged(doc, dataRow, "TD", () => { + doc.font(index === 0 ? "Body" : "Mono") + .fontSize(index === 0 ? 9.5 : 8) + .fillColor(index === 3 && residual < 0 ? ACCENT_WARM : INK) + .text(value, cellX + 7, top + rowHeight * row + 6, { width: columns[index] - 14, align: index === 0 ? "left" : "right", lineBreak: false }); + }); + x += columns[index]; + }); + dataRow.end(); + doc.moveTo(CONTENT.left, y).lineTo(CONTENT.right, y).lineWidth(0.4).stroke(HAIRLINE); + } + table.end(); + + doc.rect(CONTENT.left, top, CONTENT_WIDTH, rowHeight * rows) + .lineWidth(0.75) + .stroke(HAIRLINE); + x = CONTENT.left; + for (let i = 0; i < columns.length - 1; i++) { + x += columns[i]; + doc.moveTo(x, top) + .lineTo(x, top + rowHeight * rows) + .lineWidth(0.4) + .stroke(HAIRLINE); + } + return top + rowHeight * rows; +} + +function drawMixedPage(doc, section, pageIndex, random, images) { + const tableBottom = drawTable(doc, section, 126, random); + + const codeTop = tableBottom + 22; + doc.roundedRect(CONTENT.left, codeTop, CONTENT_WIDTH, 108, 4).fill("#111820"); + tagged(doc, section, "Code", () => { + doc.font("Mono").fontSize(8).fillColor("#d8e2ea"); + CODE_LINES.forEach((line, index) => { + doc.text(line, CONTENT.left + 12, codeTop + 10 + index * 11.5, { lineBreak: false }); + }); + }); + + const bandTop = codeTop + 126; + const bandHeight = 104; + doc.save(); + setBlendMode(doc, "Multiply"); + doc.circle(CONTENT.left + 62, bandTop + 38, 34).fill(ACCENT); + doc.circle(CONTENT.left + 100, bandTop + 38, 34).fill(ACCENT_WARM); + setBlendMode(doc, "Screen"); + doc.circle(CONTENT.left + 81, bandTop + 62, 34).fill("#6b7f2f"); + doc.restore(); + + const thumbWidth = 128; + tagged( + doc, + section, + "Figure", + () => { + doc.image(images.earthrise, CONTENT.right - thumbWidth, bandTop, { fit: [thumbWidth, bandHeight], align: "center", valign: "center" }); + }, + { alt: PHOTOS.earthrise.alt } + ); + + const asideLeft = CONTENT.left + 148; + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(paragraph(random, 3), asideLeft, bandTop, { width: CONTENT.right - thumbWidth - 16 - asideLeft, align: "left", height: bandHeight, ellipsis: true }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(9.5) + .fillColor(MUTED) + .text(`References: ${CITED.slice(0, 5).join(", ")}. Compiled for section ${CHAPTERS.indexOf(chapterOf(pageIndex)) + 1}.`, CONTENT.left, bandTop + bandHeight + 16, { width: CONTENT_WIDTH }); + }); + + tagged(doc, section, "P", () => { + doc.font("Body") + .fontSize(10) + .fillColor(INK) + .text(`${paragraph(random, 5)} ${paragraph(random, 5)}`, CONTENT.left, bandTop + bandHeight + 42, { width: CONTENT_WIDTH, align: "justify", height: CONTENT.bottom - bandTop - bandHeight - 42, ellipsis: true }); + }); +} + +function buildDocument() { + const doc = new PDFDocument({ + size: [PAGE.width, PAGE.height], + margin: MARGIN, + autoFirstPage: false, + tagged: true, + displayTitle: true, + lang: "en-US", + pdfVersion: "1.7", + info: { + Title: TITLE, + Author: "Speedometer", + Subject: SUBTITLE, + Keywords: "speedometer, pdf.js, benchmark fixture", + Creator: "Speedometer PDFViewer-PDFjs generate-pdf.mjs", + CreationDate: new Date(0), + ModDate: new Date(0), + }, + }); + + for (const [name, file] of Object.entries(FONT_FILES)) + doc.registerFont(name, fs.readFileSync(path.join(ROOT, "node_modules", file))); + + const images = { seal: doc.openImage(buildSealOverlay()) }; + for (const [key, photo] of Object.entries(PHOTOS)) + images[key] = doc.openImage(fs.readFileSync(path.join(ROOT, "assets", photo.file))); + + doc.addPage(); + doc.addNamedDestination(destinationOf(0)); + drawFrontPage(doc, images, createRandom(0x5eed0001)); + + doc.addPage(); + doc.addNamedDestination(destinationOf(1)); + drawTableOfContents(doc, images, createRandom(0x5eed0002)); + + for (let pageIndex = 2; pageIndex < PAGE_COUNT; pageIndex++) { + doc.addPage(); + doc.addNamedDestination(destinationOf(pageIndex)); + // Seeded per page so a page always renders the same content no matter how many + // pages the workload's complexity param asks for. + const random = createRandom(0x5eed0000 + pageIndex * 7919); + drawRunningHead(doc, pageIndex); + const section = doc.struct("Sect", { title: pageTitle(pageIndex) }); + doc.addStructure(section); + drawPageHeading(doc, section, pageIndex); + switch (motifOf(pageIndex)) { + case "text": + drawTextPage(doc, section, pageIndex, random); + break; + case "photo": + drawPhotoPage(doc, section, pageIndex, random, images); + break; + case "chart": + drawChartPage(doc, section, pageIndex, random); + break; + default: + drawMixedPage(doc, section, pageIndex, random, images); + } + section.end(); + } + + // The outline needs page refs, so it can only be built once every page exists. + doc.outline.addItem("Front page", { pageNumber: 0 }); + doc.outline.addItem("Contents", { pageNumber: 1 }); + CHAPTERS.forEach((chapter, index) => { + const item = doc.outline.addItem(chapter.title, { pageNumber: 2 + index * MOTIF.length, expanded: true }); + for (let offset = 0; offset < MOTIF.length; offset++) { + const pageIndex = 2 + index * MOTIF.length + offset; + if (pageIndex < PAGE_COUNT) + item.addItem(MOTIF_TITLES[motifOf(pageIndex)], { pageNumber: pageIndex }); + } + }); + + return doc; +} + +async function main() { + const doc = buildDocument(); + const chunks = []; + doc.on("data", (chunk) => chunks.push(chunk)); + const done = new Promise((resolve) => doc.on("end", resolve)); + doc.end(); + await done; + + const buffer = Buffer.concat(chunks); + fs.mkdirSync(path.dirname(OUTPUT), { recursive: true }); + fs.writeFileSync(OUTPUT, buffer); + console.log(`Wrote ${path.relative(ROOT, OUTPUT)}: ${PAGE_COUNT} pages, ${(buffer.length / 1024).toFixed(0)} KB`); +} + +await main(); diff --git a/suites-experimental/pdf-viewer/src/chrome.js b/suites-experimental/pdf-viewer/src/chrome.js new file mode 100644 index 000000000..a7c848314 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/chrome.js @@ -0,0 +1,108 @@ +// The chrome Firefox puts around an embedded pdf.js, rebuilt here rather than taken +// from pdf.js' web/ viewer, which is a whole application and would drag in the render +// queue and the scroll, scale and find debounces the workload avoids. +// +// The buttons are inert: wiring zoom would mean rebuilding canvases mid-step. + +const TOOLBAR_GROUPS = [ + ["views-manager", "separator", "page-number"], + ["zoom-out", "zoom-level", "zoom-in"], + ["search", "separator", "highlight", "free-text", "ink", "separator", "download", "print", "secondary"], +]; + +const SIDEBAR_TABS = ["thumbnails", "outline", "attachments", "layers"]; + +function button(icon, label) { + const element = document.createElement("button"); + element.className = "pdf-toolbar-button"; + element.dataset.icon = icon; + element.type = "button"; + element.title = label; + element.setAttribute("aria-label", label); + return element; +} + +function separator() { + const element = document.createElement("span"); + element.className = "pdf-toolbar-separator"; + return element; +} + +function pageNumberField(pageCount) { + const wrapper = document.createElement("span"); + wrapper.className = "pdf-page-field"; + + const input = document.createElement("input"); + input.className = "pdf-page-input"; + input.type = "text"; + input.value = "1"; + input.readOnly = true; + input.setAttribute("aria-label", "Page"); + + const total = document.createElement("span"); + total.className = "pdf-page-total"; + total.textContent = `of ${pageCount}`; + + wrapper.append(input, total); + return wrapper; +} + +function zoomLevel(scale) { + const element = document.createElement("span"); + element.className = "pdf-zoom-level"; + element.textContent = `${Math.round(scale * 100)}%`; + return element; +} + +const TOOLBAR_LABELS = { + "views-manager": "Toggle sidebar", + "zoom-out": "Zoom out", + "zoom-in": "Zoom in", + search: "Find in document", + highlight: "Highlight", + "free-text": "Add text", + ink: "Draw", + download: "Save", + print: "Print", + secondary: "Tools", +}; + +export function buildToolbar(element, { pageCount, scale }) { + const groups = TOOLBAR_GROUPS.map((items, index) => { + const group = document.createElement("div"); + group.className = index === TOOLBAR_GROUPS.length - 1 ? "pdf-toolbar-group pdf-toolbar-group-end" : "pdf-toolbar-group"; + for (const item of items) { + if (item === "separator") + group.append(separator()); + else if (item === "page-number") + group.append(pageNumberField(pageCount)); + else if (item === "zoom-level") + group.append(zoomLevel(scale)); + else + group.append(button(item, TOOLBAR_LABELS[item])); + } + return group; + }); + element.replaceChildren(...groups); +} + +/** + * Returns the panel the thumbnails go into. Only the active tab's panel is populated, + * as in pdf.js' viewer, which builds the others the first time their tab is opened. + */ +export function buildSidebar(element) { + const strip = document.createElement("div"); + strip.className = "pdf-sidebar-tabs"; + for (const tab of SIDEBAR_TABS) { + const control = button(`view-${tab}`, `Show ${tab}`); + control.classList.add("pdf-sidebar-tab"); + control.classList.toggle("pdf-sidebar-tab-active", tab === "thumbnails"); + strip.append(control); + } + + const panel = document.createElement("div"); + panel.className = "pdf-thumbnails"; + + element.replaceChildren(strip, panel); + return panel; +} diff --git a/suites-experimental/pdf-viewer/src/main.js b/suites-experimental/pdf-viewer/src/main.js new file mode 100644 index 000000000..8514d9a5c --- /dev/null +++ b/suites-experimental/pdf-viewer/src/main.js @@ -0,0 +1,65 @@ +import { getDocument, GlobalWorkerOptions, VerbosityLevel } from "pdfjs-dist/build/pdf.mjs"; +import PdfWorker from "pdfjs-dist/build/pdf.worker.mjs?worker"; +import { BenchmarkConnector } from "speedometer-utils/benchmark.mjs"; +import { buildSidebar, buildToolbar } from "./chrome.js"; +import { PdfViewer } from "./viewer.js"; +import createSuites, { appName, appVersion } from "./workload-test.mjs"; + +const DOCUMENT_URL = "document.pdf"; + +// Pages wrap into a grid, so this constant alone decides how many fit per row. 0.67 is +// the tallest a US Letter page can be in the area the toolbar and sidebar leave over. +const PAGE_SCALE = 0.67; +const THUMBNAIL_WIDTH = 130; +const DEFAULT_OUTPUT_SCALE = 2; + +/** + * Pinned rather than read from devicePixelRatio, so the workload rasterises the same + * number of pixels everywhere. The harness only forwards params it knows about, so + * `pdfPixelRatio` has to be set on the suite's own url, not the harness url. + */ +function readOutputScale() { + const raw = new URLSearchParams(window.location.search).get("pdfPixelRatio"); + if (raw === null) + return DEFAULT_OUTPUT_SCALE; + const value = Number(raw); + if (!Number.isFinite(value) || value <= 0) { + console.error(`Invalid pdfPixelRatio param: '${raw}', expected a positive number.`); + return DEFAULT_OUTPUT_SCALE; + } + return value; +} + +// Everything that is not rendering happens before the app-ready message, and so +// outside every measured window: worker boot, the fetch, getDocument and every getPage. +async function main() { + GlobalWorkerOptions.workerPort = new PdfWorker(); + + const response = await fetch(new URL(DOCUMENT_URL, document.baseURI)); + if (!response.ok) + throw new Error(`Could not load ${DOCUMENT_URL}: ${response.status} ${response.statusText}`); + + const pdfDocument = await getDocument({ + data: await response.arrayBuffer(), + // Everything the document needs is embedded, so never substitute a local face. + useSystemFonts: false, + verbosity: VerbosityLevel.ERRORS, + }).promise; + + buildToolbar(document.getElementById("toolbar"), { pageCount: pdfDocument.numPages, scale: PAGE_SCALE }); + const thumbnails = buildSidebar(document.getElementById("sidebar")); + + const viewer = new PdfViewer({ pages: document.getElementById("viewer"), thumbnails }, pdfDocument, { + scale: PAGE_SCALE, + outputScale: readOutputScale(), + thumbnailWidth: THUMBNAIL_WIDTH, + }); + await viewer.layout(); + + new BenchmarkConnector(createSuites(viewer), appName, appVersion).connect(); +} + +main().catch((error) => { + console.error(error); + document.getElementById("viewer").textContent = `Failed to load the document: ${error.message}`; +}); diff --git a/suites-experimental/pdf-viewer/src/styles.css b/suites-experimental/pdf-viewer/src/styles.css new file mode 100644 index 000000000..df239eac1 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/styles.css @@ -0,0 +1,248 @@ +html, +body { + margin: 0; + padding: 0; + background-color: #2a2a2e; + color: #f9f9fa; + font-family: system-ui, sans-serif; + font-size: 12px; +} + +.pdf-app { + display: flex; + flex-direction: column; + height: 100vh; +} + +.pdf-body { + display: flex; + flex: 1 1 auto; + min-height: 0; +} + +/* Toolbar */ + +.pdf-toolbar { + display: flex; + flex: 0 0 36px; + align-items: center; + gap: 8px; + padding: 0 6px; + background-color: #38383d; + border-bottom: 1px solid #0c0c0d; +} + +.pdf-toolbar-group { + display: flex; + align-items: center; + gap: 2px; +} + +.pdf-toolbar-group-end { + margin-left: auto; +} + +.pdf-toolbar-separator { + width: 1px; + height: 18px; + margin: 0 4px; + background-color: #5b5b60; +} + +.pdf-toolbar-button { + display: flex; + width: 26px; + height: 26px; + align-items: center; + justify-content: center; + padding: 0; + border: none; + border-radius: 3px; + background-color: transparent; + color: #f9f9fa; +} + +.pdf-toolbar-button::before { + display: block; + width: 16px; + height: 16px; + background-color: currentcolor; + content: ""; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} + +.pdf-page-field { + display: flex; + align-items: center; + gap: 6px; +} + +.pdf-page-input { + width: 30px; + padding: 3px 4px; + border: 1px solid #0c0c0d; + border-radius: 3px; + background-color: #2a2a2e; + color: #f9f9fa; + font: inherit; + text-align: end; +} + +.pdf-page-total, +.pdf-zoom-level { + min-width: 34px; + color: #cfcfd3; + text-align: center; +} + +/* Sidebar */ + +.pdf-sidebar { + display: flex; + flex: 0 0 200px; + flex-direction: column; + background-color: #313134; + border-right: 1px solid #0c0c0d; +} + +.pdf-sidebar-tabs { + display: flex; + flex: 0 0 auto; + gap: 2px; + padding: 4px 6px; + border-bottom: 1px solid #0c0c0d; +} + +.pdf-sidebar-tab-active { + background-color: #4b4b50; +} + +.pdf-thumbnails { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 10px 0; + overflow-y: auto; +} + +.pdf-thumbnail { + display: flex; + flex: 0 0 auto; + flex-direction: column; + align-items: center; + gap: 2px; +} + +.pdf-thumbnail-box { + background-color: #ffffff; + box-shadow: 0 0 0 1px #0c0c0d; +} + +.pdf-thumbnail-canvas { + display: block; +} + +.pdf-thumbnail-label { + color: #cfcfd3; + font-size: 10px; +} + +/* Pages */ + +.pdf-viewer { + display: flex; + flex: 1 1 auto; + flex-wrap: wrap; + align-content: flex-start; + justify-content: center; + gap: 10px; + padding: 10px; + overflow-y: auto; +} + +.pdf-page { + flex: 0 0 auto; + background-color: #ffffff; + box-shadow: 0 1px 4px rgb(0 0 0 / 40%); +} + +.pdf-page-canvas { + display: block; +} + +/* Icons, from pdfjs-dist's web/images (Apache-2.0). */ + +.pdf-toolbar-button[data-icon="views-manager"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewsManagerToggle.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewsManagerToggle.svg); +} + +.pdf-toolbar-button[data-icon="zoom-out"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomOut.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomOut.svg); +} + +.pdf-toolbar-button[data-icon="zoom-in"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomIn.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-zoomIn.svg); +} + +.pdf-toolbar-button[data-icon="search"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-search.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-search.svg); +} + +.pdf-toolbar-button[data-icon="highlight"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorHighlight.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorHighlight.svg); +} + +.pdf-toolbar-button[data-icon="free-text"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorFreeText.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorFreeText.svg); +} + +.pdf-toolbar-button[data-icon="ink"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorInk.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-editorInk.svg); +} + +.pdf-toolbar-button[data-icon="download"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-download.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-download.svg); +} + +.pdf-toolbar-button[data-icon="print"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-print.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-print.svg); +} + +.pdf-toolbar-button[data-icon="secondary"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-secondaryToolbarToggle.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-secondaryToolbarToggle.svg); +} + +.pdf-toolbar-button[data-icon="view-thumbnails"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewThumbnail.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewThumbnail.svg); +} + +.pdf-toolbar-button[data-icon="view-outline"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewOutline.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewOutline.svg); +} + +.pdf-toolbar-button[data-icon="view-attachments"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewAttachments.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewAttachments.svg); +} + +.pdf-toolbar-button[data-icon="view-layers"]::before { + -webkit-mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewLayers.svg); + mask-image: url(../node_modules/pdfjs-dist/web/images/toolbarButton-viewLayers.svg); +} diff --git a/suites-experimental/pdf-viewer/src/viewer.js b/suites-experimental/pdf-viewer/src/viewer.js new file mode 100644 index 000000000..f5bae93a1 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/viewer.js @@ -0,0 +1,107 @@ +/** + * A viewer on the pdf.js core API rather than pdf_viewer.mjs, whose render queue, + * scroll and scale handlers and find controller all schedule work with setTimeout - + * any of those timers firing inside a measured step would charge browser scheduling to + * the score. + */ +export class PdfViewer { + #pageContainer; + #thumbnailContainer; + #document; + #scale; + #outputScale; + #thumbnailWidth; + #pages = []; + + constructor({ pages, thumbnails }, pdfDocument, { scale, outputScale, thumbnailWidth }) { + this.#pageContainer = pages; + this.#thumbnailContainer = thumbnails; + this.#document = pdfDocument; + this.#scale = scale; + this.#outputScale = outputScale; + this.#thumbnailWidth = thumbnailWidth; + } + + get pageCount() { + return this.#pages.length; + } + + /** + * Nothing is rendered here on purpose: pdf.js caches the operator list on the + * PDFPageProxy, so rendering a page ahead of the step - including as a thumbnail - + * would hand that step a warm cache and measure almost nothing. + */ + async layout() { + const pageNumbers = Array.from({ length: this.#document.numPages }, (_, index) => index + 1); + const proxies = await Promise.all(pageNumbers.map((pageNumber) => this.#document.getPage(pageNumber))); + + const pageFragment = document.createDocumentFragment(); + const thumbnailFragment = document.createDocumentFragment(); + + this.#pages = proxies.map((proxy, index) => { + const unscaled = proxy.getViewport({ scale: 1 }); + const viewport = proxy.getViewport({ scale: this.#scale }); + const element = document.createElement("div"); + element.className = "pdf-page"; + element.style.width = `${Math.floor(viewport.width)}px`; + element.style.height = `${Math.floor(viewport.height)}px`; + pageFragment.append(element); + + const thumbnailViewport = proxy.getViewport({ scale: this.#thumbnailWidth / unscaled.width }); + const thumbnail = document.createElement("div"); + thumbnail.className = "pdf-thumbnail"; + const thumbnailBox = document.createElement("div"); + thumbnailBox.className = "pdf-thumbnail-box"; + thumbnailBox.style.width = `${Math.floor(thumbnailViewport.width)}px`; + thumbnailBox.style.height = `${Math.floor(thumbnailViewport.height)}px`; + const label = document.createElement("span"); + label.className = "pdf-thumbnail-label"; + label.textContent = String(index + 1); + thumbnail.append(thumbnailBox, label); + thumbnailFragment.append(thumbnail); + + return { proxy, viewport, element, thumbnailViewport, thumbnailBox, canvas: null }; + }); + + this.#pageContainer.replaceChildren(pageFragment); + this.#thumbnailContainer.replaceChildren(thumbnailFragment); + } + + /** + * The pages overlap rather than running one after another: awaiting each in turn + * would leave the step mostly idle, waiting on the worker to parse the next page's + * operator list. + */ + async renderPages(startIndex, count) { + const end = Math.min(startIndex + count, this.#pages.length); + const renders = []; + for (let index = startIndex; index < end; index++) + renders.push(this.#renderPage(this.#pages[index])); + await Promise.all(renders); + } + + #createCanvas(viewport, className) { + const canvas = document.createElement("canvas"); + canvas.className = className; + canvas.width = Math.floor(viewport.width * this.#outputScale); + canvas.height = Math.floor(viewport.height * this.#outputScale); + canvas.style.width = `${Math.floor(viewport.width)}px`; + canvas.style.height = `${Math.floor(viewport.height)}px`; + return canvas; + } + + async #renderPage(page) { + const { proxy, viewport, element, thumbnailViewport, thumbnailBox } = page; + const transform = this.#outputScale === 1 ? null : [this.#outputScale, 0, 0, this.#outputScale, 0, 0]; + + const canvas = this.#createCanvas(viewport, "pdf-page-canvas"); + element.replaceChildren(canvas); + page.canvas = canvas; + + const thumbnailCanvas = this.#createCanvas(thumbnailViewport, "pdf-thumbnail-canvas"); + thumbnailBox.replaceChildren(thumbnailCanvas); + + await proxy.render({ canvas, viewport, transform }).promise; + await proxy.render({ canvas: thumbnailCanvas, viewport: thumbnailViewport, transform }).promise; + } +} diff --git a/suites-experimental/pdf-viewer/src/workload-test.mjs b/suites-experimental/pdf-viewer/src/workload-test.mjs new file mode 100644 index 000000000..9bc4c7912 --- /dev/null +++ b/suites-experimental/pdf-viewer/src/workload-test.mjs @@ -0,0 +1,41 @@ +import { AsyncBenchmarkStep, AsyncBenchmarkSuite } from "speedometer-utils/benchmark.mjs"; +import { params } from "speedometer-utils/params.mjs"; + +export const appName = "pdf-viewer"; +export const appVersion = "1.0.0"; + +// Six is the smallest run that reaches one page of each of the document's four +// layouts, which start after the front page and the table of contents. +const DEFAULT_PAGES_TO_RENDER = 6; + +export function getNumberOfPagesToRender(pageCount) { + return Math.max(1, Math.min(pageCount, Math.round(DEFAULT_PAGES_TO_RENDER * params.complexity))); +} + +/** + * pdf.js chunks every display-intent render on requestAnimationFrame, capped at 15ms of + * operator-list work per chunk, so without this a 60ms page waits for four real frames + * and the suite scores differently on a 60Hz and a 120Hz display. + * + * Scoped to the step, not installed at page load: the step scheduler runs in this same + * frame for a remote suite, and a global shim would rewrite its frame scheduling too. + * It registers both of its frame callbacks before the step body runs, so this only ever + * reaches pdf.js. + */ +async function withoutAnimationFrames(render) { + const { requestAnimationFrame, cancelAnimationFrame } = window; + window.requestAnimationFrame = (callback) => window.setTimeout(() => callback(performance.now()), 0); + window.cancelAnimationFrame = (handle) => window.clearTimeout(handle); + try { + await render(); + } finally { + window.requestAnimationFrame = requestAnimationFrame; + window.cancelAnimationFrame = cancelAnimationFrame; + } +} + +export default function createSuites(viewer) { + return { + default: new AsyncBenchmarkSuite("PDFViewer-PDFjs", [new AsyncBenchmarkStep("RenderPages", () => withoutAnimationFrames(() => viewer.renderPages(0, getNumberOfPagesToRender(viewer.pageCount))))]), + }; +} diff --git a/suites-experimental/pdf-viewer/vite.config.js b/suites-experimental/pdf-viewer/vite.config.js new file mode 100644 index 000000000..b004b6b5f --- /dev/null +++ b/suites-experimental/pdf-viewer/vite.config.js @@ -0,0 +1,48 @@ +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import { generateResourcesFile } from "../../resources/shared/generate-resources.mjs"; + +const rootDir = fileURLToPath(new URL(".", import.meta.url)); + +// The suite entry declares a resources.txt, which tests/unittests/suites.mjs validates. +function resourcesManifest() { + return { + name: "pdf-viewer-resources-manifest", + closeBundle() { + generateResourcesFile(new URL("dist", import.meta.url).pathname); + }, + }; +} + +export default defineConfig({ + // The harness loads dist/ from the repo root. + base: "./", + plugins: [resourcesManifest()], + // pdf.worker.mjs is an ES module, so it has to be bundled as one. + worker: { + format: "es", + rollupOptions: { + output: { + entryFileNames: "assets/[name].js", + chunkFileNames: "assets/[name].js", + assetFileNames: "assets/[name].[ext]", + }, + }, + }, + build: { + modulePreload: { polyfill: false }, + // pdfjs-dist ships pdf.mjs unminified and leaves minification to the bundler. + minify: "esbuild", + sourcemap: true, + rollupOptions: { + input: { + index: `${rootDir}index.html`, + }, + output: { + entryFileNames: "assets/[name].js", + chunkFileNames: "assets/[name].js", + assetFileNames: "assets/[name].[ext]", + }, + }, + }, +}); From aeaeafad3070af27bf17662a5b878f03e902a08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Wed, 9 Sep 2026 20:01:38 +0200 Subject: [PATCH 4/4] Build and enable the PDFViewer-PDFjs workload --- .../pdf-viewer/dist/assets/index.css | 1 + .../pdf-viewer/dist/assets/index.js | 57 ++++++++++++++++++ .../pdf-viewer/dist/assets/index.js.map | 1 + .../pdf-viewer/dist/assets/pdf.worker.js | 54 +++++++++++++++++ .../pdf-viewer/dist/assets/pdf.worker.js.map | 1 + .../pdf-viewer/dist/document.pdf | Bin 0 -> 1280744 bytes .../pdf-viewer/dist/index.html | 19 ++++++ .../pdf-viewer/dist/resources.txt | 7 +++ suites-experimental/suites.mjs | 8 +++ 9 files changed, 148 insertions(+) create mode 100644 suites-experimental/pdf-viewer/dist/assets/index.css create mode 100644 suites-experimental/pdf-viewer/dist/assets/index.js create mode 100644 suites-experimental/pdf-viewer/dist/assets/index.js.map create mode 100644 suites-experimental/pdf-viewer/dist/assets/pdf.worker.js create mode 100644 suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map create mode 100644 suites-experimental/pdf-viewer/dist/document.pdf create mode 100644 suites-experimental/pdf-viewer/dist/index.html create mode 100644 suites-experimental/pdf-viewer/dist/resources.txt diff --git a/suites-experimental/pdf-viewer/dist/assets/index.css b/suites-experimental/pdf-viewer/dist/assets/index.css new file mode 100644 index 000000000..ae52ac639 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.css @@ -0,0 +1 @@ +html,body{margin:0;padding:0;background-color:#2a2a2e;color:#f9f9fa;font-family:system-ui,sans-serif;font-size:12px}.pdf-app{display:flex;flex-direction:column;height:100vh}.pdf-body{display:flex;flex:1 1 auto;min-height:0}.pdf-toolbar{display:flex;flex:0 0 36px;align-items:center;gap:8px;padding:0 6px;background-color:#38383d;border-bottom:1px solid #0c0c0d}.pdf-toolbar-group{display:flex;align-items:center;gap:2px}.pdf-toolbar-group-end{margin-left:auto}.pdf-toolbar-separator{width:1px;height:18px;margin:0 4px;background-color:#5b5b60}.pdf-toolbar-button{display:flex;width:26px;height:26px;align-items:center;justify-content:center;padding:0;border:none;border-radius:3px;background-color:transparent;color:#f9f9fa}.pdf-toolbar-button:before{display:block;width:16px;height:16px;background-color:currentcolor;content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.pdf-page-field{display:flex;align-items:center;gap:6px}.pdf-page-input{width:30px;padding:3px 4px;border:1px solid #0c0c0d;border-radius:3px;background-color:#2a2a2e;color:#f9f9fa;font:inherit;text-align:end}.pdf-page-total,.pdf-zoom-level{min-width:34px;color:#cfcfd3;text-align:center}.pdf-sidebar{display:flex;flex:0 0 200px;flex-direction:column;background-color:#313134;border-right:1px solid #0c0c0d}.pdf-sidebar-tabs{display:flex;flex:0 0 auto;gap:2px;padding:4px 6px;border-bottom:1px solid #0c0c0d}.pdf-sidebar-tab-active{background-color:#4b4b50}.pdf-thumbnails{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;gap:4px;padding:10px 0;overflow-y:auto}.pdf-thumbnail{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:2px}.pdf-thumbnail-box{background-color:#fff;box-shadow:0 0 0 1px #0c0c0d}.pdf-thumbnail-canvas{display:block}.pdf-thumbnail-label{color:#cfcfd3;font-size:10px}.pdf-viewer{display:flex;flex:1 1 auto;flex-wrap:wrap;align-content:flex-start;justify-content:center;gap:10px;padding:10px;overflow-y:auto}.pdf-page{flex:0 0 auto;background-color:#fff;box-shadow:0 1px 4px #0006}.pdf-page-canvas{display:block}.pdf-toolbar-button[data-icon=views-manager]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20d='M16%204V12.25C16%2012.7804%2015.7893%2013.2891%2015.4142%2013.6642C15.0391%2014.0393%2014.5304%2014.25%2014%2014.25H2C1.46957%2014.25%200.960859%2014.0393%200.585786%2013.6642C0.210714%2013.2891%200%2012.7804%200%2012.25V4C0%203.46957%200.210714%202.96086%200.585786%202.58579C0.960859%202.21071%201.46957%202%202%202H14C14.5304%202%2015.0391%202.21071%2015.4142%202.58579C15.7893%202.96086%2016%203.46957%2016%204ZM1.25%203.85V12.4L1.85%2013H6.75V3.25H1.85L1.25%203.85ZM14.15%2013H8V3.25H14.15L14.75%203.85V12.4L14.15%2013ZM5.35355%2010.1464C5.44732%2010.2402%205.5%2010.3674%205.5%2010.5C5.5%2010.6326%205.44732%2010.7598%205.35355%2010.8536C5.25979%2010.9473%205.13261%2011%205%2011H3C2.86739%2011%202.74021%2010.9473%202.64645%2010.8536C2.55268%2010.7598%202.5%2010.6326%202.5%2010.5C2.5%2010.3674%202.55268%2010.2402%202.64645%2010.1464C2.74021%2010.0527%202.86739%2010%203%2010H5C5.13261%2010%205.25979%2010.0527%205.35355%2010.1464ZM5.5%208C5.5%207.86739%205.44732%207.74021%205.35355%207.64645C5.25979%207.55268%205.13261%207.5%205%207.5H3C2.86739%207.5%202.74021%207.55268%202.64645%207.64645C2.55268%207.74021%202.5%207.86739%202.5%208C2.5%208.13261%202.55268%208.25979%202.64645%208.35355C2.74021%208.44732%202.86739%208.5%203%208.5H5C5.13261%208.5%205.25979%208.44732%205.35355%208.35355C5.44732%208.25979%205.5%208.13261%205.5%208ZM5.35355%205.14645C5.44732%205.24021%205.5%205.36739%205.5%205.5C5.5%205.63261%205.44732%205.75979%205.35355%205.85355C5.25979%205.94732%205.13261%206%205%206H3C2.86739%206%202.74021%205.94732%202.64645%205.85355C2.55268%205.75979%202.5%205.63261%202.5%205.5C2.5%205.36739%202.55268%205.24021%202.64645%205.14645C2.74021%205.05268%202.86739%205%203%205H5C5.13261%205%205.25979%205.05268%205.35355%205.14645Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20d='M16%204V12.25C16%2012.7804%2015.7893%2013.2891%2015.4142%2013.6642C15.0391%2014.0393%2014.5304%2014.25%2014%2014.25H2C1.46957%2014.25%200.960859%2014.0393%200.585786%2013.6642C0.210714%2013.2891%200%2012.7804%200%2012.25V4C0%203.46957%200.210714%202.96086%200.585786%202.58579C0.960859%202.21071%201.46957%202%202%202H14C14.5304%202%2015.0391%202.21071%2015.4142%202.58579C15.7893%202.96086%2016%203.46957%2016%204ZM1.25%203.85V12.4L1.85%2013H6.75V3.25H1.85L1.25%203.85ZM14.15%2013H8V3.25H14.15L14.75%203.85V12.4L14.15%2013ZM5.35355%2010.1464C5.44732%2010.2402%205.5%2010.3674%205.5%2010.5C5.5%2010.6326%205.44732%2010.7598%205.35355%2010.8536C5.25979%2010.9473%205.13261%2011%205%2011H3C2.86739%2011%202.74021%2010.9473%202.64645%2010.8536C2.55268%2010.7598%202.5%2010.6326%202.5%2010.5C2.5%2010.3674%202.55268%2010.2402%202.64645%2010.1464C2.74021%2010.0527%202.86739%2010%203%2010H5C5.13261%2010%205.25979%2010.0527%205.35355%2010.1464ZM5.5%208C5.5%207.86739%205.44732%207.74021%205.35355%207.64645C5.25979%207.55268%205.13261%207.5%205%207.5H3C2.86739%207.5%202.74021%207.55268%202.64645%207.64645C2.55268%207.74021%202.5%207.86739%202.5%208C2.5%208.13261%202.55268%208.25979%202.64645%208.35355C2.74021%208.44732%202.86739%208.5%203%208.5H5C5.13261%208.5%205.25979%208.44732%205.35355%208.35355C5.44732%208.25979%205.5%208.13261%205.5%208ZM5.35355%205.14645C5.44732%205.24021%205.5%205.36739%205.5%205.5C5.5%205.63261%205.44732%205.75979%205.35355%205.85355C5.25979%205.94732%205.13261%206%205%206H3C2.86739%206%202.74021%205.94732%202.64645%205.85355C2.55268%205.75979%202.5%205.63261%202.5%205.5C2.5%205.36739%202.55268%205.24021%202.64645%205.14645C2.74021%205.05268%202.86739%205%203%205H5C5.13261%205%205.25979%205.05268%205.35355%205.14645Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=zoom-out]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.375%209.25C13.5408%209.25%2013.6997%209.18415%2013.8169%209.06694C13.9342%208.94973%2014%208.79076%2014%208.625C14%208.45924%2013.9342%208.30027%2013.8169%208.18306C13.6997%208.06585%2013.5408%208%2013.375%208H2.625C2.45924%208%202.30027%208.06585%202.18306%208.18306C2.06585%208.30027%202%208.45924%202%208.625C2%208.79076%202.06585%208.94973%202.18306%209.06694C2.30027%209.18415%202.45924%209.25%202.625%209.25H13.375Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.375%209.25C13.5408%209.25%2013.6997%209.18415%2013.8169%209.06694C13.9342%208.94973%2014%208.79076%2014%208.625C14%208.45924%2013.9342%208.30027%2013.8169%208.18306C13.6997%208.06585%2013.5408%208%2013.375%208H2.625C2.45924%208%202.30027%208.06585%202.18306%208.18306C2.06585%208.30027%202%208.45924%202%208.625C2%208.79076%202.06585%208.94973%202.18306%209.06694C2.30027%209.18415%202.45924%209.25%202.625%209.25H13.375Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=zoom-in]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.00488%209.75V14C7.00488%2014.1658%207.07073%2014.3247%207.18794%2014.4419C7.30515%2014.5592%207.46412%2014.625%207.62988%2014.625C7.79564%2014.625%207.95461%2014.5592%208.07183%2014.4419C8.18904%2014.3247%208.25488%2014.1658%208.25488%2014V9.75L8.75488%209.25H13.0049C13.1706%209.25%2013.3296%209.18415%2013.4468%209.06694C13.564%208.94973%2013.6299%208.79076%2013.6299%208.625C13.6299%208.45924%2013.564%208.30027%2013.4468%208.18306C13.3296%208.06585%2013.1706%208%2013.0049%208H8.75488L8.25488%207.5V3.25C8.25488%203.08424%208.18904%202.92527%208.07183%202.80806C7.95461%202.69085%207.79564%202.625%207.62988%202.625C7.46412%202.625%207.30515%202.69085%207.18794%202.80806C7.07073%202.92527%207.00488%203.08424%207.00488%203.25V7.5L6.50488%208H2.25488C2.08912%208%201.93015%208.06585%201.81294%208.18306C1.69573%208.30027%201.62988%208.45924%201.62988%208.625C1.62988%208.79076%201.69573%208.94973%201.81294%209.06694C1.93015%209.18415%202.08912%209.25%202.25488%209.25H6.39188L7.00488%209.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.00488%209.75V14C7.00488%2014.1658%207.07073%2014.3247%207.18794%2014.4419C7.30515%2014.5592%207.46412%2014.625%207.62988%2014.625C7.79564%2014.625%207.95461%2014.5592%208.07183%2014.4419C8.18904%2014.3247%208.25488%2014.1658%208.25488%2014V9.75L8.75488%209.25H13.0049C13.1706%209.25%2013.3296%209.18415%2013.4468%209.06694C13.564%208.94973%2013.6299%208.79076%2013.6299%208.625C13.6299%208.45924%2013.564%208.30027%2013.4468%208.18306C13.3296%208.06585%2013.1706%208%2013.0049%208H8.75488L8.25488%207.5V3.25C8.25488%203.08424%208.18904%202.92527%208.07183%202.80806C7.95461%202.69085%207.79564%202.625%207.62988%202.625C7.46412%202.625%207.30515%202.69085%207.18794%202.80806C7.07073%202.92527%207.00488%203.08424%207.00488%203.25V7.5L6.50488%208H2.25488C2.08912%208%201.93015%208.06585%201.81294%208.18306C1.69573%208.30027%201.62988%208.45924%201.62988%208.625C1.62988%208.79076%201.69573%208.94973%201.81294%209.06694C1.93015%209.18415%202.08912%209.25%202.25488%209.25H6.39188L7.00488%209.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=search]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.089%2010.973L13.934%2014.817C13.9918%2014.8754%2014.0605%2014.9218%2014.1364%2014.9534C14.2122%2014.9851%2014.2936%2015.0013%2014.3757%2015.0012C14.4579%2015.0011%2014.5392%2014.9847%2014.6149%2014.9529C14.6907%2014.9211%2014.7594%2014.8746%2014.817%2014.816C14.875%2014.7579%2014.921%2014.6889%2014.9523%2014.613C14.9836%2014.5372%2014.9997%2014.4559%2014.9996%2014.3738C14.9995%2014.2917%2014.9833%2014.2104%2014.9518%2014.1346C14.9203%2014.0588%2014.8741%2013.99%2014.816%2013.932L10.983%2010.1L10.989%209.67299C11.489%208.96674%2011.8152%208.15249%2011.9413%207.29642C12.0674%206.44034%2011.9897%205.5666%2011.7145%204.74621C11.4394%203.92582%2010.9745%203.18192%2010.3578%202.57498C9.74104%201.96804%208.98979%201.51519%208.16509%201.25322C7.34039%200.991255%206.46551%200.927572%205.61157%201.06735C4.75763%201.20712%203.94871%201.54641%203.25057%202.05764C2.55243%202.56887%201.98476%203.23761%201.59371%204.0095C1.20265%204.7814%200.999236%205.63468%201%206.49999C1%207.95868%201.57946%209.35763%202.61091%2010.3891C3.64236%2011.4205%205.04131%2012%206.5%2012C7.689%2012%208.788%2011.62%209.687%2010.978L10.089%2010.973V10.973ZM6.5%2010.75C4.157%2010.75%202.25%208.84299%202.25%206.49999C2.25%204.15699%204.157%202.24999%206.5%202.24999C8.843%202.24999%2010.75%204.15699%2010.75%206.49999C10.75%208.84299%208.843%2010.75%206.5%2010.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.089%2010.973L13.934%2014.817C13.9918%2014.8754%2014.0605%2014.9218%2014.1364%2014.9534C14.2122%2014.9851%2014.2936%2015.0013%2014.3757%2015.0012C14.4579%2015.0011%2014.5392%2014.9847%2014.6149%2014.9529C14.6907%2014.9211%2014.7594%2014.8746%2014.817%2014.816C14.875%2014.7579%2014.921%2014.6889%2014.9523%2014.613C14.9836%2014.5372%2014.9997%2014.4559%2014.9996%2014.3738C14.9995%2014.2917%2014.9833%2014.2104%2014.9518%2014.1346C14.9203%2014.0588%2014.8741%2013.99%2014.816%2013.932L10.983%2010.1L10.989%209.67299C11.489%208.96674%2011.8152%208.15249%2011.9413%207.29642C12.0674%206.44034%2011.9897%205.5666%2011.7145%204.74621C11.4394%203.92582%2010.9745%203.18192%2010.3578%202.57498C9.74104%201.96804%208.98979%201.51519%208.16509%201.25322C7.34039%200.991255%206.46551%200.927572%205.61157%201.06735C4.75763%201.20712%203.94871%201.54641%203.25057%202.05764C2.55243%202.56887%201.98476%203.23761%201.59371%204.0095C1.20265%204.7814%200.999236%205.63468%201%206.49999C1%207.95868%201.57946%209.35763%202.61091%2010.3891C3.64236%2011.4205%205.04131%2012%206.5%2012C7.689%2012%208.788%2011.62%209.687%2010.978L10.089%2010.973V10.973ZM6.5%2010.75C4.157%2010.75%202.25%208.84299%202.25%206.49999C2.25%204.15699%204.157%202.24999%206.5%202.24999C8.843%202.24999%2010.75%204.15699%2010.75%206.49999C10.75%208.84299%208.843%2010.75%206.5%2010.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=highlight]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=free-text]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3%202.5C2.72421%202.5%202.5%202.72421%202.5%203V4.75H1V3C1%201.89579%201.89579%201%203%201H13C14.1042%201%2015%201.89579%2015%203V4.75H13.5V3C13.5%202.72421%2013.2758%202.5%2013%202.5H3Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%2015H5V13.5H11V15Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.75%202.25V14.25H7.25V2.25H8.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3%202.5C2.72421%202.5%202.5%202.72421%202.5%203V4.75H1V3C1%201.89579%201.89579%201%203%201H13C14.1042%201%2015%201.89579%2015%203V4.75H13.5V3C13.5%202.72421%2013.2758%202.5%2013%202.5H3Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%2015H5V13.5H11V15Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.75%202.25V14.25H7.25V2.25H8.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=ink]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.49913%2012.6251C2.61913%2012.6251%202.73913%2012.6051%202.85713%2012.5661L6.29013%2011.4201L13.2891%204.4221C14.0191%203.6911%2014.0191%202.5011%2013.2891%201.7701L12.2291%200.710098C11.4971%20-0.0199023%2010.3091%20-0.0199023%209.57713%200.710098L2.57813%207.7091L1.43313%2011.1451C1.29813%2011.5511%201.40213%2011.9931%201.70513%2012.2951C1.92113%2012.5101%202.20613%2012.6251%202.49913%2012.6251ZM10.4611%201.5951C10.7031%201.3511%2011.1021%201.3511%2011.3441%201.5951L12.4051%202.6561C12.6491%202.8991%2012.6491%203.2961%2012.4051%203.5391L11.3401%204.6051L9.39513%202.6601L10.4611%201.5951ZM3.67013%208.3851L8.51013%203.5451L10.4541%205.4891L5.61413%2010.3301L2.69713%2011.3031L3.67013%208.3851Z'%20fill='black'/%3e%3cpath%20d='M14.8169%2013.314L13.0229%2013.862C12.3309%2014.073%2011.5909%2014.111%2010.8859%2013.968L8.80391%2013.551C7.58491%2013.308%206.29791%2013.48%205.18491%2014.036C3.95291%2014.652%202.46691%2014.412%201.49191%2013.436L1.44091%2013.385L0.60791%2014.321C1.46291%2015.175%202.59991%2015.625%203.75291%2015.625C4.42891%2015.625%205.10991%2015.471%205.74391%2015.153C6.60891%2014.721%207.60891%2014.586%208.55891%2014.777L10.6409%2015.194C11.5509%2015.376%2012.5009%2015.327%2013.3879%2015.056L15.1819%2014.508L14.8169%2013.314Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.49913%2012.6251C2.61913%2012.6251%202.73913%2012.6051%202.85713%2012.5661L6.29013%2011.4201L13.2891%204.4221C14.0191%203.6911%2014.0191%202.5011%2013.2891%201.7701L12.2291%200.710098C11.4971%20-0.0199023%2010.3091%20-0.0199023%209.57713%200.710098L2.57813%207.7091L1.43313%2011.1451C1.29813%2011.5511%201.40213%2011.9931%201.70513%2012.2951C1.92113%2012.5101%202.20613%2012.6251%202.49913%2012.6251ZM10.4611%201.5951C10.7031%201.3511%2011.1021%201.3511%2011.3441%201.5951L12.4051%202.6561C12.6491%202.8991%2012.6491%203.2961%2012.4051%203.5391L11.3401%204.6051L9.39513%202.6601L10.4611%201.5951ZM3.67013%208.3851L8.51013%203.5451L10.4541%205.4891L5.61413%2010.3301L2.69713%2011.3031L3.67013%208.3851Z'%20fill='black'/%3e%3cpath%20d='M14.8169%2013.314L13.0229%2013.862C12.3309%2014.073%2011.5909%2014.111%2010.8859%2013.968L8.80391%2013.551C7.58491%2013.308%206.29791%2013.48%205.18491%2014.036C3.95291%2014.652%202.46691%2014.412%201.49191%2013.436L1.44091%2013.385L0.60791%2014.321C1.46291%2015.175%202.59991%2015.625%203.75291%2015.625C4.42891%2015.625%205.10991%2015.471%205.74391%2015.153C6.60891%2014.721%207.60891%2014.586%208.55891%2014.777L10.6409%2015.194C11.5509%2015.376%2012.5009%2015.327%2013.3879%2015.056L15.1819%2014.508L14.8169%2013.314Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=download]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.79407%207.31811H7.86307C7.41807%207.31811%207.19407%207.85711%207.50907%208.17211L10.1911%2010.8541C10.3861%2011.0491%2010.7031%2011.0491%2010.8981%2010.8541L13.5801%208.17211C13.8951%207.85711%2013.6721%207.31811%2013.2261%207.31811H11.2941V4.38211H11.2961V3.13211H11.2941V2.30811H9.79407V3.13211H9.79107V4.38211H9.79507V7.31811H9.79407Z'%20fill='black'/%3e%3cpath%20d='M14%203.13208H12.796V4.38208H14C14.345%204.38208%2014.625%204.66208%2014.625%205.00708V13.0071C14.625%2013.3521%2014.345%2013.6321%2014%2013.6321H2C1.655%2013.6321%201.375%2013.3521%201.375%2013.0071V3.00708C1.375%202.66208%201.655%202.38208%202%202.38208H5.643C5.82%202.38208%205.989%202.45808%206.108%202.58908L7.536%204.17508C7.654%204.30708%207.823%204.38208%208%204.38208H8.291V3.13208H8.278L7.036%201.75208C6.681%201.35808%206.173%201.13208%205.642%201.13208H2C0.966%201.13208%200.125%201.97308%200.125%203.00708V13.0071C0.125%2014.0411%200.966%2014.8821%202%2014.8821H14C15.034%2014.8821%2015.875%2014.0411%2015.875%2013.0071V5.00708C15.875%203.97308%2015.034%203.13208%2014%203.13208Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.79407%207.31811H7.86307C7.41807%207.31811%207.19407%207.85711%207.50907%208.17211L10.1911%2010.8541C10.3861%2011.0491%2010.7031%2011.0491%2010.8981%2010.8541L13.5801%208.17211C13.8951%207.85711%2013.6721%207.31811%2013.2261%207.31811H11.2941V4.38211H11.2961V3.13211H11.2941V2.30811H9.79407V3.13211H9.79107V4.38211H9.79507V7.31811H9.79407Z'%20fill='black'/%3e%3cpath%20d='M14%203.13208H12.796V4.38208H14C14.345%204.38208%2014.625%204.66208%2014.625%205.00708V13.0071C14.625%2013.3521%2014.345%2013.6321%2014%2013.6321H2C1.655%2013.6321%201.375%2013.3521%201.375%2013.0071V3.00708C1.375%202.66208%201.655%202.38208%202%202.38208H5.643C5.82%202.38208%205.989%202.45808%206.108%202.58908L7.536%204.17508C7.654%204.30708%207.823%204.38208%208%204.38208H8.291V3.13208H8.278L7.036%201.75208C6.681%201.35808%206.173%201.13208%205.642%201.13208H2C0.966%201.13208%200.125%201.97308%200.125%203.00708V13.0071C0.125%2014.0411%200.966%2014.8821%202%2014.8821H14C15.034%2014.8821%2015.875%2014.0411%2015.875%2013.0071V5.00708C15.875%203.97308%2015.034%203.13208%2014%203.13208Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=print]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%204H12V2C12%201.46957%2011.7893%200.960859%2011.4142%200.585786C11.0391%200.210714%2010.5304%200%2010%200L6%200C5.46957%200%204.96086%200.210714%204.58579%200.585786C4.21071%200.960859%204%201.46957%204%202V4H3C2.46957%204%201.96086%204.21071%201.58579%204.58579C1.21071%204.96086%201%205.46957%201%206V11C1%2011.5304%201.21071%2012.0391%201.58579%2012.4142C1.96086%2012.7893%202.46957%2013%203%2013H4V14C4%2014.5304%204.21071%2015.0391%204.58579%2015.4142C4.96086%2015.7893%205.46957%2016%206%2016H10C10.5304%2016%2011.0391%2015.7893%2011.4142%2015.4142C11.7893%2015.0391%2012%2014.5304%2012%2014V13H13C13.5304%2013%2014.0391%2012.7893%2014.4142%2012.4142C14.7893%2012.0391%2015%2011.5304%2015%2011V6C15%205.46957%2014.7893%204.96086%2014.4142%204.58579C14.0391%204.21071%2013.5304%204%2013%204V4ZM10.75%2014.15L10.15%2014.75H5.85L5.25%2014.15V10H10.75V14.15ZM10.75%204H5.25V1.85L5.85%201.25H10.15L10.75%201.85V4V4ZM13%207.6L12.6%208H11.4L11%207.6V6.4L11.4%206H12.6L13%206.4V7.6Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%204H12V2C12%201.46957%2011.7893%200.960859%2011.4142%200.585786C11.0391%200.210714%2010.5304%200%2010%200L6%200C5.46957%200%204.96086%200.210714%204.58579%200.585786C4.21071%200.960859%204%201.46957%204%202V4H3C2.46957%204%201.96086%204.21071%201.58579%204.58579C1.21071%204.96086%201%205.46957%201%206V11C1%2011.5304%201.21071%2012.0391%201.58579%2012.4142C1.96086%2012.7893%202.46957%2013%203%2013H4V14C4%2014.5304%204.21071%2015.0391%204.58579%2015.4142C4.96086%2015.7893%205.46957%2016%206%2016H10C10.5304%2016%2011.0391%2015.7893%2011.4142%2015.4142C11.7893%2015.0391%2012%2014.5304%2012%2014V13H13C13.5304%2013%2014.0391%2012.7893%2014.4142%2012.4142C14.7893%2012.0391%2015%2011.5304%2015%2011V6C15%205.46957%2014.7893%204.96086%2014.4142%204.58579C14.0391%204.21071%2013.5304%204%2013%204V4ZM10.75%2014.15L10.15%2014.75H5.85L5.25%2014.15V10H10.75V14.15ZM10.75%204H5.25V1.85L5.85%201.25H10.15L10.75%201.85V4V4ZM13%207.6L12.6%208H11.4L11%207.6V6.4L11.4%206H12.6L13%206.4V7.6Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=secondary]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.53406%2013.818L7.99906%208.35203L8.00006%207.64703L2.53606%202.18203C2.41769%202.06965%202.26012%202.00795%202.09692%202.01006C1.93372%202.01218%201.7778%202.07795%201.66239%202.19336C1.54698%202.30877%201.48121%202.46469%201.47909%202.62789C1.47697%202.79109%201.53868%202.94867%201.65106%203.06703L6.58506%207.99803L1.65006%2012.932C1.53754%2013.0503%201.47565%2013.2078%201.47758%2013.371C1.47951%2013.5342%201.54511%2013.6902%201.66039%2013.8057C1.77567%2013.9213%201.93152%2013.9872%202.09472%2013.9895C2.25792%2013.9918%202.41557%2013.9303%202.53406%2013.818ZM8.53406%2013.818L13.9991%208.35203L14.0001%207.64703L8.53606%202.18203C8.4177%202.06965%208.26012%202.00795%208.09692%202.01006C7.93372%202.01218%207.7778%202.07795%207.66239%202.19336C7.54698%202.30877%207.48121%202.46469%207.47909%202.62789C7.47697%202.79109%207.53868%202.94867%207.65106%203.06703L12.5851%207.99803L7.65006%2012.932C7.53754%2013.0503%207.47565%2013.2078%207.47758%2013.371C7.47951%2013.5342%207.54511%2013.6902%207.66039%2013.8057C7.77567%2013.9213%207.93152%2013.9872%208.09472%2013.9895C8.25792%2013.9918%208.41557%2013.9303%208.53406%2013.818Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.53406%2013.818L7.99906%208.35203L8.00006%207.64703L2.53606%202.18203C2.41769%202.06965%202.26012%202.00795%202.09692%202.01006C1.93372%202.01218%201.7778%202.07795%201.66239%202.19336C1.54698%202.30877%201.48121%202.46469%201.47909%202.62789C1.47697%202.79109%201.53868%202.94867%201.65106%203.06703L6.58506%207.99803L1.65006%2012.932C1.53754%2013.0503%201.47565%2013.2078%201.47758%2013.371C1.47951%2013.5342%201.54511%2013.6902%201.66039%2013.8057C1.77567%2013.9213%201.93152%2013.9872%202.09472%2013.9895C2.25792%2013.9918%202.41557%2013.9303%202.53406%2013.818ZM8.53406%2013.818L13.9991%208.35203L14.0001%207.64703L8.53606%202.18203C8.4177%202.06965%208.26012%202.00795%208.09692%202.01006C7.93372%202.01218%207.7778%202.07795%207.66239%202.19336C7.54698%202.30877%207.48121%202.46469%207.47909%202.62789C7.47697%202.79109%207.53868%202.94867%207.65106%203.06703L12.5851%207.99803L7.65006%2012.932C7.53754%2013.0503%207.47565%2013.2078%207.47758%2013.371C7.47951%2013.5342%207.54511%2013.6902%207.66039%2013.8057C7.77567%2013.9213%207.93152%2013.9872%208.09472%2013.9895C8.25792%2013.9918%208.41557%2013.9303%208.53406%2013.818Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-thumbnails]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%202C3.5%201.72421%203.72421%201.5%204%201.5H5.25C5.52579%201.5%205.75%201.72421%205.75%202V5.25C5.75%205.52579%205.52579%205.75%205.25%205.75H4C3.72421%205.75%203.5%205.52579%203.5%205.25V2ZM4%200C2.89579%200%202%200.895786%202%202V5.25C2%206.35421%202.89579%207.25%204%207.25H5.25C6.35421%207.25%207.25%206.35421%207.25%205.25V2C7.25%200.895786%206.35421%200%205.25%200H4ZM3.5%2010.75C3.5%2010.4742%203.72421%2010.25%204%2010.25H5.25C5.52579%2010.25%205.75%2010.4742%205.75%2010.75V14C5.75%2014.2758%205.52579%2014.5%205.25%2014.5H4C3.72421%2014.5%203.5%2014.2758%203.5%2014V10.75ZM4%208.75C2.89579%208.75%202%209.64579%202%2010.75V14C2%2015.1042%202.89579%2016%204%2016H5.25C6.35421%2016%207.25%2015.1042%207.25%2014V10.75C7.25%209.64579%206.35421%208.75%205.25%208.75H4ZM10.75%201.5C10.4742%201.5%2010.25%201.72421%2010.25%202V5.25C10.25%205.52579%2010.4742%205.75%2010.75%205.75H12C12.2758%205.75%2012.5%205.52579%2012.5%205.25V2C12.5%201.72421%2012.2758%201.5%2012%201.5H10.75ZM8.75%202C8.75%200.895786%209.64579%200%2010.75%200H12C13.1042%200%2014%200.895786%2014%202V5.25C14%206.35421%2013.1042%207.25%2012%207.25H10.75C9.64579%207.25%208.75%206.35421%208.75%205.25V2ZM10.25%2010.75C10.25%2010.4742%2010.4742%2010.25%2010.75%2010.25H12C12.2758%2010.25%2012.5%2010.4742%2012.5%2010.75V14C12.5%2014.2758%2012.2758%2014.5%2012%2014.5H10.75C10.4742%2014.5%2010.25%2014.2758%2010.25%2014V10.75ZM10.75%208.75C9.64579%208.75%208.75%209.64579%208.75%2010.75V14C8.75%2015.1042%209.64579%2016%2010.75%2016H12C13.1042%2016%2014%2015.1042%2014%2014V10.75C14%209.64579%2013.1042%208.75%2012%208.75H10.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%202C3.5%201.72421%203.72421%201.5%204%201.5H5.25C5.52579%201.5%205.75%201.72421%205.75%202V5.25C5.75%205.52579%205.52579%205.75%205.25%205.75H4C3.72421%205.75%203.5%205.52579%203.5%205.25V2ZM4%200C2.89579%200%202%200.895786%202%202V5.25C2%206.35421%202.89579%207.25%204%207.25H5.25C6.35421%207.25%207.25%206.35421%207.25%205.25V2C7.25%200.895786%206.35421%200%205.25%200H4ZM3.5%2010.75C3.5%2010.4742%203.72421%2010.25%204%2010.25H5.25C5.52579%2010.25%205.75%2010.4742%205.75%2010.75V14C5.75%2014.2758%205.52579%2014.5%205.25%2014.5H4C3.72421%2014.5%203.5%2014.2758%203.5%2014V10.75ZM4%208.75C2.89579%208.75%202%209.64579%202%2010.75V14C2%2015.1042%202.89579%2016%204%2016H5.25C6.35421%2016%207.25%2015.1042%207.25%2014V10.75C7.25%209.64579%206.35421%208.75%205.25%208.75H4ZM10.75%201.5C10.4742%201.5%2010.25%201.72421%2010.25%202V5.25C10.25%205.52579%2010.4742%205.75%2010.75%205.75H12C12.2758%205.75%2012.5%205.52579%2012.5%205.25V2C12.5%201.72421%2012.2758%201.5%2012%201.5H10.75ZM8.75%202C8.75%200.895786%209.64579%200%2010.75%200H12C13.1042%200%2014%200.895786%2014%202V5.25C14%206.35421%2013.1042%207.25%2012%207.25H10.75C9.64579%207.25%208.75%206.35421%208.75%205.25V2ZM10.25%2010.75C10.25%2010.4742%2010.4742%2010.25%2010.75%2010.25H12C12.2758%2010.25%2012.5%2010.4742%2012.5%2010.75V14C12.5%2014.2758%2012.2758%2014.5%2012%2014.5H10.75C10.4742%2014.5%2010.25%2014.2758%2010.25%2014V10.75ZM10.75%208.75C9.64579%208.75%208.75%209.64579%208.75%2010.75V14C8.75%2015.1042%209.64579%2016%2010.75%2016H12C13.1042%2016%2014%2015.1042%2014%2014V10.75C14%209.64579%2013.1042%208.75%2012%208.75H10.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-outline]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.25H15V2.75H3V1.25ZM15%205.25H3V6.75H15V5.25ZM15%2013.25H3V14.75H15V13.25ZM15%209.25H6V10.75H15V9.25ZM0%205.25H1.5V6.75H0V5.25ZM1.5%2013.25H0V14.75H1.5V13.25ZM0%201.25H1.5V2.75H0V1.25ZM4.5%209.25H3V10.75H4.5V9.25Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%201.25H15V2.75H3V1.25ZM15%205.25H3V6.75H15V5.25ZM15%2013.25H3V14.75H15V13.25ZM15%209.25H6V10.75H15V9.25ZM0%205.25H1.5V6.75H0V5.25ZM1.5%2013.25H0V14.75H1.5V13.25ZM0%201.25H1.5V2.75H0V1.25ZM4.5%209.25H3V10.75H4.5V9.25Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-attachments]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%203.75C3.5%201.67879%205.17879%200%207.25%200C9.32121%200%2011%201.67879%2011%203.75V10.25C11%2011.4922%209.99221%2012.5%208.75%2012.5C7.50779%2012.5%206.5%2011.4922%206.5%2010.25V3.5H8V10.25C8%2010.6638%208.33621%2011%208.75%2011C9.16379%2011%209.5%2010.6638%209.5%2010.25V3.75C9.5%202.50721%208.49279%201.5%207.25%201.5C6.00721%201.5%205%202.50721%205%203.75V10.75C5%2012.8208%206.67921%2014.5%208.75%2014.5C10.8208%2014.5%2012.5%2012.8208%2012.5%2010.75V3.5H14V10.75C14%2013.6492%2011.6492%2016%208.75%2016C5.85079%2016%203.5%2013.6492%203.5%2010.75V3.75Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.5%203.75C3.5%201.67879%205.17879%200%207.25%200C9.32121%200%2011%201.67879%2011%203.75V10.25C11%2011.4922%209.99221%2012.5%208.75%2012.5C7.50779%2012.5%206.5%2011.4922%206.5%2010.25V3.5H8V10.25C8%2010.6638%208.33621%2011%208.75%2011C9.16379%2011%209.5%2010.6638%209.5%2010.25V3.75C9.5%202.50721%208.49279%201.5%207.25%201.5C6.00721%201.5%205%202.50721%205%203.75V10.75C5%2012.8208%206.67921%2014.5%208.75%2014.5C10.8208%2014.5%2012.5%2012.8208%2012.5%2010.75V3.5H14V10.75C14%2013.6492%2011.6492%2016%208.75%2016C5.85079%2016%203.5%2013.6492%203.5%2010.75V3.75Z'%20fill='black'/%3e%3c/svg%3e")}.pdf-toolbar-button[data-icon=view-layers]:before{-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.36645%202.34562C8.13878%202.21813%207.86122%202.21813%207.63355%202.34562L1.38355%205.84562C1.14669%205.97826%201%206.22853%201%206.5C1%206.77147%201.14669%207.02174%201.38355%207.15438L7.63355%2010.6544C7.86122%2010.7819%208.13878%2010.7819%208.36645%2010.6544L14.6165%207.15438C14.8533%207.02174%2015%206.77147%2015%206.5C15%206.22853%2014.8533%205.97826%2014.6165%205.84562L8.36645%202.34562ZM8%209.14041L3.28499%206.5L8%203.85959L12.715%206.5L8%209.14041ZM1.63647%209.0766L7.99999%2012.6404L14.3255%209.09761L15.0585%2010.4063L8.36649%2014.1543C8.13881%2014.2818%207.86122%2014.2819%207.63353%2014.1543L0.903534%2010.3853L1.63647%209.0766Z'%20fill='black'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.36645%202.34562C8.13878%202.21813%207.86122%202.21813%207.63355%202.34562L1.38355%205.84562C1.14669%205.97826%201%206.22853%201%206.5C1%206.77147%201.14669%207.02174%201.38355%207.15438L7.63355%2010.6544C7.86122%2010.7819%208.13878%2010.7819%208.36645%2010.6544L14.6165%207.15438C14.8533%207.02174%2015%206.77147%2015%206.5C15%206.22853%2014.8533%205.97826%2014.6165%205.84562L8.36645%202.34562ZM8%209.14041L3.28499%206.5L8%203.85959L12.715%206.5L8%209.14041ZM1.63647%209.0766L7.99999%2012.6404L14.3255%209.09761L15.0585%2010.4063L8.36649%2014.1543C8.13881%2014.2818%207.86122%2014.2819%207.63353%2014.1543L0.903534%2010.3853L1.63647%209.0766Z'%20fill='black'/%3e%3c/svg%3e")} diff --git a/suites-experimental/pdf-viewer/dist/assets/index.js b/suites-experimental/pdf-viewer/dist/assets/index.js new file mode 100644 index 000000000..8b37439b2 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.js @@ -0,0 +1,57 @@ +var ui=d=>{throw TypeError(d)};var bs=(d,t,e)=>t.has(d)||ui("Cannot "+e);var K=(d,t,e)=>(bs(d,t,"read from private field"),e?e.call(d):t.get(d)),kt=(d,t,e)=>t.has(d)?ui("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(d):t.set(d,e),dt=(d,t,e,s)=>(bs(d,t,"write to private field"),s?s.call(d,e):t.set(d,e),e),Pt=(d,t,e)=>(bs(d,t,"access private method"),e);var fi=(d,t,e,s)=>({set _(i){dt(d,t,i,e)},get _(){return K(d,t,s)}});const mt=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),Bt=[1/0,1/0,-1/0,-1/0],Xt=new Float32Array(Bt),xs=[.001,0,0,.001,0,0],ht="http://www.w3.org/2000/svg",pt={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},Ut={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},he="pdfjs_internal_id_",fe="pdfjs_internal_editor_",L={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},$={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},Nn={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},it={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Ve={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},J={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},ae={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Me={ERRORS:0,WARNINGS:1,INFOS:5},Ot={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},me={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},Bn={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let es=Me.WARNINGS;function Un(d){Number.isInteger(d)&&(es=d)}function Hn(){return es}function ss(d){es>=Me.INFOS&&console.info(`Info: ${d}`)}function N(d){es>=Me.WARNINGS&&console.warn(`Warning: ${d}`)}function G(d){throw new Error(d)}function Z(d,t){d||G(t)}function $n(d){switch(d?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Ki(d,t=null,e=null){if(!d)return null;if(e&&typeof d=="string"&&(e.addDefaultProtocol&&d.startsWith("www.")&&d.match(/\./g)?.length>=2&&(d=`http://${d}`),e.tryConvertEncoding))try{d=jn(d)}catch{}const s=t?URL.parse(d,t):URL.parse(d);return $n(s)?s:null}function Qi(d,t,e=!1){const s=URL.parse(d);return s?(s.hash=t,s.href):e&&Ki(d,"http://example.com")?d.split("#",1)[0]+`${t?`#${t}`:""}`:""}function Cs(d){return d.substring(d.lastIndexOf("/")+1)}function D(d,t,e,s=!1){return Object.defineProperty(d,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const ee=(function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t})();class Ts extends ee{constructor(t,e){super(t,"PasswordException"),this.code=e}}class ys extends ee{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class ks extends ee{constructor(t){super(t,"InvalidPDFException")}}class qe extends ee{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class Gn extends ee{constructor(t){super(t,"FormatError")}}class $t extends ee{constructor(t){super(t,"AbortException")}}function zn(d){(typeof d!="object"||d?.length===void 0)&&G("Invalid argument for bytesToString");const t=d.length,e=8192;if(t"u")return D(this,"isAlphaColorInputSupported",!1);const t=document.createElement("input");return t.type="color",t.setAttribute("alpha",""),t.value="#ff000080",D(this,"isAlphaColorInputSupported",t.value!=="#ff0000")}static get isBackdropFilterSupported(){return D(this,"isBackdropFilterSupported",typeof CSS<"u"&&CSS.supports("backdrop-filter","blur(1px)"))}}class x{static get hexNums(){return D(this,"hexNums",Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0")))}static makeHexColor(t,e,s){return`#${this.hexNums[t]}${this.hexNums[e]}${this.hexNums[s]}`}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],n=t[s+1];t[s]=i*e[0]+n*e[2]+e[4],t[s+1]=i*e[1]+n*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5];for(let h=0;h<6;h+=2){const c=t[s+h],u=t[s+h+1];t[s+h]=c*i+u*r+o,t[s+h+1]=c*n+u*a+l}}static applyInverseTransform(t,e){const s=t[0],i=t[1],n=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/n,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/n}static axialAlignedBoundingBox(t,e,s){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5],h=t[0],c=t[1],u=t[2],f=t[3];let p=i*h+o,g=p,m=i*u+o,b=m,y=a*c+l,A=y,v=a*f+l,w=v;if(n!==0||r!==0){const S=n*h,_=n*u,E=r*c,C=r*f;p+=E,b+=E,m+=C,g+=C,y+=S,w+=S,v+=_,A+=_}s[0]=Math.min(s[0],p,m,g,b),s[1]=Math.min(s[1],y,v,A,w),s[2]=Math.max(s[2],p,m,g,b),s[3]=Math.max(s[3],y,v,A,w)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],n=t[2],r=t[3],a=s**2+i**2,o=s*n+i*r,l=n**2+r**2,h=(a+l)/2,c=Math.sqrt(h**2-(a*l-o**2));e[0]=Math.sqrt(h+c||1),e[1]=Math.sqrt(h-c||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const n=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),r=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return n>r?null:[s,n,i,r]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,n){n[0]=Math.min(n[0],t,s),n[1]=Math.min(n[1],e,i),n[2]=Math.max(n[2],t,s),n[3]=Math.max(n[3],e,i)}static#t(t,e,s,i,n,r,a,o,l,h){if(l<=0||l>=1)return;const c=1-l,u=l*l,f=u*l,p=c*(c*(c*t+3*l*e)+3*u*s)+f*i,g=c*(c*(c*n+3*l*r)+3*u*a)+f*o;h[0]=Math.min(h[0],p),h[1]=Math.min(h[1],g),h[2]=Math.max(h[2],p),h[3]=Math.max(h[3],g)}static#e(t,e,s,i,n,r,a,o,l,h,c,u){if(Math.abs(l)<1e-12){Math.abs(h)>=1e-12&&this.#t(t,e,s,i,n,r,a,o,-c/h,u);return}const f=h**2-4*c*l;if(f<0)return;const p=Math.sqrt(f),g=2*l;this.#t(t,e,s,i,n,r,a,o,(-h+p)/g,u),this.#t(t,e,s,i,n,r,a,o,(-h-p)/g,u)}static bezierBoundingBox(t,e,s,i,n,r,a,o,l){l[0]=Math.min(l[0],t,a),l[1]=Math.min(l[1],e,o),l[2]=Math.max(l[2],t,a),l[3]=Math.max(l[3],e,o),this.#e(t,s,n,a,e,i,r,o,3*(-t+3*(s-n)+a),6*(t-2*s+n),3*(s-t),l),this.#e(t,s,n,a,e,i,r,o,3*(-e+3*(i-r)+o),6*(e-2*i+r),3*(i-e),l)}}function jn(d){return decodeURIComponent(escape(d))}let As=null,pi=null;function Vn(d){return As||(As=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,pi=new Map([["ſt","ſt"]])),d.replaceAll(As,(t,e,s)=>e?e.normalize("NFKC"):pi.get(s))}function Ji(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const d=new Uint8Array(32);return crypto.getRandomValues(d),zn(d)}function Wn(d,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...n]=e;if(!d(s)&&!Number.isInteger(s)||!t(i))return!1;const r=n.length;let a=!0;switch(i.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;a=!1;break;default:return!1}for(const o of n)if(!(typeof o=="number"||a&&o===null))return!1;return!0}const ge=()=>[],zs=()=>new Map,Ps=()=>Object.create(null),Xn=()=>new Set;typeof Iterator.prototype.join!="function"&&(Iterator.prototype.join=function(d){return[...this].join(d)});function X(d,t,e){return Math.min(Math.max(d,t),e)}class Ie{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:n=0,offsetY:r=0,dontFlip:a=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=n,this.offsetY=r,s*=e;const o=(t[2]+t[0])/2,l=(t[3]+t[1])/2;let h,c,u,f;switch(i%=360,i<0&&(i+=360),i){case 180:h=-1,c=0,u=0,f=1;break;case 90:h=0,c=1,u=1,f=0;break;case 270:h=0,c=-1,u=-1,f=0;break;case 0:h=1,c=0,u=0,f=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}a&&(u=-u,f=-f);let p,g,m,b;h===0?(p=Math.abs(l-t[1])*s+n,g=Math.abs(o-t[0])*s+r,m=(t[3]-t[1])*s,b=(t[2]-t[0])*s):(p=Math.abs(o-t[0])*s+n,g=Math.abs(l-t[1])*s+r,m=(t[2]-t[0])*s,b=(t[3]-t[1])*s),this.transform=[h*s,c*s,u*s,f*s,p-h*s*o-u*s*l,g-c*s*o-f*s*l],this.width=m,this.height=b}get rawDims(){const t=this.viewBox;return D(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:n=!1}={}){return new Ie({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}convertToViewportPoint(t,e){const s=[t,e];return x.applyTransform(s,this.transform),s}convertToPdfPoint(t,e){const s=[t,e];return x.applyInverseTransform(s,this.transform),s}}class xe{static textContent(t){const e=[],s={items:e,styles:Object.create(null)};function i(n){if(!n)return;let r=null;const a=n.name;if(a==="#text")r=n.value;else if(xe.shouldBuildText(a))n?.attributes?.textContent?r=n.attributes.textContent:n.value&&(r=n.value);else return;if(r!==null&&e.push({str:r}),!!n.children)for(const o of n.children)i(o)}return i(t),s}static shouldBuildText(t){return!(t==="textarea"||t==="input"||t==="option"||t==="select")}}const Yn=/url\(|image-set\(/i,qn=/^on/i;class Zi{static get _allowedHtmlElements(){return D(this,"_allowedHtmlElements",new Set(["a","b","br","button","div","i","img","input","label","li","ol","option","p","select","span","sub","sup","textarea","ul"]))}static get _allowedSvgElements(){return D(this,"_allowedSvgElements",new Set(["ellipse","line","path","rect","svg"]))}static get _allowedRichTextElements(){return D(this,"_allowedRichTextElements",new Set(["a","b","br","div","i","li","ol","p","span","sub","sup","ul"]))}static get _allowedRichTextAttributes(){return D(this,"_allowedRichTextAttributes",new Set(["class","dir","style"]))}static get _allowedRichTextStyles(){return D(this,"_allowedRichTextStyles",new Set(["color","font","fontFamily","fontSize","fontStretch","fontStyle","fontWeight","kerningMode","letterSpacing","lineHeight","margin","marginBottom","marginLeft","marginRight","marginTop","orphans","paddingLeft","paddingRight","breakAfter","breakBefore","breakInside","tabInterval","tabStop","textAlign","textDecoration","textIndent","transform","verticalAlign","widows"]))}static setupStorage(t,e,s,i,n){const r=i.getValue(e,{value:null});switch(s.name){case"textarea":if(r.value!==null&&(t.textContent=r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})});break;case"input":if(s.attributes.type==="radio"||s.attributes.type==="checkbox"){if(r.value===s.attributes.xfaOn?t.setAttribute("checked",!0):r.value===s.attributes.xfaOff&&t.removeAttribute("checked"),n==="print")break;t.addEventListener("change",a=>{i.setValue(e,{value:a.target.checked?a.target.getAttribute("xfaOn"):a.target.getAttribute("xfaOff")})})}else{if(r.value!==null&&t.setAttribute("value",r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})})}break;case"select":if(r.value!==null){t.setAttribute("value",r.value);for(const a of s.children)a.attributes.value===r.value?a.attributes.selected=!0:Object.hasOwn(a.attributes,"selected")&&delete a.attributes.selected}t.addEventListener("input",a=>{const o=a.target.options,l=o.selectedIndex===-1?"":o[o.selectedIndex].value;i.setValue(e,{value:l})});break}}static setAttributes({html:t,element:e,storage:s=null,intent:i,linkService:n}){const{attributes:r}=e,a=t instanceof HTMLAnchorElement;r.type==="radio"&&(r.name=`${r.name}-${i}`);for(const[o,l]of Object.entries(r))if(l!=null&&!qn.test(o)&&!(i==="richText"&&!this._allowedRichTextAttributes.has(o)))switch(o){case"class":l.length&&t.setAttribute(o,l.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",l);break;case"style":if(i==="richText"){const h=this._allowedRichTextStyles;for(const[c,u]of Object.entries(l))h.has(c)&&!Yn.test(u)&&(t.style[c]=u)}else Object.assign(t.style,l);break;case"textContent":t.textContent=l;break;default:(!a||o!=="href"&&o!=="newWindow")&&t.setAttribute(o,l)}a&&n?.addLinkAttributes(t,r.href,r.newWindow),s&&r.dataId&&this.setupStorage(t,r.dataId,e,s)}static#t(t,e,s){return s==="richText"?!e&&this._allowedRichTextElements.has(t)?document.createElement(t):null:e?e===ht&&this._allowedSvgElements.has(t)?document.createElementNS(ht,t):null:this._allowedHtmlElements.has(t)?document.createElement(t):null}static render(t){const e=t.annotationStorage,s=t.linkService,i=t.xfaHtml,n=t.intent||"display",r=this.#t(i.name,i.attributes?.xmlns,n)??document.createElement("div");i.attributes&&this.setAttributes({html:r,element:i,intent:n,linkService:s});const a=n!=="richText",o=t.div;if(o.append(r),t.viewport){const c=`matrix(${t.viewport.transform.join(",")})`;o.style.transform=c}a&&o.setAttribute("class","xfaLayer xfaFont");const l=[];if(i.children.length===0){if(i.value){const c=document.createTextNode(i.value);r.append(c),a&&xe.shouldBuildText(i.name)&&l.push(c)}return{textDivs:l}}const h=[[i,-1,r]];for(;h.length>0;){const[c,u,f]=h.at(-1);if(u+1===c.children.length){h.pop();continue}const p=c.children[++h.at(-1)[1]];if(p===null)continue;const{name:g}=p;if(g==="#text"){const b=document.createTextNode(p.value);l.push(b),f.append(b);continue}const m=this.#t(g,p.attributes?.xmlns,n);if(m){if(f.append(m),p.attributes&&this.setAttributes({html:m,element:p,storage:e,intent:n,linkService:s}),p.children?.length>0)h.push([p,-1,m]);else if(p.value){const b=document.createTextNode(p.value);a&&xe.shouldBuildText(g)&&l.push(b),m.append(b)}}}for(const c of o.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))c.setAttribute("readOnly",!0);return{textDivs:l}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}static getPageViewport(t,{scale:e=1,rotation:s=0}){const{width:i,height:n}=t.attributes.style;return new Ie({viewBox:[0,0,parseInt(i,10),parseInt(n,10)],userUnit:1,scale:e,rotation:s})}}class pe{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}async function js(d,t="text"){if(ve(d,document.baseURI)){const e=await fetch(d);if(!e.ok)throw new Error(e.statusText);switch(t){case"blob":return e.blob();case"bytes":return e.bytes();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",d,!0),i.responseType=t==="bytes"?"arraybuffer":t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"bytes":e(new Uint8Array(i.response));return;case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class Vs extends ee{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function ns(d){const t=d.length;let e=0;for(;e{try{return new URL(a)}catch{}try{return new URL(decodeURIComponent(a))}catch{}try{return new URL(a,"https://foo.bar")}catch{}try{return new URL(decodeURIComponent(a),"https://foo.bar")}catch{}return null})(d);if(!s)return t;const i=a=>{try{let o=decodeURIComponent(a);return o.includes("/")&&(o=Cs(o),o.length===4&&n.test(o))?a:o}catch{return a}},n=/\.pdf$/i,r=Cs(s.pathname);if(n.test(r))return i(r);if(s.searchParams.size>0){const a=l=>[...l].findLast(h=>n.test(h)),o=a(s.searchParams.values())??a(s.searchParams.keys());if(o)return i(o)}if(s.hash){const{hash:a}=s;let o=-1;for(const{index:l}of a.matchAll(/\.pdf\b/gi))o=l;if(o>0){let l=o;for(;l>0&&!"/?#=".includes(a[l-1]);)l--;if(le.name.length));return this.times.map(e=>`${e.name.padEnd(t)} ${e.end-e.start}ms +`).join("")}}function ve(d,t){const e=t?URL.parse(d,t):URL.parse(d);return/https?:/.test(e?.protocol??"")}function Ct(d){d.preventDefault()}function nt(d){d.preventDefault(),d.stopPropagation()}class Ms{static#t;static toDateObject(t){if(t instanceof Date)return t;if(!t||typeof t!="string")return null;this.#t||=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?");const e=this.#t.exec(t);if(!e)return null;const s=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let r=parseInt(e[4],10);r=r>=0&&r<=23?r:0;let a=parseInt(e[5],10);a=a>=0&&a<=59?a:0;let o=parseInt(e[6],10);o=o>=0&&o<=59?o:0;const l=e[7]||"Z";let h=parseInt(e[8],10);h=h>=0&&h<=23?h:0;let c=parseInt(e[9],10)||0;return c=c>=0&&c<=59?c:0,l==="-"?(r+=h,a+=c):l==="+"&&(r-=h,a-=c),new Date(Date.UTC(s,i,n,r,a,o))}}function De(d){if(d.startsWith("#")){const e=d.slice(1);return[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16),e.length>=8?parseInt(e.slice(6,8),16)/255:1]}if(d.startsWith("rgb(")){const[e,s,i]=d.slice(4,-1).split(",").map(n=>parseInt(n,10));return[e,s,i,1]}if(d.startsWith("rgba(")){const e=d.slice(5,-1).split(",");return[parseInt(e[0],10),parseInt(e[1],10),parseInt(e[2],10),parseFloat(e[3])]}const t=d.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return t?[Math.round(parseFloat(t[1])*255),Math.round(parseFloat(t[2])*255),Math.round(parseFloat(t[3])*255),t[4]!==void 0&&t[4]!=="none"?parseFloat(t[4]):1]:null}function Oe(d){const t=De(d);return t?t.slice(0,3):(N(`Not a valid color format: "${d}"`),[0,0,0])}function Jn(d){const t=document.createElement("span");t.style.visibility="hidden",t.style.colorScheme="only light",document.body.append(t);for(const e of d.keys()){t.style.color=e;const s=window.getComputedStyle(t).color;d.set(e,Oe(s))}t.remove()}function V(d){const{a:t,b:e,c:s,d:i,e:n,f:r}=d.getTransform();return[t,e,s,i,n,r]}function Mt(d){const{a:t,b:e,c:s,d:i,e:n,f:r}=d.getTransform().invertSelf();return[t,e,s,i,n,r]}function Zt(d,t,e=!1,s=!0){if(t instanceof Ie){const{pageWidth:i,pageHeight:n}=t.rawDims,{style:r}=d,a=`round(down, var(--total-scale-factor) * ${i}px, var(--scale-round-x))`,o=`round(down, var(--total-scale-factor) * ${n}px, var(--scale-round-y))`;!e||t.rotation%180===0?(r.width=a,r.height=o):(r.width=o,r.height=a)}s&&d.setAttribute("data-main-rotation",t.rotation)}class Tt{constructor(){const{pixelRatio:t}=Tt;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,e,s,i,n=-1){let r=1/0,a=1/0,o=1/0;s=Tt.capPixels(s,n),s>0&&(r=Math.sqrt(s/(t*e))),i!==-1&&(a=i/t,o=i/e);const l=Math.min(r,a,o);return this.sx>l||this.sy>l?(this.sx=l,this.sy=l,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(t,e){if(e>=0){const s=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+e/100));return t>0?Math.min(t,s):s}return t}}const Is=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];class Zn{static get isDarkMode(){return D(this,"isDarkMode",!!window?.matchMedia?.("(prefers-color-scheme: dark)").matches)}}class tr{static get commentForegroundColor(){const t=document.createElement("span");t.classList.add("comment","sidebar");const{style:e}=t;e.width=e.height="0",e.display="none",e.color="var(--comment-fg-color)",document.body.append(t);const{color:s}=window.getComputedStyle(t);return t.remove(),D(this,"commentForegroundColor",Oe(s))}}function er(d,t){t=X(t??1,0,1);const e=255*(1-t);return d.map(s=>Math.round(s*t+e))}function mi(d,t){const e=d[0]/255,s=d[1]/255,i=d[2]/255,n=Math.max(e,s,i),r=Math.min(e,s,i),a=(n+r)/2;if(n===r)t[0]=t[1]=0;else{const o=n-r;switch(t[1]=a<.5?o/(n+r):o/(2-n-r),n){case e:t[0]=((s-i)/o+(si?(s+.05)/(i+.05):(i+.05)/(s+.05)}const yi=new Map;function sr(d,t){const e=d[0]+d[1]*256+d[2]*65536+t[0]*16777216+t[1]*4294967296+t[2]*1099511627776;let s=yi.get(e);if(s)return s;const i=new Float32Array(9),n=i.subarray(0,3),r=i.subarray(3,6);mi(d,r);const a=i.subarray(6,9);mi(t,a);const o=a[2]<.5,l=o?12:4.5;if(r[2]=o?Math.sqrt(r[2]):1-Math.sqrt(1-r[2]),bi(r,a,n)u;){const f=r[2]=(h+c)/2;o===bi(r,a,n){e.delete()},{signal:e._signal}),this.#i.append(s)}get#g(){const t=document.createElement("div");return t.className="divider",t}async addAltText(t){const e=await t.render();this.#f(e),this.#i.append(e,this.#g),this.#n=t}addComment(t,e=null){if(this.#a)return;const s=t.renderForToolbar();if(!s)return;this.#f(s);const i=this.#r=this.#g;e?(this.#i.insertBefore(s,e),this.#i.insertBefore(i,e)):this.#i.append(s,i),this.#a=t,t.toolbar=this}addColorPicker(t){if(this.#e)return;this.#e=t;const e=t.renderButton();this.#f(e),this.#i.append(e,this.#g)}async addEditSignatureButton(t){const e=this.#o=await t.renderEditButton(this.#s);this.#f(e),this.#i.append(e,this.#g)}removeButton(t){t==="comment"&&(this.#a?.removeToolbarCommentButton(),this.#a=null,this.#r?.remove(),this.#r=null)}async addButton(t,e){switch(t){case"colorPicker":e&&this.addColorPicker(e);break;case"altText":e&&await this.addAltText(e);break;case"editSignature":e&&await this.addEditSignatureButton(e);break;case"delete":this.addDeleteButton();break;case"comment":e&&this.addComment(e);break}}async addButtonBefore(t,e,s){if(!e&&t==="comment")return;const i=this.#i.querySelector(s);i&&t==="comment"&&this.addComment(e,i)}updateEditSignatureButton(t){this.#o&&(this.#o.title=t)}remove(){this.#t.remove(),this.#e?.destroy(),this.#e=null}}class ir{#t=null;#e=null;#s;constructor(t){this.#s=t}#i(){const t=this.#e=document.createElement("div");t.className="editToolbar",t.setAttribute("role","toolbar"),t.dir=this.#s.direction;const e=this.#s._signal;e instanceof AbortSignal&&!e.aborted&&t.addEventListener("contextmenu",Ct,{signal:e});const s=this.#t=document.createElement("div");return s.className="buttons",t.append(s),this.#s.hasCommentManager()&&this.#a("commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{this.#s.commentSelection("floating_button")}),this.#a("highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{this.#s.highlightSelection("floating_button")}),t}#n(t,e){let s=0,i=0;for(const n of t){const r=n.y+n.height;if(rs){i=a,s=r;continue}e?a>i&&(i=a):a=1}static clearPointerType(){z.#i=null}static clearPointerIds(){z.#t=NaN,z.#e=null}static clearTimeStamp(){z.#s=NaN}}class rr{#t=0;get id(){return`${fe}${this.#t++}`}}class Xs{#t=Ji();#e=0;#s=null;static get _isSVGFittingCanvas(){const t=`data:image/svg+xml;charset=UTF-8,`,s=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=t;const n=i.decode().then(()=>(s.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(s.getImageData(0,0,1,1).data.buffer)[0]===0));return D(this,"_isSVGFittingCanvas",n)}async#i(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s===null)return null;if(s?.bitmap)return s.refCounter+=1,s;try{s||={bitmap:null,id:`image_${this.#t}_${this.#e++}`,refCounter:0,isSvg:!1};let i;if(typeof e=="string"?(s.url=e,i=await js(e,"blob")):e instanceof File?i=s.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const n=Xs._isSVGFittingCanvas,r=new FileReader,a=new Image,o=new Promise((l,h)=>{a.onload=()=>{s.bitmap=a,s.isSvg=!0,l()},r.onload=async()=>{const c=s.svgUrl=r.result;a.src=await n?`${c}#svgView(preserveAspectRatio(none))`:c},a.onerror=r.onerror=h});r.readAsDataURL(i),await o}else s.bitmap=await createImageBitmap(i);s.refCounter=1}catch(i){N(i),s=null}return this.#s.set(t,s),s&&this.#s.set(s.id,s),s}async getFromFile(t){const{lastModified:e,name:s,size:i,type:n}=t;return this.#i(`${e}_${s}_${i}_${n}`,t)}async getFromUrl(t){return this.#i(t,t)}async getFromBlob(t,e){const s=await e;return this.#i(t,s)}async getFromId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:s}=e;return delete e.blobPromise,this.getFromBlob(e.id,s)}return this.getFromUrl(e.url)}getFromCanvas(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s?.bitmap)return s.refCounter+=1,s;const i=new OffscreenCanvas(e.width,e.height);return i.getContext("2d").drawImage(e,0,0),s={bitmap:i.transferToImageBitmap(),id:`image_${this.#t}_${this.#e++}`,refCounter:1,isSvg:!1},this.#s.set(t,s),this.#s.set(s.id,s),s}getSvgUrl(t){const e=this.#s.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e||(e.refCounter-=1,e.refCounter!==0))return;const{bitmap:s}=e;if(!e.url&&!e.file){const i=new OffscreenCanvas(s.width,s.height);i.getContext("bitmaprenderer").transferFromImageBitmap(s),e.blobPromise=i.convertToBlob()}s.close?.(),e.bitmap=null}isValidId(t){return t.startsWith(`image_${this.#t}_`)}}class ar{#t=[];#e=!1;#s;#i=-1;constructor(t=128){this.#s=t}add({cmd:t,undo:e,post:s,mustExec:i,type:n=NaN,overwriteIfSameType:r=!1,keepUndo:a=!1}){if(i&&t(),this.#e)return;const o={cmd:t,undo:e,post:s,type:n};if(this.#i===-1){this.#t.length>0&&(this.#t.length=0),this.#i=0,this.#t.push(o);return}if(r&&this.#t[this.#i].type===n){a&&(o.undo=this.#t[this.#i].undo),this.#t[this.#i]=o;return}const l=this.#i+1;l===this.#s?this.#t.splice(0,1):(this.#i=l,l=0;e--)if(this.#t[e].type!==t){this.#t.splice(e+1,this.#i-e),this.#i=e;return}this.#t.length=0,this.#i=-1}}destroy(){this.#t=null}}class bt{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;const{isMac:e}=j.platform;for(const[s,i,n={}]of t){const r=s.some(a=>a.startsWith("mac+"));for(const a of s){let o=a;if(r){const c=a.startsWith("mac+");if(e!==c)continue;c&&(o=a.slice(4))}const[l,h]=bt.#t(o);l!==null&&this.callbacks.getOrInsertComputed(l,ge).push({callback:i,options:n,modifiers:h})}}}static#t(t){let e=null,s=0;for(let i of t.split("+")){if(i=i.trim(),!i)continue;const n=i.toUpperCase(),r=bt[n];if(r){s|=r;continue}if(e!==null){N(`KeyboardManager: multiple keys in shortcut "${t}"`);break}e=n==="SPACE"?" ":i}return e===null&&N(`KeyboardManager: no key found in shortcut "${t}"`),[e,s]}static#e(t){const e=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(t);return e?e[1]?.toLowerCase()??e[2]:null}exec(t,e){let s=this.callbacks.get(e.key);if(!s){if(/^[a-z]$/i.test(e.key))return;const h=bt.#e(e.code);if(h===null||h===e.key||(s=this.callbacks.get(h),!s))return}const i=(e.altKey?bt.ALT:0)|(e.ctrlKey?bt.CTRL:0)|(e.metaKey?bt.META:0)|(e.shiftKey?bt.SHIFT:0),n=s.find(h=>h.modifiers===i);if(!n)return;const{callback:r,options:{bubbles:a=!1,args:o=[],checker:l=null}}=n;l&&!l(t,e)||(r.bind(t,...o,e)(),a||nt(e))}}class Ys{static _colorsMapping=new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]);get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return Jn(t),D(this,"_colors",t)}convert(t){const e=Oe(t);if(!window.matchMedia("(forced-colors: active)").matches)return e;for(const[s,i]of this._colors)if(i.every((n,r)=>n===e[r]))return Ys._colorsMapping.get(s);return e}getHexCode(t){const e=this._colors.get(t);return e?x.makeHexColor(...e):t}}class Gt{#t=new AbortController;#e=null;#s=null;#i=new Map;#n=new Map;#a=null;#r=null;#o=null;#l=null;#h=null;#u=new ar;#d=null;#f=null;#g=null;#m=0;#c=new Set;#p=null;#b=null;#y=new Set;_editorUndoBar=null;#A=!1;#w=!1;#_=!1;#S=null;#E=null;#x=null;#M=null;#k=!1;#T=null;#D=new rr;#I=!1;#O=!1;#H=!1;#F=null;#L=null;#j=null;#N=null;#$=null;#C=L.NONE;#v=new Set;#B=null;#G=null;#V=null;#K=null;#Y=null;#q={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#R=[0,0];#W=null;#X=null;#tt=null;#et=null;#U=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=Gt.prototype,e=r=>r.#X.contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&r.hasSomethingToControl(),s=(r,{target:a})=>{if(a instanceof HTMLInputElement){const{type:o}=a;return o!=="text"&&o!=="number"}return!0},i=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return D(this,"_keyboardManager",new bt([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:s}],[["ctrl+z","mac+meta+z"],t.undo,{checker:s}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:s}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:s}],[["Enter"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#X.contains(a)&&!r.isEnterHandled}],[["Space"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#X.contains(document.activeElement)}],[["Escape"],t.unselectAll],[["ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-n,0],checker:e}],[["ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[n,0],checker:e}],[["ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-n],checker:e}],[["ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,n],checker:e}]]))}constructor(t,e,s,i,n,r,a,o,l,h,c,u,f,p,g,m){const b=this._signal=this.#t.signal;this.#X=t,this.#tt=e,this.#et=s,this.#o=i,this.#d=n,this.#G=r,this.#Y=o,this._eventBus=a;const y={signal:b,...ws};a.on("editingaction",this.onEditingAction.bind(this),y),a.on("pagechanging",this.onPageChanging.bind(this),y),a.on("scalechanging",this.onScaleChanging.bind(this),y),a.on("rotationchanging",this.onRotationChanging.bind(this),y),a.on("setpreference",this.onSetPreference.bind(this),y),a.on("switchannotationeditorparams",A=>this.updateParams(A.type,A.value),y),window.addEventListener("pointerdown",()=>{this.#O=!0},{capture:!0,signal:b}),window.addEventListener("pointerup",()=>{this.#O=!1},{capture:!0,signal:b}),window.addEventListener("beforeunload",this.endCurrentEditing.bind(this),{capture:!0,signal:b}),this.#lt(),this.#pt(),this.#it(),this.#l=o.annotationStorage,this.#S=o.filterFactory,this.#V=l,this.#M=h||null,this.#A=c,this.#w=u,this.#_=f,this.#$=p||null,this.viewParameters={realScale:pe.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=g||null,this._supportsPinchToZoom=m!==!1,n?.setSidebarUiManager(this)}destroy(){this.#U?.resolve(),this.#U=null,this.#t?.abort(),this.#t=null,this._signal=null;for(const t of this.#n.values())t.destroy();this.#n.clear(),this.#i.clear(),this.#y.clear(),this.#N?.clear(),this.#e=null,this.#v.clear(),this.#u.destroy(),this.#o?.destroy(),this.#d?.destroy(),this.#G?.destroy(),this.#T?.hide(),this.#T=null,this.#j?.destroy(),this.#j=null,this.#s=null,this.#E&&(clearTimeout(this.#E),this.#E=null),this.#W&&(clearTimeout(this.#W),this.#W=null),this._editorUndoBar?.destroy(),this.#Y=null}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return this.#$}get useNewAltTextFlow(){return this.#w}get useNewAltTextWhenAddingImage(){return this.#_}get hcmFilter(){return D(this,"hcmFilter",this.#V?this.#S.addHCMFilter(this.#V.foreground,this.#V.background):"none")}get direction(){return D(this,"direction",getComputedStyle(this.#X).direction)}get _highlightColors(){return D(this,"_highlightColors",this.#M?new Map(this.#M.split(",").map(t=>(t=t.split("=").map(e=>e.trim()),t[1]=t[1].toUpperCase(),t))):null)}get highlightColors(){const{_highlightColors:t}=this;if(!t)return D(this,"highlightColors",null);const e=new Map,s=!!this.#V;for(const[i,n]of t){const r=i.endsWith("_HCM");if(s&&r){e.set(i.replace("_HCM",""),n);continue}!s&&!r&&e.set(i,n)}return D(this,"highlightColors",e)}get highlightColorNames(){return D(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,t=>t.reverse())):null)}getNonHCMColor(t){if(!this._highlightColors)return t;const e=this.highlightColorNames.get(t);return this._highlightColors.get(e)||t}getNonHCMColorName(t){return this.highlightColorNames.get(t)||t}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),this.#g=t}setMainHighlightColorPicker(t){this.#j=t}editAltText(t,e=!1){this.#o?.editAltText(this,t,e)}hasCommentManager(){return!!this.#d}editComment(t,e,s,i){this.#d?.showDialog(this,t,e,s,i)}selectComment(t,e){this.#n.get(t)?.getEditorByUID(e)?.toggleComment(!0,!0)}updateComment(t){this.#d?.updateComment(t.getData())}updatePopupColor(t){this.#d?.updatePopupColor(t)}removeComment(t){this.#d?.removeComments([t.uid])}deleteComment(t,e){const s=()=>{t.comment=e},i=()=>{this._editorUndoBar?.show(s,"comment"),this.toggleComment(null),t.comment=null};this.addCommands({cmd:i,undo:s,mustExec:!0})}toggleComment(t,e,s=void 0){this.#d?.toggleCommentPopup(t,e,s)}makeCommentColor(t,e){return t&&this.#d?.makeCommentColor(t,e)||null}getCommentDialogElement(){return this.#d?.dialogElement||null}async waitForEditorsRendered(t){if(this.#n.has(t-1))return;const{resolve:e,promise:s}=Promise.withResolvers(),i=n=>{n.pageNumber===t&&(this._eventBus.off("editorsrendered",i),e())};this._eventBus.on("editorsrendered",i,ws),await s}getSignature(t){this.#G?.getSignature({uiManager:this,editor:t})}get signatureManager(){return this.#G}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal,...ws}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){t==="enableNewAltTextWhenAddingImage"&&(this.#_=e)}onPageChanging({pageNumber:t}){this.#m=t-1}deletePage(t){for(const e of this.getEditors(t))e.remove();this.#n.delete(t),this.#m===t&&(this.#m=0)}focusMainContainer(){this.#X.focus()}findParent(t,e){for(const s of this.#n.values()){const{x:i,y:n,width:r,height:a}=s.div.getBoundingClientRect();if(t>=i&&t<=i+r&&e>=n&&e<=n+a)return s}return null}disableUserSelect(t=!1){this.#tt.classList.toggle("noUserSelect",t)}addShouldRescale(t){this.#y.add(t)}removeShouldRescale(t){this.#y.delete(t)}onScaleChanging({scale:t}){this.commitOrRemove(),this.viewParameters.realScale=t*pe.PDF_TO_CSS_UNITS;for(const e of this.#y)e.onScaleChanging();this.#g?.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}#Z({anchorNode:t}){return t.nodeType===Node.TEXT_NODE?t.parentElement:t}#st(t){const{currentLayer:e}=this;if(e.hasTextLayer(t))return e;for(const s of this.#n.values())if(s.hasTextLayer(t))return s;return null}highlightSelection(t="",e=!1){const s=document.getSelection();if(!s||s.isCollapsed)return;const{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a}=s,o=s.toString(),h=this.#Z(s).closest(".textLayer"),c=this.getSelectionBoxes(h);if(!c)return;s.empty();const u=this.#st(h),f=this.#C===L.NONE,p=()=>{const g=u?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:c,anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a,text:o});f&&this.showAllEditors("highlight",!0,!0),e&&g?.editComment()};if(f){this.switchToMode(L.HIGHLIGHT,p);return}p()}commentSelection(t=""){this.highlightSelection(t,!0)}endCurrentEditing(){this.commitOrRemove(),this.currentLayer?.endDrawingSession(!1)}#at(){const t=document.getSelection();if(!t||t.isCollapsed)return;const s=this.#Z(t).closest(".textLayer"),i=this.getSelectionBoxes(s);i&&(this.#T||=new ir(this),this.#T.show(s,i,this.direction==="ltr"))}getAndRemoveDataFromAnnotationStorage(t){if(!this.#l)return null;const e=`${fe}${t}`,s=this.#l.getRawValue(e);return s&&this.#l.remove(e),s}addToAnnotationStorage(t){!t.isEmpty()&&this.#l&&!this.#l.has(t.id)&&this.#l.setValue(t.id,t)}a11yAlert(t,e=null){const s=this.#et;s&&(s.setAttribute("data-l10n-id",t),e?s.setAttribute("data-l10n-args",JSON.stringify(e)):s.removeAttribute("data-l10n-args"))}#ot(){const t=document.getSelection();if(!t||t.isCollapsed){this.#B&&(this.#T?.hide(),this.#B=null,this.#P({hasSelectedText:!1}));return}const{anchorNode:e}=t;if(e===this.#B)return;const i=this.#Z(t).closest(".textLayer");if(!i){this.#B&&(this.#T?.hide(),this.#B=null,this.#P({hasSelectedText:!1}));return}if(this.#T?.hide(),this.#B=e,this.#P({hasSelectedText:!0}),!(this.#C!==L.HIGHLIGHT&&this.#C!==L.NONE)&&(this.#C===L.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),this.#k=this.isShiftKeyDown,!this.isShiftKeyDown)){const n=this.#C===L.HIGHLIGHT?this.#st(i):null;if(n?.toggleDrawing(),this.#O){const r=new AbortController,a=this.combinedSignal(r),o=l=>{l.type==="pointerup"&&l.button!==0||(r.abort(),n?.toggleDrawing(!0),l.type==="pointerup"&&this.#Q("main_toolbar"))};window.addEventListener("pointerup",o,{signal:a}),window.addEventListener("blur",o,{signal:a})}else n?.toggleDrawing(!0),this.#Q("main_toolbar")}}#Q(t=""){this.#C===L.HIGHLIGHT?this.highlightSelection(t):this.#A&&this.#at()}#lt(){document.addEventListener("selectionchange",this.#ot.bind(this),{signal:this._signal})}#ht(){if(this.#x)return;this.#x=new AbortController;const t=this.combinedSignal(this.#x);window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})}#ct(){this.#x?.abort(),this.#x=null}blur(){if(this.isShiftKeyDown=!1,this.#k&&(this.#k=!1,this.#Q("main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of this.#v)if(e.div.contains(t)){this.#L=[e,t],e._focusEventsAllowed=!1;break}}focus(){if(!this.#L)return;const[t,e]=this.#L;this.#L=null,e.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}#it(){if(this.#F)return;this.#F=new AbortController;const t=this.combinedSignal(this.#F);window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})}#dt(){this.#F?.abort(),this.#F=null}#ut(){if(this.#f)return;this.#f=new AbortController;const t=this.combinedSignal(this.#f);document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})}#ft(){this.#f?.abort(),this.#f=null}#pt(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})}addEditListeners(){this.#it(),this.setEditingState(!0)}removeEditListeners(){this.#dt(),this.setEditingState(!1)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const s of this.#b)if(s.isHandlingMimeForPasting(e)){t.dataTransfer.dropEffect="copy",t.preventDefault();return}}drop(t){for(const e of t.dataTransfer.items)for(const s of this.#b)if(s.isHandlingMimeForPasting(e.type)){s.paste(e,this.currentLayer),t.preventDefault();return}}copy(t){if(t.preventDefault(),this.#e?.commitOrRemove(),!this.hasSelection)return;const e=[];for(const s of this.#v){const i=s.serialize(!0);i&&e.push(i)}e.length!==0&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const n of e.items)for(const r of this.#b)if(r.isHandlingMimeForPasting(n.type)){r.paste(n,this.currentLayer);return}let s=e.getData("application/pdfjs");if(!s)return;try{s=JSON.parse(s)}catch(n){N(`paste: "${n.message}".`);return}if(!Array.isArray(s))return;this.unselectAll();const i=this.currentLayer;try{const n=[];for(const o of s){const l=await i.deserialize(o);if(!l)return;n.push(l)}const r=()=>{for(const o of n)this.#nt(o);this.#rt(n)},a=()=>{for(const o of n)o.remove()};this.addCommands({cmd:r,undo:a,mustExec:!0})}catch(n){N(`paste: "${n.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!0),this.#C!==L.NONE&&!this.isEditorHandlingKeyboard&&Gt._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!1,this.#k&&(this.#k=!1,this.#Q("main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break;case"commentSelection":this.commentSelection("context_menu");break}}updatePageIndex(t,e){for(const i of this.#r.get(t)||[])i.pageIndex=e;const s=this.#a.get(t);s&&(s.pageIndex=e,this.#n.set(e,s),this.#I?s.enable():s.disable())}startUpdatePages(){this.#a=new Map(this.#n),this.#n.clear();const t=this.#r=new Map,e=s=>{t.getOrInsertComputed(s.pageIndex,ge).push(s)};for(const s of this.#i.values())e(s);for(const[s,i]of this.#l)s.startsWith(fe)&&!this.#i.has(s)&&Number.isInteger(i?.pageIndex)&&e(i)}endUpdatePages(){this.#a=null,this.#r=null}clonePage(t,e){for(const s of this.getEditors(t)){const i=s.serialize(s.mode!==L.HIGHLIGHT);i&&(i.pageIndex=e,i.id=this.getId(),i.isClone=!0,delete i.popupRef,this.#l.setValue(i.id,i))}}findClonesForPage(t){const e=[],{pageIndex:s}=t;for(const[i,n]of this.#l)n.pageIndex===s&&n.isClone&&(this.#l.remove(i),e.push(t.deserialize(n).then(r=>{r&&(r.isClone=!0,t.addOrRebuild(r))})));return Promise.all(e)}#P(t){Object.entries(t).some(([s,i])=>this.#q[s]!==i)&&(this._eventBus.dispatch("editingstateschanged",{source:this,details:Object.assign(this.#q,t)}),this.#C===L.HIGHLIGHT&&t.hasSelectedEditor===!1&&this.#z([[$.HIGHLIGHT_FREE,!0]]))}#z(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){t?(this.#ht(),this.#ut(),this.#P({isEditing:this.#C!==L.NONE,isEmpty:this.#J(),hasSomethingToUndo:this.#u.hasSomethingToUndo(),hasSomethingToRedo:this.#u.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#ct(),this.#ft(),this.#P({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!this.#b){this.#b=t;for(const e of this.#b)this.#z(e.defaultPropertiesToUpdate)}}getId(){return this.#D.id}get currentLayer(){return this.#n.get(this.#m)}getLayer(t){return this.#n.get(t)}get currentPageIndex(){return this.#m}addLayer(t){this.#n.set(t.pageIndex,t),this.#I?t.enable():t.disable()}removeLayer(t){this.#n.delete(t.pageIndex)}async updateMode(t,e=null,s=!1,i=!1,n=!1,r=!1){if(this.#C!==t&&!(this.#U&&(await this.#U.promise,!this.#U))){if(this.#U=Promise.withResolvers(),this.#g?.commitOrRemove(),this.#C===L.POPUP&&this.#d?.hideSidebar(),this.#d?.destroyPopup(),this.#C=t,t===L.NONE){this.setEditingState(!1),this.#mt();for(const a of this.#i.values())a.hideStandaloneCommentButton();this._editorUndoBar?.hide(),this.toggleComment(null),this.#U.resolve();return}for(const a of this.#i.values())a.addStandaloneCommentButton();t===L.SIGNATURE&&await this.#G?.loadSignatures(),s&&z.clearPointerType(),this.setEditingState(!0),await this.#gt(),this.unselectAll();for(const a of this.#n.values())a.updateMode(t);if(t===L.POPUP){this.#s||=await this.#Y.getAnnotationsByType(new Set(this.#b.map(l=>l._editorType)));const a=new Set,o=[];for(const l of this.#i.values()){const{annotationElementId:h,hasComment:c,deleted:u}=l;h&&a.add(h),c&&!u&&o.push(l.getData())}for(const l of this.#s){const{id:h,popupRef:c,contentsObj:u}=l;c&&u?.str&&!a.has(h)&&!this.#c.has(h)&&o.push(l)}this.#d?.showSidebar(o)}if(!e){i&&this.addNewEditorFromKeyboard(),this.#U.resolve();return}for(const a of this.#i.values())a.uid===e?(this.setSelected(a),r?a.editComment():n?a.enterInEditMode():a.focus()):a.unselect();this.#U.resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t.mode!==this.#C&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...t})}updateParams(t,e){if(this.#b){switch(t){case $.CREATE:this.currentLayer.addNewEditor(e);return;case $.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(this.#K||=new Map).set(t,e),this.showAllEditors("highlight",e);break}if(this.hasSelection)for(const s of this.#v)s.updateParams(t,e);else for(const s of this.#b)s.updateDefaultParams(t,e)}}showAllEditors(t,e,s=!1){for(const n of this.#i.values())n.editorType===t&&n.show(e);(this.#K?.get($.HIGHLIGHT_SHOW_ALL)??!0)!==e&&this.#z([[$.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if(this.#H!==t){this.#H=t;for(const e of this.#n.values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}async#gt(){if(!this.#I){this.#I=!0;const t=[];for(const e of this.#n.values())t.push(e.enable());await Promise.all(t);for(const e of this.#i.values())e.enable()}}#mt(){if(this.unselectAll(),this.#I){this.#I=!1;for(const t of this.#n.values())t.disable();for(const t of this.#i.values())t.disable()}}*getEditors(t){for(const e of this.#i.values())e.pageIndex===t&&(yield e)}getEditor(t){return this.#i.get(t)}addEditor(t){this.#i.set(t.id,t)}removeEditor(t){t.div.contains(document.activeElement)&&(this.#E&&clearTimeout(this.#E),this.#E=setTimeout(()=>{this.focusMainContainer(),this.#E=null},0)),this.#i.delete(t.id),t.annotationElementId&&this.#N?.delete(t.annotationElementId),this.unselect(t),(!t.annotationElementId||!this.#c.has(t.annotationElementId))&&this.#l?.remove(t.id)}addDeletedAnnotationElement(t){this.#c.add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return this.#c.has(t)}removeDeletedAnnotationElement(t){this.#c.delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}#nt(t){const e=this.#n.get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))}setActiveEditor(t){this.#e!==t&&(this.#e=t,t&&this.#z(t.propertiesToUpdate))}get#bt(){let t=null;for(t of this.#v);return t}updateUI(t){this.#bt===t&&this.#z(t.propertiesToUpdate)}updateUIForDefaultProperties(t){this.#z(t.defaultPropertiesToUpdate)}toggleSelected(t){if(this.#v.has(t)){this.#v.delete(t),t.unselect(),this.#P({hasSelectedEditor:this.hasSelection});return}this.#v.add(t),t.select(),this.#z(t.propertiesToUpdate),this.#P({hasSelectedEditor:!0})}setSelected(t){this.updateToolbar({mode:t.mode,editId:t.uid}),this.#g?.commitOrRemove();for(const e of this.#v)e!==t&&e.unselect();this.#d?.destroyPopup(),this.#v.clear(),this.#v.add(t),t.select(),this.#z(t.propertiesToUpdate),this.#P({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#v.values().next().value}unselect(t){t.unselect(),this.#v.delete(t),this.#P({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#v.size!==0}get isEnterHandled(){return this.#v.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#u.undo(),this.#P({hasSomethingToUndo:this.#u.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#J()}),this._editorUndoBar?.hide()}redo(){this.#u.redo(),this.#P({hasSomethingToUndo:!0,hasSomethingToRedo:this.#u.hasSomethingToRedo(),isEmpty:this.#J()})}addCommands(t){this.#u.add(t),this.#P({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#J()})}cleanUndoStack(t){this.#u.cleanType(t)}#J(){if(this.#i.size===0)return!0;if(this.#i.size===1)for(const t of this.#i.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();const t=this.currentLayer?.endDrawingSession(!0);if(!this.hasSelection&&!t)return;const e=t?[t]:[...this.#v],s=()=>{this._editorUndoBar?.show(i,e.length===1?e[0].editorType:e.length);for(const n of e)n.remove()},i=()=>{for(const n of e)this.#nt(n)};this.addCommands({cmd:s,undo:i,mustExec:!0})}commitOrRemove(){this.#e?.commitOrRemove()}hasSomethingToControl(){return this.#e||this.hasSelection}#rt(t){for(const e of this.#v)e.unselect();this.#v.clear();for(const e of t)e.isEmpty()||(this.#v.add(e),e.select());this.#P({hasSelectedEditor:this.hasSelection})}selectAll(){for(const t of this.#v)t.commit();this.#rt(this.#i.values())}unselectAll(){if(!(this.#e&&(this.#e.commitOrRemove(),this.#C!==L.NONE))&&!this.#g?.commitOrRemove()&&(this.#d?.destroyPopup(),!!this.hasSelection)){for(const t of this.#v)t.unselect();this.#v.clear(),this.#P({hasSelectedEditor:!1})}}translateSelectedEditors(t,e,s=!1){if(s||this.commitOrRemove(),!this.hasSelection)return;this.#R[0]+=t,this.#R[1]+=e;const[i,n]=this.#R,r=[...this.#v],a=1e3;this.#W&&clearTimeout(this.#W),this.#W=setTimeout(()=>{this.#W=null,this.#R[0]=this.#R[1]=0,this.addCommands({cmd:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(i,n),o.translationDone())},undo:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(-i,-n),o.translationDone())},mustExec:!1})},a);for(const o of r)o.translateInPage(t,e),o.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#p=new Map;for(const t of this.#v)this.#p.set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#p)return!1;this.disableUserSelect(!1);const t=this.#p;this.#p=null;let e=!1;for(const[{x:i,y:n,pageIndex:r},a]of t)a.newX=i,a.newY=n,a.newPageIndex=r,e||=i!==a.savedX||n!==a.savedY||r!==a.savedPageIndex;if(!e)return!1;const s=(i,n,r,a)=>{if(this.#i.has(i.id)){const o=this.#n.get(a);o?i._setParentAndPosition(o,n,r):(i.pageIndex=a,i.x=n,i.y=r)}};return this.addCommands({cmd:()=>{for(const[i,{newX:n,newY:r,newPageIndex:a}]of t)s(i,n,r,a)},undo:()=>{for(const[i,{savedX:n,savedY:r,savedPageIndex:a}]of t)s(i,n,r,a)},mustExec:!0}),!0}dragSelectedEditors(t,e){if(this.#p)for(const s of this.#p.keys())s.drag(t,e)}rebuild(t){if(t.parent===null){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#v.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return this.#e===t}getActive(){return this.#e}getMode(){return this.#C}isEditingMode(){return this.#C!==L.NONE}get imageManager(){return D(this,"imageManager",new Xs)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let l=0,h=e.rangeCount;l({x:(h-i)/r,y:1-(l+c-s)/n,width:u/r,height:c/n});break;case"180":a=(l,h,c,u)=>({x:1-(l+c-s)/n,y:1-(h+u-i)/r,width:c/n,height:u/r});break;case"270":a=(l,h,c,u)=>({x:1-(h+u-i)/r,y:(l-s)/n,width:u/r,height:c/n});break;default:a=(l,h,c,u)=>({x:(l-s)/n,y:(h-i)/r,width:c/n,height:u/r});break}const o=[];for(let l=0,h=e.rangeCount;ln.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),this.#l._uiManager.editAltText(this.#l),this.#d&&this.#l._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:this.#g}})};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#r=!0,i(n))},{signal:s}),await this.#m(),t}get#g(){return this.#t&&"added"||this.#t===null&&this.guessedText&&"review"||"missing"}finish(){this.#s&&(this.#s.focus({focusVisible:this.#r}),this.#r=!1)}isEmpty(){return this.#d?this.#t===null:!this.#t&&!this.#e}hasData(){return this.#d?this.#t!==null||!!this.#h:this.isEmpty()}get guessedText(){return this.#h}async setGuessedText(t){this.#t===null&&(this.#h=t,this.#u=await Ft._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:t}),this.#m())}toggleAltTextBadge(t=!1){if(!this.#d||this.#t){this.#o?.remove(),this.#o=null;return}if(!this.#o){const e=this.#o=document.createElement("div");e.className="noAltTextBadge",this.#l.div.append(e)}this.#o.classList.toggle("hidden",!t)}serialize(t){let e=this.#t;return!t&&this.#h===e&&(e=this.#u),{altText:e,decorative:this.#e,guessedText:this.#h,textWithDisclaimer:this.#u}}get data(){return{altText:this.#t,decorative:this.#e}}set data({altText:t,decorative:e,guessedText:s,textWithDisclaimer:i,cancel:n=!1}){s&&(this.#h=s,this.#u=i),!(this.#t===t&&this.#e===e)&&(n||(this.#t=t,this.#e=e),this.#m())}toggle(t=!1){this.#s&&(!t&&this.#a&&(clearTimeout(this.#a),this.#a=null),this.#s.disabled=!t)}shown(){this.#l._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:this.#g}})}destroy(){this.#s?.remove(),this.#s=null,this.#i=null,this.#n=null,this.#o?.remove(),this.#o=null}async#m(){const t=this.#s;if(!t)return;if(this.#d){if(t.classList.toggle("done",!!this.#t),t.setAttribute("data-l10n-id",Ft.#f[this.#g]),this.#i?.setAttribute("data-l10n-id",Ft.#f[`${this.#g}-label`]),!this.#t){this.#n?.remove();return}}else{if(!this.#t&&!this.#e){t.classList.remove("done"),this.#n?.remove();return}t.classList.add("done"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let e=this.#n;if(!e){this.#n=e=document.createElement("span"),e.className="tooltip",e.setAttribute("role","tooltip"),e.id=`alt-text-tooltip-${this.#l.id}`;const i=100,n=this.#l._uiManager._signal;n.addEventListener("abort",()=>{clearTimeout(this.#a),this.#a=null},{once:!0}),t.addEventListener("mouseenter",()=>{this.#a=setTimeout(()=>{this.#a=null,this.#n.classList.add("show"),this.#l._reportTelemetry({action:"alt_text_tooltip"})},i)},{signal:n}),t.addEventListener("mouseleave",()=>{this.#a&&(clearTimeout(this.#a),this.#a=null),this.#n?.classList.remove("show")},{signal:n})}this.#e?e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(e.removeAttribute("data-l10n-id"),e.textContent=this.#t),e.parentNode||t.append(e),this.#l.getElementForAltText()?.setAttribute("aria-describedby",e.id)}}class Re{#t=null;#e=null;#s=!1;#i=null;#n=null;#a=null;#r=null;#o=null;#l=!1;#h=null;constructor(t){this.#i=t}renderForToolbar(){const t=this.#e=document.createElement("button");return t.className="comment",this.#u(t,!1)}renderForStandalone(){const t=this.#t=document.createElement("button");t.className="annotationCommentButton";const e=this.#i.commentButtonPosition;if(e){const{style:s}=t;s.insetInlineEnd=`calc(${100*(this.#i._uiManager.direction==="ltr"?1-e[0]:e[0])}% - var(--comment-button-dim))`,s.top=`calc(${100*e[1]}% - var(--comment-button-dim))`;const i=this.#i.commentButtonColor;i&&(s.backgroundColor=i)}return this.#u(t,!0)}focusButton(){setTimeout(()=>{(this.#t??this.#e)?.focus()},0)}onUpdatedColor(){if(!this.#t)return;const t=this.#i.commentButtonColor;t&&(this.#t.style.backgroundColor=t),this.#i._uiManager.updatePopupColor(this.#i)}get commentButtonWidth(){return(this.#t?.getBoundingClientRect().width??0)/this.#i.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#h)return this.#h;if(!this.#t)return null;const{x:t,y:e,height:s}=this.#t.getBoundingClientRect(),{x:i,y:n,width:r,height:a}=this.#i.parent.boundingClientRect;return[(t-i)/r,(e+s-n)/a]}set commentPopupPositionInLayer(t){this.#h=t}hasDefaultPopupPosition(){return this.#h===null}removeStandaloneCommentButton(){this.#t?.remove(),this.#t=null}removeToolbarCommentButton(){this.#e?.remove(),this.#e=null}setCommentButtonStates({selected:t,hasPopup:e}){this.#t&&(this.#t.classList.toggle("selected",t),this.#t.ariaExpanded=e)}#u(t,e){if(!this.#i._uiManager.hasCommentManager())return null;t.tabIndex="0",t.ariaHasPopup="dialog",e?(t.ariaControls="commentPopup",t.setAttribute("data-l10n-id","pdfjs-show-comment-button")):(t.ariaControlsElements=[this.#i._uiManager.getCommentDialogElement()],t.setAttribute("data-l10n-id","pdfjs-editor-add-comment-button"));const s=this.#i._uiManager._signal;if(!(s instanceof AbortSignal)||s.aborted)return t;t.addEventListener("contextmenu",Ct,{signal:s}),e&&(t.addEventListener("focusin",n=>{this.#i._focusEventsAllowed=!1,nt(n)},{capture:!0,signal:s}),t.addEventListener("focusout",n=>{this.#i._focusEventsAllowed=!0,nt(n)},{capture:!0,signal:s})),t.addEventListener("pointerdown",n=>n.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),t===this.#e?this.edit():this.#i.toggleComment(!0)};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#s=!0,i(n))},{signal:s}),t.addEventListener("pointerenter",()=>{this.#i.toggleComment(!1,!0)},{signal:s}),t.addEventListener("pointerleave",()=>{this.#i.toggleComment(!1,!1)},{signal:s}),t}edit(t){const e=this.commentPopupPositionInLayer;let s,i;if(e)[s,i]=e;else{[s,i]=this.#i.commentButtonPosition;const{width:h,height:c,x:u,y:f}=this.#i;s=u+s*h,i=f+i*c}const n=this.#i.parent.boundingClientRect,{x:r,y:a,width:o,height:l}=n;this.#i._uiManager.editComment(this.#i,r+s*o,a+i*l,{...t,parentDimensions:n})}finish(){this.#e&&(this.#e.focus({focusVisible:this.#s}),this.#s=!1)}isDeleted(){return this.#l||this.#r===""}isEmpty(){return this.#r===null}hasBeenEdited(){return this.isDeleted()||this.#r!==this.#n}serialize(){return this.data}get data(){return{text:this.#r,richText:this.#a,date:this.#o,deleted:this.isDeleted()}}set data(t){if(t!==this.#r&&(this.#a=null),t===null){this.#r="",this.#l=!0;return}this.#r=t,this.#o=new Date,this.#l=!1}restoreData({text:t,richText:e,date:s}){this.#r=t,this.#a=e,this.#o=s,this.#l=!1}setInitialText(t,e=null){this.#n=t,this.data=t,this.#o=null,this.#a=e}shown(){}destroy(){this.#e?.remove(),this.#e=null,this.#t?.remove(),this.#t=null,this.#r="",this.#a=null,this.#o=null,this.#i=null,this.#s=!1,this.#l=!1}}function Ai(d){d.preventDefault()}const wi=1e-4;function vs(d){return d.cancelable?(nt(d),!0):(d.stopPropagation(),!1)}class nn{#t;#e=!1;#s=null;#i;#n;#a;#r;#o;#l=!1;#h=null;#u;#d=new Set;#f=null;#g;#m=null;#c=0;constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:s=null,onPinchStart:i=null,onPinching:n=null,onPinchEnd:r=null,onPanning:a=null,signal:o}){this.#t=t,this.#s=s,this.#i=e,this.#n=i,this.#a=n,this.#r=r,this.#o=a,this.#g=new AbortController,this.#u=AbortSignal.any([o,this.#g.signal]),t.addEventListener("touchstart",this.#p.bind(this),{passive:!1,signal:this.#u})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Tt.pixelRatio}get MIN_TOUCH_DISTANCE_TO_SCALE(){return 4/Tt.pixelRatio}#p(t){if(this.#i?.())return;this.#y(t);const e=this.#d;for(const{identifier:s}of t.changedTouches)e.add(s);if(e.size===1){this.#b();return}if(!this.#m){this.#m=new AbortController;const s=AbortSignal.any([this.#u,this.#m.signal]),i=this.#t,n={signal:s,capture:!1,passive:!1};i.addEventListener("touchmove",this.#_.bind(this),n);const r=this.#S.bind(this);i.addEventListener("touchend",r,n),i.addEventListener("touchcancel",r,n),n.capture=!0,i.addEventListener("pointerdown",nt,n),i.addEventListener("pointermove",nt,n),i.addEventListener("pointercancel",Ai,n),i.addEventListener("pointerup",Ai,n),this.#n?.()}this.#l=vs(t),this.#w(t)}#b(){if(this.#h)return;const t=this.#h=new AbortController,e=AbortSignal.any([this.#u,t.signal]),s=this.#t,i={capture:!0,signal:e,passive:!1},n=r=>{r.pointerType==="touch"&&(this.#h?.abort(),this.#h=null)};s.addEventListener("pointerdown",r=>{r.pointerType==="touch"&&(nt(r),n(r))},i),s.addEventListener("pointerup",n,i),s.addEventListener("pointercancel",n,i)}#y(t){const e=this.#d;if(e.size===0)return;const s=this.#d=new Set;for(const{identifier:i}of t.touches)e.has(i)&&s.add(i)}#A(t){const e=this.#d,s=[];for(const i of t.touches)e.has(i.identifier)&&s.push(i);return s}#w(t){const e=this.#A(t);if(e.length!==2||this.#s?.()){this.#f=null;return}const[s,i]=e;this.#f={touch0X:s.screenX,touch0Y:s.screenY,touch1X:i.screenX,touch1Y:i.screenY,panX:(s.clientX+i.clientX)/2,panY:(s.clientY+i.clientY)/2,screenPanX:(s.screenX+i.screenX)/2,screenPanY:(s.screenY+i.screenY)/2}}#_(t){if(!this.#f)return;const e=this.#A(t);if(e.length!==2)return;const s=this.#l;if(this.#l=vs(t),!this.#l)return;if(!s){this.#w(t);return}const[i,n]=e,{screenX:r,screenY:a}=i,{screenX:o,screenY:l}=n,h=this.#f,{touch0X:c,touch0Y:u,touch1X:f,touch1Y:p,panX:g,panY:m}=h,b=f-c,y=p-u,A=o-r,v=l-a,w=(i.clientX+n.clientX)/2,S=(i.clientY+n.clientY)/2;h.panX=w,h.panY=S;const _=w-g,E=S-m,C=(r+o)/2,k=(a+l)/2,P=Math.hypot(C-h.screenPanX,k-h.screenPanY);h.screenPanX=C,h.screenPanY=k;const I=Math.hypot(A,v),B=Math.hypot(b,y),H=this.#e?this.MIN_TOUCH_DISTANCE_TO_SCALE:this.MIN_TOUCH_DISTANCE_TO_PINCH+2*P;if(I=2){this.#w(t);return}const e=!!this.#f;this.#E(),this.#d.size===1&&this.#b(),e&&vs(t)}#E(){this.#f=null,this.#e=!1,this.#c=0,this.#l=!1,this.#m&&(this.#m.abort(),this.#m=null,this.#r?.())}destroy(){this.#E(),this.#d.clear(),this.#g?.abort(),this.#g=null,this.#h?.abort(),this.#h=null}}class M{#t=null;#e=null;#s=null;#i=null;#n=null;#a=!1;#r=null;#o="";#l=null;#h=null;#u=null;#d=null;#f=null;#g="";#m=!1;#c=null;#p=!1;#b=!1;#y=!1;#A=null;#w=0;#_=0;#S=null;#E=null;isSelected=!1;_isCopy=!1;_editToolbar=null;_initialOptions=Object.create(null);_initialData=null;_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;static _l10n=null;static _l10nAlert=null;static _l10nResizer=null;#x=!1;#M=M._zIndex++;static _borderLineWidth=-1;static _colorManager=new Ys;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){const t=M.prototype._resizeWithKeyboard,e=Gt.TRANSLATE_SMALL,s=Gt.TRANSLATE_BIG;return D(this,"_resizerKeyboardManager",new bt([[["ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-s,0]}],[["ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[s,0]}],[["ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-s]}],[["ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,s]}],[["Escape"],M.prototype._stopResizingWithKeyboard]]))}constructor(t){this.parent=t.parent,this.id=t.id,this.width=this.height=null,this.pageIndex=t.parent.pageIndex,this.name=t.name,this.div=null,this._uiManager=t.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=t.isCentered,this._structTreeParentId=null,this.annotationElementId=t.annotationElementId||null,this.creationDate=t.creationDate||new Date,this.modificationDate=t.modificationDate||null,this.canAddComment=!0;const{rotation:e,rawDims:{pageWidth:s,pageHeight:i,pageX:n,pageY:r}}=this.parent.viewport;this.rotation=e,this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[s,i],this.pageTranslation=[n,r];const[a,o]=this.parentDimensions;this.x=t.x/a,this.y=t.y/o,this.isAttachedToDOM=!1,this.deleted=!1}updatePageIndex(t){this.pageIndex=t}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return D(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new or({id:t._uiManager.getId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(t,e){if(M._l10n??=t,M._l10nAlert??=Object.freeze({highlight:"pdfjs-editor-highlight-added-alert",freetext:"pdfjs-editor-freetext-added-alert",ink:"pdfjs-editor-ink-added-alert",stamp:"pdfjs-editor-stamp-added-alert",signature:"pdfjs-editor-signature-added-alert"}),M._l10nResizer??=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"}),M._borderLineWidth!==-1)return;const s=getComputedStyle(document.documentElement);M._borderLineWidth=parseFloat(s.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){G("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#x}set _isDraggable(t){this.#x=t,this.div?.classList.toggle("draggable",t)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(t*2),this.y+=this.width*t/(e*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(t*2),this.y-=this.width*t/(e*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#M}setParent(t){t!==null?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):(this.#R(),this.#d?.remove(),this.#d=null),this.parent=t}focusin(t){this._focusEventsAllowed&&(this.#m?this.#m=!1:this.parent.setSelected(this))}focusout(t){!this._focusEventsAllowed||!this.isAttachedToDOM||t.relatedTarget?.closest(`#${this.id}`)||(t.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,s,i){const[n,r]=this.parentDimensions;[s,i]=this.screenToPageTranslation(s,i),this.x=(t+s)/n,this.y=(e+i)/r,this.fixAndSetPosition()}_moveAfterPaste(t,e){if(this.isClone){delete this.isClone;return}const[s,i]=this.parentDimensions;this.setAt(t*s,e*i,this.width*s,this.height*i),this._onTranslated()}#k([t,e],s,i){[s,i]=this.screenToPageTranslation(s,i),this.x+=s/t,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()}translate(t,e){this.#k(this.parentDimensions,t,e)}translateInPage(t,e){this.#c||=[this.x,this.y,this.width,this.height],this.#k(this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(t,e){this.#c||=[this.x,this.y,this.width,this.height];const{div:s,parentDimensions:[i,n]}=this;if(this.x+=t/i,this.y+=e/n,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:c,y:u}=this.div.getBoundingClientRect();this.parent.findNewParent(this,c,u)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:r,y:a}=this;const[o,l]=this.getBaseTranslation();r+=o,a+=l;const{style:h}=s;h.left=`${(100*r).toFixed(2)}%`,h.top=`${(100*a).toFixed(2)}%`,this._onTranslating(r,a)}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!this.#c&&(this.#c[0]!==this.x||this.#c[1]!==this.y)}get _hasBeenResized(){return!!this.#c&&(this.#c[2]!==this.width||this.#c[3]!==this.height)}getBaseTranslation(){const[t,e]=this.parentDimensions,{_borderLineWidth:s}=M,i=s/t,n=s/e;switch(this.rotation){case 90:return[-i,n];case 180:return[i,n];case 270:return[i,-n];default:return[-i,-n]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[s,i]}=this;let{x:n,y:r,width:a,height:o}=this;if(a*=s,o*=i,n*=s,r*=i,this._mustFixPosition)switch(t){case 0:n=X(n,0,s-a),r=X(r,0,i-o);break;case 90:n=X(n,0,s-o),r=X(r,a,i);break;case 180:n=X(n,a,s),r=X(r,o,i);break;case 270:n=X(n,o,s),r=X(r,0,i-a);break}this.x=n/=s,this.y=r/=i;const[l,h]=this.getBaseTranslation();n+=l,r+=h,e.left=`${(100*n).toFixed(2)}%`,e.top=`${(100*r).toFixed(2)}%`,this.moveInDOM()}static#T(t,e,s){switch(s){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}screenToPageTranslation(t,e){return M.#T(t,e,this.parentRotation)}pageTranslationToScreen(t,e){return M.#T(t,e,360-this.parentRotation)}#D(t){switch(t){case 90:{const[e,s]=this.pageDimensions;return[0,-e/s,s/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,s]=this.pageDimensions;return[0,e/s,-s/e,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,s]}=this;return[e*t,s*t]}setDims(){const{div:{style:t},width:e,height:s}=this;t.width=`${(100*e).toFixed(2)}%`,t.height=`${(100*s).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#I(){if(this.#l)return;this.#l=document.createElement("div"),this.#l.classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const s of t){const i=document.createElement("div");this.#l.append(i),i.classList.add("resizer",s),i.setAttribute("data-resizer-name",s),i.addEventListener("pointerdown",this.#O.bind(this,s),{signal:e}),i.addEventListener("contextmenu",Ct,{signal:e}),i.tabIndex=-1}this.div.prepend(this.#l)}#O(t,e){e.preventDefault();const{isMac:s}=j.platform;if(e.button!==0||e.ctrlKey&&s)return;this.#s?.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,this.#h=[e.screenX,e.screenY];const n=new AbortController,r=this._uiManager.combinedSignal(n);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",this.#L.bind(this,t),{passive:!0,capture:!0,signal:r}),window.addEventListener("touchmove",nt,{passive:!1,signal:r}),window.addEventListener("contextmenu",Ct,{signal:r}),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const a=this.parent.div.style.cursor,o=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const l=()=>{n.abort(),this.parent.togglePointerEvents(!0),this.#s?.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=a,this.div.style.cursor=o,this.#F()};window.addEventListener("pointerup",l,{signal:r}),window.addEventListener("blur",l,{signal:r})}#H(t,e,s,i){this.width=s,this.height=i,this.x=t,this.y=e,this.setDims(),this.fixAndSetPosition(),this._onResized()}_onResized(){}#F(){if(!this.#u)return;const{savedX:t,savedY:e,savedWidth:s,savedHeight:i}=this.#u;this.#u=null;const n=this.x,r=this.y,a=this.width,o=this.height;n===t&&r===e&&a===s&&o===i||this.addCommands({cmd:this.#H.bind(this,n,r,a,o),undo:this.#H.bind(this,t,e,s,i),mustExec:!0})}static _round(t){return Math.round(t*1e4)/1e4}#L(t,e){const[s,i]=this.parentDimensions,n=this.x,r=this.y,a=this.width,o=this.height,l=M.MIN_SIZE/s,h=M.MIN_SIZE/i,c=this.#D(this.rotation),u=(O,F)=>[c[0]*O+c[2]*F,c[1]*O+c[3]*F],f=this.#D(360-this.rotation),p=(O,F)=>[f[0]*O+f[2]*F,f[1]*O+f[3]*F];let g,m,b=!1,y=!1;switch(t){case"topLeft":b=!0,g=(O,F)=>[0,0],m=(O,F)=>[O,F];break;case"topMiddle":g=(O,F)=>[O/2,0],m=(O,F)=>[O/2,F];break;case"topRight":b=!0,g=(O,F)=>[O,0],m=(O,F)=>[0,F];break;case"middleRight":y=!0,g=(O,F)=>[O,F/2],m=(O,F)=>[0,F/2];break;case"bottomRight":b=!0,g=(O,F)=>[O,F],m=(O,F)=>[0,0];break;case"bottomMiddle":g=(O,F)=>[O/2,F],m=(O,F)=>[O/2,0];break;case"bottomLeft":b=!0,g=(O,F)=>[0,F],m=(O,F)=>[O,0];break;case"middleLeft":y=!0,g=(O,F)=>[0,F/2],m=(O,F)=>[O,F/2];break}const A=g(a,o),v=m(a,o);let w=u(...v);const S=M._round(n+w[0]),_=M._round(r+w[1]);let E=1,C=1,k,P;if(e.fromKeyboard)({deltaX:k,deltaY:P}=e);else{const{screenX:O,screenY:F}=e,[ot,lt]=this.#h;[k,P]=this.screenToPageTranslation(O-ot,F-lt),this.#h[0]=O,this.#h[1]=F}if([k,P]=p(k/s,P/i),b){const O=Math.hypot(a,o);E=C=Math.max(Math.min(Math.hypot(v[0]-A[0]-k,v[1]-A[1]-P)/O,1/a,1/o),l/a,h/o)}else y?E=X(Math.abs(v[0]-A[0]-k),l,1)/a:C=X(Math.abs(v[1]-A[1]-P),h,1)/o;const I=M._round(a*E),B=M._round(o*C);w=u(...m(I,B));const H=S-w[0],Y=_-w[1];this.#c||=[this.x,this.y,this.width,this.height],this.width=I,this.height=B,this.x=H,this.y=Y,this.setDims(),this.fixAndSetPosition(),this._onResizing()}_onResizing(){}altTextFinish(){this.#s?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#b)return this._editToolbar;this._editToolbar=new Se(this),this.div.append(this._editToolbar.render());const{toolbarButtons:t}=this;if(t)for(const[e,s]of t)await this._editToolbar.addButton(e,s);return this.hasComment||this._editToolbar.addButton("comment",this.addCommentButton()),this._editToolbar.addButton("delete"),this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore("comment",this.addCommentButton(),".deleteButton")}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton("comment")}removeEditToolbar(){this._editToolbar?.remove(),this._editToolbar=null,this.#s?.destroy()}addContainer(t){const e=this._editToolbar?.div;e?e.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return this.#s||(Ft.initialize(M._l10n),this.#s=new Ft(this),this.#t&&(this.#s.data=this.#t,this.#t=null)),this.#s}get altTextData(){return this.#s?.data}set altTextData(t){this.#s&&(this.#s.data=t)}get guessedAltText(){return this.#s?.guessedText}async setGuessedAltText(t){await this.#s?.setGuessedText(t)}serializeAltText(t){return this.#s?.serialize(t)}hasAltText(){return!!this.#s&&!this.#s.isEmpty()}hasAltTextData(){return this.#s?.hasData()??!1}focusCommentButton(){this.#i?.focusButton()}addCommentButton(){return this.canAddComment?this.#i||=new Re(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(this.#n){this._uiManager.isEditingMode()&&this.#n.classList.remove("hidden");return}this.hasComment&&(this.#n=this.#i.renderForStandalone(),this.div.append(this.#n))}}removeStandaloneCommentButton(){this.#i.removeStandaloneCommentButton(),this.#n=null}hideStandaloneCommentButton(){this.#n?.classList.add("hidden")}get comment(){if(!this.#i)return null;const{data:{richText:t,text:e,date:s,deleted:i}}=this.#i;return{text:e,richText:t,date:s,deleted:i,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(t){this.#i||=new Re(this),typeof t=="object"&&t!==null?this.#i.restoreData(t):this.#i.data=t,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:t,popupRef:e,richText:s}){if(!e||(this.#i||=new Re(this),this.#i.setInitialText(t,s),!this.annotationElementId))return;const i=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);i&&this.updateFromAnnotationLayer(i)}get hasEditedComment(){return this.#i?.hasBeenEdited()}get hasDeletedComment(){return this.#i?.isDeleted()}get hasComment(){return!!this.#i&&!this.#i.isEmpty()&&!this.#i.isDeleted()}async editComment(t){this.#i||=new Re(this),this.#i.edit(t)}toggleComment(t,e=void 0){this.hasComment&&this._uiManager.toggleComment(this,t,e)}setSelectedCommentButton(t){this.#i.setSelectedButton(t)}addComment(t){if(this.hasEditedComment){const[,,,i]=t.rect,[n]=this.pageDimensions,[r]=this.pageTranslation,a=r+n+1,o=i-100,l=a+180;t.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[a,o,l,i]}}}updateFromAnnotationLayer({popup:{contents:t,deleted:e}}){this.#i.data=e?null:t}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){const t=this.div=document.createElement("div");t.setAttribute("data-editor-rotation",(360-this.rotation)%360),t.className=this.name,t.setAttribute("id",this.id),t.tabIndex=this.#a?-1:0,t.setAttribute("role","application"),this.defaultL10nId&&t.setAttribute("data-l10n-id",this.defaultL10nId),this._isVisible||t.classList.add("hidden"),this.setInForeground(),this.#B();const[e,s]=this.parentDimensions;this.parentRotation%180!==0&&(t.style.maxWidth=`${(100*s/e).toFixed(2)}%`,t.style.maxHeight=`${(100*e/s).toFixed(2)}%`);const[i,n]=this.getInitialTranslation();return this.translate(i,n),sn(this,t,["keydown","pointerdown","dblclick"]),this.#G(),this.addStandaloneCommentButton(),this._uiManager._editorUndoBar?.hide(),t}#j(){this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height},this.#s?.toggle(!1),this.parent.togglePointerEvents(!1)}#N(t,e,s){let n=.7*(s/e)+1-.7;if(n===1)return;const r=this.#D(this.rotation),a=(S,_)=>[r[0]*S+r[2]*_,r[1]*S+r[3]*_],[o,l]=this.parentDimensions,h=this.x,c=this.y,u=this.width,f=this.height,p=M.MIN_SIZE/o,g=M.MIN_SIZE/l;n=Math.max(Math.min(n,1/u,1/f),p/u,g/f);const m=M._round(u*n),b=M._round(f*n);if(m===u&&b===f)return;this.#c||=[h,c,u,f];const y=a(u/2,f/2),A=M._round(h+y[0]),v=M._round(c+y[1]),w=a(m/2,b/2);this.x=A-w[0],this.y=v-w[1],this.width=m,this.height=b,this.setDims(),this.fixAndSetPosition(),this._onResizing()}#$(){this.#s?.toggle(!0),this.parent.togglePointerEvents(!0),this.#F()}pointerdown(t){const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e){t.preventDefault();return}if(this.#m=!0,this._isDraggable){this.#v(t);return}this.#C(t)}#C(t){const{isMac:e}=j.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)}#v(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let s=!1;const i=new AbortController,n=this._uiManager.combinedSignal(i),r={capture:!0,passive:!1,signal:n},a=l=>{i.abort(),this.#r=null,this.#m=!1,this._uiManager.endDragSession()||this.#C(l),s&&this._onStopDragging()};e&&(this.#w=t.clientX,this.#_=t.clientY,this.#r=t.pointerId,this.#o=t.pointerType,window.addEventListener("pointermove",l=>{s||(s=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());const{clientX:h,clientY:c,pointerId:u}=l;if(u!==this.#r){nt(l);return}const[f,p]=this.screenToPageTranslation(h-this.#w,c-this.#_);this.#w=h,this.#_=c,this._uiManager.dragSelectedEditors(f,p),this.div.scrollIntoView({block:"nearest"})},r),window.addEventListener("touchmove",nt,r),window.addEventListener("pointerdown",l=>{l.pointerType===this.#o&&(this.#E||l.isPrimary)&&a(l),nt(l)},r));const o=l=>{if(!this.#r||this.#r===l.pointerId){a(l);return}nt(l)};window.addEventListener("pointerup",o,{signal:n}),window.addEventListener("blur",o,{signal:n})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#A&&clearTimeout(this.#A),this.#A=setTimeout(()=>{this.#A=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(t,e,s){t.changeParent(this),this.x=e,this.y=s,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,s=this.rotation){const i=this.parentScale,[n,r]=this.pageDimensions,[a,o]=this.pageTranslation,l=t/i,h=e/i,c=this.x*n,u=this.y*r,f=this.width*n,p=this.height*r;switch(s){case 0:return[c+l+a,r-u-h-p+o,c+l+f+a,r-u-h+o];case 90:return[c+h+a,r-u+l+o,c+h+p+a,r-u+l+f+o];case 180:return[c-l-f+a,r-u+h+o,c-l+a,r-u+h+p+o];case 270:return[c-h-p+a,r-u-l-f+o,c-h+a,r-u-l+o];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[s,i,n,r]=t,a=n-s,o=r-i;switch(this.rotation){case 0:return[s,e-r,a,o];case 90:return[s,e-i,o,a];case 180:return[n,e-i,a,o];case 270:return[n,e-r,o,a];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&M._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#i?.onUpdatedColor()}getData(){const{comment:{text:t,color:e,date:s,opacity:i,deleted:n,richText:r},uid:a,pageIndex:o,creationDate:l,modificationDate:h}=this;return{id:a,pageIndex:o,rect:this.getPDFRect(),richText:r,contentsObj:{str:t},creationDate:l,modificationDate:s||h,popupRef:!n,color:e,opacity:i}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),this.#b=!0,!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),this.#b=!1,!0):!1}isInEditMode(){return this.#b}shouldGetKeyboardEvents(){return this.#y}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:s,right:i}=this.getClientDimensions(),{innerHeight:n,innerWidth:r}=window;return e0&&t0}#B(){if(this.#f||!this.div)return;this.#f=new AbortController;const t=this._uiManager.combinedSignal(this.#f);this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})}#G(){this.#E||!this.div||!this.isResizable||!this._uiManager._supportsPinchToZoom||(this.#E=new nn({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#j.bind(this),onPinching:this.#N.bind(this),onPinchEnd:this.#$.bind(this),signal:this._uiManager._signal}))}rebuild(){this.#B(),this.#G()}rotate(t){}resize(){}serializeDeleted(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:this._initialData?.popupRef||""}}serialize(t=!1,e=null){return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:this._initialData?.popupRef||""}}static async deserialize(t,e,s){const i=new this.prototype.constructor({parent:e,id:s.getId(),uiManager:s,annotationElementId:t.annotationElementId,creationDate:t.creationDate,modificationDate:t.modificationDate});i.rotation=t.rotation,i.#t=t.accessibilityData,i._isCopy=t.isCopy||!1;const[n,r]=i.pageDimensions,[a,o,l,h]=i.getRectInCurrentCoords(t.rect,r);return i.x=a/n,i.y=o/r,i.width=l/n,i.height=h/r,i}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.#f?.abort(),this.#f=null,this.isEmpty()||this.commit(),this.#E?.destroy(),this.#E=null,this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),this.#A&&(clearTimeout(this.#A),this.#A=null),this.#R(),this.removeEditToolbar(),this.#S){for(const t of this.#S.values())clearTimeout(t);this.#S=null}this.parent=null,this.#d?.remove(),this.#d=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#I(),this.#l.classList.remove("hidden"))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction==="ltr"?[1,0]:[0,0]}get commentButtonPositionInPage(){const{commentButtonPosition:[t,e]}=this,[s,i,n,r]=this.getPDFRect();return[M._round(s+(n-s)*t),M._round(i+(r-i)*(1-e))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#i.commentPopupPositionInLayer}set commentPopupPosition(t){this.#i.commentPopupPositionInLayer=t}hasDefaultPopupPosition(){return this.#i.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#i.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(t){this.#i?.setCommentButtonStates(t)}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!=="Enter")return;this._uiManager.setSelected(this),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const e=this.#l.children;if(!this.#e){this.#e=Array.from(e);const r=this.#V.bind(this),a=this.#K.bind(this),o=this._uiManager._signal;for(const l of this.#e){const h=l.getAttribute("data-resizer-name");l.setAttribute("role","spinbutton"),l.addEventListener("keydown",r,{signal:o}),l.addEventListener("blur",a,{signal:o}),l.addEventListener("focus",this.#Y.bind(this,h),{signal:o}),l.setAttribute("data-l10n-id",M._l10nResizer[h])}}const s=this.#e[0];let i=0;for(const r of e){if(r===s)break;i++}const n=(360-this.rotation+this.parentRotation)%360/90*(this.#e.length/4);if(n!==i){if(ni)for(let a=0;a{this.div?.classList.contains("selectedEditor")&&this._editToolbar?.show()});return}this._editToolbar?.show(),this.#s?.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){this.isSelected&&(this.isSelected=!1,this.#l?.classList.add("hidden"),this.div?.classList.remove("selectedEditor"),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this._editToolbar?.hide(),this.#s?.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(t,e){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(t){t.target.nodeName!=="BUTTON"&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return this.#p}set isEditing(t){this.#p=t,this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(t,e=!1){if(e){this.#S||=new Map;const{action:s}=t;let i=this.#S.get(s);i&&clearTimeout(i),i=setTimeout(()=>{this._reportTelemetry(t),this.#S.delete(s),this.#S.size===0&&(this.#S=null)},M._telemetryTimeout),this.#S.set(s,i);return}t.type||=this.editorType,this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:t}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),this.#a=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#a=!0}updateFakeAnnotationElement(t){if(!this.#d&&!this.deleted){this.#d=t.addFakeAnnotation(this);return}if(this.deleted){this.#d.remove(),this.#d=null;return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#d.updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;let e=t.container.querySelector(".annotationContent");if(!e)e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);else if(e.nodeName==="CANVAS"){const s=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),s.before(e)}return e}resetAnnotationElement(t){const{firstElementChild:e}=t.container;e?.nodeName==="DIV"&&e.classList.contains("annotationContent")&&e.remove()}}class or extends M{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const vi=3285377520,At=4294901760,It=65535;class Fs{constructor(t){this.h1=t?t&4294967295:vi,this.h2=t?t&4294967295:vi}update(t){let e,s;if(typeof t=="string"){e=new Uint8Array(t.length*2),s=0;for(let g=0,m=t.length;g>>8,e[s++]=b&255)}}else if(ArrayBuffer.isView(t))e=t.slice(),s=e.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const i=s>>2,n=s-i*4,r=new Uint32Array(e.buffer,0,i);let a=0,o=0,l=this.h1,h=this.h2;const c=3432918353,u=461845907,f=c&It,p=u&It;for(let g=0;g>>17,a=a*u&At|a*p&It,l^=a,l=l<<13|l>>>19,l=l*5+3864292196):(o=r[g],o=o*c&At|o*f&It,o=o<<15|o>>>17,o=o*u&At|o*p&It,h^=o,h=h<<13|h>>>19,h=h*5+3864292196);switch(a=0,n){case 3:a^=e[i*4+2]<<16;case 2:a^=e[i*4+1]<<8;case 1:a^=e[i*4],a=a*c&At|a*f&It,a=a<<15|a>>>17,a=a*u&At|a*p&It,i&1?l^=a:h^=a}this.h1=l,this.h2=h}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=t*3981806797&At|t*36045&It,e=e*4283543511&At|((e<<16|t>>>16)*2950163797&At)>>>16,t^=e>>>1,t=t*444984403&At|t*60499&It,e=e*3301882366&At|((e<<16|t>>>16)*3120437893&At)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const Ce=Object.freeze({map:null,hash:"",transfer:void 0});class qs{#t=!1;#e=null;#s=null;#i=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(t,e){const s=this.#i.get(t);return s===void 0?e:Object.assign(e,s)}getRawValue(t){return this.#i.get(t)}remove(t){const e=this.#i.get(t);e!==void 0&&(e instanceof M&&this.#s.delete(e.annotationElementId),this.#i.delete(t),this.#i.size===0&&this.resetModified(),!this.#i.values().some(s=>s instanceof M)&&this.onAnnotationEditor?.(null))}setValue(t,e){const s=this.#i.get(t);let i=!1;if(s!==void 0)for(const[n,r]of Object.entries(e))s[n]!==r&&(i=!0,s[n]=r);else i=!0,this.#i.set(t,e);i&&this.#n(),e instanceof M&&((this.#s||=new Map).set(e.annotationElementId,e),this.onAnnotationEditor?.(e.constructor._type))}has(t){return this.#i.has(t)}get size(){return this.#i.size}#n(){this.#t||(this.#t=!0,this.onSetModified?.())}resetModified(){this.#t&&(this.#t=!1,this.onResetModified?.())}get print(){return new rn(this)}get serializable(){if(this.#i.size===0)return Ce;const t=new Map,e=new Fs,s=[],i=Object.create(null);let n=!1;for(const[r,a]of this.#i){const o=a instanceof M?a.serialize(!1,i):a;a.page&&(a.pageIndex=a.page._pageIndex,delete a.page),o&&(t.set(r,o),e.update(`${r}:${JSON.stringify(o)}`),n||=!!o.bitmap)}if(n)for(const r of t.values())r.bitmap&&s.push(r.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:s}:Ce}get editorStats(){let t=null;const e=new Map;let s=0,i=0;for(const n of this.#i.values()){if(!(n instanceof M)){n.popup&&(n.popup.deleted?i+=1:s+=1);continue}n.isCommentDeleted?i+=1:n.hasEditedComment&&(s+=1);const r=n.telemetryFinalData;if(!r)continue;const{type:a}=r;e.getOrInsertComputed(a,()=>Object.getPrototypeOf(n).constructor),t||=Object.create(null);const o=t[a]||=new Map;for(const[l,h]of Object.entries(r)){if(l==="type")continue;const c=o.getOrInsertComputed(l,zs);c.set(h,(c.get(h)??0)+1)}}if((i>0||s>0)&&(t||=Object.create(null),t.comments={deleted:i,edited:s}),!t)return null;for(const[n,r]of e)t[n]=r.computeTelemetryFinalData(t[n]);return t}resetModifiedIds(){this.#e=null}updateEditor(t,e){const s=this.#s?.get(t);return s?(s.updateFromAnnotationLayer(e),!0):!1}getEditor(t){return this.#s?.get(t)||null}get modifiedIds(){if(this.#e)return this.#e;const t=[];if(this.#s)for(const s of this.#s.values())s.serialize()&&t.push(s.annotationElementId);let e="";if(t.length){const s=new Fs;s.update(t.join(",")),e=s.hexdigest()}return this.#e={ids:new Set(t),hash:e}}[Symbol.iterator](){return this.#i.entries()}}class rn extends qs{#t=Ce;constructor(t){super();const{serializable:e}=t;if(e===Ce)return;const{map:s,hash:i,transfer:n}=e,r=structuredClone(s,n?{transfer:n}:null);this.#t={map:r,hash:i,transfer:[]}}get print(){G("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#t}get modifiedIds(){return D(this,"modifiedIds",{ids:new Set,hash:""})}}const re="__forcedDependency",{floor:Si,ceil:_i}=Math;function Ei(d,t,e,s,i,n){d[t*4+0]=Math.min(d[t*4+0],e),d[t*4+1]=Math.min(d[t*4+1],s),d[t*4+2]=Math.max(d[t*4+2],i),d[t*4+3]=Math.max(d[t*4+3],n)}function lr(d,t,e,s,i){let n;d?(d<0&&(n=i[0],i[0]=i[2],i[2]=n),i[0]*=d,i[2]*=d,t<0&&(n=i[1],i[1]=i[3],i[3]=n),i[1]*=t,i[3]*=t):i.fill(0),i[0]+=e,i[1]+=s,i[2]+=e,i[3]+=s}const Rs=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0];class hr{#t;#e;constructor(t,e){this.#t=t,this.#e=e}get length(){return this.#t.length}isEmpty(t){return this.#t[t]===Rs}minX(t){return this.#e[t*4+0]/256}minY(t){return this.#e[t*4+1]/256}maxX(t){return(this.#e[t*4+2]+1)/256}maxY(t){return(this.#e[t*4+3]+1)/256}}const xi=(d,t)=>d?.getOrInsertComputed(t,()=>({dependencies:new Set,isRenderingOperation:!1}));class cr{#t=[[1,0,0,1,0,0]];#e=[-1/0,-1/0,1/0,1/0];#s=new Float64Array(Bt);_pendingBBoxIdx=-1;#i;#n;#a;#r;_savesStack=[];_markedContentStack=[];constructor(t,e){this.#i=t.width,this.#n=t.height,this.#o(e)}growOperationsCount(t){t>=this.#r.length&&this.#o(t,this.#r)}#o(t,e){const s=new ArrayBuffer(t*4);this.#a=new Uint8ClampedArray(s),this.#r=new Uint32Array(s),e&&e.length>0?(this.#r.set(e),this.#r.fill(Rs,e.length)):this.#r.fill(Rs)}get clipBox(){return this.#e}save(t){return this.#e={__proto__:this.#e},this._savesStack.push(t),this}restore(t,e){const s=Object.getPrototypeOf(this.#e);if(s===null)return this;this.#e=s;const i=this._savesStack.pop();return i!==void 0&&(e?.(i,t),this.#r[t]=this.#r[i]),this}recordOpenMarker(t){return this._savesStack.push(t),this}getOpenMarker(){return this._savesStack.length===0?null:this._savesStack.at(-1)}recordCloseMarker(t,e){const s=this._savesStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}beginMarkedContent(t){return this._markedContentStack.push(t),this}endMarkedContent(t,e){const s=this._markedContentStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}pushBaseTransform(t){return this.#t.push(x.multiplyByDOMMatrix(this.#t.at(-1),t.getTransform())),this}popBaseTransform(){return this.#t.length>1&&this.#t.pop(),this}resetBBox(t){return this._pendingBBoxIdx!==t&&(this._pendingBBoxIdx=t,this.#s.set(Bt,0)),this}recordClipBox(t,e,s,i,n,r){const a=x.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform()),o=Bt.slice();x.axialAlignedBoundingBox([s,n,i,r],a,o);const l=x.intersect(this.#e,o);return l?(this.#e[0]=l[0],this.#e[1]=l[1],this.#e[2]=l[2],this.#e[3]=l[3]):(this.#e[0]=this.#e[1]=1/0,this.#e[2]=this.#e[3]=-1/0),this}recordBBox(t,e,s,i,n,r){const a=this.#e;if(a[0]===1/0)return this;const o=x.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform());if(a[0]===-1/0)return x.axialAlignedBoundingBox([s,n,i,r],o,this.#s),this;const l=Bt.slice();return x.axialAlignedBoundingBox([s,n,i,r],o,l),this.#s[0]=X(l[0],a[0],this.#s[0]),this.#s[1]=X(l[1],a[1],this.#s[1]),this.#s[2]=X(l[2],this.#s[2],a[2]),this.#s[3]=X(l[3],this.#s[3],a[3]),this}recordFullPageBBox(t){return this.#s[0]=Math.max(0,this.#e[0]),this.#s[1]=Math.max(0,this.#e[1]),this.#s[2]=Math.min(this.#i,this.#e[2]),this.#s[3]=Math.min(this.#n,this.#e[3]),this}recordOperation(t,e=!1,s){if(this._pendingBBoxIdx!==t)return this;const i=Si(this.#s[0]*256/this.#i),n=Si(this.#s[1]*256/this.#n),r=_i(this.#s[2]*256/this.#i),a=_i(this.#s[3]*256/this.#n);if(Ei(this.#a,t,i,n,r,a),s)for(const o of s)for(const l of o)l!==t&&Ei(this.#a,l,i,n,r,a);return e||(this._pendingBBoxIdx=-1),this}bboxToClipBoxDropOperation(t){return this._pendingBBoxIdx===t&&(this._pendingBBoxIdx=-1,this.#e[0]=Math.max(this.#e[0],this.#s[0]),this.#e[1]=Math.max(this.#e[1],this.#s[1]),this.#e[2]=Math.min(this.#e[2],this.#s[2]),this.#e[3]=Math.min(this.#e[3],this.#s[3])),this}take(){return new hr(this.#r,this.#a)}takeDebugMetadata(){throw new Error("Unreachable")}recordSimpleData(t,e){return this}recordIncrementalData(t,e){return this}resetIncrementalData(t,e){return this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this}recordFutureForcedDependency(t,e){return this}inheritSimpleDataAsFutureForcedDependencies(t){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){return this}getSimpleIndex(t){}recordDependencies(t,e){return this}recordNamedDependency(t,e){return this}recordShowTextOperation(t,e=!1){return this}}class dr{#t={__proto__:null};#e={__proto__:null,transform:[],moveText:[],sameLineText:[],[re]:[]};#s=new Map;#i=new Set;#n=new Map;#a;#r;#o;constructor(t,e=!1){this.#o=t,e&&(this.#a=new Map,this.#r=(s,i)=>{xi(this.#a,i).dependencies.add(s)})}get clipBox(){return this.#o.clipBox}growOperationsCount(t){this.#o.growOperationsCount(t)}save(t){return this.#t={__proto__:this.#t},this.#e={__proto__:this.#e,transform:{__proto__:this.#e.transform},moveText:{__proto__:this.#e.moveText},sameLineText:{__proto__:this.#e.sameLineText},[re]:{__proto__:this.#e[re]}},this.#o.save(t),this}restore(t){this.#o.restore(t,this.#r);const e=Object.getPrototypeOf(this.#t);return e===null?this:(this.#t=e,this.#e=Object.getPrototypeOf(this.#e),this)}recordOpenMarker(t){return this.#o.recordOpenMarker(t,this.#r),this}getOpenMarker(){return this.#o.getOpenMarker()}recordCloseMarker(t){return this.#o.recordCloseMarker(t,this.#r),this}beginMarkedContent(t){return this.#o.beginMarkedContent(t),this}endMarkedContent(t){return this.#o.endMarkedContent(t,this.#r),this}pushBaseTransform(t){return this.#o.pushBaseTransform(t),this}popBaseTransform(){return this.#o.popBaseTransform(),this}recordSimpleData(t,e){return this.#t[t]=e,this}recordIncrementalData(t,e){return this.#e[t].push(e),this}resetIncrementalData(t,e){return this.#e[t].length=0,this}recordNamedData(t,e){return this.#s.set(t,e),this}recordSimpleDataFromNamed(t,e,s){this.#t[t]=this.#s.get(e)??s}recordFutureForcedDependency(t,e){return this.recordIncrementalData(re,e),this}inheritSimpleDataAsFutureForcedDependencies(t){for(const e of t)e in this.#t&&this.recordFutureForcedDependency(e,this.#t[e]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const t of this.#i)this.recordFutureForcedDependency(re,t);return this}resetBBox(t){return this.#o.resetBBox(t),this}recordClipBox(t,e,s,i,n,r){return this.#o.recordClipBox(t,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#o.recordBBox(t,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){const o=s.bbox;let l,h;if(o&&(l=o[2]!==o[0]&&o[3]!==o[1]&&this.#n.get(s),l!==!1&&(h=[0,0,0,0],x.axialAlignedBoundingBox(o,s.fontMatrix,h),(i!==1||n!==0||r!==0)&&lr(i,-i,n,r,h),l)))return this.recordBBox(t,e,h[0],h[2],h[1],h[3]);if(!a)return this.recordFullPageBBox(t);const c=a();return o&&h&&l===void 0&&(l=h[0]<=n-c.actualBoundingBoxLeft&&h[2]>=n+c.actualBoundingBoxRight&&h[1]<=r-c.actualBoundingBoxAscent&&h[3]>=r+c.actualBoundingBoxDescent,this.#n.set(s,l),l)?this.recordBBox(t,e,h[0],h[2],h[1],h[3]):this.recordBBox(t,e,n-c.actualBoundingBoxLeft,n+c.actualBoundingBoxRight,r-c.actualBoundingBoxAscent,r+c.actualBoundingBoxDescent)}recordFullPageBBox(t){return this.#o.recordFullPageBBox(t),this}getSimpleIndex(t){return this.#t[t]}recordDependencies(t,e){const s=this.#i,i=this.#t,n=this.#e;for(const r of e)r in this.#t?s.add(i[r]):r in n&&n[r].forEach(s.add,s);return this}recordNamedDependency(t,e){return this.#s.has(e)&&this.#i.add(this.#s.get(e)),this}recordOperation(t,e=!1){if(this.recordDependencies(t,[re]),this.#a){const i=xi(this.#a,t),{dependencies:n}=i;this.#i.forEach(n.add,n),this.#o._savesStack.forEach(n.add,n),this.#o._markedContentStack.forEach(n.add,n),n.delete(t),i.isRenderingOperation=!0}const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.recordOperation(t,e,[this.#i,this.#o._savesStack,this.#o._markedContentStack]),s&&this.#i.clear(),this}recordShowTextOperation(t,e=!1){const s=Array.from(this.#i);this.recordOperation(t,e),this.recordIncrementalData("sameLineText",t);for(const i of s)this.recordIncrementalData("sameLineText",i);return this}bboxToClipBoxDropOperation(t,e=!1){const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.bboxToClipBoxDropOperation(t),s&&this.#i.clear(),this}take(){return this.#n.clear(),this.#o.take()}takeDebugMetadata(){return this.#a}}class Te{#t;#e;#s;#i=0;#n=0;constructor(t,e,s){if(t instanceof Te&&t.#s===!!s)return t;this.#t=t,this.#e=e,this.#s=!!s}get clipBox(){return this.#t.clipBox}growOperationsCount(){throw new Error("Unreachable")}save(t){return this.#n++,this.#t.save(this.#e),this}restore(t){return this.#n>0&&(this.#t.restore(this.#e),this.#n--),this}recordOpenMarker(t){return this.#i++,this}getOpenMarker(){return this.#i>0?this.#e:this.#t.getOpenMarker()}recordCloseMarker(t){return this.#i--,this}beginMarkedContent(t){return this}endMarkedContent(t){return this}pushBaseTransform(t){return this.#t.pushBaseTransform(t),this}popBaseTransform(){return this.#t.popBaseTransform(),this}recordSimpleData(t,e){return this.#t.recordSimpleData(t,this.#e),this}recordIncrementalData(t,e){return this.#t.recordIncrementalData(t,this.#e),this}resetIncrementalData(t,e){return this.#t.resetIncrementalData(t,this.#e),this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this.#t.recordSimpleDataFromNamed(t,e,this.#e),this}recordFutureForcedDependency(t,e){return this.#t.recordFutureForcedDependency(t,this.#e),this}inheritSimpleDataAsFutureForcedDependencies(t){return this.#t.inheritSimpleDataAsFutureForcedDependencies(t),this}inheritPendingDependenciesAsFutureForcedDependencies(){return this.#t.inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(t){return this.#s||this.#t.resetBBox(this.#e),this}recordClipBox(t,e,s,i,n,r){return this.#s||this.#t.recordClipBox(this.#e,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#s||this.#t.recordBBox(this.#e,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i,n,r,a){return this.#s||this.#t.recordCharacterBBox(this.#e,e,s,i,n,r,a),this}recordFullPageBBox(t){return this.#s||this.#t.recordFullPageBBox(this.#e),this}getSimpleIndex(t){return this.#t.getSimpleIndex(t)}recordDependencies(t,e){return this.#t.recordDependencies(this.#e,e),this}recordNamedDependency(t,e){return this.#t.recordNamedDependency(this.#e,e),this}recordOperation(t){return this.#t.recordOperation(this.#e,!0),this}recordShowTextOperation(t){return this.#t.recordShowTextOperation(this.#e,!0),this}bboxToClipBoxDropOperation(t){return this.#s||this.#t.bboxToClipBoxDropOperation(this.#e,!0),this}take(){throw new Error("Unreachable")}takeDebugMetadata(){throw new Error("Unreachable")}}const wt={stroke:["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],fill:["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],imageXObject:["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],rawFillPath:["filter","fillColor","fillAlpha"],showText:["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","fontObj","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation","sameLineText"],transform:["transform"],transformAndFill:["transform","fillColor"]};class Ke{#t;#e;#s=4;#i=0;#n=new Ke.#a(this.#s*6);static#a=j.isFloat16ArraySupported?Float16Array:Float32Array;constructor(t){this.#t=t.width,this.#e=t.height}record(t,e,s,i){if(this.#i===this.#s){this.#s*=2;const a=new Ke.#a(this.#s*6);a.set(this.#n),this.#n=a}const n=V(t);let r;if(i[0]!==1/0){const a=Bt.slice();x.axialAlignedBoundingBox([0,-s,e,0],n,a);const o=x.intersect(i,a);if(!o)return;const[l,h,c,u]=o;if(l!==a[0]||h!==a[1]||c!==a[2]||u!==a[3]){const f=Math.atan2(n[1],n[0]),p=Math.abs(Math.sin(f)),g=Math.abs(Math.cos(f));if(p<1e-6||g<1e-6||Math.abs(p-g)<1e-6)r=[l,h,l,u,c,h];else{const m=c-l,b=u-h,y=p*p,A=g*g,v=g*p,w=A-y,S=(b*A-m*v)/w,_=(b*v-m*y)/w;r=[l+_,h,l,h+S,c,u-S]}}}r||(r=[0,-s,0,0,e,-s],x.applyTransform(r,n,0),x.applyTransform(r,n,2),x.applyTransform(r,n,4)),r[0]/=this.#t,r[1]/=this.#e,r[2]/=this.#t,r[3]/=this.#e,r[4]/=this.#t,r[5]/=this.#e,this.#n.set(r,this.#i*6),this.#i++}take(){return this.#n.subarray(0,this.#i*6)}}const Ci=new RegExp("\\p{Cc}","u");function ur(d){const t=d[0];if(d.length<2||t!=='"'&&t!=="'"||d.at(-1)!==t)return!1;const e=d.length-1;for(let s=1;s=e||Ci.test(d[s])))return!1}return!0}function Ti(d){return ur(d)?d:`"${d.replaceAll(/["\\\p{Cc}]/gu,e=>e==='"'||e==="\\"?`\\${e}`:`\\${e.codePointAt(0).toString(16)} `)}"`}class fr{#t=new Set;#e=null;constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){const e=this.#s();e.insertRule(t,e.cssRules.length)}#s(){if(this.#e)return this.#e;const t=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&t){const{adoptedStyleSheets:e}=this._document;if(e){const s=new t;return e.push(s),this.#e=s}}return this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)),this.#e=this.styleElement.sheet}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);if(this.nativeFontFaces.clear(),this.#t.clear(),this.#e){const{adoptedStyleSheets:t}=this._document;t?.includes(this.#e)&&(this._document.adoptedStyleSheets=t.filter(e=>e!==this.#e)),this.#e=null}this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,disableFontFace:e,_inspectFont:s}){if(!(!t||this.#t.has(t.loadedName))){if(Z(!e,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:r}=t,a=new FontFace(i,n,r);this.addNativeFontFace(a);try{await a.load(),this.#t.add(i),s?.(t)}catch{N(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}G("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const s=t.createNativeFontFace();if(s){this.addNativeFontFace(s);try{await s.loaded}catch(i){throw N(`Failed to load font '${s.family}': '${i}'.`),t.disableFontFace=!0,i}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise(s=>{const i=this._queueLoadingCallback(s);this._prepareFontLoadEvent(t,i)})}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return D(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){return D(this,"isSyncFontLoadingSupported",mt||j.platform.isFirefox)}_queueLoadingCallback(t){function e(){for(Z(!i.done,"completeRequest() cannot be called twice."),i.done=!0;s.length>0&&s[0].done;){const n=s.shift();setTimeout(n.callback,0)}}const{loadingRequests:s}=this,i={done:!1,complete:e,callback:t};return s.push(i),i}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return D(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function s(w,S){return w.charCodeAt(S)<<24|w.charCodeAt(S+1)<<16|w.charCodeAt(S+2)<<8|w.charCodeAt(S+3)&255}function i(w){return String.fromCharCode(w>>24&255,w>>16&255,w>>8&255,w&255)}function n(w,S,_,E){const C=w.substring(0,S),k=w.substring(S+_);return C+E+k}let r,a;const o=this._document.createElement("canvas");o.width=1,o.height=1;const l=o.getContext("2d");let h=0;function c(w,S){if(++h>30){N("Load test font never loaded."),S();return}if(l.font="30px "+w,l.fillText(".",0,20),l.getImageData(0,0,1,1).data[3]>0){S();return}setTimeout(c.bind(null,w,S))}const u=`lt${Date.now()}${this.loadTestFontId++}`;let f=this._loadTestFont;f=n(f,976,u.length,u);const g=16,m=1482184792;let b=s(f,g);for(r=0,a=u.length-3;r{v.remove(),e.complete()})}}class pr{compiledGlyphs=Object.create(null);#t;constructor(t,e=null,s,i){this.#t=t,this._inspectFont=e,s&&(this.charProcOperatorList=s),i&&Object.assign(this,i)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(Ti(this.cssFontInfo.fontFamily),this.data,e)}return this._inspectFont?.(this),t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${this.data.toBase64()});`;let e;if(!this.cssFontInfo)e=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let s=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(s+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),e=`@font-face {font-family:${Ti(this.cssFontInfo.fontFamily)};${s}src:${t}}`}return this._inspectFont?.(this,t),e}getPathGenerator(t,e){if(this.compiledGlyphs[e]!==void 0)return this.compiledGlyphs[e];const s=this.loadedName+"_path_"+e;let i;try{i=t.get(s)}catch(r){N(`getPathGenerator - ignoring character: "${r}".`)}const n=en(i?.path);return this.fontExtraProperties||t.delete(s),this.compiledGlyphs[e]=n}get black(){return this.#t.black}get bold(){return this.#t.bold}get disableFontFace(){return this.#t.disableFontFace}set disableFontFace(t){D(this,"disableFontFace",!!t)}get fontExtraProperties(){return this.#t.fontExtraProperties}get isInvalidPDFjsFont(){return this.#t.isInvalidPDFjsFont}get isType3Font(){return this.#t.isType3Font}get italic(){return this.#t.italic}get missingFile(){return this.#t.missingFile}get remeasure(){return this.#t.remeasure}get vertical(){return this.#t.vertical}get ascent(){return this.#t.ascent}get defaultWidth(){return this.#t.defaultWidth}get descent(){return this.#t.descent}get bbox(){return this.#t.bbox}get fontMatrix(){return this.#t.fontMatrix}get fallbackName(){return this.#t.fallbackName}get loadedName(){return this.#t.loadedName}get mimetype(){return this.#t.mimetype}get name(){return this.#t.name}get data(){return this.#t.data}clearData(){this.#t.clearData()}get cssFontInfo(){return this.#t.cssFontInfo}get systemFontInfo(){return this.#t.systemFontInfo}get defaultVMetrics(){return this.#t.defaultVMetrics}}class gr{static strings=["fontFamily","fontWeight","italicAngle"]}class mr{static strings=["css","loadedName","baseFontName","src"]}class _t{static bools=["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"];static numbers=["ascent","defaultWidth","descent"];static strings=["fallbackName","loadedName","mimetype","name"];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6}class jt{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16}class Qe{static get decoder(){return D(this,"decoder",new TextDecoder)}static get encoder(){return D(this,"encoder",new TextEncoder)}}class br{#t;#e;constructor(t){this.#t=t,this.#e=new DataView(t)}#s(t){Z(t>s&3;return i===0?void 0:i===2}get black(){return this.#s(0)}get bold(){return this.#s(1)}get disableFontFace(){return this.#s(2)}get fontExtraProperties(){return this.#s(3)}get isInvalidPDFjsFont(){return this.#s(4)}get isType3Font(){return this.#s(5)}get italic(){return this.#s(6)}get missingFile(){return this.#s(7)}get remeasure(){return this.#s(8)}get vertical(){return this.#s(9)}#i(t){return Z(t<_t.numbers.length,"Invalid number index"),this.#e.getFloat64(_t.OFFSET_NUMBERS+t*8)}get ascent(){return this.#i(0)}get defaultWidth(){return this.#i(1)}get descent(){return this.#i(2)}#n(t,e,s,i){const n=this.#e.getUint8(t);if(n===0)return;Z(n===e,"Invalid array length."),t+=1;const r=new Array(n);for(let a=0;a0){g=Bt.slice();for(let m=0,b=l.length;mtypeof d=="object"&&Number.isInteger(d?.num)&&d.num>=0&&Number.isInteger(d?.gen)&&d.gen>=0,Er=d=>typeof d=="object"&&typeof d?.name=="string",xr=Wn.bind(null,Ls,Er);class Cr{#t=new Map;#e=Promise.resolve();postMessage(t,e){const s={data:structuredClone(t,e?{transfer:e}:null)};this.#e.then(()=>{for(const[i]of this.#t)i.call(this,s)})}addEventListener(t,e,s=null){let i=null;if(s?.signal instanceof AbortSignal){const{signal:n}=s;if(n.aborted){N("LoopbackPort - cannot use an `aborted` signal.");return}const r=()=>this.removeEventListener(t,e);i=()=>n.removeEventListener("abort",r),n.addEventListener("abort",r)}this.#t.set(e,i)}removeEventListener(t,e){this.#t.get(e)?.(),this.#t.delete(e)}terminate(){for(const[,t]of this.#t)t?.();this.#t.clear()}}const Ne={DATA:1,ERROR:2},et={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function ki(){}function ut(d){if(d instanceof $t||d instanceof ks||d instanceof Ts||d instanceof qe||d instanceof ys)return d;switch(d instanceof Error||typeof d=="object"&&d!==null||G('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),d.name){case"AbortException":return new $t(d.message);case"InvalidPDFException":return new ks(d.message);case"PasswordException":return new Ts(d.message,d.code);case"ResponseException":return new qe(d.message,d.status,d.missing);case"UnknownErrorException":return new ys(d.message,d.details)}return new ys(d.message,d.toString())}class Ae{#t=new AbortController;constructor(t,e,s){this.sourceName=t,this.targetName=e,this.comObj=s,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),s.addEventListener("message",this.#e.bind(this),{signal:this.#t.signal})}#e({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream){this.#i(t);return}if(t.callback){const s=t.callbackId,i=this.callbackCapabilities[s];if(!i)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],t.callback===Ne.DATA)i.resolve(t.data);else if(t.callback===Ne.ERROR)i.reject(ut(t.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const s=this.sourceName,i=t.sourceName,n=this.comObj;Promise.try(e,t.data).then(function(r){n.postMessage({sourceName:s,targetName:i,callback:Ne.DATA,callbackId:t.callbackId,data:r})},function(r){n.postMessage({sourceName:s,targetName:i,callback:Ne.ERROR,callbackId:t.callbackId,reason:ut(r)})});return}if(t.streamId){this.#s(t);return}e(t.data)}on(t,e){const s=this.actionHandler;if(s[t])throw new Error(`There is already an actionName called "${t}"`);s[t]=e}send(t,e,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},s)}sendWithPromise(t,e,s){const i=this.callbackId++,n=Promise.withResolvers();this.callbackCapabilities[i]=n;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:i,data:e},s)}catch(r){n.reject(r)}return n.promise}sendWithStream(t,e,s,i){const n=this.streamId++,r=this.sourceName,a=this.targetName,o=this.comObj;return new ReadableStream({start:l=>{const h=Promise.withResolvers();return this.streamControllers[n]={controller:l,startCall:h,pullCall:null,cancelCall:null,isClosed:!1},o.postMessage({sourceName:r,targetName:a,action:t,streamId:n,data:e,desiredSize:l.desiredSize},i),h.promise},pull:l=>{const h=Promise.withResolvers();return this.streamControllers[n].pullCall=h,o.postMessage({sourceName:r,targetName:a,stream:et.PULL,streamId:n,desiredSize:l.desiredSize}),h.promise},cancel:l=>{Z(l instanceof Error,"cancel must have a valid reason");const h=Promise.withResolvers();return this.streamControllers[n].cancelCall=h,this.streamControllers[n].isClosed=!0,o.postMessage({sourceName:r,targetName:a,stream:et.CANCEL,streamId:n,reason:ut(l)}),h.promise}},s)}#s(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this,a=this.actionHandler[t.action],o={enqueue(l,h=1,c){if(this.isCancelled)return;const u=this.desiredSize;this.desiredSize-=h,u>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),n.postMessage({sourceName:s,targetName:i,stream:et.ENQUEUE,streamId:e,chunk:l},c)},close(){this.isCancelled||(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:et.CLOSE,streamId:e}),delete r.streamSinks[e])},error(l){Z(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:et.ERROR,streamId:e,reason:ut(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};o.sinkCapability.resolve(),o.ready=o.sinkCapability.promise,this.streamSinks[e]=o,Promise.try(a,t.data,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.START_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.START_COMPLETE,streamId:e,reason:ut(l)})})}#i(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this.streamControllers[e],a=this.streamSinks[e];switch(t.stream){case et.START_COMPLETE:t.success?r.startCall.resolve():r.startCall.reject(ut(t.reason));break;case et.PULL_COMPLETE:t.success?r.pullCall.resolve():r.pullCall.reject(ut(t.reason));break;case et.PULL:if(!a){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,success:!0});break}a.desiredSize<=0&&t.desiredSize>0&&a.sinkCapability.resolve(),a.desiredSize=t.desiredSize,Promise.try(a.onPull||ki).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.PULL_COMPLETE,streamId:e,reason:ut(l)})});break;case et.ENQUEUE:if(Z(r,"enqueue should have stream controller"),r.isClosed)break;r.controller.enqueue(t.chunk);break;case et.CLOSE:if(Z(r,"close should have stream controller"),r.isClosed)break;r.isClosed=!0,r.controller.close(),this.#n(r,e);break;case et.ERROR:Z(r,"error should have stream controller"),r.controller.error(ut(t.reason)),this.#n(r,e);break;case et.CANCEL_COMPLETE:t.success?r.cancelCall.resolve():r.cancelCall.reject(ut(t.reason)),this.#n(r,e);break;case et.CANCEL:if(!a)break;const o=ut(t.reason);Promise.try(a.onCancel||ki,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:et.CANCEL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:et.CANCEL_COMPLETE,streamId:e,reason:ut(l)})}),a.sinkCapability.reject(o),a.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#n(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]),delete this.streamControllers[e]}destroy(){this.#t?.abort(),this.#t=null}}class an{#t=Object.freeze({cMapUrl:"CMap",standardFontDataUrl:"font",wasmUrl:"wasm"});constructor({cMapUrl:t=null,standardFontDataUrl:e=null,wasmUrl:s=null}){this.cMapUrl=t,this.standardFontDataUrl=e,this.wasmUrl=s}async fetch({kind:t,filename:e}){switch(t){case"cMapUrl":case"standardFontDataUrl":case"wasmUrl":break;default:G(`Not implemented: ${t}`)}const s=this[t];if(!s)throw new Error(`Ensure that the \`${t}\` API parameter is provided.`);const i=`${s}${e}`;return this._fetch(i,t).catch(n=>{throw new Error(`Unable to load ${this.#t[t]} data at: ${i}`)})}async _fetch(t,e){G("Abstract method `_fetch` called.")}}class Pi extends an{async _fetch(t,e){const s=e==="cMapUrl"&&!t.endsWith(".bcmap")?"text":"bytes",i=await js(t,s);return i instanceof Uint8Array?i:is(i)}}class on{#t=!1;constructor({enableHWA:t=!1}){this.#t=t}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const s=this._createCanvas(t,e);return{canvas:s,context:s.getContext("2d",{willReadFrequently:!this.#t})}}reset({canvas:t},e,s){if(!t)throw new Error("Canvas is not specified");if(e<=0||s<=0)throw new Error("Invalid canvas size");t.width=e,t.height=s}destroy(t){const{canvas:e}=t;if(!e)throw new Error("Canvas is not specified");e.width=e.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){G("Abstract method `_createCanvas` called.")}}class Tr extends on{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const s=this._document.createElement("canvas");return s.width=t,s.height=e,s}}class ln{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addKnockoutFilter(t=0){return"none"}addHighlightHCMFilter(t,e,s,i,n){return"none"}addSelectionHCMFilter(t,e){return"none"}addSelectionFilter(){return"none"}createSelectionStyle(t=null){return null}destroy(t=!1){}}class kr extends ln{#t;#e;#s;#i;#n;#a;#r=0;constructor({docId:t,ownerDocument:e=globalThis.document}){super(),this.#i=t,this.#n=e}get#o(){return this.#e||=new Map}get#l(){return this.#a||=new Map}get#h(){if(!this.#s){const t=this.#n.createElement("div"),{style:e}=t;e.colorScheme="only light",e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const s=this.#n.createElementNS(ht,"svg");s.setAttribute("width",0),s.setAttribute("height",0),this.#s=this.#n.createElementNS(ht,"defs"),t.append(s),s.append(this.#s),this.#n.body.append(t)}return this.#s}#u(t){if(t.length===1){const o=t[0],l=new Array(256);for(let c=0;c<256;c++)l[c]=o[c]/255;const h=l.join(",");return[h,h,h]}const[e,s,i]=t,n=new Array(256),r=new Array(256),a=new Array(256);for(let o=0;o<256;o++)n[o]=e[o]/255,r[o]=s[o]/255,a[o]=i[o]/255;return[n.join(","),r.join(","),a.join(",")]}#d(t){if(this.#t===void 0){this.#t="";const e=this.#n.URL;e!==this.#n.baseURI&&(ns(e)?N('#createUrl: ignore "data:"-URL for performance reasons.'):this.#t=Qi(e,""))}return`url(${this.#t}#${t})`}addFilter(t){if(!t)return"none";let e=this.#o.get(t);if(e)return e;const[s,i,n]=this.#u(t),r=t.length===1?s:`${s}${i}${n}`;if(e=this.#o.get(r),e)return this.#o.set(t,e),e;const a=`g_${this.#i}_transfer_map_${this.#r++}`,o=this.#d(a);this.#o.set(t,o),this.#o.set(r,o);const l=this.#m(a);return this.#p(s,i,n,l),o}addHCMFilter(t,e){const s=`${t}-${e}`,i="base";let n=this.#l.get(i);if(n?.key===s||(n?(n.filter?.remove(),n.key=s,n.url="none",n.filter=null):(n={key:s,url:"none",filter:null},this.#l.set(i,n)),!t||!e))return n.url;const r=this.#y(t);t=x.makeHexColor(...r);const a=this.#y(e);if(e=x.makeHexColor(...a),this.#w(),t==="#000000"&&e==="#ffffff"||t===e)return n.url;const l=Array.from({length:256},(f,p)=>Os(p/255)).join(","),h=`g_${this.#i}_hcm_filter`,c=n.filter=this.#m(h);this.#p(l,l,l,c),this.#g(c);const u=(f,p)=>{const g=r[f]/255,m=a[f]/255,b=new Array(p+1);for(let y=0;y<=p;y++)b[y]=g+y/p*(m-g);return b.join(",")};return this.#p(u(0,5),u(1,5),u(2,5),c),n.url=this.#d(h),n.url}addSelectionHCMFilter(t,e){return this.addHighlightHCMFilter("selection",t,e,"HighlightText","Highlight")}addSelectionFilter(){return this.addHighlightHCMFilter("selection_default","black","white","HighlightText","Highlight")}createSelectionStyle(t=null){const e=t?this.addSelectionHCMFilter(t.foreground,t.background):this.addSelectionFilter();return e==="none"||!j.platform.isFirefox?null:{"backdrop-filter":e,"background-color":"transparent"}}addAlphaFilter(t){let e=this.#o.get(t);if(e)return e;const[s]=this.#u([t]),i=`alpha_${s}`;if(e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_alpha_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#m(n);return this.#b(s,a),r}addLuminosityFilter(t){let e=this.#o.get(t||"luminosity");if(e)return e;let s,i;if(t?([s]=this.#u([t]),i=`luminosity_${s}`):i="luminosity",e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_luminosity_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#m(n);return this.#f(a),t&&this.#b(s,a),r}addKnockoutFilter(t=0){const e=t>0?Math.min(1/t,1e6):1e6,s=`knockout_${e}`,i=this.#o.get(s);if(i)return i;const n=`g_${this.#i}_knockout_filter_${this.#r++}`,r=this.#d(n);this.#o.set(s,r);const a=this.#m(n),o=this.#n.createElementNS(ht,"feComponentTransfer");a.append(o);const l=this.#n.createElementNS(ht,"feFuncA");return l.setAttribute("type","linear"),l.setAttribute("slope",`${e}`),l.setAttribute("intercept","0"),o.append(l),r}addHighlightHCMFilter(t,e,s,i,n){const r=`${e}-${s}-${i}-${n}`;let a=this.#l.get(t);if(a?.key===r||(a?(a.filter?.remove(),a.key=r,a.url="none",a.filter=null):(a={key:r,url:"none",filter:null},this.#l.set(t,a)),!e||!s))return a.url;const[o,l]=[e,s].map(this.#y.bind(this));let h=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),c=Math.round(.2126*l[0]+.7152*l[1]+.0722*l[2]),[u,f]=[i,n].map(this.#_.bind(this));c{const v=new Array(256),w=(c-h)/A,S=b/255,_=(y-b)/(255*A);let E=0;for(let C=0;C<=A;C++){const k=Math.round(h+C*w),P=S+C*_;for(let I=E;I<=k;I++)v[I]=P;E=k+1}for(let C=E;C<256;C++)v[C]=v[E-1];return v.join(",")},g=`g_${this.#i}_hcm_${t}_filter`,m=a.filter=this.#m(g);return this.#g(m),this.#p(p(u[0],f[0],5),p(u[1],f[1],5),p(u[2],f[2],5),m),a.url=this.#d(g),a.url}destroy(t=!1){t&&this.#a?.size||(this.#s?.parentNode.parentNode.remove(),this.#s=null,this.#e?.clear(),this.#e=null,this.#a?.clear(),this.#a=null,this.#r=0)}#f(t){const e=this.#n.createElementNS(ht,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)}#g(t){const e=this.#n.createElementNS(ht,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)}#m(t){const e=this.#n.createElementNS(ht,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),this.#h.append(e),e}#c(t,e,s){const i=this.#n.createElementNS(ht,e);i.setAttribute("type","discrete"),i.setAttribute("tableValues",s),t.append(i)}#p(t,e,s,i){const n=this.#n.createElementNS(ht,"feComponentTransfer");i.append(n),this.#c(n,"feFuncR",t),this.#c(n,"feFuncG",e),this.#c(n,"feFuncB",s)}#b(t,e){const s=this.#n.createElementNS(ht,"feComponentTransfer");e.append(s),this.#c(s,"feFuncA",t)}#y(t){return this.#h.style.color="CanvasText",this.#h.style.backgroundColor=t,Oe(getComputedStyle(this.#h).getPropertyValue("background-color"))}#A(t){return this.#h.style.color="CanvasText",this.#h.style.backgroundColor=t,De(getComputedStyle(this.#h).getPropertyValue("background-color"))}#w(){this.#h.style.color="",this.#h.style.backgroundColor=""}#_(t){const[e,s,i,n]=this.#A(t);if(n===1)return[e,s,i];const[r,a,o]=this.#y("Canvas");return[Ss(e,r,n),Ss(s,a,n),Ss(i,o,n)]}}function Ss(d,t,e){return Math.round(e*d+(1-e)*t)}mt&&N("Please use the `legacy` build in Node.js environments.");async function Pr(d){const e=await process.getBuiltinModule("fs/promises").readFile(d);return new Uint8Array(e)}class Mr extends ln{}class Ir extends on{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t,e)}}class Dr extends an{async _fetch(t,e){return Pr(t)}}function hn({src:d,srcPos:t=0,dest:e,width:s,height:i,nonBlackColor:n=4294967295,inverseDecode:r=!1}){const a=j.isLittleEndian?4278190080:255,[o,l]=r?[n,a]:[a,n],h=s>>3,c=s&7,u=o^l,f=d.length;e=new Uint32Array(e.buffer);let p=0;for(let g=0;g>7&1)&u,e[p+1]=o^-(y>>6&1)&u,e[p+2]=o^-(y>>5&1)&u,e[p+3]=o^-(y>>4&1)&u,e[p+4]=o^-(y>>3&1)&u,e[p+5]=o^-(y>>2&1)&u,e[p+6]=o^-(y>>1&1)&u,e[p+7]=o^-(y&1)&u}if(c===0)continue;const m=t>7-b&1)&u}return{srcPos:t,destPos:p}}function Or({src:d,srcPos:t=0,dest:e,destPos:s=0,width:i,height:n}){let r=0;const a=i*n*3,o=a>>2,l=new Uint32Array(d.buffer,t,o),h=j.isLittleEndian?4278190080:255;if(j.isLittleEndian){for(;r>>24|u<<8|h,e[s+2]=u>>>16|f<<16|h,e[s+3]=f>>>8|h}for(let c=r*4,u=t+a;c>>8|h,e[s+2]=u<<16|f>>>16|h,e[s+3]=f<<8|h}for(let c=r*4,u=t+a;c u : Uniforms; + +struct VertexInput { + @location(0) position : vec2, + @location(1) color : vec4, +}; + +struct VertexOutput { + @builtin(position) position : vec4, + @location(0) color : vec3, +}; + +@vertex +fn vs_main(in : VertexInput) -> VertexOutput { + var out : VertexOutput; + let cx = (in.position.x + u.offsetX) * u.scaleX; + let cy = (in.position.y + u.offsetY) * u.scaleY; + out.position = vec4( + ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0, + 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0, + 0.0, + 1.0 + ); + out.color = in.color.rgb; + return out; +} + +@fragment +fn fs_main(in : VertexOutput) -> @location(0) vec4 { + return vec4(in.color, 1.0); +} +`;class Rr{#t=null;#e=null;#s=null;#i=null;async#n(){if(!globalThis.navigator?.gpu)return!1;try{const t=await navigator.gpu.requestAdapter();return t?(this.#i=navigator.gpu.getPreferredCanvasFormat(),this.#e=await t.requestDevice(),!0):!1}catch{return!1}}init(){return this.#t||=this.#n()}get isReady(){return this.#e!==null}loadMeshShader(){if(!this.#e||this.#s)return;const t=this.#e.createShaderModule({code:Fr});this.#s=this.#e.createRenderPipeline({layout:"auto",vertex:{module:t,entryPoint:"vs_main",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:"unorm8x4"}]}]},fragment:{module:t,entryPoint:"fs_main",targets:[{format:this.#i}]},primitive:{topology:"triangle-list"}})}draw(t,e,s,i,n,r,a,o){this.loadMeshShader();const l=this.#e,{offsetX:h,offsetY:c,scaleX:u,scaleY:f}=i,p=l.createBuffer({size:Math.max(t.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});t.byteLength>0&&l.queue.writeBuffer(p,0,t);const g=l.createBuffer({size:Math.max(e.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.byteLength>0&&l.queue.writeBuffer(g,0,e);const m=l.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});l.queue.writeBuffer(m,0,new Float32Array([h,c,u,f,r,a,o,0]));const b=l.createBindGroup({layout:this.#s.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:m}}]}),y=new OffscreenCanvas(r,a),A=y.getContext("webgpu");A.configure({device:l,format:this.#i,alphaMode:n?"opaque":"premultiplied"});const v=n?{r:n[0]/255,g:n[1]/255,b:n[2]/255,a:1}:{r:0,g:0,b:0,a:0},w=l.createCommandEncoder(),S=w.beginRenderPass({colorAttachments:[{view:A.getCurrentTexture().createView(),clearValue:v,loadOp:"clear",storeOp:"store"}]});return s>0&&(S.setPipeline(this.#s),S.setBindGroup(0,b),S.setVertexBuffer(0,p),S.setVertexBuffer(1,g),S.draw(s)),S.end(),l.queue.submit([w.finish()]),p.destroy(),g.destroy(),m.destroy(),y.transferToImageBitmap()}}const rs=new Rr;function Lr(){return rs.init()}function Nr(){return rs.isReady}function Br(){rs.loadMeshShader()}function Ur(d,t,e,s,i,n,r,a){return rs.draw(d,t,e,s,i,n,r,a)}const at={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function We(d,t){if(!t)return;const e=t[2]-t[0],s=t[3]-t[1],i=new Path2D;i.rect(t[0],t[1],e,s),d.clip(i)}class Ks{matrix=null;isModifyingCurrentTransform(){return!1}getPattern(){G("Abstract method `getPattern` called.")}}class Hr extends Ks{constructor(t){super(),this._type=t[1],this._bbox=t[2],this._colorStops=t[3],this._p0=t[4],this._p1=t[5],this._r0=t[6],this._r1=t[7]}isOriginBased(){return this._p0[0]===0&&this._p0[1]===0&&(!this.isRadial()||this._p1[0]===0&&this._p1[1]===0)}isRadial(){return this._type==="radial"}areConic(){if(!this.isRadial())return!1;const t=Math.hypot(this._p0[0]-this._p1[0],this._p0[1]-this._p1[1]);return t+this._r1>this._r0&&t+this._r0>this._r1}_createGradient(t,e=null){let s,i=this._p0,n=this._p1;if(e&&(i=i.slice(),n=n.slice(),x.applyTransform(i,e),x.applyTransform(n,e)),this._type==="axial")s=t.createLinearGradient(i[0],i[1],n[0],n[1]);else if(this._type==="radial"){let r=this._r0,a=this._r1;if(e){const o=new Float32Array(2);x.singularValueDecompose2dScale(e,o),r*=o[0],a*=o[0]}s=t.createRadialGradient(i[0],i[1],r,n[0],n[1],a)}for(const r of this._colorStops)s.addColorStop(r[0],r[1]);return s}_createReversedGradient(t,e=null){let s=this._p1,i=this._p0;e&&(s=s.slice(),i=i.slice(),x.applyTransform(s,e),x.applyTransform(i,e));let n=this._r1,r=this._r0;if(e){const l=new Float32Array(2);x.singularValueDecompose2dScale(e,l),n*=l[0],r*=l[0]}const a=t.createRadialGradient(s[0],s[1],n,i[0],i[1],r),o=this._colorStops.map(([l,h])=>[1-l,h]).reverse();for(const[l,h]of o)a.addColorStop(l,h);return a}getPattern(t,e,s,i){let n;if(i===at.STROKE||i===at.FILL){if(this.isOriginBased()){let u=x.transform(s,e.baseTransform);this.matrix&&(u=x.transform(u,this.matrix));const f=.001,p=Math.hypot(u[0],u[1]),g=Math.hypot(u[2],u[3]),m=(u[0]*u[2]+u[1]*u[3])/(p*g);if(Math.abs(m)o[s*2+1]&&(u=e,e=s,s=u,u=n,n=r,r=u),o[s*2+1]>o[i*2+1]&&(u=s,s=i,i=u,u=r,r=a,a=u),o[e*2+1]>o[s*2+1]&&(u=e,e=s,s=u,u=n,n=r,r=u);const f=(o[e*2]+t.offsetX)*t.scaleX,p=(o[e*2+1]+t.offsetY)*t.scaleY,g=(o[s*2]+t.offsetX)*t.scaleX,m=(o[s*2+1]+t.offsetY)*t.scaleY,b=(o[i*2]+t.offsetX)*t.scaleX,y=(o[i*2+1]+t.offsetY)*t.scaleY;if(p>=y)return;const A=l[n*4],v=l[n*4+1],w=l[n*4+2],S=l[r*4],_=l[r*4+1],E=l[r*4+2],C=l[a*4],k=l[a*4+1],P=l[a*4+2],I=Math.round(p),B=Math.round(y);let H,Y,O,F,ot,lt,Rt,ie;for(let W=I;W<=B;W++){if(Wy?st=1:m===y?st=0:st=(m-W)/(m-y),H=g-(g-b)*st,Y=S-(S-C)*st,O=_-(_-k)*st,F=E-(E-P)*st}let q;Wy?q=1:q=(p-W)/(p-y),ot=f-(f-b)*q,lt=A-(A-C)*q,Rt=v-(v-k)*q,ie=w-(w-P)*q;const zt=Math.round(Math.min(H,ot)),ps=Math.round(Math.max(H,ot));let ne=c*W+zt*4;for(let st=zt;st<=ps;st++)q=(H-st)/(H-ot),q<0?q=0:q>1&&(q=1),h[ne++]=Y-(Y-lt)*q|0,h[ne++]=O-(O-Rt)*q|0,h[ne++]=F-(F-ie)*q|0,h[ne++]=255}}class Gr extends Ks{constructor(t){super(),this._posData=t[2],this._colData=t[3],this._vertexCount=t[4],this._bounds=t[5],this._bbox=t[6],this._background=t[7],Br()}_createMeshCanvas(t,e,s){const a=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),l=Math.ceil(this._bounds[2])-a,h=Math.ceil(this._bounds[3])-o,c=Math.min(Math.ceil(Math.abs(l*t[0]*1.1)),3e3)||1,u=Math.min(Math.ceil(Math.abs(h*t[1]*1.1)),3e3)||1,f=l?l/c:1,p=h?h/u:1,g={coords:this._posData,colors:this._colData,offsetX:-a,offsetY:-o,scaleX:1/f,scaleY:1/p},m=c+4,b=u+4,y=s.create(m,b);if(Nr()&&this._vertexCount>48)y.context.drawImage(Ur(this._posData,this._colData,this._vertexCount,g,e,m,b,2),0,0);else{const A=y.context.createImageData(c,u);if(e){const v=A.data;for(let w=0,S=v.length;wl+1e-6||e>h+1e-6)return null;const c=Math.floor((s-a)/l)+1,u=Math.ceil((s+t-n)/l)-1,f=Math.floor((i-o)/h)+1,p=Math.ceil((i+e-r)/h)-1;return u<=c&&p<=f?[c,f]:null}updatePatternDims(t,e){const s=x.inverseTransform(this.patternBaseMatrix),i=[t[0],t[1]],n=[t[2],t[3]];x.applyTransform(i,s),x.applyTransform(n,s),e[0]=Math.abs(n[0]-i[0]),e[1]=Math.abs(n[1]-i[1]),e[2]=Math.min(i[0],n[0]),e[3]=Math.min(i[1],n[1])}_renderTileCanvas(t,e,s,i){const[n,r,a,o]=this.bbox,l=t.canvasFactory.create(s.size,i.size),h=l.context,c=this.canvasGraphicsFactory.createCanvasGraphics(h,e);return c.groupLevel=t.groupLevel,this.setFillAndStrokeStyleToContext(c,this.paintType,this.color),h.translate(-s.scale*n,-i.scale*r),c.transform(0,s.scale,0,0,i.scale,0,0),h.save(),c.dependencyTracker?.save(),this.clipBbox(c,n,r,a,o),c.baseTransform=V(c.ctx),c.executeOperatorList(this.operatorList),c.endDrawing(),c.dependencyTracker?.restore(),h.restore(),l}_getCombinedScales(){const t=new Float32Array(2);x.singularValueDecompose2dScale(this.matrix,t);const[e,s]=t;return x.singularValueDecompose2dScale(this.baseTransform,t),[e*t[0],s*t[1]]}drawPattern(t,e,s=!1,[i,n],r){const[a,o,l,h]=this.bbox,c=t.dependencyTracker;if(c&&(t.dependencyTracker=new Te(c,r)),t.save(),s?t.ctx.clip(e,"evenodd"):t.ctx.clip(e),t.ctx.setTransform(...this.patternBaseMatrix),t.ctx.translate(i*this.xstep,n*this.ystep),this.needsIsolation||t.ctx.globalAlpha!==1||t.ctx.globalCompositeOperation!=="source-over"||t.inSMaskMode){const u=l-a,f=h-o,[p,g]=this._getCombinedScales(),m=this.getSizeAndScale(u,this.ctx.canvas.width,p),b=this.getSizeAndScale(f,this.ctx.canvas.height,g),y=this._renderTileCanvas(t,r,m,b);t.ctx.drawImage(y.canvas,a,o,u,f),t.canvasFactory.destroy(y)}else this.setFillAndStrokeStyleToContext(t,this.paintType,this.color),this.clipBbox(t,a,o,l,h),t.baseTransformStack.push(t.baseTransform),t.baseTransform=V(t.ctx),t.executeOperatorList(this.operatorList),t.baseTransform=t.baseTransformStack.pop();t.restore(),c&&(t.dependencyTracker=c)}createPatternCanvas(t,e){const[s,i,n,r]=this.bbox,a=n-s,o=r-i;let{xstep:l,ystep:h}=this;l=Math.abs(l),h=Math.abs(h),ss("TilingType: "+this.tilingType);const[c,u]=this._getCombinedScales();let f=a,p=o,g=!1,m=!1;Math.ceil(l*c)>=Math.ceil(a*c)?f=l:g=!0,Math.ceil(h*u)>=Math.ceil(o*u)?p=h:m=!0;const b=this.getSizeAndScale(f,this.ctx.canvas.width,c),y=this.getSizeAndScale(p,this.ctx.canvas.height,u),A=this._renderTileCanvas(t,e,b,y);if(g||m){const v=A.canvas;g&&(f=l),m&&(p=h);const w=this.getSizeAndScale(f,this.ctx.canvas.width,c),S=this.getSizeAndScale(p,this.ctx.canvas.height,u),_=w.size,E=S.size,C=t.canvasFactory.create(_,E),k=C.context,P=g?Math.floor(a/l):0,I=m?Math.floor(o/h):0;for(let B=0;B<=P;B++)for(let H=0;H<=I;H++)k.drawImage(v,_*B,E*H,_,E,0,0,_,E);return t.canvasFactory.destroy(A),{canvas:C.canvas,canvasEntry:C,scaleX:w.scale,scaleY:S.scale,offsetX:s,offsetY:i}}return{canvas:A.canvas,canvasEntry:A,scaleX:b.scale,scaleY:y.scale,offsetX:s,offsetY:i}}getSizeAndScale(t,e,s){const i=Math.max(_e.MAX_PATTERN_SIZE,e);let n=Math.ceil(t*s);return n>=i?n=i:s=n/t,{scale:s,size:n}}clipBbox(t,e,s,i,n){const r=i-e,a=n-s,o=new Path2D;o.rect(e,s,r,a),x.axialAlignedBoundingBox([e,s,i,n],V(t.ctx),t.current.minMax),t.ctx.clip(o),t.current.updateClipFromPath()}setFillAndStrokeStyleToContext(t,e,s){const i=t.ctx,n=t.current;switch(n.patternFill=n.patternStroke=!1,e){case Mi.COLORED:const{fillStyle:r,strokeStyle:a}=this.ctx;i.fillStyle=n.fillColor=r,i.strokeStyle=n.strokeColor=a;break;case Mi.UNCOLORED:i.fillStyle=i.strokeStyle=s,n.fillColor=n.strokeColor=s;break;default:throw new Gn(`Unsupported paint type: ${e}`)}}isModifyingCurrentTransform(){return!1}getPattern(t,e,s,i,n){const r=i!==at.SHADING?x.transform(s,this.patternBaseMatrix):s,a=this.createPatternCanvas(e,n);let o=new DOMMatrix(r);o=o.translate(a.offsetX,a.offsetY),o=o.scale(1/a.scaleX,1/a.scaleY);const l=t.createPattern(a.canvas,"repeat");return e.canvasFactory.destroy(a.canvasEntry),l.setTransform(o),l}}const Vr=16,Wr=100,Xr=15,Ii=10,ft=16,yt=new Float32Array(2);function Di(d,t){if(d._removeMirroring)throw new Error("Context is already forwarding operations.");const e=new Map;for(const s of["save","restore","rotate","scale","translate","transform","setTransform","resetTransform","clip","moveTo","lineTo","bezierCurveTo","quadraticCurveTo","arc","arcTo","ellipse","rect","roundRect","closePath","beginPath"]){const i=d[s];typeof i!="function"||typeof t[s]!="function"||(e.set(s,i),d[s]=function(...n){return t[s](...n),i.apply(this,n)})}d._removeMirroring=()=>{for(const[s,i]of e)d[s]=i;delete d._removeMirroring}}function Be(d,t,e,s,i,n,r,a,o,l){const[h,c,u,f,p,g]=V(d);if(c===0&&u===0){const y=r*h+p,A=Math.round(y),v=a*f+g,w=Math.round(v),S=(r+o)*h+p,_=Math.abs(Math.round(S)-A)||1,E=(a+l)*f+g,C=Math.abs(Math.round(E)-w)||1;return d.setTransform(Math.sign(h),0,0,Math.sign(f),A,w),d.drawImage(t,e,s,i,n,0,0,_,C),d.setTransform(h,c,u,f,p,g),[_,C]}if(h===0&&f===0){const y=a*u+p,A=Math.round(y),v=r*c+g,w=Math.round(v),S=(a+l)*u+p,_=Math.abs(Math.round(S)-A)||1,E=(r+o)*c+g,C=Math.abs(Math.round(E)-w)||1;return d.setTransform(0,Math.sign(c),Math.sign(u),0,A,w),d.drawImage(t,e,s,i,n,0,0,C,_),d.setTransform(h,c,u,f,p,g),[C,_]}d.drawImage(t,e,s,i,n,r,a,o,l);const m=Math.hypot(h,c),b=Math.hypot(u,f);return[m*o,b*l]}class Oi{alphaIsShape=!1;fontSize=0;fontSizeScale=1;textMatrix=null;textMatrixScale=1;fontMatrix=xs;leading=0;x=0;y=0;lineX=0;lineY=0;charSpacing=0;wordSpacing=0;textHScale=1;textRenderingMode=it.FILL;textRise=0;fillColor="#000000";strokeColor="#000000";tilingPatternDims=null;patternFill=!1;patternStroke=!1;fillAlpha=1;strokeAlpha=1;lineWidth=1;activeSMask=null;transferMaps="none";minMax=Xt.slice();constructor(t,e){this.clipBox=new Float32Array([0,0,t,e])}clone(){const t=Object.create(this);return t.clipBox=this.clipBox.slice(),t.minMax=this.minMax.slice(),t.tilingPatternDims=this.tilingPatternDims?.slice(),t}getPathBoundingBox(t=at.FILL,e=null){const s=this.minMax.slice();if(t===at.STROKE){e||G("Stroke bounding box must include transform."),x.singularValueDecompose2dScale(e,yt);const i=yt[0]*this.lineWidth/2,n=yt[1]*this.lineWidth/2;s[0]-=i,s[1]-=n,s[2]+=i,s[3]+=n}return s}updateClipFromPath(){const t=x.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(t){this.clipBox.set(t,0),this.minMax.set(Xt,0)}getClippedPathBoundingBox(t=at.FILL,e=null){return x.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function Fi(d,t){const{width:e,height:s,kind:i}=t,n=s%ft,r=(s-n)/ft,a=n===0?r:r+1,o=d.createImageData(e,ft);let l=0;const h=t.data,c=o.data;let u;if(i===Ve.GRAYSCALE_1BPP)for(u=0;uIi&&typeof s=="function",c=h?Date.now()+Xr:0;let u=0;const f=this.commonObjs,p=this.objs;let g,m;for(;;){if(i!==void 0){if(o===i.nextBreakPoint)return i.breakIt(o,s),o;if(i.shouldSkip(o)){if(++o===l)return o;continue}}if(!n||n(o))if(g=a[o],m=r[o]??null,g!==Ot.dependency)m===null?this[g](o):this[g](o,...m);else for(const b of m){this.dependencyTracker?.recordNamedData(b,o);const y=b.startsWith("g_")?f:p;if(!y.has(b))return y.get(b,s),o}if(o++,o===l)return o;if(h&&++u>Ii){if(Date.now()>c)return s(),o;u=0}}}#d(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(this.transparentCanvasEntry),this.transparentCanvas=null,this.transparentCanvasEntry=null)}endDrawing(){this.#d();for(const t of this.smaskGroupCanvases)this.canvasFactory.destroy(t);this.smaskGroupCanvases.length=0,this._clearPreparedSMask(),this.tempSMask=null,this.smaskStack.length=0;for(const t of this.#u)this.#w(t);this.#u.length=0,this.#i=null,this.#n=null,this.#a=null,this.#r=null,this.#o=1,this.#h=null,this.#s=0,this.#e=0,this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear(),this.#f()}#f(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(t!=="none"){const e=this.ctx.filter;this.ctx.filter=t,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}}_scaleImage(t,e){const s=t.width??t.displayWidth,i=t.height??t.displayHeight,n=Math.max(Math.hypot(e[0],e[1]),1),r=Math.max(Math.hypot(e[2],e[3]),1),a=[];let o=n,l=r,h=s,c=i;for(;o>2&&h>1||l>2&&c>1;){let b=h,y=c;o>2&&h>1&&(b=Math.ceil(h/2),o/=h/b),l>2&&c>1&&(y=Math.ceil(c/2),l/=c/y),a.push({newWidth:b,newHeight:y}),h=b,c=y}if(a.length===0)return{img:t,paintWidth:s,paintHeight:i,tmpCanvas:null};if(a.length===1){const{newWidth:b,newHeight:y}=a[0],A=this.canvasFactory.create(b,y);return A.context.drawImage(t,0,0,s,i,0,0,b,y),{img:A.canvas,paintWidth:b,paintHeight:y,tmpCanvas:A}}let u=this.canvasFactory.create(1,1),f=this.canvasFactory.create(1,1),p=s,g=i,m=t;for(const{newWidth:b,newHeight:y}of a)this.canvasFactory.reset(f,b,y),f.context.drawImage(m,0,0,p,g,0,0,b,y),[u,f]=[f,u],m=u.canvas,p=b,g=y;return this.canvasFactory.destroy(f),{img:u.canvas,paintWidth:p,paintHeight:g,tmpCanvas:u}}_createMaskCanvas(t,e){const s=this.ctx,{width:i,height:n}=e,r=this.current.fillColor,a=this.current.patternFill,o=V(s);let l,h,c,u;if((e.bitmap||e.data)&&e.count>1){const P=e.bitmap||e.data.buffer;h=JSON.stringify(a?o:[o.slice(0,4),r]),l=this._cachedBitmapsMap.getOrInsertComputed(P,zs);const I=l.get(h);if(I&&!a){const B=Math.round(Math.min(o[0],o[2])+o[4]),H=Math.round(Math.min(o[1],o[3])+o[5]);return this.dependencyTracker?.recordDependencies(t,wt.transformAndFill),{canvas:I,offsetX:B,offsetY:H}}c=I}c||(u=this.canvasFactory.create(i,n),Ri(u.context,e));let f=x.transform(o,[1/i,0,0,-1/n,0,0]);f=x.transform(f,[1,0,0,1,0,-n]);const p=Xt.slice();x.axialAlignedBoundingBox([0,0,i,n],f,p);const[g,m,b,y]=p,A=Math.round(b-g)||1,v=Math.round(y-m)||1,w=this.canvasFactory.create(A,v),S=w.context,_=g,E=m;S.translate(-_,-E),S.transform(...f);let C=null;if(!c){const P=this._scaleImage(u.canvas,Mt(S));c=P.img,C=P.tmpCanvas,c!==u.canvas&&(this.canvasFactory.destroy(u),u=null),l&&a&&(l.set(h,c),C=null,u=null)}S.imageSmoothingEnabled=Li(V(S),e.interpolate),Be(S,c,0,0,c.width,c.height,0,0,i,n),C&&this.canvasFactory.destroy(C),u&&this.canvasFactory.destroy(u),S.globalCompositeOperation="source-in";const k=x.transform(Mt(S),[1,0,0,1,-_,-E]);return S.fillStyle=a?r.getPattern(s,this,k,at.FILL,t):r,S.fillRect(0,0,i,n),l&&!a&&l.set(h,w.canvas),this.dependencyTracker?.recordDependencies(t,wt.transformAndFill),{canvas:w.canvas,canvasEntry:l&&!a?null:w,offsetX:Math.round(_),offsetY:Math.round(E)}}setLineWidth(t,e){this.dependencyTracker?.recordSimpleData("lineWidth",t),e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(t,e){this.dependencyTracker?.recordSimpleData("lineCap",t),this.ctx.lineCap=Yr[e]}setLineJoin(t,e){this.dependencyTracker?.recordSimpleData("lineJoin",t),this.ctx.lineJoin=qr[e]}setMiterLimit(t,e){this.dependencyTracker?.recordSimpleData("miterLimit",t),this.ctx.miterLimit=e}setDash(t,e,s){this.dependencyTracker?.recordSimpleData("dash",t);const i=this.ctx;i.setLineDash!==void 0&&(i.setLineDash(e),i.lineDashOffset=s)}setRenderingIntent(t,e){}setFlatness(t,e){}setGState(t,e){for(const[s,i]of e)switch(s){case"LW":this.setLineWidth(t,i);break;case"LC":this.setLineCap(t,i);break;case"LJ":this.setLineJoin(t,i);break;case"ML":this.setMiterLimit(t,i);break;case"D":this.setDash(t,i[0],i[1]);break;case"RI":this.setRenderingIntent(t,i);break;case"FL":this.setFlatness(t,i);break;case"Font":this.setFont(t,i[0],i[1]);break;case"CA":this.dependencyTracker?.recordSimpleData("strokeAlpha",t),this.current.strokeAlpha=i;break;case"ca":this.dependencyTracker?.recordSimpleData("fillAlpha",t),this.ctx.globalAlpha=this.current.fillAlpha=i;break;case"BM":this.dependencyTracker?.recordSimpleData("globalCompositeOperation",t),this.ctx.globalCompositeOperation=i;break;case"SMask":this.dependencyTracker?.recordSimpleData("SMask",t),this.current.activeSMask=i?this.tempSMask:null,this.current.activeSMask&&(this.current.activeSMask.blendMode=this.ctx.globalCompositeOperation),this.tempSMask=null,this.checkSMaskState(t);break;case"TR":this.dependencyTracker?.recordSimpleData("filter",t),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(i);break}}get inSMaskMode(){return!!this.suspendedCtx}_clearPreparedSMask(){this.smaskPreparedEntry&&(this.canvasFactory.destroy(this.smaskPreparedEntry),this.smaskPreparedEntry=null),this.smaskPreparedFor=null,this.smaskPreparedOffsetX=0,this.smaskPreparedOffsetY=0,this.smaskPreparedOOBAlpha=null}_ensurePreparedSMask(t){t!==this.smaskPreparedFor&&(this._clearPreparedSMask(),this._prepareSMaskCanvas(t))}checkSMaskState(t){const e=this.inSMaskMode;this.current.activeSMask&&!e?this.beginSMaskMode(t):!this.current.activeSMask&&e?this.endSMaskMode():this.current.activeSMask&&e&&this._ensurePreparedSMask(this.current.activeSMask)}_prepareSMaskCanvas(t){const{canvas:e,subtype:s,backdrop:i,transferMap:n}=t,r=s==="Luminosity"||s==="Alpha"&&n;if(!r&&!(s==="Luminosity"&&i)){this.smaskPreparedFor=t;return}let a;if(s==="Luminosity"&&i){const[y,A,v]=De(i),w=Math.round(.3*y+.59*A+.11*v);a=n?.[w]??w}else a=n?.[0]??0;const o=4,{width:l,height:h}=this.ctx.canvas,c=e.width*e.height,u=l*hthis.filterFactory.addKnockoutFilter(s))),!o||l!=="none")return e&&(a.save(),a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,i,n),a.restore()),a.filter=l,a.drawImage(t,0,0),a.filter="none",r;const h=t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,i,n),c=a.createImageData(i,n),u=h.data,f=c.data,p=s>0?1/s:1e6;for(let g=3,m=u.length;g0||!this.contentVisible)return!1;this.#s++,this.#o=t;const e=this.#u.at(-1),{canvas:s}=this.ctx,i=this.#m(e,"knockoutTempEntry",s.width,s.height);this.#i=i;const n=i.context;return n.save(),n.setTransform(this.ctx.getTransform()),Vt(this.ctx,n),this.#r=n.globalCompositeOperation,n.globalCompositeOperation="source-over",Di(n,this.ctx),this.#h=e,this.#n=this.ctx,this.#a=this.suspendedCtx,this.ctx=n,this.inSMaskMode&&(this.suspendedCtx=n),!0}#b(t){if(!t)return;const e=this.#i,s=this.#n,i=this.#a,n=e.context;this.#i=null,this.#n=null,this.#a=null,this.inSMaskMode&&this.suspendedCtx===n&&this.ctx!==n&&this.endSMaskMode(),this.inSMaskMode&&(this.suspendedCtx=i),this.ctx._removeMirroring(),this.ctx.globalCompositeOperation=this.#r,this.#r=null,Vt(this.ctx,s),this.ctx=s;const r=this.#h;this.#h=null;const a=this.#o;this.#o=1;try{this.#c(i??s,e.canvas,{backdropCanvas:r?.backdropCtx?.canvas??null,backdropOffset:r?.backdropCtx?[r.offsetX,r.offsetY]:[0,0],reuseMaskEntry:r?.knockoutMaskEntry??null,poolMeta:r,knockoutAlpha:a})}finally{n.restore(),this.#s--,r||this.canvasFactory.destroy(e)}}compose(t){if(!this.current.activeSMask)return;t=t?[Math.floor(t[0]),Math.floor(t[1]),Math.ceil(t[2]),Math.ceil(t[3])]:[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask,s=this.suspendedCtx,i=this.#s>0&&s===this.ctx;this.composeSMask(i?null:s,e,this.ctx,t),!i&&(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}composeSMask(t,e,s,i){const n=i[0],r=i[1],a=i[2]-n,o=i[3]-r;if(a===0||o===0)return;const l=this.smaskPreparedEntry;if(l){let h=n,c=r,u=a,f=o;const p=this.smaskPreparedOOBAlpha,g=p!==null;if(g){h=Math.max(n,e.offsetX),c=Math.max(r,e.offsetY);const m=Math.min(n+a,e.offsetX+e.canvas.width),b=Math.min(r+o,e.offsetY+e.canvas.height);u=m-h,f=b-c}if(u>0&&f>0){const m=h-this.smaskPreparedOffsetX,b=c-this.smaskPreparedOffsetY;s.save(),s.globalAlpha=1,s.setTransform(1,0,0,1,0,0);const y=new Path2D;y.rect(h,c,u,f),s.clip(y),s.globalCompositeOperation="destination-in",s.drawImage(l.canvas,m,b,u,f,h,c,u,f),s.restore()}g&&p<255&&this._applySMaskOOBAlpha(s,n,r,a,o,h,c,h+u,c+f,p)}else this.genericComposeSMask(e,s,a,o,n,r);t&&(t.save(),t.globalAlpha=1,t.globalCompositeOperation=e.blendMode||"source-over",t.setTransform(1,0,0,1,0,0),t.drawImage(s.canvas,n,r,a,o,n,r,a,o),t.restore())}_applySMaskOOBAlpha(t,e,s,i,n,r,a,o,l,h){const c=ra.measureText(e))),(u===it.STROKE||u===it.FILL_STROKE)&&(this.dependencyTracker&&this.dependencyTracker?.recordCharacterBBox(t,a,l,c,s,i,()=>a.measureText(e)).recordDependencies(t,wt.stroke),a.strokeText(e,s,i));f&&((this.pendingTextPaths||=[]).push({transform:V(a),x:s,y:i,fontSize:c,path:m}),this.dependencyTracker?.recordCharacterBBox(t,a,l,c,s,i))}get isFontSubpixelAAEnabled(){const t=this.canvasFactory.create(10,10),e=t.context;e.scale(1.5,1),e.fillText("I",0,10);const s=e.getImageData(0,0,10,10).data;this.canvasFactory.destroy(t);let i=!1;for(let n=3;n0&&s[n]<255){i=!0;break}return D(this,"isFontSubpixelAAEnabled",i)}showText(t,e){this.dependencyTracker&&(this.dependencyTracker.recordDependencies(t,wt.showText).resetBBox(t),this.current.textRenderingMode&it.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency("textClip",t).inheritPendingDependenciesAsFutureForcedDependencies());const s=this.current,i=s.font;if(i.isType3Font){const I=this.#p(s.fillAlpha);this.showType3Text(t,e),this.dependencyTracker?.recordShowTextOperation(t),this.#b(I);return}const n=s.fontSize;if(n===0){this.dependencyTracker?.recordOperation(t);return}const r=this.#p(s.fillAlpha),a=this.ctx,o=s.fontSizeScale,l=s.charSpacing,h=s.wordSpacing,c=s.fontDirection,u=s.textHScale*c,f=e.length,p=i.vertical,g=p?1:-1,m=i.defaultVMetrics,b=n*s.fontMatrix[0],y=s.textRenderingMode===it.FILL&&!i.disableFontFace&&!s.patternFill;a.save(),s.textMatrix&&a.transform(...s.textMatrix),a.translate(s.x,s.y+s.textRise),c>0?a.scale(u,-1):a.scale(u,1);let A,v;const w=s.textRenderingMode&it.FILL_STROKE_MASK,S=w===it.FILL||w===it.FILL_STROKE,_=w===it.STROKE||w===it.FILL_STROKE;let E=s.lineWidth;const C=s.textMatrixScale;if(C===0||E===0?_&&(E=this.getSinglePixelWidth()):E/=C,o!==1&&(a.scale(o,o),E/=o),a.lineWidth=E,S&&s.patternFill){a.save();const I=s.fillColor.getPattern(a,this,Mt(a),at.FILL,t);A=V(a),a.restore(),a.fillStyle=I}if(_&&s.patternStroke){a.save();const I=s.strokeColor.getPattern(a,this,Mt(a),at.STROKE,t);v=V(a),a.restore(),a.strokeStyle=I}if(i.isInvalidPDFjsFont){const I=[];let B=0;for(const Y of e)I.push(Y.unicode),B+=Y.width;const H=I.join("");if(a.fillText(H,0,0),this.dependencyTracker!==null){const Y=a.measureText(H);this.dependencyTracker.recordBBox(t,this.ctx,-Y.actualBoundingBoxLeft,Y.actualBoundingBoxRight,-Y.actualBoundingBoxAscent,Y.actualBoundingBoxDescent).recordShowTextOperation(t)}s.x+=B*b*u,a.restore(),this.compose(),this.#b(r);return}let k=0,P;for(P=0;P0){Rt=a.measureText(Y);const W=Rt.width*1e3/n*o;if(ltRt??a.measureText(Y));else if(this.paintChar(t,Y,F,ot,A,v),O){const W=F+n*O.offset.x/o,q=ot-n*O.offset.y/o;this.paintChar(t,O.fontChar,W,q,A,v)}}const ie=p?lt*b-H*c:lt*b+H*c;k+=ie,B&&a.restore()}p?s.y-=k:s.x+=k*u,a.restore(),this.compose(),this.dependencyTracker?.recordShowTextOperation(t),this.#b(r)}showType3Text(t,e){const s=this.ctx,i=this.current,n=i.font,r=i.fontSize,a=i.fontDirection,o=n.vertical?1:-1,l=i.charSpacing,h=i.wordSpacing,c=i.textHScale*a,u=i.fontMatrix||xs,f=e.length,p=i.textRenderingMode===it.INVISIBLE;let g,m,b,y;if(p||r===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,s.save(),i.textMatrix&&s.transform(...i.textMatrix),s.translate(i.x,i.y+i.textRise),s.scale(c,a);const A=this.dependencyTracker;for(this.dependencyTracker=A?new Te(A,t):null,g=0;gnew Jt(r,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new Te(this.dependencyTracker,a,!0):null)};s=new _e(e,this.ctx,n,i)}else s=this._getPattern(t,e[1],e[2]);return s}setStrokeColorN(t,...e){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.current.strokeColor=this.getColorN_Pattern(t,e),this.current.patternStroke=!0}setFillColorN(t,...e){this.dependencyTracker?.recordSimpleData("fillColor",t);const s=this.current.fillColor=this.getColorN_Pattern(t,e);this.current.patternFill=!0,this.current.tilingPatternDims=s instanceof _e?[0,0,0,0]:null}setStrokeRGBColor(t,e){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor=e,this.current.patternStroke=!1}setStrokeTransparent(t){this.dependencyTracker?.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(t,e){this.dependencyTracker?.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor=e,this.current.patternFill=!1,this.current.tilingPatternDims=null}setFillTransparent(t){this.dependencyTracker?.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1,this.current.tilingPatternDims=null}_getPattern(t,e,s=null){const i=this.cachedPatterns.getOrInsertComputed(e,()=>jr(this.getObject(t,e)));return s&&(i.matrix=s),i}shadingFill(t,e){if(!this.contentVisible)return;const s=this.#p(this.current.fillAlpha),i=this.ctx;this.save(t);const n=this._getPattern(t,e);i.fillStyle=n.getPattern(i,this,Mt(i),at.SHADING,t);const r=Mt(i);if(r){const{width:a,height:o}=i.canvas,l=Xt.slice();x.axialAlignedBoundingBox([0,0,a,o],r,l);const[h,c,u,f]=l;this.ctx.fillRect(h,c,u-h,f-c)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.dependencyTracker?.resetBBox(t).recordFullPageBBox(t).recordDependencies(t,wt.transform).recordDependencies(t,wt.fill).recordOperation(t),this.compose(this.current.getClippedPathBoundingBox()),this.restore(t),this.#b(s)}beginInlineImage(){G("Should not call beginInlineImage")}beginImageData(){G("Should not call beginImageData")}paintFormXObjectBegin(t,e,s){if(this.contentVisible&&(this.save(t),this.baseTransformStack.push(this.baseTransform),e&&this.transform(t,...e),this.baseTransform=V(this.ctx),s)){x.axialAlignedBoundingBox(s,this.baseTransform,this.current.minMax);const[i,n,r,a]=s,o=new Path2D;o.rect(i,n,r-i,a-n),this.ctx.clip(o),this.dependencyTracker?.recordClipBox(t,this.ctx,i,r,n,a),this.endPath(t)}}paintFormXObjectEnd(t){this.contentVisible&&(this.restore(t),this.baseTransform=this.baseTransformStack.pop())}beginGroup(t,e){if(!this.contentVisible)return;this.save(t);const{inSMaskMode:s}=this;s&&(this.endSMaskMode(),this.current.activeSMask=null);const i=this.ctx;if((!e.needsIsolation||!e.isolated&&!e.hasSoftMask)&&!e.knockout&&!e.isGray&&this.#e===0&&i.globalAlpha===1&&i.globalCompositeOperation==="source-over"&&!s){if(e.bbox){let v=new Path2D;const[w,S,_,E]=e.bbox;if(v.rect(w,S,_-w,E-S),e.matrix){const C=new Path2D;C.addPath(v,new DOMMatrix(e.matrix)),v=C}i.clip(v)}this.groupStack.push(null),this.#u.push(null),this.groupLevel++;return}!e.isolated&&!e.knockout&&this.#e===0&&ss("TODO: Fully support non-isolated non-knockout groups.");const n=V(i);e.matrix&&i.transform(...e.matrix);const r=[0,0,i.canvas.width,i.canvas.height];let a;e.bbox?(a=Xt.slice(),x.axialAlignedBoundingBox(e.bbox,V(i),a),a=x.intersect(a,r)||[0,0,0,0]):a=r;const o=Math.floor(a[0]),l=Math.floor(a[1]),h=Math.max(Math.ceil(a[2])-o,1),c=Math.max(Math.ceil(a[3])-l,1);this.current.startNewPathAndClipBox([0,0,h,c]);const u=this.canvasFactory.create(h,c);e.smask&&this.smaskGroupCanvases.push(u);const f=u.context,p=e.knockout&&!e.isolated?i:null,g=!e.isolated&&!e.knockout&&!e.smask&&e.needsIsolation&&this.#e>0,m=e.knockout?this.canvasFactory.create(h,c):null,b=this.#e;e.knockout?this.#e++:this.#e=0,f.translate(-o,-l),f.transform(...n);const y=!e.isolated&&!e.smask&&e.needsIsolation,A=y&&!s&&b===0&&!e.knockout&&!e.isGray&&e.hasSoftMask&&i.globalAlpha===1&&i.globalCompositeOperation==="source-over"&&this.current.transferMaps==="none";if(y&&(s||A)&&(f.save(),f.setTransform(1,0,0,1,0,0),f.drawImage(i.canvas,-o,-l),f.restore()),e.bbox){let v=new Path2D;const[w,S,_,E]=e.bbox;if(v.rect(w,S,_-w,E-S),e.matrix){const C=new Path2D;C.addPath(v,new DOMMatrix(e.matrix)),v=C}f.clip(v)}e.smask&&this.smaskStack.push({canvas:u.canvas,context:f,offsetX:o,offsetY:l,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null}),(!e.smask||this.dependencyTracker)&&(i.setTransform(1,0,0,1,0,0),i.translate(o,l),i.save()),Vt(i,f),this.ctx=f,this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha","strokeAlpha","globalCompositeOperation"]).pushBaseTransform(i),this.setGState(t,[["BM","source-over"],["ca",1],["CA",1],["TR",null]]),this.groupStack.push(i),this.#u.push({backdropCtx:p,savedKnockoutLevel:b,offsetX:o,offsetY:l,hasInnerBackdrop:g,replaceBackdrop:A,knockoutMaskEntry:m,knockoutTempEntry:null,knockoutBackdropEntry:null}),this.groupLevel++}endGroup(t,e){if(!this.contentVisible)return;this.groupLevel--;const s=this.ctx,i=this.groupStack.pop(),n=this.#u.pop();if(n&&(this.#e=n.savedKnockoutLevel),i===null){this.restore(t);return}if(e.isGray&&this.#A(s),this.ctx=i,this.ctx.imageSmoothingEnabled=!1,this.dependencyTracker?.popBaseTransform(),e.smask)this.tempSMask=this.smaskStack.pop(),this.restore(t),this.dependencyTracker&&(this.ctx.restore(),this.inSMaskMode&&this.ctx.setTransform(this.suspendedCtx.getTransform())),this.#w(n);else{this.ctx.restore();const r=V(this.ctx);this.restore(t),this.ctx.save(),this.ctx.setTransform(...r);const a=Xt.slice();x.axialAlignedBoundingBox([0,0,s.canvas.width,s.canvas.height],r,a);const o=this.#u.at(-1);if(this.#e>0)if(n.hasInnerBackdrop){const{width:l,height:h}=s.canvas,c=this.canvasFactory.create(l,h),u=c.context;u.drawImage(i.canvas,n.offsetX,n.offsetY,l,h,0,0,l,h),u.globalCompositeOperation="source-over",u.drawImage(s.canvas,0,0);const f=this.#g(s.canvas);u.globalCompositeOperation="destination-in",u.drawImage(f.canvas,0,0);const p=this.ctx.globalCompositeOperation,g=this.ctx.globalAlpha,m=this.ctx.filter;this.ctx.save(),this.ctx.setTransform(...r),this.ctx.globalAlpha=1,j.isCanvasFilterSupported&&(this.ctx.filter="none"),this.ctx.globalCompositeOperation="destination-out",this.ctx.drawImage(f.canvas,0,0),this.ctx.globalCompositeOperation=p,this.ctx.globalAlpha=g,j.isCanvasFilterSupported&&(this.ctx.filter=m??"none"),this.ctx.drawImage(c.canvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(f),this.canvasFactory.destroy(c)}else{const l=o?.backdropCtx??null;this.#c(this.ctx,s.canvas,{backdropCanvas:l?.canvas??null,destTransform:r,backdropOffset:l?[o.offsetX+n.offsetX,o.offsetY+n.offsetY]:[0,0],sourceAlpha:this.ctx.globalAlpha,sourceFilter:this.ctx.filter})}else{if(n.replaceBackdrop){const l=new Path2D;l.rect(0,0,s.canvas.width,s.canvas.height),this.ctx.clip(l),this.ctx.globalCompositeOperation="copy"}this.ctx.drawImage(s.canvas,0,0)}this.ctx.restore(),this.canvasFactory.destroy({canvas:s.canvas,context:s}),this.#w(n),this.compose(a)}}#A(t){const{canvas:e}=t,{width:s,height:i}=e;if(j.isCanvasFilterSupported){t.save(),t.setTransform(1,0,0,1,0,0),t.filter="grayscale(1)",t.globalAlpha=1,t.globalCompositeOperation="copy",t.drawImage(e,0,0),t.restore();return}const n=t.getImageData(0,0,s,i),{data:r}=n;for(let a=0,o=r.length;ab.getAttribute("data-canvas-name")===a);m===-1?g.push(f):g[m]=f}else this.annotationCanvasMap.set(e,f);this.annotationCanvas.savedCtx=this.ctx,this.ctx=p,this.ctx.save(),this.ctx.setTransform(yt[0],0,0,-yt[1],0,l*yt[1]),Ue(this.ctx)}else{Ue(this.ctx),this.endPath(t);const h=new Path2D;h.rect(s[0],s[1],o,l),this.ctx.clip(h)}}this.current=new Oi(this.ctx.canvas.width,this.ctx.canvas.height),this.baseTransformStack.push(this.baseTransform),this.transform(t,...i),this.transform(t,...n),this.baseTransform=V(this.ctx)}endAnnotation(t){this.annotationCanvas&&(this.ctx.restore(),this.#f(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas),this.baseTransform=this.baseTransformStack.pop()}paintImageMaskXObject(t,e){if(!this.contentVisible)return;const s=e.count;e=this.getObject(t,e.data,e),e.count=s;const i=this.#p(this.current.fillAlpha),n=this.ctx,r=this._createMaskCanvas(t,e),a=r.canvas;n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(a,r.offsetX,r.offsetY),this.dependencyTracker?.resetBBox(t).recordBBox(t,this.ctx,r.offsetX,r.offsetX+a.width,r.offsetY,r.offsetY+a.height).recordOperation(t),n.restore(),r.canvasEntry&&this.canvasFactory.destroy(r.canvasEntry),this.compose(),this.#b(i)}paintImageMaskXObjectRepeat(t,e,s,i=0,n=0,r,a){if(!this.contentVisible)return;e=this.getObject(t,e.data,e);const o=this.#p(this.current.fillAlpha),l=this.ctx;l.save();const h=V(l);l.transform(s,i,n,r,0,0);const c=this._createMaskCanvas(t,e);l.setTransform(1,0,0,1,c.offsetX-h[4],c.offsetY-h[5]),this.dependencyTracker?.resetBBox(t);for(let u=0,f=a.length;uc?h/c:1,a=l>c?l/c:1}}this._cachedScaleForStroking[0]=r,this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(t,e){const{ctx:s,current:{lineWidth:i}}=this,[n,r]=this.getScaleForStroking();if(n===r){s.lineWidth=(i||1)*n,s.stroke(t);return}const a=Jt.#t??=new DOMMatrix,o=s.getLineDash();e&&s.save(),s.scale(n,r),a.a=1/n,a.d=1/r;const l=new Path2D;if(l.addPath(t,a),o.length>0){const h=Math.max(n,r);s.setLineDash(o.map(c=>c/h)),s.lineDashOffset/=h}s.lineWidth=i||1,s.stroke(l),e&&s.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}for(const d in Ot)Jt.prototype[d]!==void 0&&(Jt.prototype[Ot[d]]=Jt.prototype[d]);class as{#t=null;#e=null;_fullReader=null;_rangeReaders=new Set;_source=null;constructor(t,e,s){this._source=t,this.#t=e,this.#e=s}get _progressiveDataLength(){return this._fullReader?._loaded??0}getFullReader(){return Z(!this._fullReader,"BasePDFStream.getFullReader can only be called once."),this._fullReader=new this.#t(this)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const s=new this.#e(this,t,e);return this._rangeReaders.add(s),s}cancelAllRequests(t){this._fullReader?.cancel(t);for(const e of new Set(this._rangeReaders))e.cancel(t)}}class os{onProgress=null;_contentLength=0;_filename=null;_headersCapability=Promise.withResolvers();_isRangeSupported=!1;_isStreamingSupported=!1;_loaded=0;_stream=null;constructor(t){this._stream=t}_callOnProgress(){this.onProgress?.({loaded:this._loaded,total:this._contentLength})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){G("Abstract method `read` called")}cancel(t){G("Abstract method `cancel` called")}}class ls{_stream=null;constructor(t,e,s){this._stream=t}async read(){G("Abstract method `read` called")}cancel(t){G("Abstract method `cancel` called")}}function Qr(d){let t=!0,e=s("filename\\*","i").exec(d);if(e){e=e[1];let h=a(e);return h=unescape(h),h=o(h),h=l(h),n(h)}if(e=r(d),e){const h=l(e);return n(h)}if(e=s("filename","i").exec(d),e){e=e[1];let h=a(e);return h=l(h),n(h)}function s(h,c){return new RegExp("(?:^|;)\\s*"+h+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',c)}function i(h,c){if(h){if(!/^[\x00-\xFF]+$/.test(c))return c;try{const u=new TextDecoder(h,{fatal:!0}),f=is(c);c=u.decode(f),t=!1}catch{}}return c}function n(h){return t&&/[\x80-\xff]/.test(h)&&(h=i("utf-8",h),t&&(h=i("iso-8859-1",h))),h}function r(h){const c=[];let u;const f=s("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(u=f.exec(h))!==null;){let[,g,m,b]=u;if(g=parseInt(g,10),g in c){if(g===0)break;continue}c[g]=[m,b]}const p=[];for(let g=0;g0&&d[t-1]!==" "&&/\s/.test(d[t-1]);)t--;return d.slice(0,t)}function hs(d){return URL.parse(d)?.origin??null}function dn({responseHeaders:d,isHttp:t,rangeChunkSize:e,disableRange:s}){const i={contentLength:0,isRangeSupported:!1},n=parseInt(d.get("Content-Length"),10);return!Number.isInteger(n)||(i.contentLength=n,n<=2*e)||s||!t||d.get("Accept-Ranges")!=="bytes"||(d.get("Content-Encoding")||"identity")==="identity"&&(i.isRangeSupported=!0),i}function un(d){const t=d.get("Content-Disposition");if(t){let e=Qr(t);if(e.includes("%"))try{e=decodeURIComponent(e)}catch{}if(Ws(e))return e}return null}function cs(d,t){return new qe(`Unexpected server response (${d}) while retrieving PDF "${t.href}".`,d,d===404||d===0&&t.protocol==="file:")}function fn(d,t){if(d!==t)throw new Error(`Expected range response-origin "${d}" to match "${t}".`)}function pn(d,t,e,s){return fetch(d,{method:"GET",headers:t,signal:s.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"})}function gn(d,t){if(d!==200&&d!==206)throw cs(d,t)}function ds(d){if(d instanceof Uint8Array)return d.buffer;if(d instanceof ArrayBuffer)return d;throw new Error(`getArrayBuffer - unexpected data: ${d}`)}class Zr extends as{_responseOrigin=null;constructor(t){super(t,ta,ea);const{httpHeaders:e,url:s}=t;Z(/https?:/.test(s.protocol),"PDFFetchStream only supports http(s):// URLs."),this.headers=cn(!0,e)}}class ta extends os{_abortController=new AbortController;_reader=null;constructor(t){super(t);const{disableRange:e,disableStream:s,rangeChunkSize:i,url:n,withCredentials:r}=t._source;this._isStreamingSupported=!s;const a=new Headers(t.headers);pn(n,a,r,this._abortController).then(o=>{t._responseOrigin=hs(o.url),gn(o.status,n),this._reader=o.body.getReader();const l=o.headers,{contentLength:h,isRangeSupported:c}=dn({responseHeaders:l,isHttp:!0,rangeChunkSize:i,disableRange:e});this._contentLength=h,this._isRangeSupported=c,this._filename=un(l),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new $t("Streaming is disabled.")),this._headersCapability.resolve()}).catch(this._headersCapability.reject)}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,this._callOnProgress(),{value:ds(t),done:!1})}cancel(t){this._reader?.cancel(t),this._abortController.abort()}}class ea extends ls{_abortController=new AbortController;_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,s){super(t,e,s);const{url:i,withCredentials:n}=t._source,r=new Headers(t.headers);r.append("Range",`bytes=${e}-${s-1}`),pn(i,r,n,this._abortController).then(a=>{const o=hs(a.url);fn(o,t._responseOrigin),gn(a.status,i),this._reader=a.body.getReader(),this._readCapability.resolve()}).catch(this._readCapability.reject)}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:{value:ds(t),done:!1}}cancel(t){this._reader?.cancel(t),this._abortController.abort()}}function Bi(d){return d instanceof Uint8Array&&d.byteLength===d.buffer.byteLength?d.buffer:new Uint8Array(d).buffer}function us(){for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0}class sa extends as{_progressiveDone=!1;_queuedChunks=[];constructor(t){super(t,ia,na);const{pdfDataRangeTransport:e}=t,{initialData:s,progressiveDone:i}=e;if(s?.length>0){const r=Bi(s);this._queuedChunks.push(r)}this._progressiveDone=i;const n=r=>{switch(r.type){case"range":case"progressiveRead":this.#t(r.begin,r.chunk);break;case"progressiveDone":this._fullReader?.progressiveDone(),this._progressiveDone=!0;break}};e.transportReady(n)}#t(t,e){const s=Bi(e);if(t===void 0)this._fullReader?this._fullReader._enqueue(s):this._queuedChunks.push(s);else{const i=this._rangeReaders.keys().find(n=>n._begin===t);Z(i,"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."),i._enqueue(s)}}getFullReader(){const t=super.getFullReader();return this._queuedChunks=null,t}getRangeReader(t,e){const s=super.getRangeReader(t,e);return s&&(s.onDone=()=>this._rangeReaders.delete(s),this._source.pdfDataRangeTransport.requestDataRange(t,e)),s}cancelAllRequests(t){super.cancelAllRequests(t),this._source.pdfDataRangeTransport.abort()}}class ia extends os{#t=us.bind(this);_done=!1;_queuedChunks=null;_requests=[];constructor(t){super(t);const{pdfDataRangeTransport:e,disableRange:s,disableStream:i}=t._source,{length:n,contentDispositionFilename:r}=e;this._queuedChunks=t._queuedChunks||[];for(const o of this._queuedChunks)this._loaded+=o.byteLength;this._done=t._progressiveDone,this._contentLength=n,this._isStreamingSupported=!i,this._isRangeSupported=!s,Ws(r)&&(this._filename=r),this._headersCapability.resolve();const a=this._loaded;Promise.resolve().then(()=>{a>0&&this._loaded===a&&this._callOnProgress()})}_enqueue(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength,this._callOnProgress())}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t()}progressiveDone(){this._done||=!0,this._queuedChunks.length===0&&this.#t()}}class na extends ls{#t=us.bind(this);onDone=null;_begin=-1;_done=!1;_queuedChunk=null;_requests=[];constructor(t,e,s){super(t,e,s),this._begin=e}_enqueue(t){this._done||(this._requests.length===0?this._queuedChunk=t:(this._requests.shift().resolve({value:t,done:!1}),this.#t()),this._done=!0,this.onDone?.())}async read(){if(this._queuedChunk){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t(),this.onDone?.()}}const _s=200,Ui=206;function ra(d){return typeof d!="string"?d:is(d).buffer}class aa extends as{#t=new WeakMap;_responseOrigin=null;constructor(t){super(t,oa,la);const{httpHeaders:e,url:s}=t;this.url=s,this.isHttp=/https?:/.test(s.protocol),this.headers=cn(this.isHttp,e)}_request(t){const e=new XMLHttpRequest,s={validateStatus:null,onHeadersReceived:t.onHeadersReceived,onDone:t.onDone,onError:t.onError,onProgress:t.onProgress};this.#t.set(e,s),e.open("GET",this.url),e.withCredentials=this._source.withCredentials;for(const[i,n]of this.headers)e.setRequestHeader(i,n);return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`),s.validateStatus=i=>i===Ui||i===_s):s.validateStatus=i=>i===_s,e.responseType="arraybuffer",Z(t.onError,"Expected `onError` callback to be provided."),e.onerror=()=>t.onError(e.status),e.onreadystatechange=this.#s.bind(this,e),e.onprogress=this.#e.bind(this,e),e.send(null),e}#e(t,e){this.#t.get(t)?.onProgress?.(e)}#s(t,e){const s=this.#t.get(t);if(!s||(t.readyState>=2&&s.onHeadersReceived&&(s.onHeadersReceived(),delete s.onHeadersReceived),t.readyState!==4)||!this.#t.has(t))return;if(this.#t.delete(t),t.status===0&&this.isHttp){s.onError(t.status);return}const i=t.status||_s;if(!s.validateStatus(i)){s.onError(t.status);return}const n=ra(t.response);if(i===Ui){const r=t.getResponseHeader("Content-Range");/bytes \d+-\d+\/\d+/.test(r)?s.onDone(n):(N('Missing or invalid "Content-Range" header.'),s.onError(0))}else n?s.onDone(n):s.onError(t.status)}_abortRequest(t){this.#t.has(t)&&(this.#t.delete(t),t.abort())}getRangeReader(t,e){const s=super.getRangeReader(t,e);return s&&(s.onClosed=()=>this._rangeReaders.delete(s)),s}}class oa extends os{#t=us.bind(this);_cachedChunks=[];_done=!1;_requests=[];_storedError=null;constructor(t){super(t),this._fullRequestXhr=t._request({onHeadersReceived:this.#e.bind(this),onDone:this.#s.bind(this),onError:this.#i.bind(this),onProgress:this.#n.bind(this)})}#e(){const t=this._stream,{disableRange:e,rangeChunkSize:s}=t._source,i=this._fullRequestXhr;t._responseOrigin=hs(i.responseURL);const n=i.getAllResponseHeaders(),r=new Headers(n?Jr(n.trimStart()).split(/[\r\n]+/).map(l=>{const[h,...c]=l.split(": ");return[h,c.join(": ")]}):[]),{contentLength:a,isRangeSupported:o}=dn({responseHeaders:r,isHttp:t.isHttp,rangeChunkSize:s,disableRange:e});this._contentLength=a,this._isRangeSupported=o,this._filename=un(r),this._isRangeSupported&&t._abortRequest(i),this._headersCapability.resolve()}#s(t){this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._cachedChunks.push(t),this._done=!0,this._cachedChunks.length===0&&this.#t()}#i(t){this._storedError=cs(t,this._stream.url),this._headersCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}#n(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this._headersCapability.reject(t),this.#t(),this._stream._abortRequest(this._fullRequestXhr),this._fullRequestXhr=null}}class la extends ls{#t=us.bind(this);onClosed=null;_done=!1;_queuedChunk=null;_requests=[];_storedError=null;constructor(t,e,s){super(t,e,s),this._requestXhr=t._request({begin:e,end:s,onHeadersReceived:this.#e.bind(this),onDone:this.#s.bind(this),onError:this.#i.bind(this),onProgress:null})}#e(){const t=hs(this._requestXhr?.responseURL);try{fn(t,this._stream._responseOrigin)}catch(e){this._storedError=e,this.#i(0)}}#s(t){this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunk=t,this._done=!0,this.#t(),this.onClosed?.()}#i(t){this._storedError??=cs(t,this._stream.url);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this.#t(),this._stream._abortRequest(this._requestXhr),this.onClosed?.()}}function mn(d,t=null){const e=process.getBuiltinModule("fs"),{Readable:s}=process.getBuiltinModule("stream"),i=e.createReadStream(d,t);return s.toWeb(i)}class ha extends as{constructor(t){super(t,ca,da);const{url:e}=t;Z(e.protocol==="file:","PDFNodeStream only supports file:// URLs.")}}class ca extends os{_reader=null;constructor(t){super(t);const{disableRange:e,disableStream:s,rangeChunkSize:i,url:n}=t._source;this._isStreamingSupported=!s,process.getBuiltinModule("fs/promises").lstat(n).then(a=>{const o=mn(n);this._reader=o.getReader();const{size:l}=a;this._contentLength=l,this._isRangeSupported=!e&&l>2*i,!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new $t("Streaming is disabled.")),this._headersCapability.resolve()}).catch(a=>{a.code==="ENOENT"&&(a=cs(0,n)),this._headersCapability.reject(a)})}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,this._callOnProgress(),{value:ds(t),done:!1})}cancel(t){this._reader?.cancel(t)}}class da extends ls{_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,s){super(t,e,s);const{url:i}=t._source;try{const n=mn(i,{start:e,end:s-1});this._reader=n.getReader(),this._readCapability.resolve()}catch(n){this._readCapability.reject(n)}}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:{value:ds(t),done:!1}}cancel(t){this._reader?.cancel(t)}}function ua(d){return ve(d)?Zr:mt?ha:aa}class de{static#t=null;static#e="";static get workerPort(){return this.#t}static set workerPort(t){if(!(typeof Worker<"u"&&t instanceof Worker)&&t!==null)throw new Error("Invalid `workerPort` type.");this.#t=t}static get workerSrc(){return this.#e}static set workerSrc(t){if(typeof t!="string")throw new Error("Invalid `workerSrc` type.");this.#e=t}}class fa{#t;#e;constructor({parsedData:t,rawData:e}){this.#t=t,this.#e=e}getRaw(){return this.#e}get(t){return this.#t.get(t)??null}[Symbol.iterator](){return this.#t.entries()}}const Wt=Symbol("INTERNAL");class pa{#t=!1;#e=!1;#s=!1;#i=!0;constructor(t,{name:e,intent:s,usage:i,rbGroups:n}){this.#t=!!(t&pt.DISPLAY),this.#e=!!(t&pt.PRINT),this.name=e,this.intent=s,this.usage=i,this.rbGroups=n}get visible(){if(this.#s)return this.#i;if(!this.#i)return!1;const{print:t,view:e}=this.usage;return this.#t?e?.viewState!=="OFF":this.#e?t?.printState!=="OFF":!0}_setVisible(t,e,s=!1){t!==Wt&&G("Internal method `_setVisible` called."),this.#s=s,this.#i=e}get serializable(){return{userSet:this.#s,visible:this.#i}}}class Qs{#t=null;#e=new Map;#s=null;#i=null;#n;creator=null;name=null;constructor(t,e=pt.DISPLAY,s=null){if(this.#n=t,this.renderingIntent=e,t!==null){this.name=t.name,this.creator=t.creator,this.#i=t.order;for(const i of t.groups)this.#e.set(i.id,new pa(e,i));if(s){s.size!==this.#e.size&&G("Incorrect serialized groupState.");for(const[i,n]of s)this.#e.get(i)._setVisible(Wt,n.visible,n.userSet)}else{if(t.baseState==="OFF")for(const i of this.#e.values())i._setVisible(Wt,!1);for(const i of t.on)this.#e.get(i)._setVisible(Wt,!0);for(const i of t.off)this.#e.get(i)._setVisible(Wt,!1)}this.#s=this.getHash()}}#a(t){const e=t.length;if(e<2)return!0;const s=t[0];for(let i=1;iu===f+1)&&(this.#t=null)}deletePages(t){this.#a();const e=this.#t,s=this.#r();this.#n={pageNumberToId:e.slice(),pagesNumber:this.#s,prevPageNumbers:this.#e.slice()};const i=this.#s-t.length;this.#s=i;const n=this.#t=new Uint32Array(i);this.#e=new Int32Array(i);let r=0,a=0;for(const o of t){const l=o-1;l!==r&&(n.set(e.subarray(r,l),a),a+=l-r),r=l+1}rthis.#t[e-1])}}cancelCopy(){this.#i=null}pastePages(t){this.#a();const e=this.#t,s=this.#r(),{pageNumbers:i,pageIds:n}=this.#i,r=this.#s+i.length;this.#s=r;const a=this.#t=new Uint32Array(r);this.#e=new Int32Array(r),a.set(e.subarray(0,t),0),a.set(n,t),a.set(e.subarray(t),t+i.length),this.#o(s,null,t,i),this.#i=null}#o(t,e=null,s=-1,i=null){const n=this.#e,r=this.#t,a=s+(i?.length??0),o=new Map;for(let l=0,h=this.#s;l=s&&la[0]-o[0]);for(let a=0,o=n.length;as-i);const e=new Map;for(let s=0,i=t.length;s({...Promise.withResolvers(),data:oe});class bn{#t=new Map;get(t,e=null){if(e){const i=this.#t.getOrInsertComputed(t,Hi);return i.promise.then(()=>e(i.data)),null}const s=this.#t.get(t);if(!s||s.data===oe)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return s.data}has(t){const e=this.#t.get(t);return!!e&&e.data!==oe}delete(t){const e=this.#t.get(t);return!e||e.data===oe?!1:(this.#t.delete(t),!0)}resolve(t,e=null){const s=this.#t.getOrInsertComputed(t,Hi);if(s.data!==oe)throw new Error(`Object already resolved ${t}.`);s.data=e,s.resolve()}clear(){for(const{data:t}of this.#t.values())t?.bitmap?.close();this.#t.clear()}*[Symbol.iterator](){for(const[t,{data:e}]of this.#t)e!==oe&&(yield[t,e])}}const ma=1e5,$i=30;class gt{#t=Promise.withResolvers();#e=null;#s=!1;#i=!!globalThis.FontInspector?.enabled;#n=null;#a=null;#r=null;#o=0;#l=0;#h=null;#u=null;#d=0;#f=0;#g=Object.create(null);#m=[];#c=null;#p=[];#b=new WeakMap;#y=null;static#A=new Map;static#w=new Map;static#_=new WeakMap;static#S=null;static#E=new Set;constructor({textContentSource:t,images:e,container:s,viewport:i}){if(t instanceof ReadableStream)this.#c=t;else if(typeof t=="object")this.#c=new ReadableStream({start(l){l.enqueue(t),l.close()}});else throw new Error('No "textContentSource" parameter specified.');this.#e=this.#u=s,this.#n=e,this.#f=i.scale*Tt.pixelRatio,this.#d=i.rotation,this.#r={div:null,properties:null,ctx:null};const{pageWidth:n,pageHeight:r,pageX:a,pageY:o}=i.rawDims;this.#y=[1,0,0,-1,-a,o+r],this.#l=n,this.#o=r,gt.#I(),s.style.setProperty("--min-font-size",gt.#S),Zt(s,i),this.#t.promise.finally(()=>{gt.#E.delete(this),this.#r=null,this.#g=null}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=j.platform;return D(this,"fontFamilyMap",new Map([["sans-serif",`${t&&e?"Calibri, ":""}sans-serif`],["monospace",`${t&&e?"Lucida Console, ":""}monospace`]]))}render(){this.#n&&this.#e.append(this.#n.render());const t=()=>{this.#h.read().then(({value:e,done:s})=>{if(s){this.#t.resolve();return}this.#a??=e.lang,Object.assign(this.#g,e.styles),this.#x(e.items),t()},this.#t.reject)};return this.#h=this.#c.getReader(),gt.#E.add(this),t(),this.#t.promise}update({viewport:t,onBefore:e=null}){const s=t.scale*Tt.pixelRatio,i=t.rotation;if(i!==this.#d&&(e?.(),this.#d=i,Zt(this.#u,{rotation:i})),s!==this.#f){e?.(),this.#f=s;const n={div:null,properties:null,ctx:gt.#T(this.#a)};for(const r of this.#p)n.properties=this.#b.get(r),n.div=r,this.#k(n)}}cancel(){const t=new $t("TextLayer task cancelled.");this.#h?.cancel(t).catch(()=>{}),this.#h=null,this.#t.reject(t)}get textDivs(){return this.#p}get textContentItemsStr(){return this.#m}#x(t){if(this.#s)return;this.#r.ctx??=gt.#T(this.#a);const e=this.#p,s=this.#m;for(const i of t){if(e.length>ma){N("Ignoring additional textDivs for performance reasons."),this.#s=!0;return}if(i.str===void 0){if(i.type==="beginMarkedContentProps"||i.type==="beginMarkedContent"){const n=this.#e;this.#e=document.createElement("span"),this.#e.classList.add("markedContent"),i.id&&this.#e.setAttribute("id",i.id),i.tag==="Artifact"&&(this.#e.ariaHidden=!0),n.append(this.#e)}else i.type==="endMarkedContent"&&(this.#e=this.#e.parentNode);continue}s.push(i.str),this.#M(i)}}#M(t){const e=document.createElement("span"),s={angle:0,canvasWidth:0,hasText:t.str!=="",hasEOL:t.hasEOL,fontSize:0};this.#p.push(e);const i=x.transform(this.#y,t.transform);let n=Math.atan2(i[1],i[0]);const r=this.#g[t.fontName];r.vertical&&(n+=Math.PI/2);let a=this.#i&&r.fontSubstitution||r.fontFamily;a=gt.fontFamilyMap.get(a)||a;const o=Math.hypot(i[2],i[3]),l=o*gt.#O(a,r,this.#a);let h,c;n===0?(h=i[4],c=i[5]-l):(h=i[4]+l*Math.sin(n),c=i[5]-l*Math.cos(n));const u=e.style;u.left=`${(100*h/this.#l).toFixed(2)}%`,u.top=`${(100*c/this.#o).toFixed(2)}%`,u.setProperty("--font-height",`${o.toFixed(2)}px`),u.fontFamily=a,s.fontSize=o,e.setAttribute("role","presentation"),e.textContent=t.str,e.dir=t.dir,this.#i&&(e.dataset.fontName=r.fontSubstitutionLoadedName||t.fontName),n!==0&&(s.angle=n*(180/Math.PI));let f=!1;if(t.str.length>1)f=!0;else if(t.str!==" "&&t.transform[0]!==t.transform[3]){const p=Math.abs(t.transform[0]),g=Math.abs(t.transform[3]);p!==g&&Math.max(p,g)/Math.min(p,g)>1.5&&(f=!0)}if(f&&(s.canvasWidth=r.vertical?t.height:t.width),this.#b.set(e,s),this.#r.div=e,this.#r.properties=s,this.#k(this.#r),s.hasText&&this.#e.append(e),s.hasEOL){const p=document.createElement("br");p.setAttribute("role","presentation"),this.#e.append(p)}}#k(t){const{div:e,properties:s,ctx:i}=t,{style:n}=e;if(s.canvasWidth!==0&&s.hasText){const{fontFamily:r}=n,{canvasWidth:a,fontSize:o}=s;gt.#D(i,o*this.#f,r);const{width:l}=i.measureText(e.textContent);l>0&&n.setProperty("--scale-x",a*this.#f/l)}s.angle!==0&&n.setProperty("--rotate",`${s.angle}deg`)}static cleanup(){if(!(this.#E.size>0)){this.#A.clear();for(const{canvas:t}of this.#w.values())t.remove();this.#w.clear()}}static#T(t=null){let e=this.#w.get(t||="");if(!e){const s=document.createElement("canvas");s.style.cssText="position:absolute;top:0;left:0;width:0;height:0;display:none;letter-spacing:normal;word-spacing:normal",s.lang=t,document.body.append(s),e=s.getContext("2d",{alpha:!1,willReadFrequently:!0}),this.#w.set(t,e),this.#_.set(e,{size:0,family:""})}return e}static#D(t,e,s){const i=this.#_.get(t);e===i.size&&s===i.family||(t.font=`${e}px ${s}`,i.size=e,i.family=s)}static#I(){if(this.#S!==null)return;const t=document.createElement("div");t.style.opacity=0,t.style.lineHeight=1,t.style.fontSize="1px",t.style.position="absolute",t.textContent="X",document.body.append(t),this.#S=t.getBoundingClientRect().height,t.remove()}static#O(t,e,s){const i=this.#A.get(t);if(i)return i;const n=this.#T(s);n.canvas.width=n.canvas.height=$i,this.#D(n,$i,t);const r=n.measureText(""),a=r.fontBoundingBoxAscent,o=Math.abs(r.fontBoundingBoxDescent);n.canvas.width=n.canvas.height=0;let l=.8;return a?l=a/(a+o):(j.platform.isFirefox&&N("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),e.ascent?l=e.ascent:e.descent&&(l=1+e.descent)),this.#A.set(t,l),l}}const ba=100;function yn(d={}){const t=new Js,{docId:e}=t,s=d.url?Sr(d.url):null,i=d.data?_r(d.data):null,n=d.httpHeaders||null,r=d.withCredentials===!0,a=d.password??null,o=d.range instanceof An?d.range:null,l=Number.isInteger(d.rangeChunkSize)&&d.rangeChunkSize>0?d.rangeChunkSize:2**16;let h=d.worker instanceof ke?d.worker:null;const c=d.verbosity,u=typeof d.docBaseUrl=="string"&&!ns(d.docBaseUrl)?d.docBaseUrl:null,f=Le(d.cMapUrl),p=d.cMapPacked!==!1,g=Le(d.iccUrl),m=Le(d.standardFontDataUrl),b=Le(d.wasmUrl),y=d.stopAtErrors!==!0,A=Number.isInteger(d.maxImageSize)&&d.maxImageSize>-1?d.maxImageSize:-1,v=typeof d.isOffscreenCanvasSupported=="boolean"?d.isOffscreenCanvasSupported:!mt,w=typeof d.isImageDecoderSupported=="boolean"?d.isImageDecoderSupported:!mt,S=Number.isInteger(d.canvasMaxAreaInBytes)?d.canvasMaxAreaInBytes:-1,_=typeof d.disableFontFace=="boolean"?d.disableFontFace:mt,E=d.fontExtraProperties===!0,C=d.enableXfa===!0,k=d.ownerDocument||globalThis.document,P=d.disableRange===!0,I=d.disableStream===!0,B=d.disableAutoFetch===!0,H=d.pdfBug===!0,Y=d.CanvasFactory||(mt?Ir:Tr),O=d.FilterFactory||(mt?Mr:kr),F=d.BinaryDataFactory||(mt?Dr:Pi),ot=d.enableHWA===!0,Rt=d.enableWebGPU===!0?Lr():Promise.resolve(!1),ie=d.useWasm!==!1,W=d.pagesMapper||new ga,q=typeof d.useSystemFonts=="boolean"?d.useSystemFonts:!mt&&!_,zt=typeof d.useWorkerFetch=="boolean"?d.useWorkerFetch:!!(F===Pi&&f&&p&&m&&b&&ve(f,document.baseURI)&&ve(m,document.baseURI)&&ve(b,document.baseURI)),ps=null;Un(c);const ne={canvasFactory:new Y({ownerDocument:k,enableHWA:ot}),filterFactory:new O({docId:e,ownerDocument:k}),binaryDataFactory:zt?null:new F({cMapUrl:f,standardFontDataUrl:m,wasmUrl:b})};h||(h=ke.create({verbosity:c,port:de.workerPort}),t._worker=h);const st={docId:e,apiVersion:"6.3.289",data:i,password:a,disableAutoFetch:B,rangeChunkSize:l,docBaseUrl:u,enableXfa:C,evaluatorOptions:{maxImageSize:A,disableFontFace:_,ignoreErrors:y,isOffscreenCanvasSupported:v,isImageDecoderSupported:w,canvasMaxAreaInBytes:S,fontExtraProperties:E,useSystemFonts:q,useWasm:ie,useWorkerFetch:zt,cMapUrl:f,cMapPacked:p,iccUrl:g,standardFontDataUrl:m,wasmUrl:b,hasGPU:!1}},On={ownerDocument:k,pdfBug:H,styleElement:ps,enableHWA:ot,loadingParams:{disableAutoFetch:B,enableXfa:C}};return Promise.all([h.promise,Rt]).then(function([,Fn]){if(h.destroyed)throw new Error("Worker was destroyed");st.evaluatorOptions.hasGPU=Fn;const Rn=h.messageHandler.sendWithPromise("GetDocRequest",st,i?[i.buffer]:null);let gs;if(!i)if(o)gs=new sa({pdfDataRangeTransport:o,disableRange:P,disableStream:I});else if(s){const ms=ua(s);gs=new ms({url:s,httpHeaders:n,withCredentials:r,rangeChunkSize:l,disableRange:P,disableStream:I})}else throw new Error("getDocument - expected either `data`, `range`, or `url` parameter.");return Rn.then(ms=>{if(h.destroyed)throw new Error("Worker was destroyed");const di=new Ae(e,ms,h.port),Ln=new Aa(di,t,gs,On,ne,W);if(t._transport=Ln,t.destroyed)throw new Error("Loading aborted");di.send("Ready",null)})}).catch(t._capability.reject).finally(t._setupCapability.resolve),t}class Js{static#t=0;_capability=Promise.withResolvers();_setupCapability=Promise.withResolvers();_transport=null;_worker=null;docId=`d${Js.#t++}`;destroyed=!1;onPassword=null;onProgress=null;get promise(){return this._capability.promise}async destroy(){this.destroyed=!0,this._capability.promise.catch(()=>{});try{this._worker?.port&&(this._worker._pendingDestroy=!0),await this._setupCapability.promise,await this._transport?.destroy()}catch(t){throw this._worker?.port&&delete this._worker._pendingDestroy,t}this._transport=null,this._worker?.destroy(),this._worker=null}async getData(){return this._transport.getData()}}class An{#t=Promise.withResolvers();#e=null;constructor(t,e,s=!1,i=null){this.length=t,this.initialData=e,this.progressiveDone=s,this.contentDispositionFilename=i}onDataRange(t,e){this.#e({type:"range",begin:t,chunk:e})}onDataProgressiveRead(t){this.#t.promise.then(()=>{this.#e({type:"progressiveRead",chunk:t})})}onDataProgressiveDone(){this.#t.promise.then(()=>{this.#e({type:"progressiveDone"})})}transportReady(t){this.#e=t,this.#t.resolve()}requestDataRange(t,e){G("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class ya{constructor(t,e){this._pdfInfo=t,this._transport=e}get pagesMapper(){return this._transport.pagesMapper}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return D(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAttachmentContent(t){return this._transport.getAttachmentContent(t)}getAnnotationsByType(t,e){return this._transport.getAnnotationsByType(t,e)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getOptionalContentConfig(e)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}extractPages(t,e=null){return this._transport.extractPages(t,e)}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}cachedPageNumber(t){return this._transport.cachedPageNumber(t)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}getSignatures(){return this._transport.getSignatures()}getSignatureData(t){return this._transport.getSignatureData(t)}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}class Zs{#t=!1;#e=null;constructor(t,e,s,i,n=!1){this._pageIndex=t,this._pageInfo=e,this._transport=s,this._stats=n?new gi:null,this._pdfBug=n,this.commonObjs=s.commonObjs,this.objs=new bn,this._intentStates=new Map,this.destroyed=!1,this.recordedBBoxes=null,this.#e=i,this.imageCoordinates=null}clone(t){const e=new Zs(t,this._pageInfo,this._transport,this.#e,this._pdfBug);return e.clonedFromIndex=this.clonedFromIndex??this._pageIndex,this._transport.updatePage(e),e}get pageNumber(){return this._pageIndex+1}set pageNumber(t){this._pageIndex=t-1,this._transport.updatePage(this)}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:s=0,offsetY:i=0,dontFlip:n=!1}={}){return new Ie({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}getAnnotations({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return D(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:t,canvas:e=t.canvas,viewport:s,intent:i="display",annotationMode:n=Ut.ENABLE,transform:r=null,background:a=null,optionalContentConfigPromise:o=null,annotationCanvasMap:l=null,pageColors:h=null,printAnnotationStorage:c=null,isEditing:u=!1,recordImages:f=!1,recordOperations:p=!1,operationsFilter:g=null}){this._stats?.time("Overall");const m=this._transport.getRenderingIntent(i,n,c,u),{renderingIntent:b,cacheKey:y}=m;this.#t=!1,o||=this._transport.getOptionalContentConfig(b);const A=this._intentStates.getOrInsertComputed(y,Ps);A.streamReaderCancelTimeout&&(clearTimeout(A.streamReaderCancelTimeout),A.streamReaderCancelTimeout=null);const v=!!(b&pt.PRINT);A.displayReadyCapability||(A.displayReadyCapability=Promise.withResolvers(),A.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(m));const w=!!(this._pdfBug&&globalThis.StepperManager?.enabled),S=!!e&&!this.recordedBBoxes&&(p||w),_=!!e&&!this.imageCoordinates&&f,E=B=>{if(A.renderTasks.delete(P),S){const H=P.gfx?.dependencyTracker.take();H&&(P.stepper?.setOperatorBBoxes(H,P.gfx.dependencyTracker.takeDebugMetadata()),p&&(this.recordedBBoxes=H))}_&&!B&&(this.imageCoordinates=P.gfx?.imagesTracker.take()),v&&(this.#t=!0),this.#s(),B?(P.capability.reject(B),this._abortOperatorList({intentState:A,reason:B instanceof Error?B:new Error(B)})):P.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),globalThis.Stats?.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))};let C=null,k=null;(S||_)&&(k=new cr(e,A.operatorList.length)),S&&(C=new dr(k,w));const P=new ce({callback:E,params:{canvas:e,canvasContext:t,dependencyTracker:C??k,imagesTracker:_?new Ke(e):null,viewport:s,transform:r,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:l,operatorList:A.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!v,pdfBug:this._pdfBug,pageColors:h,enableHWA:this._transport.enableHWA,operationsFilter:g});(A.renderTasks||=new Set).add(P);const I=P.task;return Promise.all([A.displayReadyCapability.promise,o]).then(([B,H])=>{if(this.destroyed){E();return}if(this._stats?.time("Rendering"),!(H.renderingIntent&b))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");P.initializeGraphics({transparency:B,optionalContentConfig:H}),P.operatorListChanged()}).catch(E),I}getOperatorList({intent:t="display",annotationMode:e=Ut.ENABLE,printAnnotationStorage:s=null,isEditing:i=!1}={}){function n(){a.operatorList.lastChunk&&(a.opListReadCapability.resolve(a.operatorList),a.renderTasks.delete(o))}const r=this._transport.getRenderingIntent(t,e,s,i,!0),a=this._intentStates.getOrInsertComputed(r.cacheKey,Ps);let o;return a.opListReadCapability||(o=Object.create(null),o.operatorListChanged=n,a.opListReadCapability=Promise.withResolvers(),(a.renderTasks||=new Set).add(o),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(r)),a.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageId:this.#e.getPageId(this._pageIndex+1)-1,pageIndex:this._pageIndex,includeMarkedContent:t===!0,disableNormalization:e===!0},{highWaterMark:100,size(i){return i.items.length}})}async getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then(i=>xe.textContent(i));const e=this.streamTextContent(t),s={items:[],styles:Object.create(null),lang:null};for await(const i of e)s.lang??=i.lang,Object.assign(s.styles,i.styles),s.items.push(...i.items);return s}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values())if(this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0}),!e.opListReadCapability)for(const s of e.renderTasks)t.push(s.completed),s.cancel();return this.objs.clear(),this.#t=!1,Promise.all(t)}cleanup(t=!1){this.#t=!0;const e=this.#s();return t&&e&&(this._stats&&=new gi),e}#s(){if(!this.#t||this.destroyed)return!1;for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),this.#t=!1,!0}_startRenderPage(t,e){const s=this._intentStates.get(e);s&&(this._stats?.timeEnd("Page Request"),s.displayReadyCapability?.resolve(t))}_renderPageChunk(t,e){for(let s=0,i=t.length;s{o.read().then(({value:c,done:u})=>{if(u){l.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(c,l),h())},c=>{if(l.streamReader=null,!this._transport.destroyed){if(l.operatorList){l.operatorList.lastChunk=!0;for(const u of l.renderTasks)u.operatorListChanged();this.#s()}if(l.displayReadyCapability)l.displayReadyCapability.reject(c);else if(l.opListReadCapability)l.opListReadCapability.reject(c);else throw c}})};h()}_abortOperatorList({intentState:t,reason:e,force:s=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout&&(clearTimeout(t.streamReaderCancelTimeout),t.streamReaderCancelTimeout=null),!s){if(t.renderTasks.size>0)return;if(e instanceof Vs){let i=ba;e.extraDelay>0&&e.extraDelay<1e3&&(i+=e.extraDelay),t.streamReaderCancelTimeout=setTimeout(()=>{t.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:t,reason:e,force:!0})},i);return}}if(t.streamReader.cancel(new $t(e.message)).catch(()=>{}),t.streamReader=null,!this._transport.destroyed){for(const[i,n]of this._intentStates)if(n===t){this._intentStates.delete(i);break}this.cleanup()}}}get stats(){return this._stats}}var Ht,xt,Nt,qt,ts,Kt,Qt,ct,Xe,wn,vn,we,ue,Ye;const tt=class tt{constructor({name:t=null,port:e=null,verbosity:s=Hn()}={}){kt(this,ct);kt(this,Ht,Promise.withResolvers());kt(this,xt,null);kt(this,Nt,null);kt(this,qt,null);if(this.name=t,this.destroyed=!1,this.verbosity=s,e){if(K(tt,Qt).has(e))throw new Error("Cannot use more than one PDFWorker per port.");K(tt,Qt).set(e,this),Pt(this,ct,wn).call(this,e)}else Pt(this,ct,vn).call(this)}get promise(){return K(this,Ht).promise}get port(){return K(this,Nt)}get messageHandler(){return K(this,xt)}destroy(){this.destroyed=!0,K(this,qt)?.terminate(),dt(this,qt,null),K(tt,Qt).delete(K(this,Nt)),dt(this,Nt,null),K(this,xt)?.destroy(),dt(this,xt,null)}static create(t){const e=K(this,Qt).get(t?.port);if(e){if(e._pendingDestroy)throw new Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return e}return new tt(t)}static get workerSrc(){if(de.workerSrc)return de.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return D(this,"_setupFakeWorkerGlobal",(async()=>K(this,ue,Ye)?K(this,ue,Ye):(await import(this.workerSrc)).WorkerMessageHandler)())}};Ht=new WeakMap,xt=new WeakMap,Nt=new WeakMap,qt=new WeakMap,ts=new WeakMap,Kt=new WeakMap,Qt=new WeakMap,ct=new WeakSet,Xe=function(){K(this,Ht).resolve(),K(this,xt).send("configure",{verbosity:this.verbosity})},wn=function(t){dt(this,Nt,t),dt(this,xt,new Ae("main","worker",t)),K(this,xt).on("ready",()=>{}),Pt(this,ct,Xe).call(this)},vn=function(){if(K(tt,Kt)||K(tt,ue,Ye)){Pt(this,ct,we).call(this);return}let{workerSrc:t}=tt;try{tt._isSameOrigin(window.location,t)||(t=tt._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),s=new Ae("main","worker",e),i=()=>{n.abort(),s.destroy(),e.terminate(),this.destroyed?K(this,Ht).reject(new Error("Worker was destroyed")):Pt(this,ct,we).call(this)},n=new AbortController;e.addEventListener("error",()=>{K(this,qt)||i()},{signal:n.signal}),s.on("test",a=>{if(n.abort(),this.destroyed||!a){i();return}dt(this,xt,s),dt(this,Nt,e),dt(this,qt,e),Pt(this,ct,Xe).call(this)}),s.on("ready",a=>{if(n.abort(),this.destroyed){i();return}try{r()}catch{Pt(this,ct,we).call(this)}});const r=()=>{const a=new Uint8Array;s.send("test",a,[a.buffer])};r();return}catch{ss("The worker has been disabled.")}Pt(this,ct,we).call(this)},we=function(){K(tt,Kt)||(N("Setting up fake worker."),dt(tt,Kt,!0)),tt._setupFakeWorkerGlobal.then(t=>{if(this.destroyed){K(this,Ht).reject(new Error("Worker was destroyed"));return}const e=new Cr;dt(this,Nt,e);const s=`fake${fi(tt,ts)._++}`,i=new Ae(s+"_worker",s,e);t.setup(i,e),dt(this,xt,new Ae(s,s+"_worker",e)),Pt(this,ct,Xe).call(this)}).catch(t=>{K(this,Ht).reject(new Error(`Setting up fake worker failed: "${t.message}".`))})},ue=new WeakSet,Ye=function(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}},kt(tt,ue),kt(tt,ts,0),kt(tt,Kt,!1),kt(tt,Qt,new WeakMap),mt&&(dt(tt,Kt,!0),de.workerSrc||="./pdf.worker.mjs"),tt._isSameOrigin=(t,e)=>{const s=URL.parse(t);if(!s?.origin||s.origin==="null")return!1;const i=new URL(e,s);return s.origin===i.origin},tt._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))};let ke=tt;class Aa{downloadInfoCapability=Promise.withResolvers();#t=null;#e=new Map;#s=null;#i=new Map;#n=new Map;#a=new Map;#r=null;constructor(t,e,s,i,n,r){this.messageHandler=t,this.loadingTask=e,this.#s=s,this.commonObjs=new bn,this.fontLoader=new fr({ownerDocument:i.ownerDocument,styleElement:i.styleElement}),this.enableHWA=i.enableHWA,this.loadingParams=i.loadingParams,this._params=i,this.canvasFactory=n.canvasFactory,this.filterFactory=n.filterFactory,this.binaryDataFactory=n.binaryDataFactory,this.pagesMapper=r,this.destroyed=!1,this.destroyCapability=null,this.setupMessageHandler()}updatePage(t){const{_pageIndex:e}=t;this.#i.set(e,t),this.#n.set(e,Promise.resolve(t))}#o(t,e=null){return this.#e.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,e))}#l({loaded:t,total:e}){this.loadingTask.onProgress?.({loaded:t,total:e,percent:e?X(Math.round(t/e*100),0,100):NaN})}get annotationStorage(){return D(this,"annotationStorage",new qs)}getRenderingIntent(t,e=Ut.ENABLE,s=null,i=!1,n=!1){let r=pt.DISPLAY,a=Ce;switch(t){case"any":r=pt.ANY;break;case"display":break;case"print":r=pt.PRINT;break;default:N(`getRenderingIntent - invalid intent: ${t}`)}const o=r&pt.PRINT&&s instanceof rn?s:this.annotationStorage;switch(e){case Ut.DISABLE:r+=pt.ANNOTATIONS_DISABLE;break;case Ut.ENABLE:break;case Ut.ENABLE_FORMS:r+=pt.ANNOTATIONS_FORMS;break;case Ut.ENABLE_STORAGE:r+=pt.ANNOTATIONS_STORAGE,a=o.serializable;break;default:N(`getRenderingIntent - invalid annotationMode: ${e}`)}i&&(r+=pt.IS_EDITING),n&&(r+=pt.OPLIST);const{ids:l,hash:h}=o.modifiedIds,c=[r,a.hash,h];return{renderingIntent:r,cacheKey:c.join("_"),annotationStorageSerializable:a,modifiedIds:l}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),this.#r?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const s of this.#i.values())t.push(s._destroy());this.#i.clear(),this.#n.clear(),this.#a.clear(),Object.hasOwn(this,"annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);return t.push(e),Promise.all(t).then(()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#e.clear(),this.filterFactory.destroy(),gt.cleanup(),this.#s?.cancelAllRequests(new $t("Worker was terminated.")),this.messageHandler?.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",(s,i)=>{Z(this.#s,"GetReader - no `BasePDFStream` instance available."),this.#t=this.#s.getFullReader(),this.#t.onProgress=n=>this.#l(n),i.onPull=()=>{this.#t.read().then(function({value:n,done:r}){if(r){i.close();return}Z(n instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(n),1,[n])}).catch(n=>{i.error(n)})},i.onCancel=n=>{this.#t.cancel(n),i.ready.catch(r=>{if(!this.destroyed)throw r})}}),t.on("ReaderHeadersReady",async s=>{await this.#t.headersReady;const{isStreamingSupported:i,isRangeSupported:n,contentLength:r}=this.#t;return i&&n&&(this.#t.onProgress=null),{isStreamingSupported:i,isRangeSupported:n,contentLength:r}}),t.on("GetRangeReader",(s,i)=>{Z(this.#s,"GetRangeReader - no `BasePDFStream` instance available.");const n=this.#s.getRangeReader(s.begin,s.end);if(!n){i.close();return}i.onPull=()=>{n.read().then(function({value:r,done:a}){if(a){i.close();return}Z(r instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(r),1,[r])}).catch(r=>{i.error(r)})},i.onCancel=r=>{n.cancel(r),i.ready.catch(a=>{if(!this.destroyed)throw a})}}),t.on("GetDoc",({pdfInfo:s})=>{this.pagesMapper.pagesNumber=s.numPages,this._numPages=s.numPages,this._htmlForXfa=s.htmlForXfa,delete s.htmlForXfa,e._capability.resolve(new ya(s,this))}),t.on("DocException",s=>{e._capability.reject(ut(s))}),t.on("PasswordRequest",s=>{this.#r=Promise.withResolvers();try{if(!e.onPassword)throw ut(s);const i=n=>{n instanceof Error?this.#r.reject(n):this.#r.resolve({password:n})};e.onPassword(i,s.code)}catch(i){this.#r.reject(i)}return this.#r.promise}),t.on("DataLoaded",s=>{this.#l({loaded:s.length,total:s.length}),this.downloadInfoCapability.resolve(s)}),t.on("StartRenderPage",s=>{if(this.destroyed)return;this.#i.get(s.pageIndex)._startRenderPage(s.transparency,s.cacheKey)}),t.on("commonobj",([s,i,n])=>{if(this.destroyed||this.commonObjs.has(s))return null;switch(i){case"Font":if("error"in n){const c=n.error;N(`Error during font loading: ${c}`),this.commonObjs.resolve(s,c);break}const r=new Ar(n),a=this._params.pdfBug&&globalThis.FontInspector?.enabled?(c,u)=>globalThis.FontInspector.fontAdded(c,u):null,o=new pr(r,a,n.charProcOperatorList,n.extra);this.fontLoader.bind(o).catch(()=>t.sendWithPromise("FontFallback",{id:s})).finally(()=>{o.fontExtraProperties||o.clearData(),this.commonObjs.resolve(s,o)});break;case"CopyLocalImage":const{imageRef:l}=n;Z(l,"The imageRef must be defined.");for(const c of this.#i.values())for(const[,u]of c.objs){if(u?.ref!==l)continue;if(!u.dataLen)return null;const f=structuredClone(u);return this.commonObjs.resolve(s,f),u.dataLen}break;case"FontPath":this.commonObjs.resolve(s,new vr(n));break;case"Image":this.commonObjs.resolve(s,n);break;case"Pattern":const h=new wr(n);this.commonObjs.resolve(s,h.getIR());break;default:throw new Error(`Got unknown common object type ${i}`)}return null}),t.on("obj",([s,i,n,r])=>{if(this.destroyed)return;const a=this.#i.get(i);if(!a.objs.has(s)){if(a._intentStates.size===0){r?.bitmap?.close();return}switch(n){case"Image":case"Pattern":a.objs.resolve(s,r);break;default:throw new Error(`Got unknown object type ${n}`)}}}),t.on("DocProgress",s=>{this.destroyed||this.#l(s)}),t.on("FetchBinaryData",async s=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.binaryDataFactory)throw new Error("`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.");return this.binaryDataFactory.fetch(s)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&N("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:this.#t?.filename??null},e).finally(()=>{this.annotationStorage.resetModified()})}extractPages(t,e=null){const s={pageInfos:t};let i;const n=globalThis.ImageBitmap;if(typeof n=="function"){const r=Array.isArray(t)?t:[t];for(const a of r)a?.image instanceof n&&(i||=[]).push(a.image)}if(this.annotationStorage.size>0){const r=this.annotationStorage.serializable;let{map:a}=r;r.transfer?.length&&(i?i.push(...r.transfer):i=r.transfer);const o=this.pagesMapper.getMapping();if(o){const l=new Map;for(const[h,c]of a){if(c?.pageIndex!==void 0&&c.pageIndex>=0&&c.pageIndex{this.annotationStorage.resetModified()})}getPage(t){if(!Number.isInteger(t)||t<=0||t>this.pagesMapper.pagesNumber)return Promise.reject(new Error("Invalid page request."));const e=t-1,s=this.pagesMapper.getPageId(t)-1,i=this.#n.get(e);if(i)return i;const n=this.messageHandler.sendWithPromise("GetPage",{pageIndex:s}).then(r=>{if(this.destroyed)throw new Error("Transport destroyed");r.refStr&&this.#a.set(r.refStr,s);const a=new Zs(e,r,this,this.pagesMapper,this._params.pdfBug);return this.#i.set(e,a),a});return this.#n.set(e,n),n}async getPageIndex(t){if(!Ls(t))throw new Error("Invalid pageIndex request.");const e=await this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}),s=this.pagesMapper.getPageNumber(e+1);if(s===0)throw new Error("GetPageIndex: page has been removed.");return s-1}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:this.pagesMapper.getPageId(t+1)-1,intent:e})}getFieldObjects(){return this.#o("GetFieldObjects")}getSignatures(){return this.#o("GetSignatures")}getSignatureData(t){return this.messageHandler.sendWithPromise("GetSignatureData",t)}hasJSActions(){return this.#o("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return typeof t!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getAttachmentContent(t){return this.messageHandler.sendWithPromise("GetAttachmentContent",t)}getAnnotationsByType(t,e){return this.messageHandler.sendWithPromise("GetAnnotationsByType",{types:t,pageIndexesToSkip:e})}getDocJSActions(){return this.#o("GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:this.pagesMapper.getPageId(t+1)-1})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:this.pagesMapper.getPageId(t+1)-1})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(t){return this.#o("GetOptionalContentConfig").then(e=>new Qs(e,t))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata";return this.#e.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,null).then(e=>({info:e[0],metadata:e[1]?new fa(e[1]):null,contentDispositionFilename:this.#t?.filename??null,contentLength:this.#t?.contentLength??null,hasStructTree:e[2]})))}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const e of this.#i.values())if(!e.cleanup())throw new Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),t||this.fontLoader.clear(),this.#e.clear(),this.filterFactory.destroy(!0),gt.cleanup()}}cachedPageNumber(t){if(!Ls(t))return null;const e=t.gen===0?`${t.num}R`:`${t.num}R${t.gen}`,s=this.#a.get(e);if(s>=0){const i=this.pagesMapper.getPageNumber(s+1);if(i!==0)return i}return null}}class wa{_internalRenderTask=null;onContinue=null;onError=null;constructor(t){this._internalRenderTask=t}get promise(){return this._internalRenderTask.capability.promise}cancel(t=0){this._internalRenderTask.cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=this._internalRenderTask.operatorList;if(!t)return!1;const{annotationCanvasMap:e}=this._internalRenderTask;return t.form||t.canvas&&e?.size>0}get imageCoordinates(){return this._internalRenderTask.imageCoordinates||null}}class ce{#t=null;static#e=new WeakSet;constructor({callback:t,params:e,objs:s,commonObjs:i,annotationCanvasMap:n,operatorList:r,pageIndex:a,canvasFactory:o,filterFactory:l,useRequestAnimationFrame:h=!1,pdfBug:c=!1,pageColors:u=null,enableHWA:f=!1,operationsFilter:p=null}){this.callback=t,this.params=e,this.objs=s,this.commonObjs=i,this.annotationCanvasMap=n,this.operatorListIdx=null,this.operatorList=r,this._pageIndex=a,this.canvasFactory=o,this.filterFactory=l,this._pdfBug=c,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=h===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new wa(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=e.canvas,this._canvasContext=e.canvas?null:e.canvasContext,this._enableHWA=f,this._dependencyTracker=e.dependencyTracker,this._imagesTracker=e.imagesTracker,this._operationsFilter=p}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:t=!1,optionalContentConfig:e}){if(this.cancelled)return;if(this._canvas){if(ce.#e.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");ce.#e.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{viewport:s,transform:i,background:n,dependencyTracker:r,imagesTracker:a}=this.params,o=this._canvasContext||this._canvas.getContext("2d",{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new Jt(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:e},this.annotationCanvasMap,this.pageColors,r,a),this.gfx.beginDrawing({transform:i,viewport:s,transparency:t,background:n}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}cancel(t=null,e=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),this.#t&&(window.cancelAnimationFrame(this.#t),this.#t=null),ce.#e.delete(this._canvas),t||=new Vs(`Rendering cancelled, page ${this._pageIndex+1}`,e),this.callback(t),this.task.onError?.(t)}operatorListChanged(){if(!this.graphicsReady){this.graphicsReadyCallback||=this._continueBound;return}this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length),this.stepper?.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?this.#t=window.requestAnimationFrame(()=>{this.#t=null,this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),ce.#e.delete(this._canvas),this.callback())))}}const va="6.3.289",Sa="1c8020a7d";class St{#t=null;#e=null;#s;#i=null;#n=!1;#a=!1;#r=null;#o;#l=null;#h=null;static#u=null;static get _keyboardManager(){return D(this,"_keyboardManager",new bt([[["Escape"],St.prototype._hideDropdownFromKeyboard],[["Space"],St.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight"],St.prototype._moveToNext],[["ArrowUp","ArrowLeft"],St.prototype._moveToPrevious],[["Home"],St.prototype._moveToBeginning],[["End"],St.prototype._moveToEnd]]))}constructor({editor:t=null,uiManager:e=null}){t?(this.#a=!1,this.#r=t):this.#a=!0,this.#h=t?._uiManager||e,this.#o=this.#h._eventBus,this.#s=t?.color?.toUpperCase()||this.#h?.highlightColors.values().next().value||"#FFFF98",St.#u||=Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"})}renderButton(){const t=this.#t=document.createElement("button");t.className="colorPicker",t.tabIndex="0",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),t.ariaHasPopup="true",this.#r&&(t.ariaControls=`${this.#r.id}_colorpicker_dropdown`);const e=this.#h._signal;t.addEventListener("click",this.#m.bind(this),{signal:e}),t.addEventListener("keydown",this.#g.bind(this),{signal:e});const s=this.#e=document.createElement("span");return s.className="swatch",s.ariaHidden="true",s.style.backgroundColor=this.#s,t.append(s),t}renderMainDropdown(){const t=this.#i=this.#d();return t.ariaOrientation="horizontal",t.ariaLabelledBy="highlightColorPickerLabel",t}#d(){const t=document.createElement("div"),e=this.#h._signal;t.addEventListener("contextmenu",Ct,{signal:e}),t.className="dropdown",t.role="listbox",t.ariaMultiSelectable="false",t.ariaOrientation="vertical",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown"),this.#r&&(t.id=`${this.#r.id}_colorpicker_dropdown`);for(const[s,i]of this.#h.highlightColors){const n=document.createElement("button");n.tabIndex="0",n.role="option",n.setAttribute("data-color",i),n.title=s,n.setAttribute("data-l10n-id",St.#u[s]);const r=document.createElement("span");n.append(r),r.className="swatch",r.style.backgroundColor=i,n.ariaSelected=i===this.#s,n.addEventListener("click",this.#f.bind(this,i),{signal:e}),t.append(n)}return t.addEventListener("keydown",this.#g.bind(this),{signal:e}),t}#f(t,e){e.stopPropagation(),this.#o.dispatch("switchannotationeditorparams",{source:this,type:$.HIGHLIGHT_COLOR,value:t}),this.update(t)}_colorSelectFromKeyboard(t){if(t.target===this.#t){this.#m(t);return}const e=t.target.getAttribute("data-color");e&&this.#f(e,t)}_moveToNext(t){if(!this.#p){this.#m(t);return}if(t.target===this.#t){this.#i.firstElementChild?.focus();return}t.target.nextSibling?.focus()}_moveToPrevious(t){if(t.target===this.#i?.firstElementChild||t.target===this.#t){this.#p&&this._hideDropdownFromKeyboard();return}this.#p||this.#m(t),t.target.previousSibling?.focus()}_moveToBeginning(t){if(!this.#p){this.#m(t);return}this.#i.firstElementChild?.focus()}_moveToEnd(t){if(!this.#p){this.#m(t);return}this.#i.lastElementChild?.focus()}#g(t){St._keyboardManager.exec(this,t)}#m(t){if(this.#p){this.hideDropdown();return}if(this.#n=t.detail===0,this.#l||(this.#l=new AbortController,window.addEventListener("pointerdown",this.#c.bind(this),{signal:this.#h.combinedSignal(this.#l)})),this.#t.ariaExpanded="true",this.#i){this.#i.classList.remove("hidden");return}const e=this.#i=this.#d();this.#t.append(e)}#c(t){this.#i?.contains(t.target)||this.hideDropdown()}hideDropdown(){this.#i?.classList.add("hidden"),this.#t.ariaExpanded="false",this.#l?.abort(),this.#l=null}get#p(){return this.#i&&!this.#i.classList.contains("hidden")}_hideDropdownFromKeyboard(){if(!this.#a){if(!this.#p){this.#r?.unselect();return}this.hideDropdown(),this.#t.focus({preventScroll:!0,focusVisible:this.#n})}}update(t){if(this.#e&&(this.#e.style.backgroundColor=t),!this.#i)return;const e=this.#h.highlightColors.values();for(const s of this.#i.children)s.ariaSelected=e.next().value===t.toUpperCase()}destroy(){this.#t?.remove(),this.#t=null,this.#e=null,this.#i?.remove(),this.#i=null}}class Pe{#t=null;#e=!1;#s=null;#i=null;static#n=null;constructor(t){this.#s=t,this.#i=t._uiManager,Pe.#n||=Object.freeze({freetext:"pdfjs-editor-color-picker-free-text-input",ink:"pdfjs-editor-color-picker-ink-input"})}renderButton(){if(this.#t)return this.#t;const{editorType:t,colorType:e,colorAndOpacityType:s,opacityType:i,color:n,opacity:r}=this.#s,a=this.#e=j.isAlphaColorInputSupported&&i!==void 0,o=this.#t=document.createElement("input");if(o.type="color",a){o.setAttribute("alpha","");const l=x.hexNums[Math.round((r??1)*255)];o.value=(n||"#000000")+l}else o.value=n||"#000000";return o.className="basicColorPicker",o.tabIndex=0,o.setAttribute("data-l10n-id",Pe.#n[t]),o.addEventListener("input",()=>{if(a){const l=De(o.value);if(!l)return;const[h,c,u,f]=l,p=x.makeHexColor(h,c,u);s!==void 0?this.#i.updateParams(s,{color:p,opacity:f}):(this.#i.updateParams(e,p),this.#i.updateParams(i,f))}else this.#i.updateParams(e,o.value)},{signal:this.#i._signal}),o}update(t){if(this.#t)if(this.#e){const e=x.hexNums[Math.round(this.#s.opacity*255)];this.#t.value=t+e}else this.#t.value=t}updateOpacity(t){if(!this.#t||!this.#e)return;const e=x.hexNums[Math.round(t*255)];this.#t.value=this.#s.color+e}destroy(){this.#t?.remove(),this.#t=null}hideDropdown(){}}function Gi(d){return Math.floor(X(d,0,1)*255).toString(16).padStart(2,"0")}function be(d){return X(d,0,1)*255}class zi{static CMYK_G([t,e,s,i]){return["G",1-Math.min(1,.3*t+.59*s+.11*e+i)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return t=be(t),[t,t,t]}static G_HTML([t]){const e=Gi(t);return`#${e}${e}${e}`}static RGB_G([t,e,s]){return["G",.3*t+.59*e+.11*s]}static RGB_rgb(t){return t.map(be)}static RGB_HTML(t){return`#${t.map(Gi).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,s,i]){return["RGB",1-Math.min(1,t+i),1-Math.min(1,s+i),1-Math.min(1,e+i)]}static CMYK_rgb([t,e,s,i]){return[be(1-Math.min(1,t+i)),be(1-Math.min(1,s+i)),be(1-Math.min(1,e+i))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,s]){const i=1-t,n=1-e,r=1-s,a=Math.min(i,n,r);return["CMYK",i,n,r,a]}}class _a{create(t,e,s=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const i=this._createSVG("svg:svg");return i.setAttribute("version","1.1"),s||(i.setAttribute("width",`${t}px`),i.setAttribute("height",`${e}px`)),i.setAttribute("preserveAspectRatio","none"),i.setAttribute("viewBox",`0 0 ${t} ${e}`),i}createElement(t){if(typeof t!="string")throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){G("Abstract method `_createSVG` called.")}}class Je extends _a{_createSVG(t){return document.createElementNS(ht,t)}}const Ea=9,te=new WeakSet,xa=new Date().getTimezoneOffset()*60*1e3;class Es{static create(t){switch(t.data.annotationType){case J.LINK:return new ti(t);case J.TEXT:return new Ta(t);case J.WIDGET:switch(t.data.fieldType){case"Tx":return new ka(t);case"Btn":return t.data.radioButton?new Ia(t):t.data.checkBox?new Ma(t):new Da(t);case"Ch":return new Oa(t);case"Sig":return new Pa(t)}return new se(t);case J.POPUP:return new Ns(t);case J.FREETEXT:return new Sn(t);case J.LINE:return new Ra(t);case J.SQUARE:return new La(t);case J.CIRCLE:return new Na(t);case J.POLYLINE:return new _n(t);case J.CARET:return new Ua(t);case J.INK:return new ei(t);case J.POLYGON:return new Ba(t);case J.HIGHLIGHT:return new En(t);case J.UNDERLINE:return new Ha(t);case J.SQUIGGLY:return new $a(t);case J.STRIKEOUT:return new Ga(t);case J.STAMP:return new xn(t);case J.FILEATTACHMENT:return new za(t);case J.RICHMEDIA:case J.SCREEN:case J.SOUND:return new Cn(t);default:return new Q(t)}}}class Q{#t=null;#e=!1;#s=null;constructor(t,{isRenderable:e=!1,ignoreBorder:s=!1,createQuadrilaterals:i=!1}={}){this.isRenderable=e,this.data=t.data,this.layer=t.layer,this.linkService=t.linkService,this.downloadManager=t.downloadManager,this.imageResourcesPath=t.imageResourcesPath,this.renderForms=t.renderForms,this.svgFactory=t.svgFactory,this.annotationStorage=t.annotationStorage,this.enableComment=t.enableComment,this.enableScripting=t.enableScripting,this.hasJSActions=t.hasJSActions,this._fieldObjects=t.fieldObjects,this.parent=t.parent,this.hasOwnCommentButton=!1,e&&(this.contentElement=this.container=this._createContainer(s)),i&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:t,richText:e}){return!!(t?.str||e?.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return Q._hasPopupData(this.data)||this.enableComment&&!!this.commentText}get commentData(){const{data:t}=this,e=this.annotationStorage?.getEditor(t.id);return e?e.getData():t}get hasCommentButton(){return this.enableComment&&this.hasPopupElement}get commentButtonPosition(){const t=this.annotationStorage?.getEditor(this.data.id);if(t)return t.commentButtonPositionInPage;const{quadPoints:e,inkLists:s,rect:i}=this.data;let n=-1/0,r=-1/0;if(e?.length>=8){for(let a=0;ar?(r=e[a+1],n=e[a+2]):e[a+1]===r&&(n=Math.max(n,e[a+2]));return[n,r]}if(s?.length>=1){for(const a of s)for(let o=0,l=a.length;or?(r=a[o+1],n=a[o]):a[o+1]===r&&(n=Math.max(n,a[o]));if(n!==1/0)return[n,r]}return i?[i[2],i[3]]:null}_normalizePoint(t){const{page:{view:e},viewport:{rawDims:{pageWidth:s,pageHeight:i,pageX:n,pageY:r}}}=this.parent;return t[1]=e[3]-t[1]+e[1],t[0]=100*(t[0]-n)/s,t[1]=100*(t[1]-r)/i,t}get commentText(){const{data:t}=this;return this.annotationStorage.getRawValue(`${fe}${t.id}`)?.popup?.contents||t.contentsObj?.str||""}set commentText(t){const{data:e}=this,s={deleted:!t,contents:t||""};this.annotationStorage.updateEditor(e.id,{popup:s})||this.annotationStorage.setValue(`${fe}${e.id}`,{id:e.id,annotationType:e.annotationType,page:this.parent.page,popup:s,popupRef:e.popupRef,modificationDate:new Date}),t||this.removePopup()}removePopup(){(this.#s?.popup||this.popup)?.remove(),this.#s=this.popup=null}updateEdited(t){if(!this.container)return;t.rect&&(this.#t||={rect:this.data.rect.slice(0)});const{rect:e,popup:s}=t;e&&this.#i(e);let i=this.#s?.popup||this.popup;!i&&s?.text&&(this._createPopup(s),i=this.#s.popup),i&&(i.updateEdited(t),s?.deleted&&(i.remove(),this.#s=null,this.popup=null))}resetEdited(){this.#t&&(this.#i(this.#t.rect),this.#s?.popup.resetEdited(),this.#t=null)}#i(t){const{container:{style:e},data:{rect:s,rotation:i},parent:{viewport:{rawDims:{pageWidth:n,pageHeight:r,pageX:a,pageY:o}}}}=this;s?.splice(0,4,...t),e.left=`${100*(t[0]-a)/n}%`,e.top=`${100*(r-t[3]+o)/r}%`,i===0?(e.width=`${100*(t[2]-t[0])/n}%`,e.height=`${100*(t[3]-t[1])/r}%`):this.setRotation(i)}_createContainer(t){const{data:e,parent:{page:s,viewport:i}}=this,n=document.createElement("section");n.setAttribute("data-annotation-id",e.id),!(this instanceof se)&&!(this instanceof ti)&&!(this instanceof Cn)&&(n.tabIndex=0);const{style:r}=n;if(r.zIndex=this.parent.zIndex,this.parent.zIndex+=2,e.alternativeText&&(n.title=e.alternativeText),e.noRotate&&n.classList.add("norotate"),!e.rect||this instanceof Ns){const{rotation:g}=e;return!e.hasOwnCanvas&&g!==0&&this.setRotation(g,n),n}const{width:a,height:o}=this;if(!t&&e.borderStyle.width>0){r.borderWidth=`${e.borderStyle.width}px`;const g=e.borderStyle.horizontalCornerRadius,m=e.borderStyle.verticalCornerRadius;if(g>0||m>0){const y=`calc(${g}px * var(--total-scale-factor)) / calc(${m}px * var(--total-scale-factor))`;r.borderRadius=y}switch(e.borderStyle.style){case ae.SOLID:r.borderStyle="solid";break;case ae.DASHED:r.borderStyle="dashed";break;case ae.BEVELED:N("Unimplemented border style: beveled");break;case ae.INSET:N("Unimplemented border style: inset");break;case ae.UNDERLINE:r.borderBottomStyle="solid";break}const b=e.borderColor||null;b?(this.#e=!0,r.borderColor=x.makeHexColor(...b)):r.borderWidth=0}const l=x.normalizeRect([e.rect[0],s.view[3]-e.rect[1]+s.view[1],e.rect[2],s.view[3]-e.rect[3]+s.view[1]]),{pageWidth:h,pageHeight:c,pageX:u,pageY:f}=i.rawDims;r.left=`${100*(l[0]-u)/h}%`,r.top=`${100*(l[1]-f)/c}%`;const{rotation:p}=e;return e.hasOwnCanvas||p===0?(r.width=`${100*a/h}%`,r.height=`${100*o/c}%`):this.setRotation(p,n),n}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:s,pageHeight:i}=this.parent.viewport.rawDims;let{width:n,height:r}=this;t%180!==0&&([n,r]=[r,n]),e.style.width=`${100*n/s}%`,e.style.height=`${100*r/i}%`,e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const t=(e,s,i)=>{const n=i.detail[e],r=n[0],a=n.slice(1);i.target.style[s]=zi[`${r}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[s]:zi[`${r}_rgb`](a)})};return D(this,"_commonActions",{display:e=>{const{display:s}=e.detail,i=s%2===1;this.container.style.visibility=i?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:i,noPrint:s===1||s===2})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{const{hidden:s}=e.detail;this.container.style.visibility=s?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:s,noView:s})},focus:e=>{setTimeout(()=>e.target.focus({preventScroll:!1}),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:e=>{t("bgColor","backgroundColor",e)},fillColor:e=>{t("fillColor","backgroundColor",e)},fgColor:e=>{t("fgColor","color",e)},textColor:e=>{t("textColor","color",e)},borderColor:e=>{t("borderColor","borderColor",e)},strokeColor:e=>{t("strokeColor","borderColor",e)},rotation:e=>{const s=e.detail.rotation;this.setRotation(s),this.annotationStorage.setValue(this.data.id,{rotation:s})}})}_dispatchEventFromSandbox(t,e){const s=this._commonActions;for(const i of Object.keys(e.detail))(t[i]||s[i])?.(e)}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const s=this._commonActions;for(const[i,n]of Object.entries(e)){const r=s[i];if(r){const a={detail:{[i]:n},target:t};r(a),delete e[i]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,s,i,n]=this.data.rect.map(Math.fround);if(t.length===8){const[g,m,b,y]=t.subarray(2,6);if(i===g&&n===m&&e===b&&s===y)return}const{style:r}=this.container;let a;if(this.#e){const{borderColor:g,borderWidth:m}=r;r.borderWidth=0,a=["url('data:image/svg+xml;utf8,",``,``],this.container.classList.add("hasBorder")}const o=i-e,l=n-s,{svgFactory:h}=this,c=h.createElement("svg");c.classList.add("quadrilateralsContainer"),c.setAttribute("width",0),c.setAttribute("height",0),c.role="none";const u=h.createElement("defs");c.append(u);const f=h.createElement("clipPath"),p=`clippath_${this.data.id}`;f.setAttribute("id",p),f.setAttribute("clipPathUnits","objectBoundingBox"),u.append(f);for(let g=2,m=t.length;g`)}this.#e&&(a.push("')"),r.backgroundImage=a.join("")),this.container.append(c),this.container.style.clipPath=`url(#${p})`}_createPopup(t=null){const{data:e}=this;let s,i;t?(s={str:t.text},i=t.date):(s=e.contentsObj,i=e.modificationDate),this.#s=new Ns({data:{color:e.color,titleObj:e.titleObj,modificationDate:i,contentsObj:s,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]})}get hasPopupElement(){return!!(this.#s||this.popup||this.data.popupRef)}get extraPopupElement(){return this.#s}render(){G("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const s=[];if(this._fieldObjects){const i=this._fieldObjects.get(t)||[];for(const{page:n,id:r,exportValues:a}of i){if(n===-1||r===e)continue;const o=typeof a=="string"?a:null,l=document.querySelector(`[data-element-id="${r}"]`);if(l&&!te.has(l)){N(`_getElementsByName - element not allowed: ${r}`);continue}s.push({id:r,exportValue:o,domElement:l})}return s}for(const i of document.getElementsByName(t)){const{exportValue:n}=i,r=i.getAttribute("data-element-id");r!==e&&te.has(i)&&s.push({id:r,exportValue:n,domElement:i})}return s}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e,mustEnterInEditMode:!0})})}updateOC(t){if(!this.data.oc||!t)return;t.isVisible(this.data.oc)?this.show():this.hide()}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=e===null?"transparent":x.makeHexColor(...e)}}class Ca extends Q{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.editor=t.editor}render(){return this.container.className="editorAnnotation",this.container}createOrUpdatePopup(){const{editor:t}=this;t.hasComment&&this._createPopup(t.comment)}get hasCommentButton(){return this.enableComment&&this.editor.hasComment}get commentButtonPosition(){return this.editor.commentButtonPositionInPage}get commentText(){return this.editor.comment.text}set commentText(t){this.editor.comment=t,t||this.removePopup()}get commentData(){return this.editor.getData()}remove(){this.parent.removeAnnotation(this.data.id),this.container.remove(),this.container=null,this.removePopup()}}class ti extends Q{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!!e?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,s=document.createElement("a");s.setAttribute("data-element-id",t.id);let i=!1;return t.url?(e.addLinkAttributes(s,t.url,t.newWindow),i=!0):t.action?(this._bindNamedAction(s,t.action,t.overlaidText),i=!0):t.attachment?(this.#e(s,t.attachmentId,t.attachment,t.overlaidText,t.attachmentDest),i=!0):t.setOCGState?(this.#s(s,t.setOCGState,t.overlaidText),i=!0):t.dest?(this._bindLink(s,t.dest,t.overlaidText),i=!0):(t.actions&&(t.actions.has("Action")||t.actions.has("Mouse Up")||t.actions.has("Mouse Down"))&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(s,t),i=!0),t.resetForm?(this._bindResetFormAction(s,t.resetForm),i=!0):this.isTooltipOnly&&!i&&(this._bindLink(s,""),i=!0)),this.container.classList.add("linkAnnotation"),i&&(this.contentElement=s,this.container.append(s)),this.container}#t(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e,s=""){t.href=this.linkService.getDestinationHash(e),t.onclick=()=>(e&&this.linkService.goToDestination(e),!1),(e||e==="")&&this.#t(),s&&(t.title=s)}_bindNamedAction(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeNamedAction(e),!1),s&&(t.title=s),this.#t()}#e(t,e,s,i="",n=null){t.href=this.linkService.getAnchorUrl(""),s.description?t.title=s.description:i&&(t.title=i);const r=async()=>{const a=await this.linkService.getAttachmentContent(e);a&&this.downloadManager?.openOrDownloadData(a,s.filename,n)};t.onclick=()=>(r(),!1),this.#t()}#s(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeSetOCGState(e),!1),s&&(t.title=s),this.#t()}_bindJSAction(t,{actions:e,id:s,overlaidText:i}){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const r of e.keys()){const a=n.get(r);a&&(t[a]=()=>(this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:s,name:r}}),!1))}i&&(t.title=i),t.onclick||=()=>!1,this.#t()}_bindResetFormAction(t,e){const s=t.onclick;if(s||(t.href=this.linkService.getAnchorUrl("")),this.#t(),!this._fieldObjects){N('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),s||(t.onclick=()=>!1);return}t.onclick=()=>{s?.();const{fields:i,refs:n,include:r}=e,a=[];if(i.length!==0||n.length!==0){const h=new Set(n);for(const c of i){const u=this._fieldObjects.get(c)||[];for(const{id:f}of u)h.add(f)}for(const c of this._fieldObjects.values())for(const u of c)h.has(u.id)===r&&a.push(u)}else for(const h of this._fieldObjects.values())a.push(...h);const o=this.annotationStorage,l=[];for(const h of a){const{id:c}=h;switch(l.push(c),h.type){case"text":{const f=h.defaultValue||"";o.setValue(c,{value:f});break}case"checkbox":case"radiobutton":{const f=h.defaultValue===h.exportValues;o.setValue(c,{value:f});break}case"combobox":case"listbox":{const f=h.defaultValue||"";o.setValue(c,{value:f});break}default:continue}const u=document.querySelector(`[data-element-id="${c}"]`);if(u){if(!te.has(u)){N(`_bindResetFormAction - element not allowed: ${c}`);continue}}else continue;u.dispatchEvent(new Event("resetform"))}return this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:l,name:"ResetForm"}}),!1}}}class Ta extends Q{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");return t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(t),this.container}}class se extends Q{render(){return this.container}_getKeyModifier(t){return j.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,s,i,n){s.includes("mouse")?t.addEventListener(s,r=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:n(r),shift:r.shiftKey,modifier:this._getKeyModifier(r)}})}):t.addEventListener(s,r=>{if(s==="blur"){if(!e.focused||!r.relatedTarget)return;e.focused=!1}else if(s==="focus"){if(e.focused)return;e.focused=!0}n&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:n(r)}})})}_setEventListeners(t,e,s,i){const{actions:n}=this.data;for(const[r,a]of s)(a==="Action"||n?.has(a))&&((a==="Focus"||a==="Blur")&&(e||={focused:!1}),this._setEventListener(t,e,r,a,i),a==="Focus"&&!n?.has("Blur")?this._setEventListener(t,e,"blur","Blur",null):a==="Blur"&&!n?.has("Focus")&&this._setEventListener(t,e,"focus","Focus",null))}_setTextStyle(t){const e=["left","center","right"],{fontColor:s}=this.data.defaultAppearanceData,i=this.data.defaultAppearanceData.fontSize||Ea,n=t.style;let r;const a=2,o=l=>Math.round(10*l)/10;if(this.data.multiLine){const l=Math.abs(this.data.rect[3]-this.data.rect[1]-a),h=Math.round(l/(1.35*i))||1,c=l/h;r=Math.min(i,o(c/1.35))}else{const l=Math.abs(this.data.rect[3]-this.data.rect[1]-a);r=Math.min(i,o(l/1.35))}n.fontSize=`calc(${r}px * var(--total-scale-factor))`,n.color=x.makeHexColor(...s),this.data.textAlignment!==null&&!this.data.comb&&(n.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required"),t.setAttribute("aria-required",e)}}class ka extends se{constructor(t){const e=t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue;super(t,{isRenderable:e})}setPropertyOnSiblings(t,e,s,i){const n=this.annotationStorage;for(const r of this._getElementsByName(t.name,t.id))r.domElement&&(r.domElement[e]=s),n.setValue(r.id,{[i]:s})}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let s=null;if(this.renderForms){const i=t.getValue(e,{value:this.data.fieldValue});let n=i.value||"";const r=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;r&&n.length>r&&(n=n.slice(0,r));let a=i.formattedValue||this.data.textContent?.join(` +`)||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const o={userValue:n,formattedValue:a,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(s=document.createElement("textarea"),s.textContent=a??n,this.data.doNotScroll&&(s.style.overflowY="hidden")):(s=document.createElement("input"),s.type=this.data.password?"password":"text",s.setAttribute("value",a??n),this.data.doNotScroll&&(s.style.overflowX="hidden")),this.data.hasOwnCanvas&&(this.container.classList.add("hasOwnCanvas"),t.has(e)&&this.container.classList.add("sandboxModified")),te.add(s),this.contentElement=s,s.setAttribute("data-element-id",e),s.disabled=this.data.readOnly,s.name=this.data.fieldName,s.tabIndex=0;const{datetimeFormat:l,datetimeType:h,timeStep:c}=this.data,u=!!h&&this.enableScripting;l&&(s.title=l),this._setRequired(s,this.data.required),r&&(s.maxLength=r),s.addEventListener("input",p=>{t.setValue(e,{value:p.target.value}),this.setPropertyOnSiblings(s,"value",p.target.value,"value"),o.formattedValue=null}),s.addEventListener("resetform",p=>{const g=this.data.defaultFieldValue??"";s.value=o.userValue=g,o.formattedValue=null});let f=p=>{const{formattedValue:g}=o;g!=null&&(p.target.value=g),p.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){s.addEventListener("focus",g=>{if(o.focused)return;const{target:m}=g;if(u&&(m.type=h,c&&(m.step=c)),o.userValue){const b=o.userValue;if(u)if(h==="time"){const y=new Date(b),A=[y.getHours(),y.getMinutes(),y.getSeconds()];m.value=A.map(v=>v.toString().padStart(2,"0")).join(":")}else m.value=new Date(b-xa).toISOString().split(h==="date"?"T":".",1)[0];else m.value=b}o.lastCommittedValue=m.value,o.commitKey=1,this.data.actions?.has("Focus")||(o.focused=!0)}),s.addEventListener("updatefromsandbox",g=>{this.container.classList.add("sandboxModified");const m={value(b){o.userValue=b.detail.value??"",u||t.setValue(e,{value:o.userValue.toString()}),b.target.value=o.userValue},formattedValue(b){const{formattedValue:y}=b.detail;o.formattedValue=y,y!=null&&b.target!==document.activeElement&&(b.target.value=y);const A={formattedValue:y};u&&(A.value=y),t.setValue(e,A)},selRange(b){b.target.setSelectionRange(...b.detail.selRange)},charLimit:b=>{const{charLimit:y}=b.detail,{target:A}=b;if(y===0){A.removeAttribute("maxLength");return}A.setAttribute("maxLength",y);let v=o.userValue;!v||v.length<=y||(v=v.slice(0,y),A.value=o.userValue=v,t.setValue(e,{value:v}),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:v,willCommit:!0,commitKey:1,selStart:A.selectionStart,selEnd:A.selectionEnd}}))}};this._dispatchEventFromSandbox(m,g)}),s.addEventListener("keydown",g=>{o.commitKey=1;let m=-1;if(g.key==="Escape"?m=0:g.key==="Enter"&&!this.data.multiLine?m=2:g.key==="Tab"&&(o.commitKey=3),m===-1)return;const{value:b}=g.target;o.lastCommittedValue!==b&&(o.lastCommittedValue=b,o.userValue=b,this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:b,willCommit:!0,commitKey:m,selStart:g.target.selectionStart,selEnd:g.target.selectionEnd}}))});const p=f;f=null,s.addEventListener("blur",g=>{if(!o.focused||!g.relatedTarget)return;this.data.actions?.has("Blur")||(o.focused=!1);const{target:m}=g;let{value:b}=m;if(u){if(b&&h==="time"){const y=b.split(":").map(A=>parseInt(A,10));b=new Date(2e3,0,1,y[0],y[1],y[2]||0).valueOf(),m.step=""}else b.includes("T")||(b=`${b}T00:00`),b=new Date(b).valueOf();m.type="text"}o.userValue=b,o.lastCommittedValue!==b&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:b,willCommit:!0,commitKey:o.commitKey,selStart:g.target.selectionStart,selEnd:g.target.selectionEnd}}),p(g)}),this.data.actions?.has("Keystroke")&&s.addEventListener("beforeinput",g=>{o.lastCommittedValue=null;const{data:m,target:b}=g,{value:y,selectionStart:A,selectionEnd:v}=b;let w=A,S=v;switch(g.inputType){case"deleteWordBackward":{const _=/\w/;for(;w>0&&!_.test(y[w-1]);)w--;for(;w>0&&_.test(y[w-1]);)w--;break}case"deleteWordForward":{const _=y.substring(A).match(/^\W*\w*/);_&&(S+=_[0].length);break}case"deleteContentBackward":A===v&&(w-=1);break;case"deleteContentForward":A===v&&(S+=1);break}g.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:y,change:m||"",willCommit:!1,selStart:w,selEnd:S}})}),this._setEventListeners(s,o,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],g=>g.target.value)}if(f&&s.addEventListener("blur",f),this.data.comb){const g=(this.data.rect[2]-this.data.rect[0])/r;s.classList.add("comb"),s.style.setProperty("--comb-width",`calc(${g}px * var(--total-scale-factor))`);const m=this.data.textAlignment;if(m===1||m===2){const b=()=>{const y=r-s.value.length;s.style.setProperty("--comb-offset",`${m===1?y>>1:y}`)};b();for(const y of["input","blur","resetform","updatefromsandbox"])s.addEventListener(y,b)}}}else s=document.createElement("div"),s.textContent=this.data.fieldValue,s.style.verticalAlign="middle",s.style.display="table-cell",this.data.hasOwnCanvas&&(s.hidden=!0);return this._setTextStyle(s),this._setBackgroundColor(s),this._setDefaultPropertiesFromJS(s),this.container.append(s),this.container}}class Pa extends se{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class Ma extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.exportValue===e.fieldValue}).value;typeof i=="string"&&(i=i!=="Off",t.setValue(s,{value:i})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const n=document.createElement("input");return te.add(n),n.setAttribute("data-element-id",s),n.disabled=e.readOnly,this._setRequired(n,this.data.required),n.type="checkbox",n.name=e.fieldName,i&&n.setAttribute("checked",!0),n.setAttribute("exportValue",e.exportValue),n.tabIndex=0,n.addEventListener("change",r=>{const{name:a,checked:o}=r.target;for(const l of this._getElementsByName(a,s)){const h=o&&l.exportValue===e.exportValue;l.domElement&&(l.domElement.checked=h),t.setValue(l.id,{value:h})}t.setValue(s,{value:o})}),n.addEventListener("resetform",r=>{const a=e.defaultFieldValue||"Off";r.target.checked=a===e.exportValue}),this.enableScripting&&this.hasJSActions&&(n.addEventListener("updatefromsandbox",r=>{const a={value(o){o.target.checked=o.detail.value!=="Off",t.setValue(s,{value:o.target.checked})}};this._dispatchEventFromSandbox(a,r)}),this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],r=>r.target.checked)),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class Ia extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.buttonValue!==null&&e.fieldValue===e.buttonValue}).value;if(typeof i=="string"&&(i=i!==e.buttonValue,t.setValue(s,{value:i})),i)for(const r of this._getElementsByName(e.fieldName,s))t.setValue(r.id,{value:!1});const n=document.createElement("input");if(te.add(n),n.setAttribute("data-element-id",s),n.disabled=e.readOnly,this._setRequired(n,this.data.required),n.type="radio",n.name=e.fieldName,i&&n.setAttribute("checked",!0),n.tabIndex=0,n.addEventListener("change",r=>{const{name:a,checked:o}=r.target;for(const l of this._getElementsByName(a,s))t.setValue(l.id,{value:!1});t.setValue(s,{value:o})}),n.addEventListener("resetform",r=>{const a=e.defaultFieldValue;r.target.checked=a!=null&&a===e.buttonValue}),this.enableScripting&&this.hasJSActions){const r=e.buttonValue;n.addEventListener("updatefromsandbox",a=>{const o={value:l=>{const h=r===l.detail.value;for(const c of this._getElementsByName(l.target.name)){const u=h&&c.id===s;c.domElement&&(c.domElement.checked=u),t.setValue(c.id,{value:u})}}};this._dispatchEventFromSandbox(o,a)}),this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],a=>a.target.checked)}return this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class Da extends ti{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;return this.enableScripting&&this.hasJSActions&&e&&(this._setDefaultPropertiesFromJS(e),e.addEventListener("updatefromsandbox",s=>{this._dispatchEventFromSandbox({},s)})),t}}class Oa extends se{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,s=t.getValue(e,{value:this.data.fieldValue}),i=document.createElement("select");te.add(i),i.setAttribute("data-element-id",e),i.disabled=this.data.readOnly,this._setRequired(i,this.data.required),i.name=this.data.fieldName,i.tabIndex=0;let n=this.data.combo&&this.data.options.length>0;this.data.combo||(i.size=this.data.options.length,this.data.multiSelect&&(i.multiple=!0)),i.addEventListener("resetform",c=>{const u=this.data.defaultFieldValue;for(const f of i.options)f.selected=f.value===u});const r=(c,u)=>{const f=u.replaceAll(" "," ");c.textContent=f,f!==u&&c.setAttribute("display-value",u)};for(const c of this.data.options){const u=document.createElement("option");r(u,c.displayValue),u.value=c.exportValue,s.value.includes(c.exportValue)&&(u.setAttribute("selected",!0),n=!1),i.append(u)}let a=null;if(n){const c=document.createElement("option");c.value=" ",c.setAttribute("hidden",!0),c.setAttribute("selected",!0),i.prepend(c),a=()=>{c.remove(),i.removeEventListener("input",a),a=null},i.addEventListener("input",a)}const o=c=>{const u=c?"value":"textContent",{options:f,multiple:p}=i;return p?Array.prototype.filter.call(f,g=>g.selected).map(g=>g[u]):f.selectedIndex===-1?null:f[f.selectedIndex][u]};let l=o(!1);const h=c=>{const u=c.target.options;return Array.prototype.map.call(u,f=>({displayValue:f.getAttribute("display-value")||f.textContent,exportValue:f.value}))};return this.enableScripting&&this.hasJSActions?(i.addEventListener("updatefromsandbox",c=>{const u={value(f){a?.();const p=f.detail.value,g=new Set(Array.isArray(p)?p:[p]);for(const m of i.options)m.selected=g.has(m.value);t.setValue(e,{value:o(!0)}),l=o(!1)},multipleSelection(f){i.multiple=!0},remove(f){const p=i.options,g=f.detail.remove;p[g].selected=!1,i.remove(g),p.length>0&&Array.prototype.findIndex.call(p,b=>b.selected)===-1&&(p[0].selected=!0),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},clear(f){for(;i.length!==0;)i.remove(0);t.setValue(e,{value:null,items:[]}),l=o(!1)},insert(f){const{index:p,displayValue:g,exportValue:m}=f.detail.insert,b=i.children[p],y=document.createElement("option");r(y,g),y.value=m,b?b.before(y):i.append(y),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},items(f){const{items:p}=f.detail;for(;i.length!==0;)i.remove(0);for(const g of p){const{displayValue:m,exportValue:b}=g,y=document.createElement("option");r(y,m),y.value=b,i.append(y)}i.options.length>0&&(i.options[0].selected=!0),t.setValue(e,{value:o(!0),items:h(f)}),l=o(!1)},indices(f){const p=new Set(f.detail.indices);for(const g of f.target.options)g.selected=p.has(g.index);t.setValue(e,{value:o(!0)}),l=o(!1)},editable(f){f.target.disabled=!f.detail.editable}};this._dispatchEventFromSandbox(u,c)}),i.addEventListener("input",c=>{const u=o(!0),f=o(!1);t.setValue(e,{value:u}),c.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:l,change:f,changeEx:u,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(i,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],c=>c.target.value)):i.addEventListener("input",function(c){t.setValue(e,{value:o(!0)})}),this.data.combo&&this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class Ns extends Q{constructor(t){const{data:e,elements:s,parent:i}=t,n=!!i._commentManager;if(super(t,{isRenderable:!n&&Q._hasPopupData(e)}),this.elements=s,n&&Q._hasPopupData(e)){const r=this.popup=this.#t();for(const a of s)a.popup=r}else this.popup=null}#t(){return new Fa({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,commentManager:this.parent._commentManager})}render(){const{container:t}=this;t.classList.add("popupAnnotation"),t.role="comment";const e=this.popup=this.#t(),s=[];for(const i of this.elements)i.popup=e,i.container.ariaHasPopup="dialog",s.push(i.data.id),i.addHighlightArea();return this.container.setAttribute("aria-controls",s.map(i=>`${he}${i}`).join(",")),this.container}}class Fa{#t=null;#e=this.#j.bind(this);#s=this.#v.bind(this);#i=this.#C.bind(this);#n=this.#$.bind(this);#a=null;#r=null;#o=null;#l=null;#h=null;#u=null;#d=null;#f=!1;#g=null;#m=null;#c=null;#p=null;#b=null;#y=null;#A=null;#w=null;#_=null;#S=null;#E=!1;#x=null;#M=null;constructor({container:t,color:e,elements:s,titleObj:i,modificationDate:n,contentsObj:r,richText:a,parent:o,rect:l,parentRect:h,open:c,commentManager:u=null}){this.#r=t,this.#_=i,this.#o=r,this.#w=a,this.#u=o,this.#a=e,this.#A=l,this.#d=h,this.#h=s,this.#t=u,this.#x=s[0],this.#l=Ms.toDateObject(n),this.trigger=s.flatMap(f=>f.getElementsToTriggerPopup()),u||(this.#k(),this.#r.hidden=!0,c&&this.#$())}#k(){if(this.#m)return;this.#m=new AbortController;const{signal:t}=this.#m;for(const e of this.trigger)e.addEventListener("click",this.#n,{signal:t}),e.addEventListener("pointerenter",this.#i,{signal:t}),e.addEventListener("pointerleave",this.#s,{signal:t}),e.classList.add("popupTriggerArea");for(const e of this.#h)e.container?.addEventListener("keydown",this.#e,{signal:t})}#T(){const t=this.#h.find(e=>e.hasCommentButton);t&&(this.#b=t._normalizePoint(t.commentButtonPosition))}renderCommentButton(){if(this.#p){this.#p.parentNode||this.#x.container.after(this.#p);return}if(this.#b||this.#T(),!this.#b)return;const{signal:t}=this.#m=new AbortController,e=this.#x.hasOwnCommentButton,s=()=>{this.#t.toggleCommentPopup(this,!0,void 0,!e)},i=()=>{this.#t.toggleCommentPopup(this,!1,!0,!e)},n=()=>{this.#t.toggleCommentPopup(this,!1,!1)};if(e){this.#p=this.#x.container;for(const r of this.trigger)r.ariaHasPopup="dialog",r.ariaControls="commentPopup",r.addEventListener("keydown",this.#e,{signal:t}),r.addEventListener("click",s,{signal:t}),r.addEventListener("pointerenter",i,{signal:t}),r.addEventListener("pointerleave",n,{signal:t}),r.classList.add("popupTriggerArea")}else{const r=this.#p=document.createElement("button");r.className="annotationCommentButton";const a=this.#x.container;r.style.zIndex=parseInt(a.style.zIndex,10)+1,r.tabIndex=0,r.ariaHasPopup="dialog",r.ariaControls="commentPopup",r.setAttribute("data-l10n-id","pdfjs-show-comment-button"),this.#I(),this.#D(),r.addEventListener("keydown",this.#e,{signal:t}),r.addEventListener("click",s,{signal:t}),r.addEventListener("pointerenter",i,{signal:t}),r.addEventListener("pointerleave",n,{signal:t}),a.after(r)}}#D(){if(this.#x.extraPopupElement&&!this.#x.editor)return;this.#p||this.renderCommentButton();const[t,e]=this.#b,{style:s}=this.#p;s.left=`calc(${t}%)`,s.top=`calc(${e}% - var(--comment-button-dim))`}#I(){this.#x.extraPopupElement||(this.#p||this.renderCommentButton(),this.#p.style.backgroundColor=this.commentButtonColor||"")}get commentButtonColor(){const{color:t,opacity:e}=this.#x.commentData;return t?this.#u._commentManager.makeCommentColor(t,e):null}focusCommentButton(){setTimeout(()=>{this.#p?.focus()},0)}getData(){const{richText:t,color:e,opacity:s,creationDate:i,modificationDate:n}=this.#x.commentData;return{contentsObj:{str:this.comment},richText:t,color:e,opacity:s,creationDate:i,modificationDate:n}}get elementBeforePopup(){return this.#p}get comment(){return this.#M||=this.#x.commentText,this.#M}set comment(t){t!==this.comment&&(this.#x.commentText=this.#M=t)}focus(){this.#x.container?.focus()}get parentBoundingClientRect(){return this.#x.layer.getBoundingClientRect()}setCommentButtonStates({selected:t,hasPopup:e}){this.#p&&(this.#p.classList.toggle("selected",t),this.#p.ariaExpanded=e)}setSelectedCommentButton(t){this.#p.classList.toggle("selected",t)}get commentPopupPosition(){if(this.#y)return this.#y;const{x:t,y:e,height:s}=this.#p.getBoundingClientRect(),{x:i,y:n,width:r,height:a}=this.#x.layer.getBoundingClientRect();return[(t-i)/r,(e+s-n)/a]}set commentPopupPosition(t){this.#y=t}hasDefaultPopupPosition(){return this.#y===null}get commentButtonPosition(){return this.#b}get commentButtonWidth(){return this.#p.getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(t){const[e,s]=this.#y||this.commentButtonPosition.map(l=>l/100),i=this.parentBoundingClientRect,{x:n,y:r,width:a,height:o}=i;this.#t.showDialog(null,this,n+e*a,r+s*o,{...t,parentDimensions:i})}render(){if(this.#g)return;const t=this.#g=document.createElement("div");if(t.className="popup",this.#a){const s=t.style.outlineColor=x.makeHexColor(...this.#a);t.style.backgroundColor=`color-mix(in srgb, ${s} 30%, white)`}const e=document.createElement("span");if(e.className="header",this.#_?.str){const s=document.createElement("span");s.className="title",e.append(s),{dir:s.dir,str:s.textContent}=this.#_}if(t.append(e),this.#l){const s=document.createElement("time");s.className="popupDate",s.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),s.setAttribute("data-l10n-args",JSON.stringify({dateObj:this.#l.valueOf()})),s.dateTime=this.#l.toISOString(),e.append(s)}tn({html:this.#O||this.#o.str,dir:this.#o?.dir,className:"popupContent"},t),this.#r.append(t)}get#O(){const t=this.#w,e=this.#o;return t?.str&&(!e?.str||e.str===t.str)&&this.#w.html||null}get#H(){return this.#O?.attributes?.style?.fontSize||0}get#F(){return this.#O?.attributes?.style?.color||null}#L(t){const e=[],s={str:t,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},i={style:{color:this.#F,fontSize:this.#H?`calc(${this.#H}px * var(--total-scale-factor))`:""}};for(const n of t.split(` +`))e.push({name:"span",value:n,attributes:i});return s}#j(t){t.altKey||t.shiftKey||t.ctrlKey||t.metaKey||(t.key==="Enter"||t.key==="Escape"&&this.#f)&&this.#$()}updateEdited({rect:t,popup:e,deleted:s}){if(this.#t){s?(this.remove(),this.#M=null):e&&(e.deleted?this.remove():(this.#I(),this.#M=e.text)),t&&(this.#b=null,this.#T(),this.#D());return}if(s||e?.deleted){this.remove();return}this.#k(),this.#S||={contentsObj:this.#o,richText:this.#w},t&&(this.#c=null),e&&e.text&&(this.#w=this.#L(e.text),this.#l=Ms.toDateObject(e.date),this.#o=null),this.#g?.remove(),this.#g=null}resetEdited(){this.#S&&({contentsObj:this.#o,richText:this.#w}=this.#S,this.#S=null,this.#g?.remove(),this.#g=null,this.#c=null)}remove(){if(this.#m?.abort(),this.#m=null,this.#g?.remove(),this.#g=null,this.#E=!1,this.#f=!1,this.#p?.remove(),this.#p=null,this.trigger)for(const t of this.trigger)t.classList.remove("popupTriggerArea")}#N(){if(this.#c!==null)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:s,pageX:i,pageY:n}}}=this.#u;let r=!!this.#d,a=r?this.#d:this.#A;for(const p of this.#h)if(!a||x.intersect(p.data.rect,a)!==null){a=p.data.rect,r=!0;break}const o=x.normalizeRect([a[0],t[3]-a[1]+t[1],a[2],t[3]-a[3]+t[1]]),h=r?a[2]-a[0]+5:0,c=o[0]+h,u=o[1];this.#c=[100*(c-i)/e,100*(u-n)/s];const{style:f}=this.#r;f.left=`${this.#c[0]}%`,f.top=`${this.#c[1]}%`}#$(){if(this.#t){this.#t.toggleCommentPopup(this,!1);return}this.#f=!this.#f,this.#f?(this.#C(),this.#r.addEventListener("click",this.#n),this.#r.addEventListener("keydown",this.#e)):(this.#v(),this.#r.removeEventListener("click",this.#n),this.#r.removeEventListener("keydown",this.#e))}#C(){this.#g||this.render(),this.isVisible?this.#f&&this.#r.classList.add("focused"):(this.#N(),this.#r.hidden=!1,this.#r.style.zIndex=parseInt(this.#r.style.zIndex,10)+1e3)}#v(){this.#r.classList.remove("focused"),!(this.#f||!this.isVisible)&&(this.#r.hidden=!0,this.#r.style.zIndex=parseInt(this.#r.style.zIndex,10)-1e3)}forceHide(){this.#E=this.isVisible,this.#E&&(this.#r.hidden=!0)}maybeShow(){this.#t||(this.#k(),this.#E&&(this.#g||this.#C(),this.#E=!1,this.#r.hidden=!1))}get isVisible(){return!this.#t&&this.#r.hidden===!1}}class Sn extends Q{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.textContent=t.data.textContent,this.textPosition=t.data.textPosition,this.annotationEditorType=L.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const t=this.contentElement=document.createElement("div");t.classList.add("annotationTextContent"),t.setAttribute("role","comment");for(const e of this.textContent){const s=document.createElement("span");s.textContent=e,t.append(s)}this.container.append(t)}return!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}}class Ra extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("lineAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=this.#t=this.svgFactory.createElement("svg:line");return n.setAttribute("x1",t.rect[2]-t.lineCoordinates[0]),n.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]),n.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]),n.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]),n.setAttribute("stroke-width",t.borderStyle.width||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),i.append(n),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class La extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("squareAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=t.borderStyle.width,r=this.#t=this.svgFactory.createElement("svg:rect");return r.setAttribute("x",n/2),r.setAttribute("y",n/2),r.setAttribute("width",e-n),r.setAttribute("height",s-n),r.setAttribute("stroke-width",n||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),i.append(r),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class Na extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("circleAnnotation");const{data:t,width:e,height:s}=this,i=this.svgFactory.create(e,s,!0),n=t.borderStyle.width,r=this.#t=this.svgFactory.createElement("svg:ellipse");return r.setAttribute("cx",e/2),r.setAttribute("cy",s/2),r.setAttribute("rx",e/2-n/2),r.setAttribute("ry",s/2-n/2),r.setAttribute("stroke-width",n||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),i.append(r),this.container.append(i),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}}class _n extends Q{#t=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:t,vertices:e,borderStyle:s,popupRef:i},width:n,height:r}=this;if(!e)return this.container;const a=this.svgFactory.create(n,r,!0);let o=[];for(let h=0,c=e.length;h=0&&n.setAttribute("stroke-width",e||1),s)for(let r=0,a=this.#e.length;r{n.key==="Enter"&&(i?n.metaKey:n.ctrlKey)&&this.#e()}),!e.popupRef&&this.hasPopupData?(this.hasOwnCommentButton=!0,this._createPopup()):s.classList.add("popupTriggerArea"),t.append(s),t}getElementsToTriggerPopup(){return this.#t}addHighlightArea(){this.container.classList.add("highlightArea")}async#e(){const{fileId:t,filename:e,content:s}=this,i=await this.linkService.getAttachmentContent(t)||s;i&&this.downloadManager?.openOrDownloadData(i,e)}}class Cn extends Q{#t=new AbortController;#e=null;#s=null;constructor(t){super(t,{isRenderable:!!t.data.richMedia})}render(){this.container.classList.add("mediaAnnotation");const{filename:t}=this.data.richMedia,e=document.createElement("button");return e.className="mediaPlayButton",e.type="button",e.title=e.ariaLabel=t,e.addEventListener("click",()=>this.#i(e),{signal:this.#t.signal}),this.container.append(e),this.container}async#i(t){const{fileId:e,filename:s,contentType:i}=this.data.richMedia;t.disabled=!0;let n;try{n=await this.linkService.getAttachmentContent(e)}catch{return}finally{t.disabled=!1}if(!n||!t.isConnected)return;const{signal:r}=this.#t,a=URL.createObjectURL(new Blob([n],{type:i}));this.#e=a;const o=i.startsWith("audio/"),l=document.createElement(o?"audio":"video");if(this.#s=l,l.className="mediaContent",this._setBackgroundColor(l),l.src=a,l.title=s,l.controls=!0,l.autoplay=!0,l.tabIndex=0,o){let h=!1,c=!1;const u=()=>{l.controls=h||c};this.container.addEventListener("pointerenter",()=>{h=!0,u()},{signal:r}),this.container.addEventListener("pointerleave",()=>{h=!1,u()},{signal:r}),this.container.addEventListener("focusin",()=>{c=!0,u()},{signal:r}),this.container.addEventListener("focusout",()=>{c=!1,u()},{signal:r})}l.addEventListener("emptied",()=>this.#n(a),{once:!0,signal:r}),t.replaceWith(l),l.play().catch(()=>{})}#n(t=this.#e){t&&t===this.#e&&(URL.revokeObjectURL(t),this.#e=null)}destroy(){this.#t.abort(),this.#s&&(this.#s.pause(),this.#s.removeAttribute("src"),this.#s.load(),this.#s=null),this.#n()}}class si{#t=null;#e=null;#s=null;#i=new Map;#n=null;#a=null;#r=[];#o=!1;zIndex=0;constructor({div:t,accessibilityManager:e,annotationCanvasMap:s,annotationEditorUIManager:i,page:n,viewport:r,structTreeLayer:a,commentManager:o,linkService:l,annotationStorage:h}){this.div=t,this.#t=e,this.#e=s,this.#n=a||null,this.#a=l||null,this.#s=h||new qs,this.page=n,this.viewport=r,this._annotationEditorUIManager=i,this._commentManager=o||null}hasEditableAnnotations(){return this.#i.size>0}async render(t){const{annotations:e,optionalContentConfig:s}=t,i=this.div;Zt(i,this.viewport);const n=new Map,r=[],a={data:null,layer:i,linkService:this.#a,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:t.renderForms!==!1,svgFactory:new Je,annotationStorage:this.#s,enableComment:t.enableComment===!0,enableScripting:t.enableScripting===!0,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const o of e){if(o.noHTML)continue;const l=o.annotationType===J.POPUP;if(l){const u=n.get(o.id);if(!u)continue;if(!this._commentManager){r.push(o);continue}a.elements=u}else if(o.rect[2]===o.rect[0]||o.rect[3]===o.rect[1])continue;a.data=o;const h=Es.create(a);if(!h.isRenderable)continue;l||(this.#r.push(h),o.popupRef&&n.getOrInsertComputed(o.popupRef,ge).push(h));const c=h.render();o.hidden&&(c.style.visibility="hidden"),h.updateOC(s),h._isEditable&&(this.#i.set(h.data.id,h),this._annotationEditorUIManager?.renderAnnotationElement(h))}await this.#l();for(const o of r){const l=a.elements=n.get(o.id);a.data=o;const h=Es.create(a);if(!h.isRenderable)continue;const c=h.render();h.contentElement.id=`${he}${o.id}`,o.hidden&&(c.style.visibility="hidden"),l.at(-1).container.after(c)}this.#h()}async#l(){if(this.#r.length===0)return;this.div.replaceChildren();const t=[];if(!this.#o){this.#o=!0;for(const{contentElement:s,data:{hidden:i,id:n,oc:r}}of this.#r){const a=s.id=`${he}${n}`,o=s.localName==="a"&&!i&&!r;t.push(this.#n?.getAriaAttributes(a,{enableLinkOwnership:o}).then(l=>{if(l)for(const[h,c]of l)s.setAttribute(h,c)}))}}this.#r.sort(({data:{rect:[s,i,n,r]}},{data:{rect:[a,o,l,h]}})=>{if(s===n&&i===r)return 1;if(a===l&&o===h)return-1;const c=r,u=i,f=(i+r)/2,p=h,g=o,m=(o+h)/2;if(f>=p&&m<=u)return-1;if(m>=c&&f<=g)return 1;const b=(s+n)/2,y=(a+l)/2;return b-y});const e=document.createDocumentFragment();for(const s of this.#r)e.append(s.container),this._commentManager?(s.extraPopupElement?.popup||s.popup)?.renderCommentButton():s.extraPopupElement&&e.append(s.extraPopupElement.render());if(this.div.append(e),await Promise.all(t),this.#t){const s=await this.#n?.getAnnotationIds();for(const{contentElement:i}of this.#r)s?.has(i.id)||this.#t.addPointerInTextLayer(i,!1)}}async addLinkAnnotations(t){const e={data:null,layer:this.div,linkService:this.#a,svgFactory:new Je,parent:this};for(const s of t){s.borderStyle||=si._defaultBorderStyle,e.data=s;const i=Es.create(e);i.isRenderable&&(i.render(),i.contentElement.id=`${he}${s.id}`,this.#r.push(i))}await this.#l()}update({viewport:t,optionalContentConfig:e}){const s=this.div;this.viewport=t,Zt(s,{rotation:t.rotation});for(const i of this.#r)i.updateOC(e);this.#h(),s.hidden=!1}destroy(){for(const t of this.#r)t.destroy?.(),this.#t?.removePointerInTextLayer(t.contentElement);this.#r.length=0,this.#i.clear(),this.div.replaceChildren()}#h(){if(!this.#e)return;const t=this.div;for(const[e,s]of this.#e){const i=t.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;if(Array.isArray(s))for(const l of s)l.className="annotationContent",l.ariaHidden=!0;else s.className="annotationContent",s.ariaHidden=!0;const n=[];for(const l of i.children)l.nodeName==="CANVAS"&&n.push(l);for(const l of n)l.remove();const r=Array.isArray(s)?s[0]:s,{firstChild:a}=i;if(a?a.classList.contains("annotationContent")?a.after(r):a.before(r):i.append(r),Array.isArray(s)){let l=r;for(let h=1,c=s.length;hi.data.id===t);if(e<0)return;const[s]=this.#r.splice(e,1);this.#t?.removePointerInTextLayer(s.contentElement)}updateFakeAnnotations(t){if(t.length!==0){for(const e of t)e.updateFakeAnnotationElement(this);this.#l()}}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}static get _defaultBorderStyle(){return D(this,"_defaultBorderStyle",Object.freeze({width:1,rawWidth:1,style:ae.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}}const He=/\r\n?|\n/g;class rt extends M{#t="";#e=`${this.id}-editor`;#s=null;#i;_colorPicker=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=rt.prototype,e=n=>n.isEmpty(),s=Gt.TRANSLATE_SMALL,i=Gt.TRANSLATE_BIG;return D(this,"_keyboardManager",new bt([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter"],t.commitOrRemove],[["Escape"],t.commitOrRemove],[["ArrowLeft"],t._translateEmpty,{args:[-s,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-i,0],checker:e}],[["ArrowRight"],t._translateEmpty,{args:[s,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[i,0],checker:e}],[["ArrowUp"],t._translateEmpty,{args:[0,-s],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-i],checker:e}],[["ArrowDown"],t._translateEmpty,{args:[0,s],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,i],checker:e}]]))}static _type="freetext";static _editorType=L.FREETEXT;constructor(t){super({...t,name:"freeTextEditor"}),this.color=t.color||rt._defaultColor||M._defaultLineColor,this.#i=t.fontSize||rt._defaultFontSize,this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert.freetext),this.canAddComment=!1}static initialize(t,e){M.initialize(t,e);const s=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(s.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case $.FREETEXT_SIZE:rt._defaultFontSize=e;break;case $.FREETEXT_COLOR:rt._defaultColor=e;break}}updateParams(t,e){switch(t){case $.FREETEXT_SIZE:this.#n(e);break;case $.FREETEXT_COLOR:this.#a(e);break}}static get defaultPropertiesToUpdate(){return[[$.FREETEXT_SIZE,rt._defaultFontSize],[$.FREETEXT_COLOR,rt._defaultColor||M._defaultLineColor]]}get propertiesToUpdate(){return[[$.FREETEXT_SIZE,this.#i],[$.FREETEXT_COLOR,this.color]]}get toolbarButtons(){return this._colorPicker||=new Pe(this),[["colorPicker",this._colorPicker]]}get colorType(){return $.FREETEXT_COLOR}#n(t){const e=i=>{this.editorDiv.style.fontSize=`calc(${i}px * var(--total-scale-factor))`,this.translate(0,-(i-this.#i)*this.parentScale),this.#i=i,this.#o()},s=this.#i;this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:$.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}onUpdatedColor(){this.editorDiv.style.color=this.color,this._colorPicker?.update(this.color),super.onUpdatedColor()}#a(t){const e=i=>{this.color=i,this.onUpdatedColor()},s=this.color;this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:$.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-rt._internalPadding*t,-(rt._internalPadding+this.#i)*t]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),this.#s=new AbortController;const t=this._uiManager.combinedSignal(this.#s);return this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:t}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:t}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:t}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:t}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:t}),!0}disableEditMode(){return super.disableEditMode()?(this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",this.#e),this._isDraggable=!0,this.#s?.abort(),this.#s=null,this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"),!0):!1}focusin(t){this._focusEventsAllowed&&(super.focusin(t),t.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(t){this.width||(this.enableEditMode(),t&&this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}#r(){const t=[];this.editorDiv.normalize();let e=null;for(const s of this.editorDiv.childNodes)e?.nodeType===Node.TEXT_NODE&&s.nodeName==="BR"||(t.push(rt.#l(s)),e=s);return t.join(` +`)}#o(){const[t,e]=this.parentDimensions;let s;if(this.isAttachedToDOM)s=this.div.getBoundingClientRect();else{const{currentLayer:i,div:n}=this,r=n.style.display,a=n.classList.contains("hidden");n.classList.remove("hidden"),n.style.display="hidden",i.div.append(this.div),s=n.getBoundingClientRect(),n.remove(),n.style.display=r,n.classList.toggle("hidden",a)}this.rotation%180===this.parentRotation%180?(this.width=s.width/t,this.height=s.height/e):(this.width=s.height/t,this.height=s.width/e),this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const t=this.#t,e=this.#t=this.#r().trimEnd();if(t===e)return;const s=i=>{if(this.#t=i,!i){this.remove();return}this.#h(),this._uiManager.rebuild(this),this.#o()};this.addCommands({cmd:()=>{s(e)},undo:()=>{s(t)},mustExec:!1}),this.#o()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(t){t.target===this.div&&t.key==="Enter"&&(this.enterInEditMode(),t.preventDefault())}editorDivKeydown(t){rt._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}get canChangeContent(){return!0}render(){if(this.div)return this.div;let t,e;(this._isCopy||this.annotationElementId)&&(t=this.x,e=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",this.#e),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:s}=this.editorDiv;if(s.fontSize=`calc(${this.#i}px * var(--total-scale-factor))`,s.color=this.color,this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){const[i,n]=this.parentDimensions;if(this.annotationElementId){const{position:r}=this._initialData;let[a,o]=this.getInitialTranslation();[a,o]=this.pageTranslationToScreen(a,o);const[l,h]=this.pageDimensions,[c,u]=this.pageTranslation;let f,p;switch(this.rotation){case 0:f=t+(r[0]-c)/l,p=e+this.height-(r[1]-u)/h;break;case 90:f=t+(r[0]-c)/l,p=e-(r[1]-u)/h,[a,o]=[o,-a];break;case 180:f=t-this.width+(r[0]-c)/l,p=e-(r[1]-u)/h,[a,o]=[-a,-o];break;case 270:f=t+(r[0]-c-this.height*h)/l,p=e+(r[1]-u-this.width*l)/h,[a,o]=[-o,a];break}this.setAt(f*i,p*n,a,o)}else this._moveAfterPaste(t,e);this.#h(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}static#l(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(He,"")}editorDivPaste(t){const e=t.clipboardData||window.clipboardData,{types:s}=e;if(s.length===1&&s[0]==="text/plain")return;t.preventDefault();const i=rt.#d(e.getData("text")||"").replaceAll(He,` +`);if(!i)return;const n=window.getSelection();if(!n.rangeCount)return;this.editorDiv.normalize(),n.deleteFromDocument();const r=n.getRangeAt(0);if(!i.includes(` +`)){r.insertNode(document.createTextNode(i)),this.editorDiv.normalize(),n.collapseToStart();return}const{startContainer:a,startOffset:o}=r,l=[],h=[];if(a.nodeType===Node.TEXT_NODE){const f=a.parentElement;if(h.push(a.nodeValue.slice(o).replaceAll(He,"")),f!==this.editorDiv){let p=l;for(const g of this.editorDiv.childNodes){if(g===f){p=h;continue}p.push(rt.#l(g))}}l.push(a.nodeValue.slice(0,o).replaceAll(He,""))}else if(a===this.editorDiv){let f=l,p=0;for(const g of this.editorDiv.childNodes)p++===o&&(f=h),f.push(rt.#l(g))}this.#t=`${l.join(` +`)}${i}${h.join(` +`)}`,this.#h();const c=new Range;let u=Math.sumPrecise(l.map(f=>f.length));for(const{firstChild:f}of this.editorDiv.childNodes)if(f.nodeType===Node.TEXT_NODE){const p=f.nodeValue.length;if(u<=p){c.setStart(f,u),c.setEnd(f,u);break}u-=p}n.removeAllRanges(),n.addRange(c)}#h(){if(this.editorDiv.replaceChildren(),!!this.#t)for(const t of this.#t.split(` +`)){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}}#u(){return this.#t.replaceAll(" "," ")}static#d(t){return t.replaceAll(" "," ")}get contentDiv(){return this.editorDiv}getPDFRect(){const t=rt._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,e,s){let i=null;if(t instanceof Sn){const{data:{defaultAppearanceData:{fontSize:r,fontColor:a},rect:o,rotation:l,id:h,popupRef:c,richText:u,contentsObj:f,creationDate:p,modificationDate:g},textContent:m,textPosition:b,parent:{page:{pageNumber:y}}}=t;if(!m?.length)return null;i=t={annotationType:L.FREETEXT,color:Array.from(a),fontSize:r,value:m.join(` +`),position:b,pageIndex:y-1,rect:o.slice(0),rotation:l,annotationElementId:h,id:h,deleted:!1,popupRef:c,comment:f?.str||null,richText:u,creationDate:p,modificationDate:g}}const n=await super.deserialize(t,e,s);return n.#i=t.fontSize,n.color=x.makeHexColor(...t.color),n.#t=rt.#d(t.value),n._initialData=i,t.comment&&n.setCommentData(t),n}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const e=M._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),s=Object.assign(super.serialize(t),{color:e,fontSize:this.#i,value:this.#u()});return this.addComment(s),t?(s.isCopy=!0,s):this.annotationElementId&&!this.#f(s)?null:(s.id=this.annotationElementId,s)}#f(t){const{value:e,fontSize:s,color:i,pageIndex:n}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||t.value!==e||t.fontSize!==s||t.color.some((r,a)=>r!==i[a])||t.pageIndex!==n}renderAnnotationElement(t){const e=super.renderAnnotationElement(t);if(!e)return null;const{style:s}=e;s.fontSize=`calc(${this.#i}px * var(--total-scale-factor))`,s.color=this.color,e.replaceChildren();for(const i of this.#t.split(` +`)){const n=document.createElement("div");n.append(i?document.createTextNode(i):document.createElement("br")),e.append(n)}return t.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#t}}),e}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}}class ii{#t=Object.create(null);updateProperty(t,e){this[t]=e,this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,s]of Object.entries(t))e.startsWith("_")||this.updateProperty(e,s)}updateSVGProperty(t,e){this.#t[t]=e}toSVGProperties(){const t=this.#t;return this.#t=Object.create(null),{root:t}}reset(){this.#t=Object.create(null)}updateAll(t=this){this.updateProperties(t)}clone(){G("Not implemented")}}class U extends M{#t=null;#e;_clipPathId=null;_colorPicker=null;_drawId=null;_drawOutlines=null;_focusDrawId=null;static _currentDrawId=-1;static _currentParent=null;static#s=null;static#i=null;static#n=null;static#a=null;static _INNER_MARGIN=3;constructor(t){super(t),this.#e=t.mustBeCommitted||!1,this._addOutlines(t)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(t){t.drawOutlines&&(this.#r(t),this.#m())}#r({drawOutlines:t,drawId:e,drawingOptions:s,clipPathId:i}){this._drawOutlines=t,this._drawingOptions||=s,this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert[this.editorType]),e>=0?(this._drawId=e,this._clipPathId=i??null,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties),this.#l(this.parent)):this._drawId=this.#o(t,this.parent),this.#b(t.box)}#o(t,e){const{id:s,clipPathId:i}=e.drawLayer.draw(U._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,this.constructor._hasClipPath);return this.constructor._hasClipPath&&(this._clipPathId=i),this.#l(e),s}#l(t){const e=this._drawOutlines.getFocusSVGProperties(this.#f);e&&(this._focusDrawId=t.drawLayer.drawOutline(e,this._drawOutlines.focusMustRemoveSelfIntersections))}#h(t=this.#f){this._focusDrawId!==null&&this.parent?.drawLayer.updateProperties(this._focusDrawId,this._drawOutlines.getFocusSVGProperties(t))}#u(t){this._focusDrawId!==null&&this.parent?.drawLayer.updateProperties(this._focusDrawId,{rootClass:t})}#d(){const{parent:t,_drawId:e,_focusDrawId:s,_isVisible:i}=this;if(!t||e===null)return;const n={hidden:!i};t.drawLayer.updateProperties(e,{rootClass:n}),s!==null&&t.drawLayer.updateProperties(s,{rootClass:n})}static _mergeSVGProperties(t,e){const s=new Set(Object.keys(t));for(const[i,n]of Object.entries(e))s.has(i)?Object.assign(t[i],n):t[i]=n;return t}static getDefaultDrawingOptions(t){G("Not implemented")}static get typesMap(){G("Not implemented")}static get isDrawer(){return!0}static get _hasClipPath(){return!1}static get _hasDrawClass(){return!0}static get supportMultipleDrawings(){return!1}get _drawRotation(){return this.rotation}get _opacityName(){return this.constructor.typesMap.get(this.opacityType)}get#f(){return(this.parentRotation-this._drawRotation+360)%360}static updateDefaultParams(t,e){const s=this.typesMap.get(t);s&&this._defaultDrawingOptions.updateProperty(s,e),this._currentParent&&(U.#s.updateProperty(s,e),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const s=this.constructor.typesMap.get(t);s&&this._updateProperty(t,s,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[s,i]of this.typesMap)t.push([s,e[i]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[s,i]of this.constructor.typesMap)t.push([s,e[i]]);return t}_updateProperty(t,e,s){const i=this._drawingOptions,n=i[e],r=a=>{i.updateProperty(e,a);const o=this._drawOutlines.updateProperty(e,a);o&&this.#b(o),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),t===this.colorType?this.onUpdatedColor():t===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:r.bind(this,s),undo:r.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(t,e,s=this.colorAndOpacityType){const i=this.constructor.typesMap.get(this.colorType),n=this._opacityName,r=this._drawingOptions,a=r[i],o=r[n],l=(h,c)=>{r.updateProperty(i,h),r.updateProperty(n,c),this._drawOutlines.updateProperty(i,h),this._drawOutlines.updateProperty(n,c),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:l.bind(this,t,e),undo:l.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:s,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathResizingSVGProperties(this.#p()),{bbox:this.#y()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathResizedSVGProperties(this.#p()),{bbox:this.#y()})),this.#h()}_onTranslating(t,e){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#y()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties(this._drawOutlines.getPathTranslatedSVGProperties(this.#p(),this.parentDimensions),{bbox:this.#y()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}get _mustBeDisabledOnCommit(){return!0}commit(){super.commit(),this._mustBeDisabledOnCommit&&(this.disableEditMode(),this.disableEditing())}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#e&&(this.#e=!1,this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){this._uiManager.removeShouldRescale(this),this.#g(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#m(),this.#b(this._drawOutlines.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){let e=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),this.#g()):t&&(this._uiManager.addShouldRescale(this),this.#m(t),e=!this.parent&&this.div?.classList.contains("selectedEditor")),super.setParent(t),this.#d(),e&&this.select()}#g(){if(this._drawId===null||!this.parent)return;const{drawLayer:t}=this.parent;t.remove(this._drawId),this._drawId=null,this._focusDrawId!==null&&(t.remove(this._focusDrawId),this._focusDrawId=null),this._drawingOptions.reset()}#m(t=this.parent){if(!(this._drawId!==null&&this.parent===t)){if(this._drawId!==null){const{drawLayer:e}=this.parent;e.updateParent(this._drawId,t.drawLayer),this._focusDrawId!==null&&e.updateParent(this._focusDrawId,t.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this._drawOutlines,t),this._clipPathId&&this.#t&&(this.#t.style.clipPath=this._clipPathId)}}#c([t,e,s,i]){const{parentDimensions:[n,r],_drawRotation:a}=this;switch(a){case 90:return[e,1-t,s*(r/n),i*(n/r)];case 180:return[1-t,1-e,s,i];case 270:return[1-e,t,s*(r/n),i*(n/r)];default:return[t,e,s,i]}}#p(){const{x:t,y:e,width:s,height:i,parentDimensions:[n,r],_drawRotation:a}=this;switch(a){case 90:return[1-e,t,s*(n/r),i*(r/n)];case 180:return[1-t,1-e,s,i];case 270:return[e,1-t,s*(n/r),i*(r/n)];default:return[t,e,s,i]}}#b(t){[this.x,this.y,this.width,this.height]=this.#c(t),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#y(t=this.parentRotation){const{x:e,y:s,width:i,height:n,_drawRotation:r,parentDimensions:[a,o]}=this;switch((r*4+t)/90){case 1:return[1-s-n,e,n,i];case 2:return[1-e-i,1-s-n,i,n];case 3:return[s,1-e-i,n,i];case 4:return[e,s-i*(a/o),n*(o/a),i*(a/o)];case 5:return[1-s,e,i*(a/o),n*(o/a)];case 6:return[1-e-n*(o/a),1-s,n*(o/a),i*(a/o)];case 7:return[s-i*(a/o),1-e-n*(o/a),i*(a/o),n*(o/a)];case 8:return[e-i,s-n,i,n];case 9:return[1-s,e-i,n,i];case 10:return[1-e,1-s,i,n];case 11:return[s-n,1-e,n,i];case 12:return[e-n*(o/a),s,n*(o/a),i*(a/o)];case 13:return[1-s-i*(a/o),e-n*(o/a),i*(a/o),n*(o/a)];case 14:return[1-e,1-s-i*(a/o),n*(o/a),i*(a/o)];case 15:return[s,1-e,i*(a/o),n*(o/a)];default:return[e,s,i,n]}}rotate(t=this.parentRotation){if(!this.parent||this._drawId===null)return;const e=(t-this._drawRotation+360)%360;this.parent.drawLayer.updateProperties(this._drawId,U._mergeSVGProperties({bbox:this.#y(t)},this._drawOutlines.updateRotation(e))),this.#h(e)}show(t=this._isVisible){super.show(t),this.#d()}select(){super.select(),this.#u({hovered:!1,selected:!0})}unselect(){super.unselect(),this.#u({selected:!1})}pointerover(){this.isSelected||this.#u({hovered:!0})}pointerleave(){this.isSelected||this.#u({hovered:!1})}onScaleChanging(){if(!this.parent)return;const t=this._drawOutlines.updateParentDimensions(this.parentDimensions,this.parent.scale);t&&this.#b(t)}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let t,e;this._isCopy&&(t=this.x,e=this.y);const s=super.render();this.constructor._hasDrawClass&&s.classList.add("draw");const i=this.#t=document.createElement("div");return s.append(i),i.setAttribute("aria-hidden","true"),i.className="internal",this._clipPathId&&(i.style.clipPath=this._clipPathId),sn(this,i,["pointerover","pointerleave"]),this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(t,e),s}static createDrawerInstance(t){G("Not implemented")}static _getDrawingTarget(t,{target:e}){return e}static _getPointerCoords({offsetX:t,offsetY:e,clientX:s,clientY:i},n=null){if(!n)return[t,e];let r=s-n.clientX,a=i-n.clientY;switch(this._currentParent.viewport.rotation){case 90:[r,a]=[a,-r];break;case 180:[r,a]=[-r,-a];break;case 270:[r,a]=[-a,r];break}return[n.offsetX+r,n.offsetY+a]}static _addDrawingListeners(t,e){}static _endDrawingSession(t=!1){return this._currentParent.endDrawingSession(t)}static startDrawing(t,e,s,i){const{pointerId:n,pointerType:r}=i;if(z.isInitializedAndDifferentPointerType(r))return;const a=this._getDrawingTarget(t,i),[o,l]=this._getPointerCoords(i),{viewport:{rotation:h}}=t,{x:c,y:u,width:f,height:p}=a.getBoundingClientRect(),g=U.#i=new AbortController,m=t.combinedSignal(g);if(z.setPointer(r,n),window.addEventListener("pointerup",A=>{z.isSamePointerIdOrRemove(A.pointerId)&&this._endDraw(A)},{signal:m}),window.addEventListener("pointercancel",A=>{z.isSamePointerIdOrRemove(A.pointerId)&&this._endDrawingSession()},{signal:m}),window.addEventListener("pointerdown",A=>{z.isSamePointerType(A.pointerType)&&(z.initializeAndAddPointerId(A.pointerId),U.#s.isCancellable()&&(U.#s.removeLastElement(),U.#s.isEmpty()?this._endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener("contextmenu",Ct,{signal:m}),a.addEventListener("pointermove",this._drawMove.bind(this),{signal:m}),a.addEventListener("touchmove",A=>{z.isSameTimeStamp(A.timeStamp)&&nt(A)},{signal:m}),this._addDrawingListeners(a,m),t.toggleDrawing(),e._editorUndoBar?.hide(),U.#s){t.drawLayer.updateProperties(this._currentDrawId,U.#s.startNew(o,l,f,p,h));return}e.updateUIForDefaultProperties(this),U.#s=this.createDrawerInstance({x:o,y:l,box:[c,u,f,p],rotation:h,parent:t,isLTR:s}),U.#n=this.getDefaultDrawingOptions(),this._currentParent=t;const{id:b,clipPathId:y}=t.drawLayer.draw(this._mergeSVGProperties(U.#n.toSVGProperties(),U.#s.defaultSVGProperties),!0,this._hasClipPath);this._currentDrawId=b,U.#a=this._hasClipPath?y:null}static _drawMove(t){if(z.isSameTimeStamp(t.timeStamp),!U.#s||!z.isSamePointerId(t.pointerId))return;if(z.isUsingMultiplePointers()){this._endDraw(t);return}let e;const s=t.getCoalescedEvents?.();if(s?.length){const i=[];for(const n of s)i.push(...this._getPointerCoords(n,t));e=U.#s.addPoints(i)}else e=U.#s.add(...this._getPointerCoords(t));this._currentParent.drawLayer.updateProperties(this._currentDrawId,e),z.setTimeStamp(t.timeStamp),nt(t)}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,U.#s=null,U.#n=null,U.#a=null,z.clearTimeStamp()),U.#i&&(U.#i.abort(),U.#i=null,z.clearPointerIds())}static _endDraw(t){const e=this._currentParent;if(e){if(e.toggleDrawing(!0),this._cleanup(!1),e.drawLayer.updateProperties(this._currentDrawId,t?.target===e.div?U.#s.end(...this._getPointerCoords(t)):U.#s.end()),this.supportMultipleDrawings){const s=U.#s,i=this._currentDrawId,n=s.getLastElement();e.addCommands({cmd:()=>{e.drawLayer.updateProperties(i,s.setLastElement(n))},undo:()=>{e.drawLayer.updateProperties(i,s.removeLastElement())},mustExec:!1,type:$.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){const e=this._currentParent;if(!e)return null;if(e.toggleDrawing(!0),e.cleanUndoStack($.DRAW_STEP),!U.#s.isEmpty()){const{pageDimensions:[s,i],scale:n}=e,r=e.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,clipPathId:U.#a,drawOutlines:U.#s.getOutlines(s*n,i*n,n,this._INNER_MARGIN),drawingOptions:U.#n,mustBeCommitted:!t});return this._cleanup(!0),r}return e.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,s,i,n,r,a){G("Not implemented")}static async deserialize(t,e,s){const{rawDims:{pageWidth:i,pageHeight:n,pageX:r,pageY:a}}=e.viewport,o=this.deserializeDraw(r,a,i,n,this._INNER_MARGIN,t,s),l=await super.deserialize(t,e,s);return l.createDrawingOptions(t),l.#r({drawOutlines:o}),l.#m(),l.onScaleChanging(),l.rotate(),l}serializeDraw(t){const[e,s]=this.pageTranslation,[i,n]=this.pageDimensions;return this._drawOutlines.serialize([e,s,i,n],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}}class T{static PRECISION=1e-4;focusOutline=null;toSVGPath(){G("Abstract method `toSVGPath` must be implemented.")}get box(){G("Abstract getter `box` must be implemented.")}serialize(t,e){G("Abstract method `serialize` must be implemented.")}get defaultSVGProperties(){G("Abstract getter `defaultSVGProperties` must be implemented.")}get defaultProperties(){return this.defaultSVGProperties}getFocusSVGProperties(t){return null}get focusMustRemoveSelfIntersections(){return!1}updateProperty(t,e){return null}updateParentDimensions(t,e){return null}serializeQuadPoints(t,e){return null}updateRotation(t){return{}}getPathResizingSVGProperties(t){return{}}getPathResizedSVGProperties(t){return{}}getPathTranslatedSVGProperties(t,e){return{}}static _rotateBox([t,e,s,i],n){switch(n){case 90:return[1-e-i,t,i,s];case 180:return[1-t-s,1-e-i,s,i];case 270:return[e,1-t-s,i,s]}return[t,e,s,i]}static _rescale(t,e,s,i,n,r){r||=new Float32Array(t.length);for(let a=0,o=t.length;a=6;i-=6)isNaN(e[i])?s.push(`L${e[i+4]} ${e[i+5]}`):s.push(`C${e[i]} ${e[i+1]} ${e[i+2]} ${e[i+3]} ${e[i+4]} ${e[i+5]}`);return this.#y(s),s.join(" ")}#b(){const[t,e,s,i]=this.#t,[n,r,a,o]=this.#p();return`M${(this.#a[2]-t)/s} ${(this.#a[3]-e)/i} L${(this.#a[4]-t)/s} ${(this.#a[5]-e)/i} L${n} ${r} L${a} ${o} L${(this.#a[16]-t)/s} ${(this.#a[17]-e)/i} L${(this.#a[14]-t)/s} ${(this.#a[15]-e)/i} Z`}#y(t){const e=this.#e;t.push(`L${e[4]} ${e[5]} Z`)}#A(t){const[e,s,i,n]=this.#t,r=this.#a.subarray(4,6),a=this.#a.subarray(16,18),[o,l,h,c]=this.#p();t.push(`L${(r[0]-e)/i} ${(r[1]-s)/n} L${o} ${l} L${h} ${c} L${(a[0]-e)/i} ${(a[1]-s)/n}`)}newFreeDrawOutline(t,e,s,i,n,r){return new Tn(t,e,s,i,n,r)}getOutlines(){const t=this.#n,e=this.#e,s=this.#a,[i,n,r,a]=this.#t,o=new Float32Array((this.#f?.length??0)+2);for(let c=0,u=o.length-2;c=6;c-=6)for(let u=0;u<6;u+=2){if(isNaN(e[c+u])){l[h]=l[h+1]=NaN,h+=2;continue}l[h]=e[c+u],l[h+1]=e[c+u+1],h+=2}return this.#_(l,h),this.newFreeDrawOutline(l,o,this.#t,this.#u,this.#s,this.#i)}#w(t){const e=this.#a,[s,i,n,r]=this.#t,[a,o,l,h]=this.#p(),c=new Float32Array(36);return c.set([NaN,NaN,NaN,NaN,(e[2]-s)/n,(e[3]-i)/r,NaN,NaN,NaN,NaN,(e[4]-s)/n,(e[5]-i)/r,NaN,NaN,NaN,NaN,a,o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,(e[16]-s)/n,(e[17]-i)/r,NaN,NaN,NaN,NaN,(e[14]-s)/n,(e[15]-i)/r],0),this.newFreeDrawOutline(c,t,this.#t,this.#u,this.#s,this.#i)}#_(t,e){const s=this.#e;return t.set([NaN,NaN,NaN,NaN,s[4],s[5]],e),e+=6}#S(t,e){const s=this.#a.subarray(4,6),i=this.#a.subarray(16,18),[n,r,a,o]=this.#t,[l,h,c,u]=this.#p();return t.set([NaN,NaN,NaN,NaN,(s[0]-n)/a,(s[1]-r)/o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,c,u,NaN,NaN,NaN,NaN,(i[0]-n)/a,(i[1]-r)/o],e),e+=24}}class Tn extends T{#t;#e=new Float32Array(4);#s;#i;#n;#a;#r;constructor(t,e,s,i,n,r){super(),this.#r=t,this.#n=e,this.#t=s,this.#a=i,this.#s=n,this.#i=r,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#o(r);const[a,o,l,h]=this.#e;for(let c=0,u=t.length;cm?(r=g,a=m):a===m&&(r=h(r,g)),lc[1]?(r=c[0],a=c[1]):a===c[1]&&(r=h(r,c[0])),le[0]-s[0]||e[1]-s[1]||e[2]-s[2]);const t=[];for(const e of this.#i)e[3]?(t.push(...this.#h(e)),this.#o(e)):(this.#l(e),t.push(...this.#h(e)));return this.#a(t)}#a(t){const e=[],s=new Set;for(const r of t){const[a,o,l]=r;e.push([a,o,r],[a,l,r])}e.sort((r,a)=>r[1]-a[1]||r[0]-a[0]);for(let r=0,a=e.length;r0;){const r=s.values().next().value;let[a,o,l,h,c]=r;s.delete(r);let u=a,f=o;for(n=[a,l],i.push(n);;){let p;if(s.has(h))p=h;else if(s.has(c))p=c;else break;s.delete(p),[a,o,l,h,c]=p,u!==a&&(n.push(u,f,a,f===o?o:l),u=a),f=f===o?l:o}n.push(u,f)}return new Us(i,this.#t,this.#e,this.#s)}#r(t){const e=this.#n;let s=0,i=e.length-1;for(;s<=i;){const n=s+i>>1,r=e[n][0];if(r===t)return n;r=0;i--){const[n,r]=this.#n[i];if(n!==t)break;if(n===t&&r===e){this.#n.splice(i,1);return}}}#h(t){const[e,s,i]=t,n=[[e,s,i]],r=this.#r(i);for(let a=0;a=o){if(f>l)n[h][1]=l;else{if(c===1)return[];n.splice(h,1),h--,c--}continue}n[h][2]=o,f>l&&n.push([e,l,f])}}}return n}}class Us extends T{#t;#e=null;#s;constructor(t,e,s,i){super(),this.#s=t,this.#t=e,this.firstPoint=s,this.lastPoint=i}static build(t,e){const s=new Bs(t,.001).getOutlines();return s.#e=t,s.focusOutline=new Bs(t,.0025,.001,e).getOutlines(),s}get isFree(){return!1}get defaultSVGProperties(){return kn(this)}getFocusSVGProperties(t){return Pn(this,t)}updateRotation(t){return{root:{"data-main-rotation":t}}}serializeQuadPoints([t,e],[s,i]){const n=this.#e,r=new Float32Array(n.length*8);let a=0;for(const{x:o,y:l,width:h,height:c}of n){const u=o*s+t,f=(1-l)*i+e;r[a]=r[a+4]=u,r[a+1]=r[a+3]=f,r[a+2]=r[a+6]=u+h*s,r[a+5]=r[a+7]=f-c*i,a+=8}return r}toSVGPath(){const t=[];for(const e of this.#s){let[s,i]=e;t.push(`M${s} ${i}`);for(let n=2;nt.classList.remove("free"),{once:!0}),window.addEventListener("blur",()=>this._endDraw(null),{signal:e}),window.addEventListener("pointerdown",nt,{capture:!0,passive:!1,signal:e})}static _endDrawingSession(t=!1){return this.endDrawing(t)}createDrawingOptions({color:t,opacity:e,thickness:s}){const{_defaultDrawingOptions:i,_DEFAULT_OPACITY:n}=Et;this._drawingOptions=Et.getDefaultDrawingOptions({fill:x.makeHexColor(...t),"fill-opacity":e||n,thickness:s||i.thickness})}static deserializeDraw(t,e,s,i,n,r,a){const{quadPoints:o}=r;if(o){const f=[];for(let p=0,g=o.length;ps!==e[i])}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}class Va{#t=new Float64Array(6);#e=new Float64Array(2);#s;#i;#n;#a;#r;#o="";#l=0;#h=new Fe;#u;#d;constructor(t,e,s,i,n,r){this.#u=s,this.#d=i,this.#n=n,this.#a=r,[t,e]=this.#f(t,e);const a=this.#s=[NaN,NaN,NaN,NaN,t,e];this.#r=[t,e],this.#i=[{line:a,points:this.#r}],this.#t.set(a,0),this.#e.set([t,e],0)}updateProperty(t,e){t==="stroke-width"&&(this.#a=e)}#f(t,e){return T._normalizePoint(t,e,this.#u,this.#d,this.#n)}isEmpty(){return!this.#i?.length}isCancellable(){return this.#r.length<=10}add(t,e){return this.#g(t,e)&&this.toSVGPath(),{path:{d:this.#m()}}}addPoints(t){let e=!1;for(let s=0,i=t.length;sA??NaN),c,u,f,p),points:g(a[b].map(A=>A??NaN),c,u,f,p)});const m=new this.prototype.constructor;return m.build(h,s,i,1,o,l,n),m}#h(t=this.#l){const e=this.#s+t/2*this.#r;return this.#o%180===0?[e/this.#n,e/this.#a]:[e/this.#a,e/this.#n]}#u(){const[t,e,s,i]=this.#t,[n,r]=this.#h(0);return[t+n,e+r,s-2*n,i-2*r]}#d(){const t=this.#t=Xt.slice();for(const{line:i}of this.#i){if(i.length<=12){for(let a=4,o=i.length;ar!==e[a])||t.thickness!==s||t.opacity!==i||t.pageIndex!==n}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;const{points:e,rect:s}=this.serializeDraw(!1);return t.updateEdited({rect:s,thickness:this._drawingOptions["stroke-width"],points:e,popup:this.comment}),null}}class Hs extends Fe{toSVGPath(){let t=super.toSVGPath();return t.endsWith("Z")||(t+="Z"),t}}const $e=8,ye=3;class le{static#t={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#e(t,e,s,i){return s-=t,i-=e,s===0?i>0?0:4:s===1?i+6:2-i}static#s=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#i(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const h=(-l+o-a+16)%8,c=this.#s[2*h],u=this.#s[2*h+1];if(t[(s+c)*e+(i+u)]!==0)return h}return-1}static#n(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const h=(l+o+a+16)%8,c=this.#s[2*h],u=this.#s[2*h+1];if(t[(s+c)*e+(i+u)]!==0)return h}return-1}static#a(t,e,s,i){const n=t.length,r=new Int32Array(n);for(let h=0;h=1&&r[u+1]===0)a+=1,g+=1,f>1&&(o=f);else{f!==1&&(o=Math.abs(f));continue}const m=[c,h],b=g===c+1,y={isHole:b,points:m,id:a,parent:0};l.push(y);let A;for(const P of l)if(P.id===o){A=P;break}A?A.isHole?y.parent=b?A.parent:o:y.parent=b?o:A.parent:y.parent=b?o:0;const v=this.#i(r,e,h,c,p,g,0);if(v===-1){r[u]=-a,r[u]!==1&&(o=Math.abs(r[u]));continue}let w=this.#s[2*v],S=this.#s[2*v+1];const _=h+w,E=c+S;p=_,g=E;let C=h,k=c;for(;;){const P=this.#n(r,e,C,k,p,g,1);w=this.#s[2*P],S=this.#s[2*P+1];const I=C+w,B=k+S;m.push(B,I);const H=C*e+k;if(r[H+1]===0?r[H]=-a:r[H]===1&&(r[H]=a),I===h&&B===c&&C===_&&k===E){r[u]!==1&&(o=Math.abs(r[u]));break}else p=C,g=k,C=I,k=B}}}return l}static#r(t,e,s,i){if(s-e<=4){for(let _=e;_w&&(S=_,w=E)}w>(l*v)**2?(this.#r(t,e,S+2,i),this.#r(t,S,s,i)):i.push(n,r)}static#o(t){const e=[],s=t.length;return this.#r(t,0,s,e),e.push(t[s-2],t[s-1]),e.length<=4?null:e}static#l(t,e,s,i,n,r){const a=new Float32Array(r**2),o=-2*i**2,l=r>>1;for(let g=0;g=s))for(let E=0;E=e)continue;const k=t[_*e+C],P=a[S*r+E]*h[Math.abs(k-y)];A+=k*P,v+=P}}const w=f[b]=Math.round(A/v);p[w]++}return[f,p]}static#h(t){const e=new Uint32Array(256);for(const s of t)e[s]++;return e}static#u(t){const e=t.length,s=new Uint8ClampedArray(e>>2);let i=-1/0,n=1/0;for(let a=0,o=s.length;ao!==0);let r=n,a=n;for(e=n;e<256;e++){const o=t[e];o>s&&(e-r>i&&(i=e-r,a=e-1),s=o,r=e)}for(e=a-1;e>=0&&!(t[e]>t[e+1]);e--);return e}static#f(t){const e=t,{width:s,height:i}=t,{maxDim:n}=this.#t;let r=s,a=i;if(s>n||i>n){let u=s,f=i,p=Math.log2(Math.max(s,i)/n);const g=Math.floor(p);p=p===g?g-1:g;for(let b=0;b=-128&&a<=127?l=Int8Array:r>=-32768&&a<=32767?l=Int16Array:l=Int32Array;const h=t.length,c=$e+ye*h,u=new Uint32Array(c);let f=0;u[f++]=c*Uint32Array.BYTES_PER_ELEMENT+(o-2*h)*l.BYTES_PER_ELEMENT,u[f++]=0,u[f++]=i,u[f++]=n,u[f++]=e?0:1,u[f++]=Math.max(0,Math.floor(s??0)),u[f++]=h,u[f++]=l.BYTES_PER_ELEMENT;for(const y of t)u[f++]=y.length-2,u[f++]=y[0],u[f++]=y[1];const p=new CompressionStream("deflate-raw"),g=p.writable.getWriter();await g.ready,g.write(u);const m=l.prototype.constructor;for(const y of t){const A=new m(y.length-2);for(let v=2,w=y.length;v{await n.ready,await n.close()}).catch(()=>{});let r=null,a=0;for await(const A of s)r||=new Uint8Array(new Uint32Array(A.buffer,0,4)[0]),r.set(A,a),a+=A.length;const o=new Uint32Array(r.buffer,0,r.length>>2),l=o[1];if(l!==0)throw new Error(`Invalid version: ${l}`);const h=o[2],c=o[3],u=o[4]===0,f=o[5],p=o[6],g=o[7],m=[],b=($e+ye*p)*Uint32Array.BYTES_PER_ELEMENT;let y;switch(g){case Int8Array.BYTES_PER_ELEMENT:y=new Int8Array(r.buffer,b);break;case Int16Array.BYTES_PER_ELEMENT:y=new Int16Array(r.buffer,b);break;case Int32Array.BYTES_PER_ELEMENT:y=new Int32Array(r.buffer,b);break}a=0;for(let A=0;A{e?.updateEditSignatureButton(t)}))}getSignaturePreview(){const{newCurves:t,areContours:e,thickness:s,width:i,height:n}=this.#s,r=Math.max(i,n),a=le.processDrawnLines({lines:{curves:t.map(o=>({points:o})),thickness:s,width:i,height:n},pageWidth:r,pageHeight:r,rotation:0,innerMargin:0,mustSmooth:!1,areContours:e});return{areContours:e,outline:a.outline}}get toolbarButtons(){return this._uiManager.signatureManager?[["editSignature",this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,e,s,i){const{x:n,y:r}=this,{outline:a}=this.#s=t;this.#t=a instanceof Hs,this.description=s;let o;this.#t?o=Dt.getDefaultDrawingOptions():(o=Dt._defaultDrawnSignatureOptions.clone(),o.updateProperties({"stroke-width":a.thickness})),this._addOutlines({drawOutlines:a,drawingOptions:o});const[,l]=this.pageDimensions;let h=e/l;h=h>=1?.5:h,this.width*=h/this.height,this.width>=1&&(h*=.9/this.width,this.width=.9),this.height=h,this.setDims(),this.x=n,this.y=r,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:"pdfjs.signature.inserted",data:{hasBeenSaved:!!i,hasDescription:!!s}}),this.div.hidden=!1}getFromImage(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return le.process(t,e,s,i,Dt._INNER_MARGIN)}getFromText(t,e){const{rawDims:{pageWidth:s,pageHeight:i},rotation:n}=this.parent.viewport;return le.extractContoursFromText(t,e,s,i,n,Dt._INNER_MARGIN)}getDrawnSignature(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return le.processDrawnLines({lines:t,pageWidth:e,pageHeight:s,rotation:i,innerMargin:Dt._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:e}){t?this._drawingOptions=Dt.getDefaultDrawingOptions():(this._drawingOptions=Dt._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":e}))}serialize(t=!1){if(this.isEmpty())return null;const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{"stroke-width":i}}=this,n=Object.assign(super.serialize(t),{isSignature:!0,areContours:this.#t,color:[0,0,0],thickness:this.#t?0:i});return this.addComment(n),t?(n.paths={lines:e,points:s},n.uuid=this.#i,n.isCopy=!0):n.lines=e,this.#e&&(n.accessibilityData={type:"Figure",alt:this.#e}),n}static deserializeDraw(t,e,s,i,n,r){return r.areContours?Hs.deserialize(t,e,s,i,n,r):Fe.deserialize(t,e,s,i,n,r)}static async deserialize(t,e,s){const i=await super.deserialize(t,e,s);return i.#t=t.areContours,i.description=t.accessibilityData?.alt||"",i.#i=t.uuid,i}}class Wa extends M{#t=null;#e=null;#s=null;#i=null;#n=null;#a="";#r=null;#o=!1;#l=null;#h=!1;#u=!1;static _type="stamp";static _editorType=L.STAMP;constructor(t){super({...t,name:"stampEditor"}),this.#i=t.bitmapUrl,this.#n=t.bitmapFile,this.defaultL10nId="pdfjs-editor-stamp-editor"}static initialize(t,e){M.initialize(t,e)}static isHandlingMimeForPasting(t){return Is.includes(t)}static paste(t,e){e.pasteEditor({mode:L.STAMP},{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:"stamp",hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}#d(t,e=!1){if(!t){this.remove();return}this.#t=t.bitmap,e||(this.#e=t.id,this.#h=t.isSvg),t.file&&(this.#a=t.file.name),this.#m()}#f(){if(this.#s=null,this._uiManager.enableWaiting(!1),!!this.#r){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:s}=this._uiManager;if(!s)throw new Error("No ML.");if(!await s.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:i,width:n,height:r}=t||this.copyCanvas(null,null,!0).imageData,a=await s.guess({name:"altText",request:{data:i,width:n,height:r,channels:i.length/(n*r)}});if(!a)throw new Error("No response from the AI service.");if(a.error)throw new Error("Error from the AI service.");if(a.cancel)return null;if(!a.output)throw new Error("No valid response from the AI service.");const o=a.output;return await this.setGuessedAltText(o),e&&!this.hasAltTextData()&&(this.altTextData={alt:o,decorative:!1}),o}#g(){if(this.#e){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#e).then(s=>this.#d(s,!0)).finally(()=>this.#f());return}if(this.#i){const s=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromUrl(s).then(i=>this.#d(i)).finally(()=>this.#f());return}if(this.#n){const s=this.#n;this.#n=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromFile(s).then(i=>this.#d(i)).finally(()=>this.#f());return}const t=document.createElement("input");t.type="file",t.accept=Is.join(",");const e=this._uiManager._signal;this.#s=new Promise(s=>{t.addEventListener("change",async()=>{if(!t.files||t.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const i=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(i)}s()},{signal:e}),t.addEventListener("cancel",()=>{this.remove(),s()},{signal:e})}).finally(()=>this.#f()),t.click()}remove(){this.#e&&(this.#t=null,this._uiManager.imageManager.deleteId(this.#e),this.#r?.remove(),this.#r=null,this.#l&&(clearTimeout(this.#l),this.#l=null)),super.remove()}rebuild(){if(!this.parent){this.#e&&this.#g();return}super.rebuild(),this.div!==null&&(this.#e&&this.#r===null&&this.#g(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!(this.#s||this.#t||this.#i||this.#n||this.#e||this.#o)}get toolbarButtons(){return[["altText",this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;return this._isCopy&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#o||(this.#t?this.#m():this.#g()),this._isCopy&&this._moveAfterPaste(t,e),this._uiManager.addShouldRescale(this),this.div}setCanvas(t,e){const{id:s,bitmap:i}=this._uiManager.imageManager.getFromCanvas(t,e);e.remove(),s&&this._uiManager.imageManager.isValidId(s)&&(this.#e=s,i&&(this.#t=i),this.#o=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){if(!this.parent)return;this.#l!==null&&clearTimeout(this.#l);const t=200;this.#l=setTimeout(()=>{this.#l=null,this.#p()},t)}#m(){const{div:t}=this;let{width:e,height:s}=this.#t;const[i,n]=this.pageDimensions,r=.75;if(this.width)e=this.width*i,s=this.height*n;else if(e>r*i||s>r*n){const o=Math.min(r*i/e,r*n/s);e*=o,s*=o}this._uiManager.enableWaiting(!1);const a=this.#r=document.createElement("canvas");a.setAttribute("role","img"),this.addContainer(a),this.width=e/i,this.height=s/n,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(t.hidden=!1),this.#p(),this.#u||(this.parent.addUndoableEditor(this),this.#u=!0),this._reportTelemetry({action:"inserted_image"}),this.#a&&this.div.setAttribute("aria-description",this.#a),this.annotationElementId||this._uiManager.a11yAlert(M._l10nAlert.stamp)}copyCanvas(t,e,s=!1){t||=224;const{width:i,height:n}=this.#t,r=new Tt;let a=this.#t,o=i,l=n,h=null;if(e){if(i>e||n>e){const S=Math.min(e/i,e/n);o=Math.floor(i*S),l=Math.floor(n*S)}h=document.createElement("canvas");const u=h.width=Math.ceil(o*r.sx),f=h.height=Math.ceil(l*r.sy);this.#h||(a=this.#c(u,f));const p=h.getContext("2d");p.filter=this._uiManager.hcmFilter;let g="white",m="#cfcfd8";this._uiManager.hcmFilter!=="none"?m="black":Zn.isDarkMode&&(g="#8f8f9d",m="#42414d");const b=15,y=b*r.sx,A=b*r.sy,v=new OffscreenCanvas(y*2,A*2),w=v.getContext("2d");w.fillStyle=g,w.fillRect(0,0,y*2,A*2),w.fillStyle=m,w.fillRect(0,0,y,A),w.fillRect(y,A,y,A),p.fillStyle=p.createPattern(v,"repeat"),p.fillRect(0,0,u,f),p.drawImage(a,0,0,a.width,a.height,0,0,u,f)}let c=null;if(s){let u,f;if(r.symmetric&&a.widtht||n>t){const m=Math.min(t/i,t/n);u=Math.floor(i*m),f=Math.floor(n*m),this.#h||(a=this.#c(u,f))}const g=new OffscreenCanvas(u,f).getContext("2d",{willReadFrequently:!0});g.drawImage(a,0,0,a.width,a.height,0,0,u,f),c={width:u,height:f,data:g.getImageData(0,0,u,f).data}}return{canvas:h,width:o,height:l,imageData:c}}#c(t,e){const{width:s,height:i}=this.#t;let n=s,r=i,a=this.#t;for(;n>2*t||r>2*e;){const o=n,l=r;n>2*t&&(n=Math.ceil(n/2)),r>2*e&&(r=Math.ceil(r/2));const h=new OffscreenCanvas(n,r);h.getContext("2d").drawImage(a,0,0,o,l,0,0,n,r),a=h.transferToImageBitmap()}return a}#p(){const[t,e]=this.parentDimensions,{width:s,height:i}=this,n=new Tt,r=Math.ceil(s*t*n.sx),a=Math.ceil(i*e*n.sy),o=this.#r;if(!o||o.width===r&&o.height===a)return;o.width=r,o.height=a;const l=this.#h?this.#t:this.#c(r,a),h=o.getContext("2d");h.filter=this._uiManager.hcmFilter,h.drawImage(l,0,0,l.width,l.height,0,0,r,a)}#b(t){if(t){if(this.#h){const i=this._uiManager.imageManager.getSvgUrl(this.#e);if(i)return i}const e=document.createElement("canvas");return{width:e.width,height:e.height}=this.#t,e.getContext("2d").drawImage(this.#t,0,0),e.toDataURL()}if(this.#h){const[e,s]=this.pageDimensions,i=Math.round(this.width*e*pe.PDF_TO_CSS_UNITS),n=Math.round(this.height*s*pe.PDF_TO_CSS_UNITS),r=new OffscreenCanvas(i,n);return r.getContext("2d").drawImage(this.#t,0,0,this.#t.width,this.#t.height,0,0,i,n),r.transferToImageBitmap()}return structuredClone(this.#t)}static async deserialize(t,e,s){let i=null,n=!1;if(t instanceof xn){const{data:{rect:g,rotation:m,id:b,structParent:y,popupRef:A,richText:v,contentsObj:w,creationDate:S,modificationDate:_},container:E,parent:{page:{pageNumber:C}},canvas:k}=t;let P,I;k?(delete t.canvas,{id:P,bitmap:I}=s.imageManager.getFromCanvas(E.id,k),k.remove()):(n=!0,t._hasNoCanvas=!0);const B=(await e._structTree.getAriaAttributes(`${he}${b}`))?.get("aria-label")||"";i=t={annotationType:L.STAMP,bitmapId:P,bitmap:I,pageIndex:C-1,rect:g.slice(0),rotation:m,annotationElementId:b,id:b,deleted:!1,accessibilityData:{decorative:!1,altText:B},isSvg:!1,structParent:y,popupRef:A,richText:v,comment:w?.str||null,creationDate:S,modificationDate:_}}const r=await super.deserialize(t,e,s),{rect:a,bitmap:o,bitmapUrl:l,bitmapId:h,isSvg:c,accessibilityData:u}=t;n?(s.addMissingCanvas(t.id,r),r.#o=!0):h&&s.imageManager.isValidId(h)?(r.#e=h,o&&(r.#t=o)):r.#i=l,r.#h=c;const[f,p]=r.pageDimensions;return r.width=(a[2]-a[0])/f,r.height=(a[3]-a[1])/p,u&&(r.altTextData=u),r._initialData=i,t.comment&&r.setCommentData(t),r.#u=!!i,r}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const s=Object.assign(super.serialize(t),{bitmapId:this.#e,isSvg:this.#h});if(this.addComment(s),t)return s.bitmapUrl=this.#b(!0),s.accessibilityData=this.serializeAltText(!0),s.isCopy=!0,s;const{decorative:i,altText:n}=this.serializeAltText(!1);if(!i&&n&&(s.accessibilityData={type:"Figure",alt:n}),this.annotationElementId){const a=this.#y(s);return a.isSame?null:(a.isSameAltText?delete s.accessibilityData:s.accessibilityData.structParent=this._initialData.structParent??-1,s.id=this.annotationElementId,delete s.bitmapId,s)}if(e===null)return s;e.stamps||=new Map;const r=this.#h?(s.rect[2]-s.rect[0])*(s.rect[3]-s.rect[1]):null;if(!e.stamps.has(this.#e))e.stamps.set(this.#e,{area:r,serialized:s}),s.bitmap=this.#b(!1);else if(this.#h){const a=e.stamps.get(this.#e);r>a.area&&(a.area=r,a.serialized.bitmap.close(),a.serialized.bitmap=this.#b(!1))}return s}#y(t){const{pageIndex:e,accessibilityData:{altText:s}}=this._initialData,i=t.pageIndex===e,n=(t.accessibilityData?.alt||"")===s;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&i&&n,isSameAltText:n}}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}class Lt{#t;#e=!1;#s=null;#i=null;#n=null;#a=new Map;#r=!1;#o=!1;#l=!1;#h=null;#u=null;#d=null;#f=null;#g=null;#m=-1;#c;static _initialized=!1;static#p=new Map([rt,oi,Wa,Et,Dt].map(t=>[t._editorType,t]));constructor({uiManager:t,pageIndex:e,div:s,structTreeLayer:i,accessibilityManager:n,annotationLayer:r,drawLayer:a,textLayer:o,viewport:l,l10n:h}){const c=[...Lt.#p.values()];if(!Lt._initialized){Lt._initialized=!0;for(const u of c)u.initialize(h,t)}t.registerEditorTypes(c),this.#c=t,this.pageIndex=e,this.div=s,this.#t=n,this.#s=r,this.viewport=l,this.#d=o,this.drawLayer=a,this._structTree=i,this.#c.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#c.getMode()===L.NONE}updateToolbar(t){this.#c.updateToolbar(t)}updateMode(t=this.#c.getMode()){switch(this.#S(),t){case L.NONE:this.div.classList.toggle("nonEditing",!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case L.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case L.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;if(e.toggle("nonEditing",!1),t===L.POPUP)e.toggle("commentEditing",!0);else{e.toggle("commentEditing",!1);for(const s of Lt.#p.values())e.toggle(`${s._type}Editing`,t===s._editorType)}this.div.hidden=!1}hasTextLayer(t){return t===this.#d?.div}setEditingState(t){this.#c.setEditingState(t)}addCommands(t){this.#c.addCommands(t)}cleanUndoStack(t){this.#c.cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){this.#s?.togglePointerEvents(t)}get#b(){return this.#a.size!==0?this.#a.values():this.#c.getEditors(this.pageIndex)}async enable(){this.#l=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle("nonEditing",!1),this.#g?.abort(),this.#g=null;const t=new Set;for(const s of this.#b)s.enableEditing(),s.show(!0),s.annotationElementId&&(this.#c.removeChangedExistingAnnotation(s),t.add(s.annotationElementId));const e=this.#s;if(e)for(const s of e.getEditableAnnotations()){if(s.hide(),this.#c.isDeletedAnnotationElement(s.data.id)||t.has(s.data.id))continue;const i=await this.deserialize(s);i&&(this.addOrRebuild(i),i.enableEditing())}this.#l=!1,this.#c._eventBus.dispatch("editorsrendered",{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#o=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle("nonEditing",!0),this.#d&&!this.#g){this.#g=new AbortController;const i=this.#c.combinedSignal(this.#g);this.#d.div.addEventListener("pointerdown",n=>{const{clientX:a,clientY:o,timeStamp:l}=n,h=this.#m;if(l-h>500){this.#m=l;return}this.#m=-1;const{classList:c}=this.div;c.toggle("getElements",!0);const u=document.elementsFromPoint(a,o);if(c.toggle("getElements",!1),!this.div.contains(u[0]))return;let f;const p=new RegExp(`^${fe}[0-9]+$`);for(const m of u)if(p.test(m.id)){f=m.id;break}if(!f)return;const g=this.#a.get(f);g?.annotationElementId===null&&(nt(n),g.dblclick(n))},{signal:i,capture:!0})}const t=this.#s,e=[];if(t){const i=new Map,n=new Map;for(const r of this.#b){if(r.disableEditing(),!r.annotationElementId){e.push(r);continue}if(r.serialize()!==null){i.set(r.annotationElementId,r);continue}else n.set(r.annotationElementId,r);this.getEditableAnnotation(r.annotationElementId)?.show(),r.remove()}for(const r of t.getEditableAnnotations()){const{id:a}=r.data;if(this.#c.isDeletedAnnotationElement(a)){r.updateEdited({deleted:!0});continue}let o=n.get(a);if(o){o.resetAnnotationElement(r),o.show(!1),r.show();continue}o=i.get(a),o&&(this.#c.addChangedExistingAnnotation(o),o.renderAnnotationElement(r)&&o.show(!1)),r.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);const{classList:s}=this.div;for(const i of Lt.#p.values())s.remove(`${i._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(e),this.#o=!1}getEditableAnnotation(t){return this.#s?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#c.getActive()!==t&&this.#c.setActiveEditor(t)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;const t=this.#c.combinedSignal(this.#f);this.#d.div.addEventListener("pointerdown",this.#y.bind(this),{signal:t}),this.#d.div.classList.add("highlighting")}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove("highlighting"))}#y(t){this.#c.unselectAll();const{target:e}=t;if(e===this.#d.div||(e.getAttribute("role")==="img"||e.classList.contains("endOfContent")||e.classList.contains("textLayerImages")||e.classList.contains("textLayerImagePlaceholder"))&&this.#d.div.contains(e)){const{isMac:s}=j.platform;if(t.button!==0||t.ctrlKey&&s)return;this.#c.showAllEditors("highlight",!0,!0),Et.startDrawing(this,this.#c,this.#c.direction==="ltr",t),t.preventDefault()}}enableClick(){if(this.#i)return;this.#i=new AbortController;const t=this.#c.combinedSignal(this.#i);this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:t});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:t}),this.div.addEventListener("pointercancel",e,{signal:t})}disableClick(){this.#i?.abort(),this.#i=null}attach(t){this.#a.set(t.id,t);const{annotationElementId:e}=t;e&&this.#c.isDeletedAnnotationElement(e)&&this.#c.removeDeletedAnnotationElement(t)}detach(t){this.#a.delete(t.id),this.#t?.removePointerInTextLayer(t.contentDiv),!this.#o&&t.annotationElementId&&this.#c.addDeletedAnnotationElement(t)}remove(t){this.detach(t),this.#c.removeEditor(t),t.div.remove(),t.isAttachedToDOM=!1}changeParent(t){t.parent!==this&&(t.parent&&t.annotationElementId&&(this.#c.addDeletedAnnotationElement(t),M.deleteAnnotationElement(t),t.annotationElementId=null),this.attach(t),t.parent?.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}add(t){if(!(t.parent===this&&t.isAttachedToDOM)){if(this.changeParent(t),this.#c.addEditor(t),this.attach(t),!t.isAttachedToDOM){const e=t.render();this.div.append(e),t.isAttachedToDOM=!0}t.fixAndSetPosition(),t.onceAdded(!this.#l),this.#c.addToAnnotationStorage(t),t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){if(!t.isAttachedToDOM)return;const{activeElement:e}=document;t.div.contains(e)&&!this.#n&&(t._focusEventsAllowed=!1,this.#n=setTimeout(()=>{this.#n=null,t.div.contains(document.activeElement)?t._focusEventsAllowed=!0:(t.div.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this.#c._signal}),e.focus())},0)),t._structTreeParentId=this.#t?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?(t.parent||=this,t.rebuild(),t.show()):this.add(t)}addUndoableEditor(t){const e=()=>t._uiManager.rebuild(t),s=()=>{t.remove()};this.addCommands({cmd:e,undo:s,mustExec:!1})}getEditorByUID(t){for(const e of this.#a.values())if(e.uid===t)return e;return null}get#A(){return Lt.#p.get(this.#c.getMode())}combinedSignal(t){return this.#c.combinedSignal(t)}#w(t){const e=this.#A;return e?new e.prototype.constructor(t):null}canCreateNewEmptyEditor(){return this.#A?.canCreateNewEmptyEditor()}async pasteEditor(t,e){this.updateToolbar(t),await this.#c.updateMode(t.mode);const{offsetX:s,offsetY:i}=this.#_(),n=this.#c.getId(),r=this.#w({parent:this,id:n,x:s,y:i,uiManager:this.#c,isCentered:!0,...e});r&&this.add(r)}async deserialize(t){return await Lt.#p.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#c)||null}createAndAddNewEditor(t,e,s={}){const i=this.#c.getId(),n=this.#w({parent:this,id:i,x:t.offsetX,y:t.offsetY,uiManager:this.#c,isCentered:e,...s});return n&&this.add(n),n}get boundingClientRect(){return this.div.getBoundingClientRect()}#_(){const{x:t,y:e,width:s,height:i}=this.boundingClientRect,n=Math.max(0,t),r=Math.max(0,e),a=Math.min(window.innerWidth,t+s),o=Math.min(window.innerHeight,e+i),l=(n+a)/2-t,h=(r+o)/2-e,[c,u]=this.viewport.rotation%180===0?[l,h]:[h,l];return{offsetX:c,offsetY:u}}addNewEditor(t={}){this.createAndAddNewEditor(this.#_(),!0,t)}setSelected(t){this.#c.setSelected(t)}toggleSelected(t){this.#c.toggleSelected(t)}unselect(t){this.#c.unselect(t)}pointerup(t){const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div||!this.#r||(this.#r=!1,this.#A?.isDrawer&&this.#A.supportMultipleDrawings))return;if(!this.#e){this.#e=!0;return}const s=this.#c.getMode();if(s===L.STAMP||s===L.POPUP||s===L.SIGNATURE){this.#c.unselectAll();return}this.createAndAddNewEditor(t,!1)}pointerdown(t){if(this.#c.getMode()===L.HIGHLIGHT&&this.enableTextSelection(),this.#r){this.#r=!1;return}const{isMac:e}=j.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div)return;if(this.#r=!0,this.#A?.isDrawer){this.startDrawingSession(t);return}const s=this.#c.getActive();this.#e=!s||s.isEmpty()}startDrawingSession(t){if(this.div.focus({preventScroll:!0}),this.#h){this.#A.startDrawing(this,this.#c,!1,t);return}this.#c.setCurrentDrawingSession(this),this.#h=new AbortController;const e=this.#c.combinedSignal(this.#h);this.div.addEventListener("blur",({relatedTarget:s})=>{s&&!this.div.contains(s)&&(this.#u=null,this.commitOrRemove())},{signal:e}),this.#A.startDrawing(this,this.#c,!1,t)}pause(t){if(t){const{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(t=!1){return this.#h?(this.#c.setCurrentDrawingSession(null),this.#h.abort(),this.#h=null,this.#u=null,this.#A.endDrawing(t)):null}findNewParent(t,e,s){const i=this.#c.findParent(e,s);return i===null||i===this?!1:(i.changeParent(t),!0)}commitOrRemove(){return this.#h?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#h&&this.#A.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#c.getActive()?.parent===this&&(this.#c.commitOrRemove(),this.#c.setActiveEditor(null)),this.#n&&(clearTimeout(this.#n),this.#n=null);for(const t of this.#a.values())this.#t?.removePointerInTextLayer(t.contentDiv),t.setParent(null),t.isAttachedToDOM=!1,t.div.remove();this.div=null,this.#a.clear(),this.#c.removeLayer(this)}#S(){for(const t of this.#a.values())t.isEmpty()&&t.remove()}async render({viewport:t}){this.viewport=t,Zt(this.div,t);for(const e of this.#c.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#c.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:t}){this.#c.commitOrRemove(),this.#S();const e=this.viewport.rotation,s=t.rotation;if(this.viewport=t,Zt(this.div,{rotation:s}),e!==s)for(const i of this.#a.values())i.rotate(s)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return this.#c.viewParameters.realScale}}function Xa(d,t){return d===t?0:d.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function Ge(d){return d?d.nodeType===Node.ELEMENT_NODE?d.closest(".textLayer"):d.parentElement?.closest(".textLayer")||null:null}function Ya(d,t,e,s){if(d===e)return t<=s;const i=d.compareDocumentPosition(e);return i&Node.DOCUMENT_POSITION_FOLLOWING?!0:i&Node.DOCUMENT_POSITION_PRECEDING?!1:null}function ji(d,t,e){if(d.nodeType!==Node.ELEMENT_NODE||!d.classList.contains("textLayer")||t!==d.childNodes.length)return{container:d,offset:t};let s=d.lastChild;return s?.nodeType===Node.ELEMENT_NODE&&s.classList.contains("endOfContent")&&(s=s.previousSibling),!s||!e.contains(s)?null:s.nodeType===Node.TEXT_NODE?{container:s,offset:s.textContent.length}:{container:s,offset:s.childNodes.length}}class R{#t=null;#e=new Map;#s=null;#i=null;#n=null;#a=null;#r=new Map;static#o=0;static#l=0;static#h=null;static#u=new Set;static#d=!1;static#f=new Set;static#g=new WeakMap;constructor({filterFactory:t=null,pageColors:e=null,pageIndex:s,textLayer:i=null}){if(this.pageIndex=s,this.#i=t,this.#n=e,i){const n=R.#g.get(i);if(n?.selectionDiv&&(n.selectionDiv.remove(),R.#u.delete(n.selectionDiv)),R.#g.set(i,{drawLayer:this}),R.#f.add(i),this.#s=i,this.#a=new MutationObserver(r=>{if(!(!this.#t||!this.#s?.isConnected||!R.#c())){for(const{addedNodes:a}of r)for(const o of a)if(o.nodeType===Node.ELEMENT_NODE&&o.classList.contains("endOfContent")){R.#b();return}}}),this.#a.observe(i,{childList:!0}),R.#h===null){R.#h=new AbortController;const{signal:r}=R.#h;document.addEventListener("selectionchange",R.#b.bind(R),{signal:r}),document.addEventListener("pointerdown",()=>{R.#d=!0},{signal:r}),document.addEventListener("pointerup",()=>{R.#d=!1},{signal:r}),window.addEventListener("blur",()=>{R.#d=!1},{signal:r})}}}setParent(t){if(!this.#t){this.#t=t,this.#s?.isConnected&&R.#c()&&R.#b();return}if(this.#t!==t){if(this.#e.size>0)for(const e of this.#e.values())e.remove(),t.append(e);this.#t=t}}static#m(t){const e=this.#g.get(t);e?.selectionDiv&&(e.selectionDiv.remove(),this.#u.delete(e.selectionDiv),e.selectionDiv=null,e.path=null)}static#c(){const t=document.getSelection();return!!t&&!t.isCollapsed}static#p(){return this.#f.keys().filter(t=>t.isConnected).toArray().sort(Xa)}static#b(){const t=document.getSelection();if(!t||t.isCollapsed){for(const r of this.#u)r.remove();this.#u.clear();return}const e=new WeakMap,s=this.#p(),i=[];for(let r=0,a=t.rangeCount;ro.intersectsNode(A));if(b.length===0)continue;let y=!1;if(f||(f=b[0],l=f,h=0,y=!0),p||(p=b.at(-1),c=p,u=p.childNodes.length,y=!0),c.nodeType===Node.ELEMENT_NODE){if(c.classList.contains("endOfContent")){const A=c.previousSibling;if(!A)continue;c=A,u=A.nodeType===Node.TEXT_NODE?A.textContent.length:A.childNodes.length}else if(c.classList.contains("textLayer")&&c.childNodes.length===u){const A=ji(c,u,p);if(!A)continue;c=A.container,u=A.offset}}if(l.nodeType===Node.ELEMENT_NODE){const A=ji(l,h,f);if(!A)continue;l=A.container,h=A.offset}if(f===p&&!y&&b.includes(f)){i.push([o,f]);continue}for(const A of b){const v=A.firstChild;if(!v)continue;const w=document.createRange();if(A===f?w.setStart(l,h):w.setStartBefore(v),A===p)w.setEnd(c,u);else{const S=A.lastChild;if(!S)continue;if(S.nodeType===Node.ELEMENT_NODE&&S.classList.contains("endOfContent")){const _=S.previousSibling;if(!_)continue;w.setEndAfter(_)}else w.setEndAfter(S)}w.collapsed||i.push([w,A])}}const n=new Set(i.map(r=>r[1]));for(const r of this.#f)n.has(r)||this.#m(r);for(const[r,a]of i){const o=R.#g.get(a);if(!o)continue;let l=e.get(a);if(!l){const p=a.getBoundingClientRect();l=(g,m,b,y)=>({x:(g-p.x)/p.width,y:(m-p.y)/p.height,width:b/p.width,height:y/p.height}),e.set(a,l)}const h=[];for(let{x:p,y:g,width:m,height:b}of r.getClientRects())m===0||b===0||({x:p,y:g,width:m,height:b}=l(p,g,m,b),!(m===1&&b===1)&&h.push(`M${p} ${g} h${m} v${b} h-${m} Z`));if(h.length===0)continue;const c=o.drawLayer;let u=o.selectionDiv,f=o.path;if(!u){const p=`clip_selection_${R.#l++}`;u=document.createElement("div"),u.className="selection",u.style.clipPath=`url(#${p})`;const g=c.#i?.createSelectionStyle(c.#n);if(g)for(const[y,A]of Object.entries(g))u.style.setProperty(y,A);const m=R._svgFactory.create(1,1,!0);m.setAttribute("aria-hidden","true"),m.setAttribute("width","100%"),m.setAttribute("height","100%");const b=R._svgFactory.createElement("clipPath");b.setAttribute("id",p),b.setAttribute("clipPathUnits","objectBoundingBox"),f=R._svgFactory.createElement("path"),b.append(f),m.append(b),u.append(m),o.path=f,o.selectionDiv=u}c.#t&&u.parentNode!==c.#t&&(c.#t.append(u),this.#u.add(u)),f.setAttribute("d",h.join(" "))}}static get _svgFactory(){return D(this,"_svgFactory",new Je)}static#y(t,[e,s,i,n]){const{style:r}=t;r.top=`${100*s}%`,r.left=`${100*e}%`,r.width=`${100*i}%`,r.height=`${100*n}%`}#A(){const t=R._svgFactory.create(1,1,!0);return this.#t.append(t),t.setAttribute("aria-hidden","true"),t}#w(t,e){const s=R._svgFactory.createElement("clipPath");t.append(s);const i=`clip_${e}`;s.setAttribute("id",i),s.setAttribute("clipPathUnits","objectBoundingBox");const n=R._svgFactory.createElement("use");return s.append(n),n.setAttribute("href",`#${e}`),n.classList.add("clip"),i}#_(t,e){for(const[s,i]of Object.entries(e))i===null?t.removeAttribute(s):t.setAttribute(s,i)}draw(t,e=!1,s=!1){const i=R.#o++,n=this.#A(),r=R._svgFactory.createElement("defs");n.append(r);const a=R._svgFactory.createElement("path");r.append(a);const o=`path_${i}`;a.setAttribute("id",o),a.setAttribute("vector-effect","non-scaling-stroke"),e&&this.#r.set(i,a);const l=s?this.#w(r,o):null,h=R._svgFactory.createElement("use");return n.append(h),h.setAttribute("href",`#${o}`),this.updateProperties(n,t),this.#e.set(i,n),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,e){const s=R.#o++,i=this.#A(),n=R._svgFactory.createElement("defs");i.append(n);const r=R._svgFactory.createElement("path");n.append(r);const a=`path_${s}`;r.setAttribute("id",a),r.setAttribute("vector-effect","non-scaling-stroke");let o;if(e){const c=R._svgFactory.createElement("mask");n.append(c),o=`mask_${s}`,c.setAttribute("id",o),c.setAttribute("maskUnits","objectBoundingBox");const u=R._svgFactory.createElement("rect");c.append(u),u.setAttribute("width","1"),u.setAttribute("height","1"),u.setAttribute("fill","white");const f=R._svgFactory.createElement("use");c.append(f),f.setAttribute("href",`#${a}`),f.setAttribute("stroke","none"),f.setAttribute("fill","black"),f.setAttribute("fill-rule","nonzero"),f.classList.add("mask")}const l=R._svgFactory.createElement("use");i.append(l),l.setAttribute("href",`#${a}`),o&&l.setAttribute("mask",`url(#${o})`);const h=l.cloneNode();return i.append(h),l.classList.add("mainOutline"),h.classList.add("secondaryOutline"),this.updateProperties(i,t),this.#e.set(s,i),s}finalizeDraw(t,e){this.#r.delete(t),this.updateProperties(t,e)}updateProperties(t,e){if(!e)return;const{root:s,bbox:i,rootClass:n,path:r}=e,a=typeof t=="number"?this.#e.get(t):t;if(a){if(s&&this.#_(a,s),i&&R.#y(a,i),n){const{classList:o}=a;for(const[l,h]of Object.entries(n))o.toggle(l,h)}if(r){const l=a.firstElementChild.firstElementChild;this.#_(l,r)}}}updateParent(t,e){if(e===this)return;const s=this.#e.get(t);s&&(e.#t.append(s),this.#e.delete(t),e.#e.set(t,s))}remove(t){this.#r.delete(t),this.#t!==null&&(this.#e.get(t).remove(),this.#e.delete(t))}destroy(){this.#t=null;for(const t of this.#e.values())t.remove();this.#e.clear(),this.#r.clear(),this.#a?.disconnect(),this.#a=null,this.#s&&(R.#g.get(this.#s)?.drawLayer===this&&(R.#m(this.#s),R.#g.delete(this.#s),R.#f.delete(this.#s),R.#f.size===0&&(R.#h?.abort(),R.#h=null,R.#d=!1)),this.#s=null)}}function ze(d){return`${(d*100).toFixed(2)}%`}class Ze{#t=[];#e=new Map;#s=null;#i=0;#n=0;#a=0;static#r=null;constructor(t,e,s,i){this.#i=t,this.#t=e,this.#n=s.rawDims.pageWidth,this.#a=s.rawDims.pageHeight,this.#s=i}render(){const t=document.createElement("div");t.className="textLayerImages";for(let e=0;e{if(!(e.target instanceof HTMLCanvasElement))return;const s=e.target,i=this.#e.get(s);if(!i)return;const n=Ze.#r?.deref();if(n===s)return;n&&(n.width=0,n.height=0),Ze.#r=new WeakRef(s);const{inverseTransform:r,x1:a,y1:o,width:l,height:h}=i,c=this.#s(),u=Math.ceil(a*c.width),f=Math.ceil(o*c.height),p=Math.floor((a+l/this.#n)*c.width),g=Math.floor((o+h/this.#a)*c.height);s.width=p-u,s.height=g-f;const m=s.getContext("2d");m.setTransform(...r),m.translate(-u,-f),m.drawImage(c,0,0)}),t}#o([t,e,s,i,n,r]){const a=Math.hypot((n-t)*this.#n,(r-e)*this.#a),o=Math.hypot((s-t)*this.#n,(i-e)*this.#a);if(a{this._params.waitBeforeSync?setTimeout(()=>this._scheduleCallbacks(t),this._params.waitBeforeSync):this._scheduleCallbacks(t)})}}class Ka extends Mn{_scheduleCallbacks(t){requestAnimationFrame(()=>this._syncCallback()),requestAnimationFrame(()=>{setTimeout(()=>{this._asyncCallback(),setTimeout(t,0)},0)})}}class Ee extends Mn{static mc=new MessageChannel;_scheduleCallbacks(t){let e=!1,s=!1,i=!1;const n=()=>{!e||!s||!i||(this._asyncCallback(),setTimeout(t,0))};requestAnimationFrame(async()=>{await this._syncCallback(),i=!0,n()}),requestAnimationFrame(()=>{setTimeout(async()=>{await Promise.resolve(),e=!0,n()}),Ee.mc.port1.addEventListener("message",async function(){await Promise.resolve(),s=!0,n()},{once:!0}),Ee.mc.port1.start(),Ee.mc.port2.postMessage("speedometer")})}}const Qa={__proto__:null,raf:Ka,async:Ee};function Ja(d,t="getBoundingRectAndElementFromPoint"){d??=document.body;const e=d.getBoundingClientRect();switch(t){case"getBoundingRectAndElementFromPoint":return document.elementFromPoint(e.width/2|0,e.height/2|0);case"getBoundingClientRect":return e.height;default:throw Error(`Invalid layoutMode: ${t}`)}}class In{#t;#e;#s;#i;#n;constructor(t,e,s,i,n){this.#i=i,this.#n=n,this.#s=s,this.#e=e,this.#t=t}get page(){return this.#e}get step(){return this.#n}get isAsync(){return!1}_runSyncStep(t,e){t.run(e)}async runStep(){const t=this.#i.name,e=this.#n.name,s=`${t}.${e}-start`,i=`${t}.${e}-sync-end`,n=`${t}.${e}-async-end`;let r,a,o;const l=async()=>{if(this.#s.warmupBeforeSync){performance.mark("warmup-start");const b=performance.now();for(;performance.now()-b{const p=this.#t?.contentDocument?.body??document.body,g=Ja(p,this.#s.layoutMode);p._leakedLayoutValue=g;const m=performance.now();performance.mark(n),o=m-a,this.#s.warmupBeforeSync&&performance.measure("warmup","warmup-start","warmup-end"),performance.measure(`${t}.${e}-sync`,s,i),performance.measure(`${t}.${e}-async`,i,n)},c=this.#i.type==="async"||this.#s.useAsyncSteps?"async":this.#s.measurementMethod,u=Qa[c];return await new u(l,h,this.#s).start(),{syncTime:r,asyncTime:o}}}class Za extends In{get isAsync(){return!0}async _runSyncStep(t,e){await t.run(e)}}const Vi=Object.freeze(["getBoundingClientRect","getBoundingRectAndElementFromPoint"]);class ci{viewport={width:800,height:600};developerMode=!1;startAutomatically=!1;iterationCount=10;suites=[];tags=["default"];useWarmupSuite=!1;useAsyncSteps=!1;measurementMethod="raf";waitAfterSetup=0;waitBeforeSync=0;waitAfterSuite=0;warmupBeforeSync=0;shuffleSeed="off";complexity=1;layoutMode=Vi[0];measurePrepare=!1;config="";constructor(t=void 0,e=!1){t&&this._copyFromSearchParams(t,e),this.developerMode||(Object.freeze(this.viewport),Object.freeze(this))}_parseNumber(t,e,s=0){const i=Number(t);if(!Number.isFinite(i)&&e)throw new Error(`Invalid ${e} param: '${t}', expected Number.`);if(i= ${s}.`);return i}_parseInt(t,e,s=0){const i=this._parseNumber(t,e,s);if(!Number.isInteger(i)&&e)throw new Error(`Invalid ${e} param: '${t}', expected int.`);return parseInt(i)}_copyFromSearchParams(t,e){if(this.viewport=this._parseViewport(t),this.startAutomatically=this._parseBooleanParam(t,"startAutomatically"),this.iterationCount=this._parseIntParam(t,"iterationCount",1),this.suites=this._parseSuites(t),this.tags=this._parseTags(t),this.developerMode=this._parseBooleanParam(t,"developerMode"),this.useWarmupSuite=this._parseBooleanParam(t,"useWarmupSuite"),this.useAsyncSteps=this._parseBooleanParam(t,"useAsyncSteps"),this.waitAfterSetup=this._parseIntParam(t,"waitAfterSetup",0),this.waitBeforeSync=this._parseIntParam(t,"waitBeforeSync",0),this.waitAfterSuite=this._parseIntParam(t,"waitAfterSuite",0),this.warmupBeforeSync=this._parseIntParam(t,"warmupBeforeSync",0),this.measurementMethod=this._parseEnumParam(t,"measurementMethod",["raf"]),this.shuffleSeed=this._parseShuffleSeed(t),this.complexity=this._parserNumberParam(t,"complexity",0),this.layoutMode=this._parseEnumParam(t,"layoutMode",Vi),this.measurePrepare=this._parseBooleanParam(t,"measurePrepare"),this.config=this._parseConfig(t),e){const s=Array.from(t.keys());s.length>0&&console.error(`Got unused search params: ${s.join(", ")}`)}}_parseBooleanParam(t,e){return t.has(e)?(t.delete(e),!0):!1}_parserNumberParam(t,e,s){if(!t.has(e))return vt[e];const i=this._parseNumber(t.get(e),"waitBeforeSync",s);return t.delete(e),i}_parseIntParam(t,e,s){if(!t.has(e))return vt[e];const i=this._parseInt(t.get(e),"waitBeforeSync",s);return t.delete(e),i}_parseViewport(t){if(!t.has("viewport"))return vt.viewport;const e=t.get("viewport"),[s,i]=e.split("x"),n={width:this._parseInt(s,"viewport.width"),height:this._parseInt(i,"viewport.height")};if(this.viewport.width<800||this.viewport.height<600)throw new Error(`Invalid viewport param: ${e}`);return t.delete("viewport"),n}_parseSuites(t){if(t.has("suite")||t.has("suites")){if(t.has("suite")&&t.has("suites"))throw new Error("Params 'suite' and 'suites' can not be used together.");const s=(t.get("suite")||t.get("suites")).split(",");if(s.length===0)throw new Error("No suites selected");return t.delete("suite"),t.delete("suites"),s}return vt.suites}_parseTags(t){if(!t.has("tags"))return vt.tags;if(this.suites.length)throw new Error("'suites' and 'tags' cannot be used together.");const e=t.get("tags").split(",");return t.delete("tags"),e}_parseEnumParam(t,e,s){if(!t.has(e))return vt[e];const i=t.get(e);if(!s.includes(i))throw new Error(`Got invalid ${e}: '${i}', choices are ${s}`);return t.delete(e),i}_parseShuffleSeed(t){if(!t.has("shuffleSeed"))return vt.shuffleSeed;let e=t.get("shuffleSeed");if(e!=="off"&&(e==="generate"?(e=Math.floor(Math.random()*1<<16),console.log(`Generated a random suite order seed: ${e}`)):e=parseInt(e),!Number.isInteger(e)))throw new Error(`Invalid shuffle seed: '${e}', must be either 'off', 'generate' or an integer.`);return t.delete("shuffleSeed"),e}_parseConfig(t){const e=t.get("config")??"";if(t.delete("config"),e&&!to(e))throw new Error("Invalid config url passed in.");return e}toCompleteSearchParamsObject(){return this.toSearchParamsObject(!1)}toSearchParamsObject(t=!0){const e={__proto__:null};for(const[s,i]of Object.entries(this))s==="viewport"||s==="suites"||s==="tags"||t&&i===vt[s]||(e[s]=i);return(this.viewport.width!==vt.viewport.width||this.viewport.height!==vt.viewport.height)&&(e.viewport=`${this.viewport.width}x${this.viewport.height}`),this.suites.length?e.suites=this.suites.join(","):this.tags.length?this.tags.length===1&&this.tags[0]==="default"||(e.tags=this.tags.join(",")):e.suites="",new URLSearchParams(e)}toSearchParams(){return this.toSearchParamsObject().toString()}isDefault(){return this===vt}}function to(d){if(typeof d!="string"||d.length===0)return!1;try{return new URL(d,"http://www.example.com"),!0}catch{return!1}}const vt=new ci;let $s=vt;if(globalThis?.location?.search){const d=new URLSearchParams(globalThis.location.search);try{$s=new ci(d,!0)}catch(t){console.error("Invalid URL Param",t,` +Using defaults as fallback:`,$s)}}const eo=$s;class so{constructor(t,e){this.name=t,this.run=e}async runAndRecordStep(t,e,s){return await new In(null,null,t,e,s).runStep()}}class io extends so{async runAndRecordStep(t,e,s){return await new Za(null,null,t,e,s).runStep()}}const Gs=Object.freeze({__proto__:null,sync:"sync",async:"async"});class no{constructor(t,e,s=Gs.sync){this.name=t,this.steps=e,this.type=s,console.assert(this.type in Gs,"Invalid Type",this.type)}async runAndRecordSuite(t,e){const s={tests:{},prepare:0,total:0},i=`suite-${this.name}-start`,n=`suite-${this.name}-end`;performance.mark(i);for(const r of this.steps){const a=await r.runAndRecordStep(t,this,r);console.assert(a,"Missing test return value",r);const{syncTime:o,asyncTime:l}=a,h=o+l,c={tests:{Sync:o,Async:l},total:h};r.ignoreResult||(s.tests[r.name]=c,s.total+=h),e?.(r.name)}return performance.mark(n),performance.measure(`suite-${this.name}`,i,n),{type:"suite-tests-complete",status:"success",result:s,suiteName:this.name}}}class ro extends no{constructor(t,e){super(t,e,Gs.async)}}const je=Object.freeze({__proto__:null,appReady:"app-ready",suiteStart:"suite-start",stepComplete:"step-complete",suiteComplete:"suite-complete"}),ao=Object.freeze({__proto__:null,success:"success",error:"error"});class oo{constructor(t,e,s){this.suites=t,this.name=e,this.version=s,(!e||!s)&&console.warn("No name or version supplied, to create a unique appId"),this.appId=e&&s?`${e}-${s}`:-1,this.onMessage=this.onMessage.bind(this)}async onMessage(t){const e=t.data;if(e.appId!==this.appId||e.key!=="benchmark-connector"){console.warn("Invalid message",e);return}if(e.type===je.suiteStart){const s=new ci(new URLSearchParams(window.location.search)),{name:i}=e.payload,n=this.suites[i];n||console.error(`Suite with the name of "${i}" not found!`);const r=o=>this._sendMessage(je.stepComplete,{name:this.name,step:o}),{result:a}=await n.runAndRecordSuite(s,r);this._sendMessage(je.suiteComplete,{result:a}),this.disconnect()}else console.error(`Message data type not supported: ${e.type}`)}_sendMessage(t,e,s=ao.success){const i={appId:this.appId,type:t,payload:e,status:s};window.top.postMessage(i,"*")}connect(){window.addEventListener("message",this.onMessage),this._sendMessage(je.appReady,{appId:this.appId})}disconnect(){window.removeEventListener("message",this.onMessage)}}const Wi=[["views-manager","separator","page-number"],["zoom-out","zoom-level","zoom-in"],["search","separator","highlight","free-text","ink","separator","download","print","secondary"]],lo=["thumbnails","outline","attachments","layers"];function Dn(d,t){const e=document.createElement("button");return e.className="pdf-toolbar-button",e.dataset.icon=d,e.type="button",e.title=t,e.setAttribute("aria-label",t),e}function ho(){const d=document.createElement("span");return d.className="pdf-toolbar-separator",d}function co(d){const t=document.createElement("span");t.className="pdf-page-field";const e=document.createElement("input");e.className="pdf-page-input",e.type="text",e.value="1",e.readOnly=!0,e.setAttribute("aria-label","Page");const s=document.createElement("span");return s.className="pdf-page-total",s.textContent=`of ${d}`,t.append(e,s),t}function uo(d){const t=document.createElement("span");return t.className="pdf-zoom-level",t.textContent=`${Math.round(d*100)}%`,t}const fo={"views-manager":"Toggle sidebar","zoom-out":"Zoom out","zoom-in":"Zoom in",search:"Find in document",highlight:"Highlight","free-text":"Add text",ink:"Draw",download:"Save",print:"Print",secondary:"Tools"};function po(d,{pageCount:t,scale:e}){const s=Wi.map((i,n)=>{const r=document.createElement("div");r.className=n===Wi.length-1?"pdf-toolbar-group pdf-toolbar-group-end":"pdf-toolbar-group";for(const a of i)a==="separator"?r.append(ho()):a==="page-number"?r.append(co(t)):a==="zoom-level"?r.append(uo(e)):r.append(Dn(a,fo[a]));return r});d.replaceChildren(...s)}function go(d){const t=document.createElement("div");t.className="pdf-sidebar-tabs";for(const s of lo){const i=Dn(`view-${s}`,`Show ${s}`);i.classList.add("pdf-sidebar-tab"),i.classList.toggle("pdf-sidebar-tab-active",s==="thumbnails"),t.append(i)}const e=document.createElement("div");return e.className="pdf-thumbnails",d.replaceChildren(t,e),e}class mo{#t;#e;#s;#i;#n;#a;#r=[];constructor({pages:t,thumbnails:e},s,{scale:i,outputScale:n,thumbnailWidth:r}){this.#t=t,this.#e=e,this.#s=s,this.#i=i,this.#n=n,this.#a=r}get pageCount(){return this.#r.length}async layout(){const t=Array.from({length:this.#s.numPages},(n,r)=>r+1),e=await Promise.all(t.map(n=>this.#s.getPage(n))),s=document.createDocumentFragment(),i=document.createDocumentFragment();this.#r=e.map((n,r)=>{const a=n.getViewport({scale:1}),o=n.getViewport({scale:this.#i}),l=document.createElement("div");l.className="pdf-page",l.style.width=`${Math.floor(o.width)}px`,l.style.height=`${Math.floor(o.height)}px`,s.append(l);const h=n.getViewport({scale:this.#a/a.width}),c=document.createElement("div");c.className="pdf-thumbnail";const u=document.createElement("div");u.className="pdf-thumbnail-box",u.style.width=`${Math.floor(h.width)}px`,u.style.height=`${Math.floor(h.height)}px`;const f=document.createElement("span");return f.className="pdf-thumbnail-label",f.textContent=String(r+1),c.append(u,f),i.append(c),{proxy:n,viewport:o,element:l,thumbnailViewport:h,thumbnailBox:u,canvas:null}}),this.#t.replaceChildren(s),this.#e.replaceChildren(i)}async renderPages(t,e){const s=Math.min(t+e,this.#r.length),i=[];for(let n=t;nwindow.setTimeout(()=>s(performance.now()),0),window.cancelAnimationFrame=s=>window.clearTimeout(s);try{await d()}finally{window.requestAnimationFrame=t,window.cancelAnimationFrame=e}}function So(d){return{default:new ro("PDFViewer-PDFjs",[new io("RenderPages",()=>vo(()=>d.renderPages(0,wo(d.pageCount))))])}}const Xi="document.pdf",Yi=.67,_o=130,qi=2;function Eo(){const d=new URLSearchParams(window.location.search).get("pdfPixelRatio");if(d===null)return qi;const t=Number(d);return!Number.isFinite(t)||t<=0?(console.error(`Invalid pdfPixelRatio param: '${d}', expected a positive number.`),qi):t}async function xo(){de.workerPort=new qa;const d=await fetch(new URL(Xi,document.baseURI));if(!d.ok)throw new Error(`Could not load ${Xi}: ${d.status} ${d.statusText}`);const t=await yn({data:await d.arrayBuffer(),useSystemFonts:!1,verbosity:Me.ERRORS}).promise;po(document.getElementById("toolbar"),{pageCount:t.numPages,scale:Yi});const e=go(document.getElementById("sidebar")),s=new mo({pages:document.getElementById("viewer"),thumbnails:e},t,{scale:Yi,outputScale:Eo(),thumbnailWidth:_o});await s.layout(),new oo(So(s),bo,yo).connect()}xo().catch(d=>{console.error(d),document.getElementById("viewer").textContent=`Failed to load the document: ${d.message}`}); +//# sourceMappingURL=index.js.map diff --git a/suites-experimental/pdf-viewer/dist/assets/index.js.map b/suites-experimental/pdf-viewer/dist/assets/index.js.map new file mode 100644 index 000000000..accd8abe8 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/pdfjs-dist/build/pdf.mjs","../../../../resources/shared/step-scheduler.mjs","../../../../resources/shared/helpers.mjs","../../../../resources/shared/step-runner.mjs","../../../../resources/shared/params.mjs","../../../../resources/shared/benchmark.mjs","../../src/chrome.js","../../src/viewer.js","../../src/workload-test.mjs","../../src/main.js"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 6.3.289\n * pdfjsBuild = 1c8020a7d\n */\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = (/* unused pure expression or super */ null && (LINE_DESCENT_FACTOR / LINE_FACTOR));\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n INK_COLOR_AND_OPACITY: 24,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = (/* unused pure expression or super */ null && ({\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n}));\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n RICHMEDIA: 27\n};\nconst AnnotationReplyType = (/* unused pure expression or super */ null && ({\n GROUP: \"Group\",\n REPLY: \"R\"\n}));\nconst AnnotationRenditionOperation = (/* unused pure expression or super */ null && ({\n PLAY_OR_RESUME: 0,\n STOP: 1,\n PAUSE: 2,\n RESUME: 3,\n PLAY: 4\n}));\nconst AnnotationFlag = (/* unused pure expression or super */ null && ({\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n}));\nconst AnnotationFieldFlag = (/* unused pure expression or super */ null && ({\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n}));\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = (/* unused pure expression or super */ null && ({\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n}));\nconst DocumentActionEventType = (/* unused pure expression or super */ null && ({\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n}));\nconst PageActionEventType = (/* unused pure expression or super */ null && ({\n O: \"PageOpen\",\n C: \"PageClose\"\n}));\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nclass FeatureTest {\n static get isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return shadow(this, \"isLittleEndian\", view32[0] === 1);\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCanvasFilterSupported() {\n let ctx;\n if (this.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n } else if (typeof document !== \"undefined\") {\n ctx = document.createElement(\"canvas\").getContext(\"2d\");\n }\n return shadow(this, \"isCanvasFilterSupported\", ctx?.filter !== undefined);\n }\n static get isAlphaColorInputSupported() {\n if (typeof document === \"undefined\") {\n return shadow(this, \"isAlphaColorInputSupported\", false);\n }\n const input = document.createElement(\"input\");\n input.type = \"color\";\n input.setAttribute(\"alpha\", \"\");\n input.value = \"#ff000080\";\n return shadow(this, \"isAlphaColorInputSupported\", input.value !== \"#ff0000\");\n }\n static get isBackdropFilterSupported() {\n return shadow(this, \"isBackdropFilterSupported\", typeof CSS !== \"undefined\" && CSS.supports(\"backdrop-filter\", \"blur(1px)\"));\n }\n}\nclass Util {\n static get hexNums() {\n return shadow(this, \"hexNums\", Array.from({\n length: 256\n }, (_, n) => n.toString(16).padStart(2, \"0\")));\n }\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[b]}`;\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\nconst makeSet = () => new Set();\nif (typeof Iterator.prototype.join !== \"function\") {\n Iterator.prototype.join = function (separator) {\n return [...this].join(separator);\n };\n}\n\n;// ./src/shared/math_clamp.js\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\n;// ./src/display/page_viewport.js\n\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\n\nconst disallowedRichTextStyleRegExp = /url\\(|image-set\\(/i;\nconst disallowedEventHandlerAttrRegExp = /^on/i;\nclass XfaLayer {\n static get _allowedHtmlElements() {\n return shadow(this, \"_allowedHtmlElements\", new Set([\"a\", \"b\", \"br\", \"button\", \"div\", \"i\", \"img\", \"input\", \"label\", \"li\", \"ol\", \"option\", \"p\", \"select\", \"span\", \"sub\", \"sup\", \"textarea\", \"ul\"]));\n }\n static get _allowedSvgElements() {\n return shadow(this, \"_allowedSvgElements\", new Set([\"ellipse\", \"line\", \"path\", \"rect\", \"svg\"]));\n }\n static get _allowedRichTextElements() {\n return shadow(this, \"_allowedRichTextElements\", new Set([\"a\", \"b\", \"br\", \"div\", \"i\", \"li\", \"ol\", \"p\", \"span\", \"sub\", \"sup\", \"ul\"]));\n }\n static get _allowedRichTextAttributes() {\n return shadow(this, \"_allowedRichTextAttributes\", new Set([\"class\", \"dir\", \"style\"]));\n }\n static get _allowedRichTextStyles() {\n return shadow(this, \"_allowedRichTextStyles\", new Set([\"color\", \"font\", \"fontFamily\", \"fontSize\", \"fontStretch\", \"fontStyle\", \"fontWeight\", \"kerningMode\", \"letterSpacing\", \"lineHeight\", \"margin\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"orphans\", \"paddingLeft\", \"paddingRight\", \"breakAfter\", \"breakBefore\", \"breakInside\", \"tabInterval\", \"tabStop\", \"textAlign\", \"textDecoration\", \"textIndent\", \"transform\", \"verticalAlign\", \"widows\"]));\n }\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (Object.hasOwn(option.attributes, \"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n if (disallowedEventHandlerAttrRegExp.test(key)) {\n continue;\n }\n if (intent === \"richText\" && !this._allowedRichTextAttributes.has(key)) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n if (intent === \"richText\") {\n const allowedStyles = this._allowedRichTextStyles;\n for (const [styleName, styleValue] of Object.entries(value)) {\n if (allowedStyles.has(styleName) && !disallowedRichTextStyleRegExp.test(styleValue)) {\n html.style[styleName] = styleValue;\n }\n }\n } else {\n Object.assign(html.style, value);\n }\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService?.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static #createElement(name, xmlns, intent) {\n if (intent === \"richText\") {\n return !xmlns && this._allowedRichTextElements.has(name) ? document.createElement(name) : null;\n }\n if (xmlns) {\n return xmlns === SVG_NS && this._allowedSvgElements.has(name) ? document.createElementNS(SVG_NS, name) : null;\n }\n return this._allowedHtmlElements.has(name) ? document.createElement(name) : null;\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = this.#createElement(root.name, root.attributes?.xmlns, intent) ?? document.createElement(\"div\");\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = this.#createElement(name, child.attributes?.xmlns, intent);\n if (!childHtml) {\n continue;\n }\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n static getPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n }) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n return new PageViewport({\n viewBox: [0, 0, parseInt(width, 10), parseInt(height, 10)],\n userUnit: 1,\n scale,\n rotation\n });\n }\n}\n\n;// ./src/display/display_utils.js\n\n\n\n\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"blob\":\n return response.blob();\n case \"bytes\":\n return response.bytes();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type === \"bytes\" ? \"arraybuffer\" : type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"bytes\":\n resolve(new Uint8Array(request.response));\n return;\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return stripPath(url);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {}\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {}\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {}\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {}\n return null;\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = stripPath(decoded);\n if (decoded.length === 4 && pdfRegex.test(decoded)) {\n return name;\n }\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = stripPath(newURL.pathname);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const getLast = iterator => [...iterator].findLast(v => pdfRegex.test(v));\n const name = getLast(newURL.searchParams.values()) ?? getLast(newURL.searchParams.keys());\n if (name) {\n return decode(name);\n }\n }\n if (newURL.hash) {\n const {\n hash\n } = newURL;\n let extensionStart = -1;\n for (const {\n index\n } of hash.matchAll(/\\.pdf\\b/gi)) {\n extensionStart = index;\n }\n if (extensionStart > 0) {\n let filenameStart = extensionStart;\n while (filenameStart > 0 && !\"/?#=\".includes(hash[filenameStart - 1])) {\n filenameStart--;\n }\n if (filenameStart < extensionStart) {\n return decode(hash.slice(filenameStart, extensionStart + 4));\n }\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n #started = new Map();\n times = [];\n time(name) {\n if (this.#started.has(name)) {\n warn(`Timer is already running for ${name}`);\n }\n this.#started.set(name, Date.now());\n }\n timeEnd(name) {\n if (!this.#started.has(name)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.#started.get(name),\n end: Date.now()\n });\n this.#started.delete(name);\n }\n toString() {\n const longest = Math.max(...this.times.map(t => t.name.length));\n return this.times.map(t => `${t.name.padEnd(longest)} ${t.end - t.start}ms\\n`).join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return /https?:/.test(res?.protocol ?? \"\");\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+\\\\-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getRGBA(color) {\n if (color.startsWith(\"#\")) {\n const hex = color.slice(1);\n return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16), hex.length >= 8 ? parseInt(hex.slice(6, 8), 16) / 255 : 1];\n }\n if (color.startsWith(\"rgb(\")) {\n const [r, g, b] = color.slice(4, -1).split(\",\").map(x => parseInt(x, 10));\n return [r, g, b, 1];\n }\n if (color.startsWith(\"rgba(\")) {\n const parts = color.slice(5, -1).split(\",\");\n return [parseInt(parts[0], 10), parseInt(parts[1], 10), parseInt(parts[2], 10), parseFloat(parts[3])];\n }\n const m = color.match(/^color\\(srgb\\s+([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+|none))?\\)$/);\n if (m) {\n return [Math.round(parseFloat(m[1]) * 255), Math.round(parseFloat(m[2]) * 255), Math.round(parseFloat(m[3]) * 255), m[4] !== undefined && m[4] !== \"none\" ? parseFloat(m[4]) : 1];\n }\n return null;\n}\nfunction getRGB(color) {\n const rgba = getRGBA(color);\n if (!rgba) {\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n }\n return rgba.slice(0, 3);\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const widthStr = `round(down, var(--total-scale-factor) * ${pageWidth}px, var(--scale-round-x))`,\n heightStr = `round(down, var(--total-scale-factor) * ${pageHeight}px, var(--scale-round-y))`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(color, opacity) {\n opacity = MathClamp(opacity ?? 1, 0, 1);\n const white = 255 * (1 - opacity);\n return color.map(c => Math.round(c * opacity + white));\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/\\r\\n?|\\n/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.dir = this.#uiManager.direction;\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/shared/internal_evt.js\nconst INTERNAL_EVT = \"59968104-cc61-4cf9-b570-014b35b3709c\";\nconst internalOpt = Object.freeze({\n internal: INTERNAL_EVT\n});\n\n;// ./src/display/editor/tools.js\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n static ALT = 0x1;\n static CTRL = 0x2;\n static META = 0x4;\n static SHIFT = 0x8;\n constructor(callbacks) {\n this.callbacks = new Map();\n const {\n isMac\n } = FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n const hasMacOverride = keys.some(k => k.startsWith(\"mac+\"));\n for (const key of keys) {\n let shortcut = key;\n if (hasMacOverride) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac !== isMacKey) {\n continue;\n }\n if (isMacKey) {\n shortcut = key.slice(4);\n }\n }\n const [keyName, modifiers] = KeyboardManager.#parseShortcut(shortcut);\n if (keyName === null) {\n continue;\n }\n this.callbacks.getOrInsertComputed(keyName, makeArr).push({\n callback,\n options,\n modifiers\n });\n }\n }\n }\n static #parseShortcut(value) {\n let keyPart = null;\n let modifiers = 0;\n for (let part of value.split(\"+\")) {\n part = part.trim();\n if (!part) {\n continue;\n }\n const upper = part.toUpperCase();\n const modifier = KeyboardManager[upper];\n if (modifier) {\n modifiers |= modifier;\n continue;\n }\n if (keyPart !== null) {\n warn(`KeyboardManager: multiple keys in shortcut \"${value}\"`);\n break;\n }\n keyPart = upper === \"SPACE\" ? \" \" : part;\n }\n if (keyPart === null) {\n warn(`KeyboardManager: no key found in shortcut \"${value}\"`);\n }\n return [keyPart, modifiers];\n }\n static #codeToKey(code) {\n const match = /^(?:Key([A-Z])|(?:Digit|Numpad)(\\d))$/.exec(code);\n if (!match) {\n return null;\n }\n return match[1]?.toLowerCase() ?? match[2];\n }\n exec(self, event) {\n let shortcuts = this.callbacks.get(event.key);\n if (!shortcuts) {\n if (/^[a-z]$/i.test(event.key)) {\n return;\n }\n const fallback = KeyboardManager.#codeToKey(event.code);\n if (fallback === null || fallback === event.key) {\n return;\n }\n shortcuts = this.callbacks.get(fallback);\n if (!shortcuts) {\n return;\n }\n }\n const eventModifiers = (event.altKey ? KeyboardManager.ALT : 0) | (event.ctrlKey ? KeyboardManager.CTRL : 0) | (event.metaKey ? KeyboardManager.META : 0) | (event.shiftKey ? KeyboardManager.SHIFT : 0);\n const info = shortcuts.find(shortcut => shortcut.modifiers === eventModifiers);\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #savedAllLayers = null;\n #savedEditorsByPage = null;\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\"Space\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\"], proto.unselectAll], [[\"ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n const evtOpts = {\n signal,\n ...internalOpt\n };\n eventBus.on(\"editingaction\", this.onEditingAction.bind(this), evtOpts);\n eventBus.on(\"pagechanging\", this.onPageChanging.bind(this), evtOpts);\n eventBus.on(\"scalechanging\", this.onScaleChanging.bind(this), evtOpts);\n eventBus.on(\"rotationchanging\", this.onRotationChanging.bind(this), evtOpts);\n eventBus.on(\"setpreference\", this.onSetPreference.bind(this), evtOpts);\n eventBus.on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), evtOpts);\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"beforeunload\", this.endCurrentEditing.bind(this), {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n deleteComment(editor, savedData) {\n const undo = () => {\n editor.comment = savedData;\n };\n const cmd = () => {\n this._editorUndoBar?.show(undo, \"comment\");\n this.toggleComment(null);\n editor.comment = null;\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus.off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered, internalOpt);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal,\n ...internalOpt\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n deletePage(id) {\n for (const editor of this.getEditors(id)) {\n editor.remove();\n }\n this.#allLayers.delete(id);\n if (this.#currentPageIndex === id) {\n this.#currentPageIndex = 0;\n }\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n endCurrentEditing() {\n this.commitOrRemove();\n this.currentLayer?.endDrawingSession(false);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n updatePageIndex(oldPageIndex, newPageIndex) {\n for (const editor of this.#savedEditorsByPage.get(oldPageIndex) || []) {\n editor.pageIndex = newPageIndex;\n }\n const layer = this.#savedAllLayers.get(oldPageIndex);\n if (layer) {\n layer.pageIndex = newPageIndex;\n this.#allLayers.set(newPageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n }\n startUpdatePages() {\n this.#savedAllLayers = new Map(this.#allLayers);\n this.#allLayers.clear();\n const savedEditorsByPage = this.#savedEditorsByPage = new Map();\n const saveEditor = editor => {\n savedEditorsByPage.getOrInsertComputed(editor.pageIndex, makeArr).push(editor);\n };\n for (const editor of this.#allEditors.values()) {\n saveEditor(editor);\n }\n for (const [id, editor] of this.#annotationStorage) {\n if (id.startsWith(AnnotationEditorPrefix) && !this.#allEditors.has(id) && Number.isInteger(editor?.pageIndex)) {\n saveEditor(editor);\n }\n }\n }\n endUpdatePages() {\n this.#savedAllLayers = null;\n this.#savedEditorsByPage = null;\n }\n clonePage(pageIndex, newPageIndex) {\n for (const editor of this.getEditors(pageIndex)) {\n const serialized = editor.serialize(editor.mode !== AnnotationEditorType.HIGHLIGHT);\n if (!serialized) {\n continue;\n }\n serialized.pageIndex = newPageIndex;\n serialized.id = this.getId();\n serialized.isClone = true;\n delete serialized.popupRef;\n this.#annotationStorage.setValue(serialized.id, serialized);\n }\n }\n findClonesForPage(layer) {\n const promises = [];\n const {\n pageIndex\n } = layer;\n for (const [id, editor] of this.#annotationStorage) {\n if (editor.pageIndex === pageIndex && editor.isClone) {\n this.#annotationStorage.remove(id);\n promises.push(layer.deserialize(editor).then(deserializedEditor => {\n if (deserializedEditor) {\n deserializedEditor.isClone = true;\n layer.addOrRebuild(deserializedEditor);\n }\n }));\n }\n }\n return Promise.all(promises);\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"editingstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#commentManager?.destroyPopup();\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n this.#commentManager?.destroyPopup();\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n return this.#useNewAltTextFlow ? this.#altText === null : !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n return this.#useNewAltTextFlow ? this.#altText !== null || !!this.#guessedText : this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n restoreData({\n text,\n richText,\n date\n }) {\n this.#text = text;\n this.#richText = richText;\n this.#date = date;\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nfunction preventDefault(evt) {\n evt.preventDefault();\n}\nconst MIN_TOUCH_SPAN = 1e-4;\nfunction stopTouchEvent(evt) {\n if (evt.cancelable) {\n stopEvent(evt);\n return true;\n }\n evt.stopPropagation();\n return false;\n}\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #onPanning;\n #ownsGesture = false;\n #pointerDownAC = null;\n #signal;\n #touchIds = new Set();\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n #unconfirmedPinch = 0;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n onPanning = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#onPanning = onPanning;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n get MIN_TOUCH_DISTANCE_TO_SCALE() {\n return 4 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n this.#pruneTouchIds(evt);\n const touchIds = this.#touchIds;\n for (const {\n identifier\n } of evt.changedTouches) {\n touchIds.add(identifier);\n }\n if (touchIds.size === 1) {\n this.#armPointerDown();\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", preventDefault, opt);\n container.addEventListener(\"pointerup\", preventDefault, opt);\n this.#onPinchStart?.();\n }\n this.#ownsGesture = stopTouchEvent(evt);\n this.#setTouchInfo(evt);\n }\n #armPointerDown() {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n }\n #pruneTouchIds(evt) {\n const previous = this.#touchIds;\n if (previous.size === 0) {\n return;\n }\n const touchIds = this.#touchIds = new Set();\n for (const {\n identifier\n } of evt.touches) {\n if (previous.has(identifier)) {\n touchIds.add(identifier);\n }\n }\n }\n #getTrackedTouches(evt) {\n const touchIds = this.#touchIds;\n const touches = [];\n for (const touch of evt.touches) {\n if (touchIds.has(touch.identifier)) {\n touches.push(touch);\n }\n }\n return touches;\n }\n #setTouchInfo(evt) {\n const touches = this.#getTrackedTouches(evt);\n if (touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n const [touch0, touch1] = touches;\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY,\n panX: (touch0.clientX + touch1.clientX) / 2,\n panY: (touch0.clientY + touch1.clientY) / 2,\n screenPanX: (touch0.screenX + touch1.screenX) / 2,\n screenPanY: (touch0.screenY + touch1.screenY) / 2\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo) {\n return;\n }\n const touches = this.#getTrackedTouches(evt);\n if (touches.length !== 2) {\n return;\n }\n const wasOwned = this.#ownsGesture;\n this.#ownsGesture = stopTouchEvent(evt);\n if (!this.#ownsGesture) {\n return;\n }\n if (!wasOwned) {\n this.#setTouchInfo(evt);\n return;\n }\n const [touch0, touch1] = touches;\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y,\n panX: pPanX,\n panY: pPanY\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const panX = (touch0.clientX + touch1.clientX) / 2;\n const panY = (touch0.clientY + touch1.clientY) / 2;\n touchInfo.panX = panX;\n touchInfo.panY = panY;\n const dx = panX - pPanX;\n const dy = panY - pPanY;\n const screenPanX = (screen0X + screen1X) / 2;\n const screenPanY = (screen0Y + screen1Y) / 2;\n const translation = Math.hypot(screenPanX - touchInfo.screenPanX, screenPanY - touchInfo.screenPanY);\n touchInfo.screenPanX = screenPanX;\n touchInfo.screenPanY = screenPanY;\n const distance = Math.hypot(currGapX, currGapY);\n const pDistance = Math.hypot(prevGapX, prevGapY);\n const minDistance = this.#isPinching ? this.MIN_TOUCH_DISTANCE_TO_SCALE : this.MIN_TOUCH_DISTANCE_TO_PINCH + 2 * translation;\n if (distance < MIN_TOUCH_SPAN || pDistance < MIN_TOUCH_SPAN || Math.abs(pDistance - distance) <= minDistance) {\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n const direction = Math.sign(distance - pDistance);\n if (!this.#isPinching) {\n this.#isPinching = true;\n this.#unconfirmedPinch = direction;\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n if (this.#unconfirmedPinch) {\n const unconfirmed = this.#unconfirmedPinch;\n this.#unconfirmedPinch = 0;\n if (direction !== unconfirmed && Math.abs(distance - pDistance) <= 2 * translation) {\n this.#isPinching = false;\n if (dx || dy) {\n this.#onPanning?.(dx, dy);\n }\n return;\n }\n }\n this.#onPinching?.([pPanX, pPanY], pDistance, distance, dx, dy);\n }\n #onTouchEnd(evt) {\n this.#pruneTouchIds(evt);\n if (this.#touchIds.size >= 2) {\n this.#setTouchInfo(evt);\n return;\n }\n const wasTracking = !!this.#touchInfo;\n this.#endGesture();\n if (this.#touchIds.size === 1) {\n this.#armPointerDown();\n }\n if (wasTracking) {\n stopTouchEvent(evt);\n }\n }\n #endGesture() {\n this.#touchInfo = null;\n this.#isPinching = false;\n this.#unconfirmedPinch = 0;\n this.#ownsGesture = false;\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n }\n destroy() {\n this.#endGesture();\n this.#touchIds.clear();\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nAlert = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n updatePageIndex(newPageIndex) {\n this.pageIndex = newPageIndex;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor._uiManager.getId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nAlert ??= Object.freeze({\n highlight: \"pdfjs-editor-highlight-added-alert\",\n freetext: \"pdfjs-editor-freetext-added-alert\",\n ink: \"pdfjs-editor-ink-added-alert\",\n stamp: \"pdfjs-editor-stamp-added-alert\",\n signature: \"pdfjs-editor-signature-added-alert\"\n });\n AnnotationEditor._l10nResizer ??= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n if (this.isClone) {\n delete this.isClone;\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n if (!this.#comment) {\n return null;\n }\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(value) {\n this.#comment ||= new Comment(this);\n if (typeof value === \"object\" && value !== null) {\n this.#comment.restoreData(value);\n } else {\n this.#comment.data = value;\n }\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n this.#addTouchManager();\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n #addTouchManager() {\n if (this.#touchManager || !this.div || !this.isResizable || !this._uiManager._supportsPinchToZoom) {\n return;\n }\n this.#touchManager = new TouchManager({\n container: this.div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n this.#addTouchManager();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: uiManager.getId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n this.#touchManager?.destroy();\n this.#touchManager = null;\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstElementChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n onSetModified = null;\n onResetModified = null;\n onAnnotationEditor = null;\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (this.#storage.values().some(v => v instanceof AnnotationEditor)) {\n return;\n }\n this.onAnnotationEditor?.(null);\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n this.onAnnotationEditor?.(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n this.onSetModified?.();\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n this.onResetModified?.();\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (val.page) {\n val.pageIndex = val.page._pageIndex;\n delete val.page;\n }\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n typeToEditor.getOrInsertComputed(type, () => Object.getPrototypeOf(value).constructor);\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n const counters = map.getOrInsertComputed(key, makeMap);\n counters.set(val, (counters.get(val) ?? 0) + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n let hash = \"\";\n if (ids.length) {\n const h = new MurmurHash3_64();\n h.update(ids.join(\",\"));\n hash = h.hexdigest();\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = SerializableEmpty;\n constructor(parent) {\n super();\n const {\n serializable\n } = parent;\n if (serializable === SerializableEmpty) {\n return;\n }\n const {\n map,\n hash,\n transfer\n } = serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer: []\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\n\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nfunction scaleCharBBox(scaleX, scaleY, x, y, bbox) {\n let temp;\n if (scaleX) {\n if (scaleX < 0) {\n temp = bbox[0];\n bbox[0] = bbox[2];\n bbox[2] = temp;\n }\n bbox[0] *= scaleX;\n bbox[2] *= scaleX;\n if (scaleY < 0) {\n temp = bbox[1];\n bbox[1] = bbox[3];\n bbox[3] = temp;\n }\n bbox[1] *= scaleY;\n bbox[3] *= scaleY;\n } else {\n bbox.fill(0);\n }\n bbox[0] += x;\n bbox[1] += y;\n bbox[2] += x;\n bbox[3] += y;\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => map?.getOrInsertComputed(key, () => ({\n dependencies: new Set(),\n isRenderingOperation: false\n}));\nclass CanvasBBoxTracker {\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array(BBOX_INIT);\n _pendingBBoxIdx = -1;\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n _savesStack = [];\n _markedContentStack = [];\n constructor(canvas, operationsCount) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n get clipBox() {\n return this.#clipBox;\n }\n save(opIdx) {\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this._savesStack.push(opIdx);\n return this;\n }\n restore(opIdx, onSavePopped) {\n const previous = Object.getPrototypeOf(this.#clipBox);\n if (previous === null) {\n return this;\n }\n this.#clipBox = previous;\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this._savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n return this._savesStack.length === 0 ? null : this._savesStack.at(-1);\n }\n recordCloseMarker(opIdx, onSavePopped) {\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this._markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx, onSavePopped) {\n const lastSave = this._markedContentStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n resetBBox(idx) {\n if (this._pendingBBoxIdx !== idx) {\n this._pendingBBoxIdx = idx;\n this.#pendingBBox.set(BBOX_INIT, 0);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = MathClamp(bbox[0], clipBox[0], this.#pendingBBox[0]);\n this.#pendingBBox[1] = MathClamp(bbox[1], clipBox[1], this.#pendingBBox[1]);\n this.#pendingBBox[2] = MathClamp(bbox[2], this.#pendingBBox[2], clipBox[2]);\n this.#pendingBBox[3] = MathClamp(bbox[3], this.#pendingBBox[3], clipBox[3]);\n return this;\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n recordOperation(idx, preserve = false, dependencyLists) {\n if (this._pendingBBoxIdx !== idx) {\n return this;\n }\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n if (dependencyLists) {\n for (const dependencies of dependencyLists) {\n for (const depIdx of dependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n }\n }\n if (!preserve) {\n this._pendingBBoxIdx = -1;\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (this._pendingBBoxIdx === idx) {\n this._pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n }\n return this;\n }\n take() {\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n recordSimpleData(name, idx) {\n return this;\n }\n recordIncrementalData(name, idx) {\n return this;\n }\n resetIncrementalData(name, idx) {\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n return this;\n }\n getSimpleIndex(dependencyName) {\n return undefined;\n }\n recordDependencies(idx, dependencyNames) {\n return this;\n }\n recordNamedDependency(idx, name) {\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n return this;\n }\n}\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #pendingDependencies = new Set();\n #fontBBoxTrustworthy = new Map();\n #debugMetadata;\n #recordDebugMetadataDepenencyAfterRestore;\n #bboxTracker;\n constructor(bboxTracker, recordDebugMetadata = false) {\n this.#bboxTracker = bboxTracker;\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n this.#recordDebugMetadataDepenencyAfterRestore = (lastSave, opIdx) => {\n ensureDebugMetadata(this.#debugMetadata, opIdx).dependencies.add(lastSave);\n };\n }\n }\n get clipBox() {\n return this.#bboxTracker.clipBox;\n }\n growOperationsCount(operationsCount) {\n this.#bboxTracker.growOperationsCount(operationsCount);\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#bboxTracker.save(opIdx);\n return this;\n }\n restore(opIdx) {\n this.#bboxTracker.restore(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n return this;\n }\n recordOpenMarker(opIdx) {\n this.#bboxTracker.recordOpenMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n getOpenMarker() {\n return this.#bboxTracker.getOpenMarker();\n }\n recordCloseMarker(opIdx) {\n this.#bboxTracker.recordCloseMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#bboxTracker.beginMarkedContent(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n this.#bboxTracker.endMarkedContent(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n pushBaseTransform(ctx) {\n this.#bboxTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#bboxTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n this.#bboxTracker.resetBBox(idx);\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordClipBox(idx, ctx, minX, maxX, minY, maxY);\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordBBox(idx, ctx, minX, maxX, minY, maxY);\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n scaleCharBBox(scale, -scale, x, y, computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#bboxTracker.recordFullPageBBox(idx);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#bboxTracker._savesStack.forEach(dependencies.add, dependencies);\n this.#bboxTracker._markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.recordOperation(idx, preserve, [this.#pendingDependencies, this.#bboxTracker._savesStack, this.#bboxTracker._markedContentStack]);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.bboxToClipBoxDropOperation(idx);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\n }\n return this;\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return this.#bboxTracker.take();\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n get clipBox() {\n return this.#dependencyTracker.clipBox;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\nclass CanvasImagesTracker {\n #canvasWidth;\n #canvasHeight;\n #capacity = 4;\n #count = 0;\n #coords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n static #CoordsArray = FeatureTest.isFloat16ArraySupported ? Float16Array : Float32Array;\n constructor(canvas) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n }\n record(ctx, width, height, clipBox) {\n if (this.#count === this.#capacity) {\n this.#capacity *= 2;\n const newCoords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n newCoords.set(this.#coords);\n this.#coords = newCoords;\n }\n const transform = getCurrentTransform(ctx);\n let coords;\n if (clipBox[0] !== Infinity) {\n const bbox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, -height, width, 0], transform, bbox);\n const finalBBox = Util.intersect(clipBox, bbox);\n if (!finalBBox) {\n return;\n }\n const [minX, minY, maxX, maxY] = finalBBox;\n if (minX !== bbox[0] || minY !== bbox[1] || maxX !== bbox[2] || maxY !== bbox[3]) {\n const rotationAngle = Math.atan2(transform[1], transform[0]);\n const sin = Math.abs(Math.sin(rotationAngle));\n const cos = Math.abs(Math.cos(rotationAngle));\n if (sin < 1e-6 || cos < 1e-6 || Math.abs(sin - cos) < 1e-6) {\n coords = [minX, minY, minX, maxY, maxX, minY];\n } else {\n const finalBBoxWidth = maxX - minX;\n const finalBBoxHeight = maxY - minY;\n const sin2 = sin * sin;\n const cos2 = cos * cos;\n const cosSin = cos * sin;\n const denom = cos2 - sin2;\n const a = (finalBBoxHeight * cos2 - finalBBoxWidth * cosSin) / denom;\n const b = (finalBBoxHeight * cosSin - finalBBoxWidth * sin2) / denom;\n coords = [minX + b, minY, minX, minY + a, maxX, maxY - a];\n }\n }\n }\n if (!coords) {\n coords = [0, -height, 0, 0, width, -height];\n Util.applyTransform(coords, transform, 0);\n Util.applyTransform(coords, transform, 2);\n Util.applyTransform(coords, transform, 4);\n }\n coords[0] /= this.#canvasWidth;\n coords[1] /= this.#canvasHeight;\n coords[2] /= this.#canvasWidth;\n coords[3] /= this.#canvasHeight;\n coords[4] /= this.#canvasWidth;\n coords[5] /= this.#canvasHeight;\n this.#coords.set(coords, this.#count * 6);\n this.#count++;\n }\n take() {\n return this.#coords.subarray(0, this.#count * 6);\n }\n}\n\n;// ./src/shared/css_utils.js\nconst CONTROL_CHAR_REGEXP = /\\p{Cc}/u;\nfunction isCSSString(str) {\n const quote = str[0];\n if (str.length < 2 || quote !== `\"` && quote !== `'` || str.at(-1) !== quote) {\n return false;\n }\n const end = str.length - 1;\n for (let i = 1; i < end; i++) {\n const char = str[i];\n if (char === quote || CONTROL_CHAR_REGEXP.test(char)) {\n return false;\n }\n if (char === \"\\\\\") {\n if (++i >= end || CONTROL_CHAR_REGEXP.test(str[i])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction serializeFontFamily(fontFamily) {\n if (isCSSString(fontFamily)) {\n return fontFamily;\n }\n const escaped = fontFamily.replaceAll(/[\"\\\\\\p{Cc}]/gu, char => char === `\"` || char === \"\\\\\" ? `\\\\${char}` : `\\\\${char.codePointAt(0).toString(16)} `);\n return `\"${escaped}\"`;\n}\n\n;// ./src/display/font_loader.js\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n #styleSheet = null;\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n const styleSheet = this.#getStyleSheet();\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n #getStyleSheet() {\n if (this.#styleSheet) {\n return this.#styleSheet;\n }\n const StyleSheet = this._document.defaultView?.CSSStyleSheet || globalThis.CSSStyleSheet;\n if (!this.styleElement && StyleSheet) {\n const {\n adoptedStyleSheets\n } = this._document;\n if (adoptedStyleSheets) {\n const styleSheet = new StyleSheet();\n adoptedStyleSheets.push(styleSheet);\n return this.#styleSheet = styleSheet;\n }\n }\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n return this.#styleSheet = this.styleElement.sheet;\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.#styleSheet) {\n const {\n adoptedStyleSheets\n } = this._document;\n if (adoptedStyleSheets?.includes(this.#styleSheet)) {\n this._document.adoptedStyleSheets = adoptedStyleSheets.filter(styleSheet => styleSheet !== this.#styleSheet);\n }\n this.#styleSheet = null;\n }\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n compiledGlyphs = Object.create(null);\n #fontData;\n constructor(translatedData, inspectFont = null, charProcOperatorList, extra) {\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n if (extra) {\n Object.assign(this, extra);\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(serializeFontFamily(this.cssFontInfo.fontFamily), this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${this.data.toBase64()});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n const fontFamily = serializeFontFamily(this.cssFontInfo.fontFamily);\n rule = `@font-face {font-family:${fontFamily};${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj_bin_transform_utils.js\n\nclass CSS_FONT_INFO {\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n}\nclass SYSTEM_FONT_INFO {\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n}\nclass FONT_INFO {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8;\n static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4;\n static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n}\nclass PATTERN_INFO {\n static KIND = 0;\n static HAS_BBOX = 1;\n static HAS_BACKGROUND = 2;\n static SHADING_TYPE = 3;\n static N_COORD = 4;\n static N_COLOR = 8;\n static N_STOP = 12;\n static N_FIGURES = 16;\n}\nclass InfoUtils {\n static get decoder() {\n return shadow(this, \"decoder\", new TextDecoder());\n }\n static get encoder() {\n return shadow(this, \"encoder\", new TextEncoder());\n }\n}\n\n;// ./src/display/obj_bin_transform_display.js\n\n\nclass CssFontInfo {\n #buffer;\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n #readString(index) {\n assert(index < CSS_FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SYSTEM_FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n const {\n decoder\n } = InfoUtils;\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n #buffer;\n #view;\n constructor({\n buffer,\n extra\n }) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FONT_INFO.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FONT_INFO.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FONT_INFO.OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n #readArray(offset, arrLen, lookupName, increment) {\n const len = this.#view.getUint8(offset);\n if (len === 0) {\n return undefined;\n }\n assert(len === arrLen, \"Invalid array length.\");\n offset += 1;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = this.#view[lookupName](offset, true);\n offset += increment;\n }\n return arr;\n }\n get bbox() {\n return this.#readArray(FONT_INFO.OFFSET_BBOX, 4, \"getInt16\", 2);\n }\n get fontMatrix() {\n return this.#readArray(FONT_INFO.OFFSET_FONT_MATRIX, 6, \"getFloat64\", 8);\n }\n get defaultVMetrics() {\n return this.#readArray(FONT_INFO.OFFSET_DEFAULT_VMETRICS, 3, \"getInt16\", 2);\n }\n #readString(index) {\n assert(index < FONT_INFO.strings.length, \"Invalid string index\");\n const {\n decoder\n } = InfoUtils;\n let offset = FONT_INFO.OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n #getDataOffsets() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n return {\n offset,\n length\n };\n }\n get data() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n return length === 0 ? undefined : new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n if (length === 0) {\n return;\n }\n this.#view.setUint32(offset, 0);\n this.#buffer = new Uint8Array(this.#buffer, 0, offset + 4).slice().buffer;\n this.#view = new DataView(this.#buffer);\n }\n get cssFontInfo() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FONT_INFO.OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n}\nclass PatternInfo {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PATTERN_INFO.KIND];\n const hasBBox = !!this.data[PATTERN_INFO.HAS_BBOX];\n const hasBackground = !!this.data[PATTERN_INFO.HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PATTERN_INFO.N_COORD, true);\n const nColor = dataView.getUint32(PATTERN_INFO.N_COLOR, true);\n const nStop = dataView.getUint32(PATTERN_INFO.N_STOP, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 4);\n offset += nColor * 4;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PATTERN_INFO.SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n bounds = BBOX_INIT.slice();\n for (let i = 0, ii = coords.length; i < ii; i += 2) {\n Util.pointBoundingBox(coords[i], coords[i + 1], bounds);\n }\n }\n return [\"Mesh\", shadingType, coords, colors, nCoord, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n if (/^[a-z][a-z0-9\\-+.]+:/i.test(val)) {\n return new URL(val);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(val));\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/binary_data_factory.js\n\n\nclass BaseBinaryDataFactory {\n #errorStr = Object.freeze({\n cMapUrl: \"CMap\",\n standardFontDataUrl: \"font\",\n wasmUrl: \"wasm\"\n });\n constructor({\n cMapUrl = null,\n standardFontDataUrl = null,\n wasmUrl = null\n }) {\n this.cMapUrl = cMapUrl;\n this.standardFontDataUrl = standardFontDataUrl;\n this.wasmUrl = wasmUrl;\n }\n async fetch({\n kind,\n filename\n }) {\n switch (kind) {\n case \"cMapUrl\":\n case \"standardFontDataUrl\":\n case \"wasmUrl\":\n break;\n default:\n unreachable(`Not implemented: ${kind}`);\n }\n const baseUrl = this[kind];\n if (!baseUrl) {\n throw new Error(`Ensure that the \\`${kind}\\` API parameter is provided.`);\n }\n const url = `${baseUrl}${filename}`;\n return this._fetch(url, kind).catch(reason => {\n throw new Error(`Unable to load ${this.#errorStr[kind]} data at: ${url}`);\n });\n }\n async _fetch(url, kind) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n const type = kind === \"cMapUrl\" && !url.endsWith(\".bcmap\") ? \"text\" : \"bytes\";\n const data = await fetchData(url, type);\n return data instanceof Uint8Array ? data : stringToBytes(data);\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset({\n canvas\n }, width, height) {\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvas.width = width;\n canvas.height = height;\n }\n destroy(canvasAndContext) {\n const {\n canvas\n } = canvasAndContext;\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvas.width = canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addKnockoutFilter(alpha = 0) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n addSelectionHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addSelectionFilter() {\n return \"none\";\n }\n createSelectionStyle(pageColors = null) {\n return null;\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.colorScheme = \"only light\";\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#resetDefsColor();\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = Array.from({\n length: 256\n }, (_, i) => computeLuminance(i / 255));\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addSelectionHCMFilter(fgColor, bgColor) {\n return this.addHighlightHCMFilter(\"selection\", fgColor, bgColor, \"HighlightText\", \"Highlight\");\n }\n addSelectionFilter() {\n return this.addHighlightHCMFilter(\"selection_default\", \"black\", \"white\", \"HighlightText\", \"Highlight\");\n }\n createSelectionStyle(pageColors = null) {\n const filter = pageColors ? this.addSelectionHCMFilter(pageColors.foreground, pageColors.background) : this.addSelectionFilter();\n if (filter === \"none\" || !FeatureTest.platform.isFirefox) {\n return null;\n }\n return {\n \"backdrop-filter\": filter,\n \"background-color\": \"transparent\"\n };\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addKnockoutFilter(alpha = 0) {\n const slope = alpha > 0 ? Math.min(1 / alpha, 1e6) : 1e6;\n const key = `knockout_${slope}`;\n const value = this.#cache.get(key);\n if (value) {\n return value;\n }\n const id = `g_${this.#docId}_knockout_filter_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n const feFuncA = this.#document.createElementNS(SVG_NS, \"feFuncA\");\n feFuncA.setAttribute(\"type\", \"linear\");\n feFuncA.setAttribute(\"slope\", `${slope}`);\n feFuncA.setAttribute(\"intercept\", \"0\");\n feComponentTransfer.append(feFuncA);\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getOpaqueTextColor.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#resetDefsColor();\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = \"CanvasText\";\n this.#defs.style.backgroundColor = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"background-color\"));\n }\n #getRGBA(color) {\n this.#defs.style.color = \"CanvasText\";\n this.#defs.style.backgroundColor = color;\n return getRGBA(getComputedStyle(this.#defs).getPropertyValue(\"background-color\"));\n }\n #resetDefsColor() {\n this.#defs.style.color = \"\";\n this.#defs.style.backgroundColor = \"\";\n }\n #getOpaqueTextColor(color) {\n const [r, g, b, alpha] = this.#getRGBA(color);\n if (alpha === 1) {\n return [r, g, b];\n }\n const [canvasR, canvasG, canvasB] = this.#getRGB(\"Canvas\");\n return [blend(r, canvasR, alpha), blend(g, canvasG, alpha), blend(b, canvasB, alpha)];\n }\n}\nfunction blend(fg, bg, alpha) {\n return Math.round(alpha * fg + (1 - alpha) * bg);\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs/promises\");\n const data = await fs.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/shared/image_utils.js\n/* unused harmony import specifier */ var image_utils_ImageKind;\n/* unused harmony import specifier */ var image_utils_FeatureTest;\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case image_utils_ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case image_utils_ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const xorMask = zeroMapping ^ oneMapping;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; ++i) {\n for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;\n dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;\n dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;\n dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;\n dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;\n dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;\n dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;\n dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;\n dest[destPos + 3] = s3 >>> 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;\n dest[destPos + 3] = s3 << 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (image_utils_FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/webgpu.js\nconst MESH_WGSL = `\nstruct Uniforms {\n offsetX : f32,\n offsetY : f32,\n scaleX : f32,\n scaleY : f32,\n paddedWidth : f32,\n paddedHeight : f32,\n borderSize : f32,\n _pad : f32,\n};\n\n@group(0) @binding(0) var u : Uniforms;\n\nstruct VertexInput {\n @location(0) position : vec2,\n @location(1) color : vec4,\n};\n\nstruct VertexOutput {\n @builtin(position) position : vec4,\n @location(0) color : vec3,\n};\n\n@vertex\nfn vs_main(in : VertexInput) -> VertexOutput {\n var out : VertexOutput;\n let cx = (in.position.x + u.offsetX) * u.scaleX;\n let cy = (in.position.y + u.offsetY) * u.scaleY;\n out.position = vec4(\n ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0,\n 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0,\n 0.0,\n 1.0\n );\n out.color = in.color.rgb;\n return out;\n}\n\n@fragment\nfn fs_main(in : VertexOutput) -> @location(0) vec4 {\n return vec4(in.color, 1.0);\n}\n`;\nclass WebGPU {\n #initPromise = null;\n #device = null;\n #meshPipeline = null;\n #preferredFormat = null;\n async #initGPU() {\n if (!globalThis.navigator?.gpu) {\n return false;\n }\n try {\n const adapter = await navigator.gpu.requestAdapter();\n if (!adapter) {\n return false;\n }\n this.#preferredFormat = navigator.gpu.getPreferredCanvasFormat();\n this.#device = await adapter.requestDevice();\n return true;\n } catch {\n return false;\n }\n }\n init() {\n return this.#initPromise ||= this.#initGPU();\n }\n get isReady() {\n return this.#device !== null;\n }\n loadMeshShader() {\n if (!this.#device || this.#meshPipeline) {\n return;\n }\n const shaderModule = this.#device.createShaderModule({\n code: MESH_WGSL\n });\n this.#meshPipeline = this.#device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: shaderModule,\n entryPoint: \"vs_main\",\n buffers: [{\n arrayStride: 2 * 4,\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: \"float32x2\"\n }]\n }, {\n arrayStride: 4,\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: \"unorm8x4\"\n }]\n }]\n },\n fragment: {\n module: shaderModule,\n entryPoint: \"fs_main\",\n targets: [{\n format: this.#preferredFormat\n }]\n },\n primitive: {\n topology: \"triangle-list\"\n }\n });\n }\n draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n this.loadMeshShader();\n const device = this.#device;\n const {\n offsetX,\n offsetY,\n scaleX,\n scaleY\n } = context;\n const posBuffer = device.createBuffer({\n size: Math.max(posData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (posData.byteLength > 0) {\n device.queue.writeBuffer(posBuffer, 0, posData);\n }\n const colBuffer = device.createBuffer({\n size: Math.max(colData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (colData.byteLength > 0) {\n device.queue.writeBuffer(colBuffer, 0, colData);\n }\n const uniformBuffer = device.createBuffer({\n size: 8 * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n });\n device.queue.writeBuffer(uniformBuffer, 0, new Float32Array([offsetX, offsetY, scaleX, scaleY, paddedWidth, paddedHeight, borderSize, 0]));\n const bindGroup = device.createBindGroup({\n layout: this.#meshPipeline.getBindGroupLayout(0),\n entries: [{\n binding: 0,\n resource: {\n buffer: uniformBuffer\n }\n }]\n });\n const offscreen = new OffscreenCanvas(paddedWidth, paddedHeight);\n const gpuCtx = offscreen.getContext(\"webgpu\");\n gpuCtx.configure({\n device,\n format: this.#preferredFormat,\n alphaMode: backgroundColor ? \"opaque\" : \"premultiplied\"\n });\n const clearValue = backgroundColor ? {\n r: backgroundColor[0] / 255,\n g: backgroundColor[1] / 255,\n b: backgroundColor[2] / 255,\n a: 1\n } : {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n };\n const commandEncoder = device.createCommandEncoder();\n const renderPass = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: gpuCtx.getCurrentTexture().createView(),\n clearValue,\n loadOp: \"clear\",\n storeOp: \"store\"\n }]\n });\n if (vertexCount > 0) {\n renderPass.setPipeline(this.#meshPipeline);\n renderPass.setBindGroup(0, bindGroup);\n renderPass.setVertexBuffer(0, posBuffer);\n renderPass.setVertexBuffer(1, colBuffer);\n renderPass.draw(vertexCount);\n }\n renderPass.end();\n device.queue.submit([commandEncoder.finish()]);\n posBuffer.destroy();\n colBuffer.destroy();\n uniformBuffer.destroy();\n return offscreen.transferToImageBitmap();\n }\n}\nconst _webGPU = new WebGPU();\nfunction initGPU() {\n return _webGPU.init();\n}\nfunction isGPUReady() {\n return _webGPU.isReady;\n}\nfunction loadMeshShader() {\n _webGPU.loadMeshShader();\n}\nfunction drawMeshWithGPU(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n return _webGPU.draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize);\n}\n\n;// ./src/display/pattern_helper.js\n\n\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n matrix = null;\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n areConic() {\n if (!this.isRadial()) {\n return false;\n }\n const dist = Math.hypot(this._p0[0] - this._p1[0], this._p0[1] - this._p1[1]);\n return dist + this._r1 > this._r0 && dist + this._r0 > this._r1;\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n _createReversedGradient(ctx, transform = null) {\n let firstPoint = this._p1;\n let secondPoint = this._p0;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n let r0 = this._r1;\n let r1 = this._r0;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n const grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n const reversedStops = this._colorStops.map(([t, c]) => [1 - t, c]).reverse();\n for (const [t, c] of reversedStops) {\n grad.addColorStop(t, c);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.canvasFactory.create(width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n if (this.areConic()) {\n tmpCtx.fillStyle = this._createReversedGradient(tmpCtx);\n tmpCtx.fill();\n }\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(tmpCanvas);\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n if (this.areConic()) {\n ctx.save();\n applyBoundingBox(ctx, this._bbox);\n ctx.fillStyle = this._createReversedGradient(ctx);\n ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n ctx.restore();\n }\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 * 2 + 1] > coords[p2 * 2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 * 2 + 1] > coords[p3 * 2 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 * 2 + 1] > coords[p2 * 2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1 * 2] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 * 2 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2 * 2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 * 2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3 * 2] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 * 2 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1 * 4],\n c1g = colors[c1 * 4 + 1],\n c1b = colors[c1 * 4 + 2];\n const c2r = colors[c2 * 4],\n c2g = colors[c2 * 4 + 1],\n c2b = colors[c2 * 4 + 2];\n const c3r = colors[c3 * 4],\n c3g = colors[c3 * 4 + 1],\n c3b = colors[c3 * 4 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._posData = IR[2];\n this._colData = IR[3];\n this._vertexCount = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n loadMeshShader();\n }\n _createMeshCanvas(combinedScale, backgroundColor, canvasFactory) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE) || 1;\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE) || 1;\n const scaleX = boundsWidth ? boundsWidth / width : 1;\n const scaleY = boundsHeight ? boundsHeight / height : 1;\n const context = {\n coords: this._posData,\n colors: this._colData,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = canvasFactory.create(paddedWidth, paddedHeight);\n if (isGPUReady() && this._vertexCount > 48) {\n tmpCanvas.context.drawImage(drawMeshWithGPU(this._posData, this._colData, this._vertexCount, context, backgroundColor, paddedWidth, paddedHeight, BORDER_SIZE), 0, 0);\n } else {\n const data = tmpCanvas.context.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (let i = 0, ii = this._vertexCount; i < ii; i += 3) {\n drawTriangle(data, context, i, i + 1, i + 2, i, i + 1, i + 2);\n }\n tmpCanvas.context.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n }\n return {\n canvas: tmpCanvas.canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.canvasFactory);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(temporaryPatternCanvas);\n return pattern;\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.needsIsolation = IR[9] ?? true;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.patternBaseMatrix = this.matrix ? Util.transform(baseTransform, this.matrix) : baseTransform;\n }\n canSkipPatternCanvas([width, height, offsetX, offsetY]) {\n const [x0, y0, x1, y1] = this.bbox;\n const absXStep = Math.abs(this.xstep);\n const absYStep = Math.abs(this.ystep);\n if (width > absXStep + 1e-6 || height > absYStep + 1e-6) {\n return null;\n }\n const nXFirst = Math.floor((offsetX - x1) / absXStep) + 1;\n const nXLast = Math.ceil((offsetX + width - x0) / absXStep) - 1;\n const nYFirst = Math.floor((offsetY - y1) / absYStep) + 1;\n const nYLast = Math.ceil((offsetY + height - y0) / absYStep) - 1;\n return nXLast <= nXFirst && nYLast <= nYFirst ? [nXFirst, nYFirst] : null;\n }\n updatePatternDims(clippedBBox, dims) {\n const inv = Util.inverseTransform(this.patternBaseMatrix);\n const c1 = [clippedBBox[0], clippedBBox[1]];\n const c2 = [clippedBBox[2], clippedBBox[3]];\n Util.applyTransform(c1, inv);\n Util.applyTransform(c2, inv);\n dims[0] = Math.abs(c2[0] - c1[0]);\n dims[1] = Math.abs(c2[1] - c1[1]);\n dims[2] = Math.min(c1[0], c2[0]);\n dims[3] = Math.min(c1[1], c2[1]);\n }\n _renderTileCanvas(owner, opIdx, dimx, dimy) {\n const [x0, y0, x1, y1] = this.bbox;\n const tmpCanvas = owner.canvasFactory.create(dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = this.canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, this.paintType, this.color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(this.operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n return tmpCanvas;\n }\n _getCombinedScales() {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n return [matrixScaleX * scale[0], matrixScaleY * scale[1]];\n }\n drawPattern(owner, path, useEOFill = false, [n, m], opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const dependencyTracker = owner.dependencyTracker;\n if (dependencyTracker) {\n owner.dependencyTracker = new CanvasNestedDependencyTracker(dependencyTracker, opIdx);\n }\n owner.save();\n if (useEOFill) {\n owner.ctx.clip(path, \"evenodd\");\n } else {\n owner.ctx.clip(path);\n }\n owner.ctx.setTransform(...this.patternBaseMatrix);\n owner.ctx.translate(n * this.xstep, m * this.ystep);\n if (this.needsIsolation || owner.ctx.globalAlpha !== 1 || owner.ctx.globalCompositeOperation !== \"source-over\" || owner.inSMaskMode) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n const dimx = this.getSizeAndScale(bboxWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(bboxHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = this._renderTileCanvas(owner, opIdx, dimx, dimy);\n owner.ctx.drawImage(tmpCanvas.canvas, x0, y0, bboxWidth, bboxHeight);\n owner.canvasFactory.destroy(tmpCanvas);\n } else {\n this.setFillAndStrokeStyleToContext(owner, this.paintType, this.color);\n this.clipBbox(owner, x0, y0, x1, y1);\n owner.baseTransformStack.push(owner.baseTransform);\n owner.baseTransform = getCurrentTransform(owner.ctx);\n owner.executeOperatorList(this.operatorList);\n owner.baseTransform = owner.baseTransformStack.pop();\n }\n owner.restore();\n if (dependencyTracker) {\n owner.dependencyTracker = dependencyTracker;\n }\n }\n createPatternCanvas(owner, opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const width = x1 - x0;\n const height = y1 - y0;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + this.tilingType);\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n if (Math.ceil(xstep * combinedScaleX) >= Math.ceil(width * combinedScaleX)) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (Math.ceil(ystep * combinedScaleY) >= Math.ceil(height * combinedScaleY)) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = this._renderTileCanvas(owner, opIdx, dimx, dimy);\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.canvasFactory.create(xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n owner.canvasFactory.destroy(tmpCanvas);\n return {\n canvas: tmpCanvas2.canvas,\n canvasEntry: tmpCanvas2,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n canvasEntry: tmpCanvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n const clip = new Path2D();\n clip.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.ctx.clip(clip);\n graphics.current.updateClipFromPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n current.patternFill = current.patternStroke = false;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n const matrix = pathType !== PathType.SHADING ? Util.transform(inverse, this.patternBaseMatrix) : inverse;\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n owner.canvasFactory.destroy(temporaryPatternCanvas.canvasEntry);\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst XY = new Float32Array(2);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n const originalMethods = new Map();\n for (const name of [\"save\", \"restore\", \"rotate\", \"scale\", \"translate\", \"transform\", \"setTransform\", \"resetTransform\", \"clip\", \"moveTo\", \"lineTo\", \"bezierCurveTo\", \"quadraticCurveTo\", \"arc\", \"arcTo\", \"ellipse\", \"rect\", \"roundRect\", \"closePath\", \"beginPath\"]) {\n const original = ctx[name];\n if (typeof original !== \"function\" || typeof destCtx[name] !== \"function\") {\n continue;\n }\n originalMethods.set(name, original);\n ctx[name] = function (...args) {\n destCtx[name](...args);\n return original.apply(this, args);\n };\n }\n ctx._removeMirroring = () => {\n for (const [name, original] of originalMethods) {\n ctx[name] = original;\n }\n delete ctx._removeMirroring;\n };\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n tilingPatternDims = null;\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n minMax = F32_BBOX_INIT.slice();\n constructor(width, height) {\n this.clipBox = new Float32Array([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n clone.tilingPatternDims = this.tilingPatternDims?.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(F32_BBOX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n const {\n width,\n height,\n kind\n } = imgData;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i;\n if (kind === ImageKind.GRAYSCALE_1BPP) {\n for (i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (kind === ImageKind.RGBA_32BPP) {\n let j = 0;\n let elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (kind === ImageKind.RGB_24BPP) {\n for (i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertRGBToRGBA({\n src,\n srcPos,\n dest: new Uint32Array(dest.buffer),\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const {\n width,\n height\n } = imgData;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n static #SCALE_MATRIX = null;\n #knockoutGroupLevel = 0;\n #knockoutElementDepth = 0;\n #knockoutTempCanvasEntry = null;\n #knockoutSavedCtx = null;\n #knockoutSavedSMaskCtx = null;\n #knockoutSavedGCO = null;\n #knockoutElementAlpha = 1;\n #knockoutFilterCache;\n #knockoutElementGroupMeta = null;\n #groupStackMeta = [];\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker, imagesTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.tempSMask = null;\n this.smaskGroupCanvases = [];\n this.smaskPreparedEntry = null;\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n this.smaskPreparedOOBAlpha = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n this.imagesTracker = imagesTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.transparentCanvasEntry = this.canvasFactory.create(width, height);\n this.compositeCtx = this.ctx;\n ({\n canvas: this.transparentCanvas,\n context: this.ctx\n } = transparentCanvas);\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[3];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined) {\n if (i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (stepper.shouldSkip(i)) {\n if (++i === argsArrayLen) {\n return i;\n }\n continue;\n }\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.canvasFactory.destroy(this.transparentCanvasEntry);\n this.transparentCanvas = null;\n this.transparentCanvasEntry = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n for (const canvas of this.smaskGroupCanvases) {\n this.canvasFactory.destroy(canvas);\n }\n this.smaskGroupCanvases.length = 0;\n this._clearPreparedSMask();\n this.tempSMask = null;\n this.smaskStack.length = 0;\n for (const meta of this.#groupStackMeta) {\n this.#destroyKnockoutPools(meta);\n }\n this.#groupStackMeta.length = 0;\n this.#knockoutTempCanvasEntry = null;\n this.#knockoutSavedCtx = null;\n this.#knockoutSavedSMaskCtx = null;\n this.#knockoutSavedGCO = null;\n this.#knockoutElementAlpha = 1;\n this.#knockoutElementGroupMeta = null;\n this.#knockoutElementDepth = 0;\n this.#knockoutGroupLevel = 0;\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n const widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n const heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n const scaleSteps = [];\n let ws = widthScale,\n hs = heightScale,\n pw = width,\n ph = height;\n while (ws > 2 && pw > 1 || hs > 2 && ph > 1) {\n let nw = pw,\n nh = ph;\n if (ws > 2 && pw > 1) {\n nw = Math.ceil(pw / 2);\n ws /= pw / nw;\n }\n if (hs > 2 && ph > 1) {\n nh = Math.ceil(ph / 2);\n hs /= ph / nh;\n }\n scaleSteps.push({\n newWidth: nw,\n newHeight: nh\n });\n pw = nw;\n ph = nh;\n }\n if (scaleSteps.length === 0) {\n return {\n img,\n paintWidth: width,\n paintHeight: height,\n tmpCanvas: null\n };\n }\n if (scaleSteps.length === 1) {\n const {\n newWidth,\n newHeight\n } = scaleSteps[0];\n const tmpCanvas = this.canvasFactory.create(newWidth, newHeight);\n tmpCanvas.context.drawImage(img, 0, 0, width, height, 0, 0, newWidth, newHeight);\n return {\n img: tmpCanvas.canvas,\n paintWidth: newWidth,\n paintHeight: newHeight,\n tmpCanvas\n };\n }\n let readEntry = this.canvasFactory.create(1, 1);\n let writeEntry = this.canvasFactory.create(1, 1);\n let paintWidth = width,\n paintHeight = height;\n let source = img;\n for (const {\n newWidth,\n newHeight\n } of scaleSteps) {\n this.canvasFactory.reset(writeEntry, newWidth, newHeight);\n writeEntry.context.drawImage(source, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n [readEntry, writeEntry] = [writeEntry, readEntry];\n source = readEntry.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n }\n this.canvasFactory.destroy(writeEntry);\n return {\n img: readEntry.canvas,\n paintWidth,\n paintHeight,\n tmpCanvas: readEntry\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.getOrInsertComputed(mainKey, makeMap);\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.canvasFactory.create(width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n let scaledEntry = null;\n if (!scaled) {\n const scaleResult = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaleResult.img;\n scaledEntry = scaleResult.tmpCanvas;\n if (scaled !== maskCanvas.canvas) {\n this.canvasFactory.destroy(maskCanvas);\n maskCanvas = null;\n }\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n scaledEntry = null;\n maskCanvas = null;\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n if (scaledEntry) {\n this.canvasFactory.destroy(scaledEntry);\n }\n if (maskCanvas) {\n this.canvasFactory.destroy(maskCanvas);\n }\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n canvasEntry: cache && !isPatternFill ? null : fillCanvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.current.activeSMask.blendMode = this.ctx.globalCompositeOperation;\n }\n this.tempSMask = null;\n this.checkSMaskState(opIdx);\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n _clearPreparedSMask() {\n if (this.smaskPreparedEntry) {\n this.canvasFactory.destroy(this.smaskPreparedEntry);\n this.smaskPreparedEntry = null;\n }\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n this.smaskPreparedOOBAlpha = null;\n }\n _ensurePreparedSMask(smask) {\n if (smask === this.smaskPreparedFor) {\n return;\n }\n this._clearPreparedSMask();\n this._prepareSMaskCanvas(smask);\n }\n checkSMaskState(opIdx) {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode(opIdx);\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n } else if (this.current.activeSMask && inSMaskMode) {\n this._ensurePreparedSMask(this.current.activeSMask);\n }\n }\n _prepareSMaskCanvas(smask) {\n const {\n canvas: maskCanvas,\n subtype,\n backdrop,\n transferMap\n } = smask;\n const hasFilter = subtype === \"Luminosity\" || subtype === \"Alpha\" && transferMap;\n if (!hasFilter && !(subtype === \"Luminosity\" && backdrop)) {\n this.smaskPreparedFor = smask;\n return;\n }\n let filteredOOBAlpha;\n if (subtype === \"Luminosity\" && backdrop) {\n const [r, g, b] = getRGBA(backdrop);\n const inputAlpha = Math.round(0.3 * r + 0.59 * g + 0.11 * b);\n filteredOOBAlpha = transferMap?.[inputAlpha] ?? inputAlpha;\n } else {\n filteredOOBAlpha = transferMap?.[0] ?? 0;\n }\n const SMASK_LAYER_TO_MASK_AREA_RATIO = 4;\n const {\n width: layerW,\n height: layerH\n } = this.ctx.canvas;\n const maskArea = maskCanvas.width * maskCanvas.height;\n const useLayerSize = layerW * layerH < SMASK_LAYER_TO_MASK_AREA_RATIO * maskArea;\n const filterSpec = hasFilter ? {\n url: subtype === \"Alpha\" ? this.filterFactory.addAlphaFilter(transferMap) : this.filterFactory.addLuminosityFilter(transferMap),\n subtype,\n transferMap\n } : null;\n const bakedBackdrop = subtype === \"Luminosity\" ? backdrop : null;\n let preparedEntry, offsetX, offsetY;\n if (useLayerSize) {\n preparedEntry = this._bakeSMaskCanvas(maskCanvas, smask.offsetX, smask.offsetY, layerW, layerH, bakedBackdrop, filterSpec);\n offsetX = 0;\n offsetY = 0;\n } else {\n preparedEntry = this._bakeSMaskCanvas(maskCanvas, 0, 0, maskCanvas.width, maskCanvas.height, bakedBackdrop, filterSpec);\n offsetX = smask.offsetX;\n offsetY = smask.offsetY;\n }\n this.smaskPreparedEntry = preparedEntry;\n this.smaskPreparedFor = smask;\n this.smaskPreparedOffsetX = offsetX;\n this.smaskPreparedOffsetY = offsetY;\n this.smaskPreparedOOBAlpha = !useLayerSize && filteredOOBAlpha !== 0 ? filteredOOBAlpha : null;\n }\n _bakeSMaskCanvas(maskCanvas, drawX, drawY, w, h, backdrop, filterSpec) {\n if (!backdrop && !filterSpec) {\n unreachable(\"_bakeSMaskCanvas with neither backdrop nor filter\");\n }\n const srcEntry = this.canvasFactory.create(w, h);\n const sCtx = srcEntry.context;\n sCtx.drawImage(maskCanvas, drawX, drawY);\n if (backdrop) {\n sCtx.globalCompositeOperation = \"destination-atop\";\n sCtx.fillStyle = backdrop;\n sCtx.fillRect(0, 0, w, h);\n }\n if (!filterSpec) {\n return srcEntry;\n }\n const preparedEntry = this.canvasFactory.create(w, h);\n const pCtx = preparedEntry.context;\n pCtx.filter = filterSpec.url;\n const filterApplied = FeatureTest.isCanvasFilterSupported && pCtx.filter !== \"none\" && pCtx.filter !== \"\";\n pCtx.drawImage(srcEntry.canvas, 0, 0);\n if (FeatureTest.isCanvasFilterSupported) {\n pCtx.filter = \"none\";\n }\n if (!filterApplied) {\n const img = pCtx.getImageData(0, 0, w, h);\n const {\n data\n } = img;\n const {\n transferMap\n } = filterSpec;\n if (filterSpec.subtype === \"Luminosity\") {\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n const a = 0.3 * data[i] + 0.59 * data[i + 1] + 0.11 * data[i + 2] + 0.5 | 0;\n data[i] = data[i + 1] = data[i + 2] = 0;\n data[i + 3] = transferMap?.[a] ?? a;\n }\n } else {\n for (let i = 3, ii = data.length; i < ii; i += 4) {\n data[i] = transferMap[data[i]];\n }\n }\n pCtx.putImageData(img, 0, 0);\n }\n this.canvasFactory.destroy(srcEntry);\n return preparedEntry;\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const {\n width: drawnWidth,\n height: drawnHeight\n } = this.ctx.canvas;\n const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n this.smaskScratchCanvas = scratchCanvas;\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this._ensurePreparedSMask(this.current.activeSMask);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n this.canvasFactory.destroy(this.smaskScratchCanvas);\n this.smaskScratchCanvas = null;\n this._clearPreparedSMask();\n }\n #createKnockoutMaskCanvas(sourceCanvas, reuseEntry = null, alpha = 1) {\n const {\n width,\n height\n } = sourceCanvas;\n const maskEntry = reuseEntry ?? this.canvasFactory.create(width, height);\n const maskCtx = maskEntry.context;\n alpha = Math.round(alpha * 255) / 255;\n const needsAlphaScaling = alpha < 1;\n if (needsAlphaScaling && this.#knockoutFilterCache === undefined) {\n this.#knockoutFilterCache = FeatureTest.isCanvasFilterSupported ? new Map() : \"none\";\n }\n let knockoutFilter = \"none\";\n if (needsAlphaScaling && this.#knockoutFilterCache instanceof Map) {\n knockoutFilter = this.#knockoutFilterCache.getOrInsertComputed(alpha, () => this.filterFactory.addKnockoutFilter(alpha));\n }\n if (!needsAlphaScaling || knockoutFilter !== \"none\") {\n if (reuseEntry) {\n maskCtx.save();\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n maskCtx.clearRect(0, 0, width, height);\n maskCtx.restore();\n }\n maskCtx.filter = knockoutFilter;\n maskCtx.drawImage(sourceCanvas, 0, 0);\n maskCtx.filter = \"none\";\n return maskEntry;\n }\n const sourceData = sourceCanvas.getContext(\"2d\", {\n willReadFrequently: true\n }).getImageData(0, 0, width, height);\n const maskData = maskCtx.createImageData(width, height);\n const sourcePixels = sourceData.data,\n maskPixels = maskData.data;\n const alphaScale = alpha > 0 ? 1 / alpha : 1e6;\n for (let i = 3, ii = sourcePixels.length; i < ii; i += 4) {\n maskPixels[i] = Math.min(Math.round(sourcePixels[i] * alphaScale), 255);\n }\n maskCtx.putImageData(maskData, 0, 0);\n return maskEntry;\n }\n #getOrCreatePooledEntry(meta, key, width, height) {\n let entry = meta?.[key] ?? null;\n if (entry && (entry.canvas.width !== width || entry.canvas.height !== height)) {\n this.canvasFactory.destroy(entry);\n entry = null;\n }\n if (!entry) {\n entry = this.canvasFactory.create(width, height);\n if (meta) {\n meta[key] = entry;\n }\n return entry;\n }\n const ctx = entry.context;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n ctx.restore();\n return entry;\n }\n #compositeKnockoutSurface(destCtx, surfaceCanvas, options = {}) {\n const {\n backdropCanvas = null,\n destTransform = [1, 0, 0, 1, 0, 0],\n backdropOffset = [0, 0],\n reuseMaskEntry = null,\n poolMeta = null,\n sourceAlpha = 1,\n sourceFilter = \"none\",\n knockoutAlpha = 1\n } = options;\n const {\n width,\n height\n } = surfaceCanvas;\n const knockoutMaskEntry = this.#createKnockoutMaskCanvas(surfaceCanvas, reuseMaskEntry, knockoutAlpha);\n const sourceCompositeOperation = destCtx.globalCompositeOperation;\n destCtx.save();\n destCtx.setTransform(...destTransform);\n destCtx.globalAlpha = 1;\n if (FeatureTest.isCanvasFilterSupported) {\n destCtx.filter = \"none\";\n }\n destCtx.globalCompositeOperation = \"destination-out\";\n destCtx.drawImage(knockoutMaskEntry.canvas, 0, 0);\n if (backdropCanvas) {\n const [bx, by] = backdropOffset;\n const backdropEntry = this.#getOrCreatePooledEntry(poolMeta, \"knockoutBackdropEntry\", width, height);\n const backdropCtx = backdropEntry.context;\n backdropCtx.drawImage(backdropCanvas, bx, by, width, height, 0, 0, width, height);\n backdropCtx.globalCompositeOperation = \"destination-in\";\n backdropCtx.drawImage(knockoutMaskEntry.canvas, 0, 0);\n backdropCtx.globalCompositeOperation = \"source-over\";\n destCtx.globalCompositeOperation = \"destination-over\";\n destCtx.drawImage(backdropEntry.canvas, 0, 0);\n if (!poolMeta) {\n this.canvasFactory.destroy(backdropEntry);\n }\n }\n destCtx.globalCompositeOperation = sourceCompositeOperation;\n destCtx.globalAlpha = sourceAlpha;\n if (FeatureTest.isCanvasFilterSupported) {\n destCtx.filter = sourceFilter ?? \"none\";\n }\n destCtx.drawImage(surfaceCanvas, 0, 0);\n destCtx.restore();\n if (!reuseMaskEntry) {\n this.canvasFactory.destroy(knockoutMaskEntry);\n }\n }\n #beginKnockoutElement(alpha = 1) {\n if (this.#knockoutGroupLevel === 0 || this.#knockoutElementDepth > 0 || !this.contentVisible) {\n return false;\n }\n this.#knockoutElementDepth++;\n this.#knockoutElementAlpha = alpha;\n const groupMeta = this.#groupStackMeta.at(-1);\n const {\n canvas\n } = this.ctx;\n const tempEntry = this.#getOrCreatePooledEntry(groupMeta, \"knockoutTempEntry\", canvas.width, canvas.height);\n this.#knockoutTempCanvasEntry = tempEntry;\n const tempCtx = tempEntry.context;\n tempCtx.save();\n tempCtx.setTransform(this.ctx.getTransform());\n copyCtxState(this.ctx, tempCtx);\n this.#knockoutSavedGCO = tempCtx.globalCompositeOperation;\n tempCtx.globalCompositeOperation = \"source-over\";\n mirrorContextOperations(tempCtx, this.ctx);\n this.#knockoutElementGroupMeta = groupMeta;\n this.#knockoutSavedCtx = this.ctx;\n this.#knockoutSavedSMaskCtx = this.suspendedCtx;\n this.ctx = tempCtx;\n if (this.inSMaskMode) {\n this.suspendedCtx = tempCtx;\n }\n return true;\n }\n #endKnockoutElement(started) {\n if (!started) {\n return;\n }\n const tempEntry = this.#knockoutTempCanvasEntry;\n const savedCtx = this.#knockoutSavedCtx;\n const savedSMaskCtx = this.#knockoutSavedSMaskCtx;\n const tempCtx = tempEntry.context;\n this.#knockoutTempCanvasEntry = null;\n this.#knockoutSavedCtx = null;\n this.#knockoutSavedSMaskCtx = null;\n if (this.inSMaskMode && this.suspendedCtx === tempCtx && this.ctx !== tempCtx) {\n this.endSMaskMode();\n }\n if (this.inSMaskMode) {\n this.suspendedCtx = savedSMaskCtx;\n }\n this.ctx._removeMirroring();\n this.ctx.globalCompositeOperation = this.#knockoutSavedGCO;\n this.#knockoutSavedGCO = null;\n copyCtxState(this.ctx, savedCtx);\n this.ctx = savedCtx;\n const groupMeta = this.#knockoutElementGroupMeta;\n this.#knockoutElementGroupMeta = null;\n const knockoutAlpha = this.#knockoutElementAlpha;\n this.#knockoutElementAlpha = 1;\n try {\n this.#compositeKnockoutSurface(savedSMaskCtx ?? savedCtx, tempEntry.canvas, {\n backdropCanvas: groupMeta?.backdropCtx?.canvas ?? null,\n backdropOffset: groupMeta?.backdropCtx ? [groupMeta.offsetX, groupMeta.offsetY] : [0, 0],\n reuseMaskEntry: groupMeta?.knockoutMaskEntry ?? null,\n poolMeta: groupMeta,\n knockoutAlpha\n });\n } finally {\n tempCtx.restore();\n this.#knockoutElementDepth--;\n if (!groupMeta) {\n this.canvasFactory.destroy(tempEntry);\n }\n }\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n dirtyBox = dirtyBox ? [Math.floor(dirtyBox[0]), Math.floor(dirtyBox[1]), Math.ceil(dirtyBox[2]), Math.ceil(dirtyBox[3])] : [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n const applySMaskInPlace = this.#knockoutElementDepth > 0 && suspendedCtx === this.ctx;\n this.composeSMask(applySMaskInPlace ? null : suspendedCtx, smask, this.ctx, dirtyBox);\n if (applySMaskInPlace) {\n return;\n }\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n const preparedEntry = this.smaskPreparedEntry;\n if (preparedEntry) {\n let clipX = layerOffsetX;\n let clipY = layerOffsetY;\n let clipW = layerWidth;\n let clipH = layerHeight;\n const oobAlpha = this.smaskPreparedOOBAlpha;\n const hasOOBAlpha = oobAlpha !== null;\n if (hasOOBAlpha) {\n clipX = Math.max(layerOffsetX, smask.offsetX);\n clipY = Math.max(layerOffsetY, smask.offsetY);\n const x1 = Math.min(layerOffsetX + layerWidth, smask.offsetX + smask.canvas.width);\n const y1 = Math.min(layerOffsetY + layerHeight, smask.offsetY + smask.canvas.height);\n clipW = x1 - clipX;\n clipH = y1 - clipY;\n }\n if (clipW > 0 && clipH > 0) {\n const srcX = clipX - this.smaskPreparedOffsetX;\n const srcY = clipY - this.smaskPreparedOffsetY;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(clipX, clipY, clipW, clipH);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(preparedEntry.canvas, srcX, srcY, clipW, clipH, clipX, clipY, clipW, clipH);\n layerCtx.restore();\n }\n if (hasOOBAlpha && oobAlpha < 255) {\n this._applySMaskOOBAlpha(layerCtx, layerOffsetX, layerOffsetY, layerWidth, layerHeight, clipX, clipY, clipX + clipW, clipY + clipH, oobAlpha);\n }\n } else {\n this.genericComposeSMask(smask, layerCtx, layerWidth, layerHeight, layerOffsetX, layerOffsetY);\n }\n if (!ctx) {\n return;\n }\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = smask.blendMode || \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, layerOffsetX, layerOffsetY, layerWidth, layerHeight, layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n ctx.restore();\n }\n _applySMaskOOBAlpha(layerCtx, layerOffsetX, layerOffsetY, layerWidth, layerHeight, maskX0, maskY0, maskX1, maskY1, alpha) {\n const hasInnerCutout = maskX0 < maskX1 && maskY0 < maskY1;\n if (hasInnerCutout && maskX0 === layerOffsetX && maskY0 === layerOffsetY && maskX1 === layerOffsetX + layerWidth && maskY1 === layerOffsetY + layerHeight) {\n return;\n }\n const path = new Path2D();\n path.rect(layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n if (hasInnerCutout) {\n path.rect(maskX0, maskY0, maskX1 - maskX0, maskY1 - maskY0);\n }\n layerCtx.save();\n layerCtx.globalAlpha = alpha / 255;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n layerCtx.clip(path, \"evenodd\");\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.fillStyle = \"#000000\";\n layerCtx.fillRect(layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n layerCtx.restore();\n }\n genericComposeSMask(smask, layerCtx, width, height, layerOffsetX, layerOffsetY) {\n const {\n context: maskCtx,\n offsetX: maskOffsetX,\n offsetY: maskOffsetY\n } = smask;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCtx.canvas, layerOffsetX - maskOffsetX, layerOffsetY - maskOffsetY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\n this.checkSMaskState(opIdx);\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n if (op !== OPS.stroke && op !== OPS.closeStroke) {\n this.current.tilingPatternDims = null;\n }\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n const tilingDims = this.current.tilingPatternDims;\n if (tilingDims && op !== OPS.stroke && op !== OPS.closeStroke && this.current.fillColor instanceof TilingPattern) {\n const clippedBBox = Util.intersect(this.current.clipBox, this.current.minMax);\n if (!clippedBBox) {\n this.current.tilingPatternDims = null;\n } else {\n this.current.fillColor.updatePatternDims(clippedBBox, tilingDims);\n }\n }\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const started = consumePath && this.#beginKnockoutElement(this.current.strokeAlpha);\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n this.#endKnockoutElement(started);\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const started = consumePath && this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n const intersect = this.current.getClippedPathBoundingBox();\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (isPatternFill) {\n const dims = this.current.tilingPatternDims;\n const tileIdx = dims && fillColor.canSkipPatternCanvas(dims);\n if (tileIdx) {\n fillColor.drawPattern(this, path, this.pendingEOFill, tileIdx, opIdx);\n this.pendingEOFill = false;\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n this.current.tilingPatternDims = null;\n this.#endKnockoutElement(started);\n return;\n }\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n this.#endKnockoutElement(started);\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n const started = this.#beginKnockoutElement(Math.min(this.current.fillAlpha, this.current.strokeAlpha));\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n this.#endKnockoutElement(started);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const browserFontSize = MathClamp(size, MIN_FONT_SIZE, MAX_FONT_SIZE);\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const tmpCanvas = this.canvasFactory.create(10, 10);\n const ctx = tmpCanvas.context;\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n this.canvasFactory.destroy(tmpCanvas);\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n const started = this.#beginKnockoutElement(current.fillAlpha);\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n this.#endKnockoutElement(started);\n return;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return;\n }\n const started = this.#beginKnockoutElement(current.fillAlpha);\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n if (needsStroke) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n this.#endKnockoutElement(started);\n return;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList.get(glyph.operatorListId);\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n if (operatorList.fnArray[0] === OPS.setCharWidth) {\n current.fillAlpha = current.strokeAlpha = 1;\n ctx.globalAlpha = 1;\n }\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n const pattern = this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n this.current.tilingPatternDims = pattern instanceof TilingPattern ? [0, 0, 0, 0] : null;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n this.current.tilingPatternDims = null;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n this.current.tilingPatternDims = null;\n }\n _getPattern(opIdx, objId, matrix = null) {\n const pattern = this.cachedPatterns.getOrInsertComputed(objId, () => getShadingPattern(this.getObject(opIdx, objId)));\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n this.#endKnockoutElement(started);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n const {\n inSMaskMode\n } = this;\n if (inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if ((!group.needsIsolation || !group.isolated && !group.hasSoftMask) && !group.knockout && !group.isGray && this.#knockoutGroupLevel === 0 && currentCtx.globalAlpha === 1 && currentCtx.globalCompositeOperation === \"source-over\" && !inSMaskMode) {\n if (group.bbox) {\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n currentCtx.clip(clip);\n }\n this.groupStack.push(null);\n this.#groupStackMeta.push(null);\n this.groupLevel++;\n return;\n }\n if (!group.isolated && !group.knockout && this.#knockoutGroupLevel === 0) {\n info(\"TODO: Fully support non-isolated non-knockout groups.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n let bounds;\n if (group.bbox) {\n bounds = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n } else {\n bounds = canvasBounds;\n }\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n if (group.smask) {\n this.smaskGroupCanvases.push(scratchCanvas);\n }\n const groupCtx = scratchCanvas.context;\n const backdropCtx = group.knockout && !group.isolated ? currentCtx : null;\n const hasInnerBackdrop = !group.isolated && !group.knockout && !group.smask && group.needsIsolation && this.#knockoutGroupLevel > 0;\n const knockoutMaskEntry = group.knockout ? this.canvasFactory.create(drawnWidth, drawnHeight) : null;\n const savedKnockoutLevel = this.#knockoutGroupLevel;\n if (group.knockout) {\n this.#knockoutGroupLevel++;\n } else {\n this.#knockoutGroupLevel = 0;\n }\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n const needsBackdropCopy = !group.isolated && !group.smask && group.needsIsolation;\n const replaceBackdrop = needsBackdropCopy && !inSMaskMode && savedKnockoutLevel === 0 && !group.knockout && !group.isGray && group.hasSoftMask && currentCtx.globalAlpha === 1 && currentCtx.globalCompositeOperation === \"source-over\" && this.current.transferMaps === \"none\";\n if (needsBackdropCopy && (inSMaskMode || replaceBackdrop)) {\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.drawImage(currentCtx.canvas, -offsetX, -offsetY);\n groupCtx.restore();\n }\n if (group.bbox) {\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n }\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1], [\"TR\", null]]);\n this.groupStack.push(currentCtx);\n this.#groupStackMeta.push({\n backdropCtx,\n savedKnockoutLevel,\n offsetX,\n offsetY,\n hasInnerBackdrop,\n replaceBackdrop,\n knockoutMaskEntry,\n knockoutTempEntry: null,\n knockoutBackdropEntry: null\n });\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n const groupMeta = this.#groupStackMeta.pop();\n if (groupMeta) {\n this.#knockoutGroupLevel = groupMeta.savedKnockoutLevel;\n }\n if (ctx === null) {\n this.restore(opIdx);\n return;\n }\n if (group.isGray) {\n this.#convertGroupToGray(groupCtx);\n }\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n if (this.inSMaskMode) {\n this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\n }\n this.#destroyKnockoutPools(groupMeta);\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n const parentGroupMeta = this.#groupStackMeta.at(-1);\n if (this.#knockoutGroupLevel > 0) {\n if (groupMeta.hasInnerBackdrop) {\n const {\n width,\n height\n } = groupCtx.canvas;\n const colorEntry = this.canvasFactory.create(width, height);\n const colorCtx = colorEntry.context;\n colorCtx.drawImage(ctx.canvas, groupMeta.offsetX, groupMeta.offsetY, width, height, 0, 0, width, height);\n colorCtx.globalCompositeOperation = \"source-over\";\n colorCtx.drawImage(groupCtx.canvas, 0, 0);\n const shapeMaskEntry = this.#createKnockoutMaskCanvas(groupCtx.canvas);\n colorCtx.globalCompositeOperation = \"destination-in\";\n colorCtx.drawImage(shapeMaskEntry.canvas, 0, 0);\n const sourceCompositeOperation = this.ctx.globalCompositeOperation;\n const sourceAlpha = this.ctx.globalAlpha;\n const sourceFilter = this.ctx.filter;\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n this.ctx.globalAlpha = 1;\n if (FeatureTest.isCanvasFilterSupported) {\n this.ctx.filter = \"none\";\n }\n this.ctx.globalCompositeOperation = \"destination-out\";\n this.ctx.drawImage(shapeMaskEntry.canvas, 0, 0);\n this.ctx.globalCompositeOperation = sourceCompositeOperation;\n this.ctx.globalAlpha = sourceAlpha;\n if (FeatureTest.isCanvasFilterSupported) {\n this.ctx.filter = sourceFilter ?? \"none\";\n }\n this.ctx.drawImage(colorEntry.canvas, 0, 0);\n this.ctx.restore();\n this.canvasFactory.destroy(shapeMaskEntry);\n this.canvasFactory.destroy(colorEntry);\n } else {\n const backdropCtx = parentGroupMeta?.backdropCtx ?? null;\n this.#compositeKnockoutSurface(this.ctx, groupCtx.canvas, {\n backdropCanvas: backdropCtx?.canvas ?? null,\n destTransform: currentMtx,\n backdropOffset: backdropCtx ? [parentGroupMeta.offsetX + groupMeta.offsetX, parentGroupMeta.offsetY + groupMeta.offsetY] : [0, 0],\n sourceAlpha: this.ctx.globalAlpha,\n sourceFilter: this.ctx.filter\n });\n }\n } else {\n if (groupMeta.replaceBackdrop) {\n const clip = new Path2D();\n clip.rect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n this.ctx.clip(clip);\n this.ctx.globalCompositeOperation = \"copy\";\n }\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.ctx.restore();\n this.canvasFactory.destroy({\n canvas: groupCtx.canvas,\n context: groupCtx\n });\n this.#destroyKnockoutPools(groupMeta);\n this.compose(dirtyBox);\n }\n }\n #convertGroupToGray(groupCtx) {\n const {\n canvas\n } = groupCtx;\n const {\n width,\n height\n } = canvas;\n if (FeatureTest.isCanvasFilterSupported) {\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.filter = \"grayscale(1)\";\n groupCtx.globalAlpha = 1;\n groupCtx.globalCompositeOperation = \"copy\";\n groupCtx.drawImage(canvas, 0, 0);\n groupCtx.restore();\n return;\n }\n const imageData = groupCtx.getImageData(0, 0, width, height);\n const {\n data\n } = imageData;\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n const gray = data[i] * 0.2126 + data[i + 1] * 0.7152 + data[i + 2] * 0.0722 + 0.5 | 0;\n data[i] = data[i + 1] = data[i + 2] = gray;\n }\n groupCtx.putImageData(imageData, 0, 0);\n }\n #destroyKnockoutPools(groupMeta) {\n if (!groupMeta) {\n return;\n }\n if (groupMeta.knockoutMaskEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutMaskEntry);\n groupMeta.knockoutMaskEntry = null;\n }\n if (groupMeta.knockoutTempEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutTempEntry);\n groupMeta.knockoutTempEntry = null;\n }\n if (groupMeta.knockoutBackdropEntry) {\n this.canvasFactory.destroy(groupMeta.knockoutBackdropEntry);\n groupMeta.knockoutBackdropEntry = null;\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas, canvasName) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n if (canvasName) {\n const canvases = this.annotationCanvasMap.getOrInsertComputed(id, makeArr);\n canvas.setAttribute(\"data-canvas-name\", canvasName);\n const index = canvases.findIndex(c => c.getAttribute(\"data-canvas-name\") === canvasName);\n if (index === -1) {\n canvases.push(canvas);\n } else {\n canvases[index] = canvas;\n }\n } else {\n this.annotationCanvasMap.set(id, canvas);\n }\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.baseTransformStack.push(this.baseTransform);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.baseTransform = this.baseTransformStack.pop();\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\n this.compose();\n this.#endKnockoutElement(started);\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.canvasFactory.create(width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.canvasFactory.destroy(maskCanvas);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n this.#endKnockoutElement(started);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return {\n img: imgData.bitmap,\n canvasEntry: null\n };\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.canvasFactory.create(width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return {\n img: tmpCanvas.canvas,\n canvasEntry: tmpCanvas\n };\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n let inlineImgCanvas = null;\n if (imgData.bitmap) {\n const result = this.applyTransferMapsToBitmap(imgData);\n imgToPaint = result.img;\n inlineImgCanvas = result.canvasEntry;\n } else {\n const tmpCanvas = this.canvasFactory.create(width, height);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n if (this.dependencyTracker) {\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n this.imagesTracker?.record(ctx, width, height, this.dependencyTracker.clipBox);\n }\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n if (scaled.tmpCanvas) {\n this.canvasFactory.destroy(scaled.tmpCanvas);\n }\n if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\n }\n this.compose();\n this.restore(opIdx);\n this.#endKnockoutElement(started);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n const ctx = this.ctx;\n let imgToPaint;\n let inlineImgCanvas = null;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.canvasFactory.create(w, h);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n this.#endKnockoutElement(started);\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n const started = this.#beginKnockoutElement(this.current.fillAlpha);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n this.#endKnockoutElement(started);\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const SCALE_MATRIX = CanvasGraphics.#SCALE_MATRIX ??= new DOMMatrix();\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/shared/base_pdf_stream.js\n\nclass BasePDFStream {\n #PDFStreamReader = null;\n #PDFStreamRangeReader = null;\n _fullReader = null;\n _rangeReaders = new Set();\n _source = null;\n constructor(source, PDFStreamReader, PDFStreamRangeReader) {\n this._source = source;\n this.#PDFStreamReader = PDFStreamReader;\n this.#PDFStreamRangeReader = PDFStreamRangeReader;\n }\n get _progressiveDataLength() {\n return this._fullReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullReader, \"BasePDFStream.getFullReader can only be called once.\");\n return this._fullReader = new this.#PDFStreamReader(this);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new this.#PDFStreamRangeReader(this, begin, end);\n this._rangeReaders.add(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullReader?.cancel(reason);\n for (const reader of new Set(this._rangeReaders)) {\n reader.cancel(reason);\n }\n }\n}\nclass BasePDFStreamReader {\n onProgress = null;\n _contentLength = 0;\n _filename = null;\n _headersCapability = Promise.withResolvers();\n _isRangeSupported = false;\n _isStreamingSupported = false;\n _loaded = 0;\n _stream = null;\n constructor(stream) {\n this._stream = stream;\n }\n _callOnProgress() {\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\nclass BasePDFStreamRangeReader {\n _stream = null;\n constructor(stream, begin, end) {\n this._stream = stream;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QB])\\?((?:[^?]|\\?(?!=))*)\\?=/gi, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-f]{2})/gi, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction trimHeadersEnd(str) {\n let end = str.length;\n while (end > 0 && str[end - 1] !== \" \" && /\\s/.test(str[end - 1])) {\n end--;\n }\n return str.slice(0, end);\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const rv = {\n contentLength: 0,\n isRangeSupported: false\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return rv;\n }\n rv.contentLength = length;\n if (length <= 2 * rangeChunkSize) {\n return rv;\n }\n if (disableRange || !isHttp) {\n return rv;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return rv;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding === \"identity\") {\n rv.isRangeSupported = true;\n }\n return rv;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url.href}\".`, status, status === 404 || status === 0 && url.protocol === \"file:\");\n}\nfunction ensureResponseOrigin(rangeOrigin, origin) {\n if (rangeOrigin !== origin) {\n throw new Error(`Expected range response-origin \"${rangeOrigin}\" to match \"${origin}\".`);\n }\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\nfunction fetchUrl(url, headers, withCredentials, abortController) {\n return fetch(url, {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n });\n}\nfunction ensureResponseStatus(status, url) {\n if (status !== 200 && status !== 206) {\n throw createResponseError(status, url);\n }\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n throw new Error(`getArrayBuffer - unexpected data: ${val}`);\n}\nclass PDFFetchStream extends BasePDFStream {\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFFetchStreamReader, PDFFetchStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n assert(/https?:/.test(url.protocol), \"PDFFetchStream only supports http(s):// URLs.\");\n this.headers = createHeaders(true, httpHeaders);\n }\n}\nclass PDFFetchStreamReader extends BasePDFStreamReader {\n _abortController = new AbortController();\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url,\n withCredentials\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const headers = new Headers(stream.headers);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n const responseHeaders = response.headers;\n const {\n contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: true,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(this._headersCapability.reject);\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this._callOnProgress();\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader extends BasePDFStreamRangeReader {\n _abortController = new AbortController();\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url,\n withCredentials\n } = stream._source;\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n ensureResponseOrigin(responseOrigin, stream._responseOrigin);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n this._readCapability.resolve();\n }).catch(this._readCapability.reject);\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\nfunction transport_stream_getArrayBuffer(val) {\n return val instanceof Uint8Array && val.byteLength === val.buffer.byteLength ? val.buffer : new Uint8Array(val).buffer;\n}\nfunction endRequests() {\n for (const capability of this._requests) {\n capability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n}\nclass PDFDataTransportStream extends BasePDFStream {\n _progressiveDone = false;\n _queuedChunks = [];\n constructor(source) {\n super(source, PDFDataTransportStreamReader, PDFDataTransportStreamRangeReader);\n const {\n pdfDataRangeTransport\n } = source;\n const {\n initialData,\n progressiveDone\n } = pdfDataRangeTransport;\n if (initialData?.length > 0) {\n const buffer = transport_stream_getArrayBuffer(initialData);\n this._queuedChunks.push(buffer);\n }\n this._progressiveDone = progressiveDone;\n const listener = args => {\n switch (args.type) {\n case \"range\":\n case \"progressiveRead\":\n this.#onReceiveData(args.begin, args.chunk);\n break;\n case \"progressiveDone\":\n this._fullReader?.progressiveDone();\n this._progressiveDone = true;\n break;\n }\n };\n pdfDataRangeTransport.transportReady(listener);\n }\n #onReceiveData(begin, chunk) {\n const buffer = transport_stream_getArrayBuffer(chunk);\n if (begin === undefined) {\n if (this._fullReader) {\n this._fullReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const rangeReader = this._rangeReaders.keys().find(r => r._begin === begin);\n assert(rangeReader, \"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n rangeReader._enqueue(buffer);\n }\n }\n getFullReader() {\n const reader = super.getFullReader();\n this._queuedChunks = null;\n return reader;\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onDone = () => this._rangeReaders.delete(reader);\n this._source.pdfDataRangeTransport.requestDataRange(begin, end);\n }\n return reader;\n }\n cancelAllRequests(reason) {\n super.cancelAllRequests(reason);\n this._source.pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _done = false;\n _queuedChunks = null;\n _requests = [];\n constructor(stream) {\n super(stream);\n const {\n pdfDataRangeTransport,\n disableRange,\n disableStream\n } = stream._source;\n const {\n length,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = stream._queuedChunks || [];\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._done = stream._progressiveDone;\n this._contentLength = length;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n if (isPdfFile(contentDispositionFilename)) {\n this._filename = contentDispositionFilename;\n }\n this._headersCapability.resolve();\n const loaded = this._loaded;\n Promise.resolve().then(() => {\n if (loaded > 0 && this._loaded === loaded) {\n this._callOnProgress();\n }\n });\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n this._callOnProgress();\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n }\n progressiveDone() {\n this._done ||= true;\n if (this._queuedChunks.length === 0) {\n this.#endRequests();\n }\n }\n}\nclass PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onDone = null;\n _begin = -1;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._begin = begin;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n this.#endRequests();\n }\n this._done = true;\n this.onDone?.();\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this.onDone?.();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(val) {\n return typeof val !== \"string\" ? val : stringToBytes(val).buffer;\n}\nclass PDFNetworkStream extends BasePDFStream {\n #pendingRequests = new WeakMap();\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFNetworkStreamReader, PDFNetworkStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n this.url = url;\n this.isHttp = /https?:/.test(url.protocol);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n }\n _request(args) {\n const xhr = new XMLHttpRequest();\n const pendingRequest = {\n validateStatus: null,\n onHeadersReceived: args.onHeadersReceived,\n onDone: args.onDone,\n onError: args.onError,\n onProgress: args.onProgress\n };\n this.#pendingRequests.set(xhr, pendingRequest);\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this._source.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.validateStatus = status => status === PARTIAL_CONTENT_RESPONSE || status === OK_RESPONSE;\n } else {\n pendingRequest.validateStatus = status => status === OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => args.onError(xhr.status);\n xhr.onreadystatechange = this.#onStateChange.bind(this, xhr);\n xhr.onprogress = this.#onProgress.bind(this, xhr);\n xhr.send(null);\n return xhr;\n }\n #onProgress(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n pendingRequest?.onProgress?.(evt);\n }\n #onStateChange(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n if (!pendingRequest) {\n return;\n }\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!this.#pendingRequests.has(xhr)) {\n return;\n }\n this.#pendingRequests.delete(xhr);\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n if (!pendingRequest.validateStatus(xhrStatus)) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr.response);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n if (/bytes \\d+-\\d+\\/\\d+/.test(rangeHeader)) {\n pendingRequest.onDone(chunk);\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone(chunk);\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n _abortRequest(xhr) {\n if (this.#pendingRequests.has(xhr)) {\n this.#pendingRequests.delete(xhr);\n xhr.abort();\n }\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onClosed = () => this._rangeReaders.delete(reader);\n }\n return reader;\n }\n}\nclass PDFNetworkStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _cachedChunks = [];\n _done = false;\n _requests = [];\n _storedError = null;\n constructor(stream) {\n super(stream);\n this._fullRequestXhr = stream._request({\n onHeadersReceived: this.#onHeadersReceived.bind(this),\n onDone: this.#onDone.bind(this),\n onError: this.#onError.bind(this),\n onProgress: this.#onProgress.bind(this)\n });\n }\n #onHeadersReceived() {\n const stream = this._stream;\n const {\n disableRange,\n rangeChunkSize\n } = stream._source;\n const fullRequestXhr = this._fullRequestXhr;\n stream._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? trimHeadersEnd(rawResponseHeaders.trimStart()).split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n stream._abortRequest(fullRequestXhr);\n }\n this._headersCapability.resolve();\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(chunk);\n }\n this._done = true;\n if (this._cachedChunks.length === 0) {\n this.#endRequests();\n }\n }\n #onError(status) {\n this._storedError = createResponseError(status, this._stream.url);\n this._headersCapability.reject(this._storedError);\n for (const capability of this._requests) {\n capability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n #onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n this.#endRequests();\n this._stream._abortRequest(this._fullRequestXhr);\n this._fullRequestXhr = null;\n }\n}\nclass PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onClosed = null;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n _storedError = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._requestXhr = stream._request({\n begin,\n end,\n onHeadersReceived: this.#onHeadersReceived.bind(this),\n onDone: this.#onDone.bind(this),\n onError: this.#onError.bind(this),\n onProgress: null\n });\n }\n #onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._requestXhr?.responseURL);\n try {\n ensureResponseOrigin(responseOrigin, this._stream._responseOrigin);\n } catch (ex) {\n this._storedError = ex;\n this.#onError(0);\n }\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this.#endRequests();\n this.onClosed?.();\n }\n #onError(status) {\n this._storedError ??= createResponseError(status, this._stream.url);\n for (const capability of this._requests) {\n capability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this._stream._abortRequest(this._requestXhr);\n this.onClosed?.();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\nfunction getReadableStream(url, opts = null) {\n const fs = process.getBuiltinModule(\"fs\");\n const {\n Readable\n } = process.getBuiltinModule(\"stream\");\n const readStream = fs.createReadStream(url, opts);\n return Readable.toWeb(readStream);\n}\nclass PDFNodeStream extends BasePDFStream {\n constructor(source) {\n super(source, PDFNodeStreamReader, PDFNodeStreamRangeReader);\n const {\n url\n } = source;\n assert(url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n }\n}\nclass PDFNodeStreamReader extends BasePDFStreamReader {\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const fs = process.getBuiltinModule(\"fs/promises\");\n fs.lstat(url).then(stat => {\n const readableStream = getReadableStream(url);\n this._reader = readableStream.getReader();\n const {\n size\n } = stat;\n this._contentLength = size;\n this._isRangeSupported = !disableRange && size > 2 * rangeChunkSize;\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, url);\n }\n this._headersCapability.reject(error);\n });\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this._callOnProgress();\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\nclass PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url\n } = stream._source;\n try {\n const readableStream = getReadableStream(url, {\n start: begin,\n end: end - 1\n });\n this._reader = readableStream.getReader();\n this._readCapability.resolve();\n } catch (error) {\n this._readCapability.reject(error);\n }\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\n\n;// ./src/display/network_stream.js\n\n\n\n\n\nfunction getNetworkStream(url) {\n return isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n get serializable() {\n return {\n userSet: this.#userSet,\n visible: this.#visible\n };\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n #rawData;\n creator = null;\n name = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY, groupState = null) {\n this.#rawData = data;\n this.renderingIntent = renderingIntent;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (groupState) {\n if (groupState.size !== this.#groups.size) {\n unreachable(\"Incorrect serialized groupState.\");\n }\n for (const [id, group] of groupState) {\n this.#groups.get(id)._setVisible(INTERNAL, group.visible, group.userSet);\n }\n } else {\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n get serializable() {\n const groupState = new Map();\n for (const [id, group] of this.#groups) {\n groupState.set(id, group.serializable);\n }\n return {\n data: this.#rawData,\n renderingIntent: this.renderingIntent,\n groupState\n };\n }\n static fromSerializable({\n data,\n renderingIntent,\n groupState\n }) {\n return new OptionalContentConfig(data, renderingIntent, groupState);\n }\n}\n\n;// ./src/display/pages_mapper.js\n\n\nclass PagesMapper {\n #pageNumberToId = null;\n #prevPageNumbers = null;\n #pagesNumber = 0;\n #clipboard = null;\n #savedData = null;\n get pagesNumber() {\n return this.#pagesNumber;\n }\n set pagesNumber(n) {\n if (this.#pagesNumber === n) {\n return;\n }\n this.#pagesNumber = n;\n this.#pageNumberToId = null;\n this.#prevPageNumbers = null;\n }\n #ensureInit() {\n if (this.#pageNumberToId) {\n return;\n }\n const n = this.#pagesNumber;\n const pageNumberToId = this.#pageNumberToId = new Uint32Array(n);\n for (let i = 0; i < n; i++) {\n pageNumberToId[i] = i + 1;\n }\n this.#prevPageNumbers = new Int32Array(pageNumberToId);\n }\n #buildIdToPageNumber() {\n const idToPageNumber = new Map();\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n const id = pageNumberToId[i];\n const pageNumbers = idToPageNumber.get(id);\n if (pageNumbers) {\n pageNumbers.push(i + 1);\n } else {\n idToPageNumber.set(id, [i + 1]);\n }\n }\n return idToPageNumber;\n }\n movePages(selectedPages, pagesToMove, index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const movedCount = pagesToMove.length;\n const mappedPagesToMove = new Uint32Array(movedCount);\n let removedBeforeTarget = 0;\n for (let i = 0; i < movedCount; i++) {\n const pageIndex = pagesToMove[i] - 1;\n mappedPagesToMove[i] = pageNumberToId[pageIndex];\n if (pageIndex < index) {\n removedBeforeTarget++;\n }\n }\n const pagesNumber = this.#pagesNumber;\n const remainingLen = pagesNumber - movedCount;\n const prevPageNumbers = new Int32Array(pagesNumber);\n const adjustedTarget = MathClamp(index - removedBeforeTarget, 0, remainingLen);\n for (let i = 0, r = 0; i < pagesNumber; i++) {\n if (!selectedPages.has(i + 1)) {\n pageNumberToId[r] = pageNumberToId[i];\n prevPageNumbers[r++] = i + 1;\n }\n }\n pageNumberToId.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);\n pageNumberToId.set(mappedPagesToMove, adjustedTarget);\n prevPageNumbers.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);\n prevPageNumbers.set(pagesToMove, adjustedTarget);\n this.#prevPageNumbers = prevPageNumbers;\n if (pageNumberToId.every((id, i) => id === i + 1)) {\n this.#pageNumberToId = null;\n }\n }\n deletePages(pagesToDelete) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n this.#savedData = {\n pageNumberToId: pageNumberToId.slice(),\n pagesNumber: this.#pagesNumber,\n prevPageNumbers: this.#prevPageNumbers.slice()\n };\n const newN = this.#pagesNumber - pagesToDelete.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n let sourceIndex = 0;\n let destIndex = 0;\n for (const pageNumber of pagesToDelete) {\n const pageIndex = pageNumber - 1;\n if (pageIndex !== sourceIndex) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex, pageIndex), destIndex);\n destIndex += pageIndex - sourceIndex;\n }\n sourceIndex = pageIndex + 1;\n }\n if (sourceIndex < pageNumberToId.length) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex), destIndex);\n }\n this.#updatePrevPageNumbers(prevIdToPageNumber, new Set(pagesToDelete));\n }\n cancelDelete() {\n if (this.#savedData) {\n this.#pageNumberToId = this.#savedData.pageNumberToId;\n this.#pagesNumber = this.#savedData.pagesNumber;\n this.#prevPageNumbers = this.#savedData.prevPageNumbers;\n this.#savedData = null;\n }\n }\n cleanSavedData() {\n this.#savedData = null;\n }\n copyPages(pagesToCopy) {\n this.#ensureInit();\n this.#clipboard = {\n pageNumbers: pagesToCopy,\n pageIds: pagesToCopy.map(n => this.#pageNumberToId[n - 1])\n };\n }\n cancelCopy() {\n this.#clipboard = null;\n }\n pastePages(index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n const {\n pageNumbers: copiedPageNumbers,\n pageIds: copiedPageIds\n } = this.#clipboard;\n const newN = this.#pagesNumber + copiedPageNumbers.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n newPageNumberToId.set(pageNumberToId.subarray(0, index), 0);\n newPageNumberToId.set(copiedPageIds, index);\n newPageNumberToId.set(pageNumberToId.subarray(index), index + copiedPageNumbers.length);\n this.#updatePrevPageNumbers(prevIdToPageNumber, null, index, copiedPageNumbers);\n this.#clipboard = null;\n }\n #updatePrevPageNumbers(prevIdToPageNumber, deletedPageNumbers = null, pasteIndex = -1, copiedPageNumbers = null) {\n const prevPageNumbers = this.#prevPageNumbers;\n const newPageNumberToId = this.#pageNumberToId;\n const pasteEnd = pasteIndex + (copiedPageNumbers?.length ?? 0);\n const idsIndices = new Map();\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (i >= pasteIndex && i < pasteEnd) {\n prevPageNumbers[i] = -copiedPageNumbers[i - pasteIndex];\n continue;\n }\n const id = newPageNumberToId[i];\n const oldPositions = prevIdToPageNumber.get(id);\n let j = idsIndices.get(id) || 0;\n if (deletedPageNumbers && oldPositions) {\n while (j < oldPositions.length && deletedPageNumbers.has(oldPositions[j])) {\n j++;\n }\n }\n prevPageNumbers[i] = oldPositions?.[j];\n idsIndices.set(id, j + 1);\n }\n }\n hasBeenAltered() {\n return this.#pageNumberToId !== null;\n }\n #buildCopyLevels(extractedPageNumbers = null) {\n if (!this.#pageNumberToId) {\n return null;\n }\n const copyLevels = new Int32Array(this.#pagesNumber).fill(-1);\n const counts = new Map();\n if (extractedPageNumbers) {\n for (const pageNumber of extractedPageNumbers) {\n const id = this.getPageId(pageNumber);\n const level = counts.get(id) ?? 0;\n counts.set(id, level + 1);\n copyLevels[pageNumber - 1] = level;\n }\n } else {\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n const id = this.#pageNumberToId[i];\n const level = counts.get(id) ?? 0;\n counts.set(id, level + 1);\n copyLevels[i] = level;\n }\n }\n return copyLevels;\n }\n getPageMappingForSaving(idToPageNumber = null, copyLevels = this.#buildCopyLevels()) {\n idToPageNumber ??= this.#buildIdToPageNumber();\n let nCopy = 0;\n for (const pageNumbers of idToPageNumber.values()) {\n nCopy = Math.max(nCopy, pageNumbers.length);\n }\n const extractParams = new Array(nCopy);\n for (let i = 0; i < nCopy; i++) {\n extractParams[i] = {\n document: null,\n pageIndices: [],\n includePages: []\n };\n }\n for (const [id, pageNumbers] of idToPageNumber) {\n for (let i = 0, ii = pageNumbers.length; i < ii; i++) {\n extractParams[i].includePages.push([id - 1, pageNumbers[i] - 1]);\n }\n }\n for (const {\n includePages,\n pageIndices\n } of extractParams) {\n includePages.sort((a, b) => a[0] - b[0]);\n for (let i = 0, ii = includePages.length; i < ii; i++) {\n pageIndices.push(includePages[i][1]);\n includePages[i] = includePages[i][0];\n }\n }\n return {\n pageInfos: extractParams,\n copyLevels\n };\n }\n extractPages(extractedPageNumbers) {\n extractedPageNumbers = Array.from(extractedPageNumbers).sort((a, b) => a - b);\n const usedIds = new Map();\n for (let i = 0, ii = extractedPageNumbers.length; i < ii; i++) {\n const id = this.getPageId(extractedPageNumbers[i]);\n const usedPageNumbers = usedIds.getOrInsertComputed(id, makeArr);\n usedPageNumbers.push(i + 1);\n }\n return this.getPageMappingForSaving(usedIds, this.#buildCopyLevels(extractedPageNumbers));\n }\n getPrevPageNumber(pageNumber) {\n return this.#prevPageNumbers?.[pageNumber - 1] ?? 0;\n }\n getPageNumber(id) {\n if (!this.#pageNumberToId) {\n return id;\n }\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (pageNumberToId[i] === id) {\n return i + 1;\n }\n }\n return 0;\n }\n getPageId(pageNumber) {\n return this.#pageNumberToId?.[pageNumber - 1] ?? pageNumber;\n }\n getMapping() {\n return this.#pageNumberToId?.subarray(0, this.pagesNumber);\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nconst dataObj = () => ({\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n});\nclass PDFObjects {\n #objs = new Map();\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs.get(objId);\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs.get(objId);\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs.get(objId);\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n this.#objs.delete(objId);\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n if (obj.data !== INITIAL_DATA) {\n throw new Error(`Object already resolved ${objId}.`);\n }\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const {\n data\n } of this.#objs.values()) {\n data?.bitmap?.close();\n }\n this.#objs.clear();\n }\n *[Symbol.iterator]() {\n for (const [objId, {\n data\n }] of this.#objs) {\n if (data !== INITIAL_DATA) {\n yield [objId, data];\n }\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #imagesHandler = null;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n images,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#imagesHandler = images;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n if (this.#imagesHandler) {\n this.#container.append(this.#imagesHandler.render());\n }\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", item.id);\n }\n if (item.tag === \"Artifact\") {\n this.#container.ariaHidden = true;\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.style.cssText = \"position:absolute;top:0;left:0;width:0;height:0;display:none;\" + \"letter-spacing:normal;word-spacing:normal\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const BinaryDataFactory = src.BinaryDataFactory || (isNodeJS ? NodeBinaryDataFactory : DOMBinaryDataFactory);\n const enableHWA = src.enableHWA === true;\n const enableWebGPU = src.enableWebGPU === true;\n const gpuPromise = enableWebGPU ? initGPU() : Promise.resolve(false);\n const useWasm = src.useWasm !== false;\n const pagesMapper = src.pagesMapper || new PagesMapper();\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(BinaryDataFactory === DOMBinaryDataFactory && cMapUrl && cMapPacked && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n binaryDataFactory: useWorkerFetch ? null : new BinaryDataFactory({\n cMapUrl,\n standardFontDataUrl,\n wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"6.3.289\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n cMapPacked,\n iccUrl,\n standardFontDataUrl,\n wasmUrl,\n hasGPU: false\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n enableHWA,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n Promise.all([worker.promise, gpuPromise]).then(function ([, hasGPU]) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n docParams.evaluatorOptions.hasGPU = hasGPU;\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (data) {} else if (rangeTransport) {\n networkStream = new PDFDataTransportStream({\n pdfDataRangeTransport: rangeTransport,\n disableRange,\n disableStream\n });\n } else if (url) {\n const NetworkStream = getNetworkStream(url);\n networkStream = new NetworkStream({\n url,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n } else {\n throw new Error(\"getDocument - expected either `data`, `range`, or `url` parameter.\");\n }\n return workerIdPromise.then(workerId => {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, pagesMapper);\n task._transport = transport;\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject).finally(task._setupCapability.resolve);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _setupCapability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n this._capability.promise.catch(() => {});\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._setupCapability.promise;\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #listener = null;\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n onDataRange(begin, chunk) {\n this.#listener({\n type: \"range\",\n begin,\n chunk\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveRead\",\n chunk\n });\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveDone\"\n });\n });\n }\n transportReady(listener) {\n this.#listener = listener;\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get pagesMapper() {\n return this._transport.pagesMapper;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAttachmentContent(id) {\n return this._transport.getAttachmentContent(id);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n extractPages(pageInfos, copyLevels = null) {\n return this._transport.extractPages(pageInfos, copyLevels);\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n getSignatures() {\n return this._transport.getSignatures();\n }\n getSignatureData(id) {\n return this._transport.getSignatureData(id);\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n #pagesMapper = null;\n constructor(pageIndex, pageInfo, transport, pagesMapper, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n this.#pagesMapper = pagesMapper;\n this.imageCoordinates = null;\n }\n clone(id) {\n const clone = new PDFPageProxy(id, this._pageInfo, this._transport, this.#pagesMapper, this._pdfBug);\n clone.clonedFromIndex = this.clonedFromIndex ?? this._pageIndex;\n this._transport.updatePage(clone);\n return clone;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n set pageNumber(value) {\n this._pageIndex = value - 1;\n this._transport.updatePage(this);\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordImages = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n const intentState = this._intentStates.getOrInsertComputed(cacheKey, makeObj);\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = !!(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !!canvas && !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const shouldRecordImages = !!canvas && !this.imageCoordinates && recordImages;\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n internalRenderTask.stepper?.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (shouldRecordImages && !error) {\n this.imageCoordinates = internalRenderTask.gfx?.imagesTracker.take();\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n let dependencyTracker = null;\n let bboxTracker = null;\n if (shouldRecordOperations || shouldRecordImages) {\n bboxTracker = new CanvasBBoxTracker(canvas, intentState.operatorList.length);\n }\n if (shouldRecordOperations) {\n dependencyTracker = new CanvasDependencyTracker(bboxTracker, recordForDebugger);\n }\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: dependencyTracker ?? bboxTracker,\n imagesTracker: shouldRecordImages ? new CanvasImagesTracker(canvas) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n const intentState = this._intentStates.getOrInsertComputed(intentArgs.cacheKey, makeObj);\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n async getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n for await (const value of readableStream) {\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n }\n return textContent;\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, undefined, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n downloadInfoCapability = Promise.withResolvers();\n #fullReader = null;\n #methodPromises = new Map();\n #networkStream = null;\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, pagesMapper) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.#networkStream = networkStream;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.enableHWA = params.enableHWA;\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.binaryDataFactory = factory.binaryDataFactory;\n this.pagesMapper = pagesMapper;\n this.destroyed = false;\n this.destroyCapability = null;\n this.setupMessageHandler();\n }\n updatePage(page) {\n const {\n _pageIndex\n } = page;\n this.#pageCache.set(_pageIndex, page);\n this.#pagePromises.set(_pageIndex, Promise.resolve(page));\n }\n #cacheSimpleMethod(name, data = null) {\n return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, data));\n }\n #onProgress({\n loaded,\n total\n }) {\n this.loadingTask.onProgress?.({\n loaded,\n total,\n percent: total ? MathClamp(Math.round(loaded / total * 100), 0, 100) : NaN\n });\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (Object.hasOwn(this, \"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this.#networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this.#networkStream, \"GetReader - no `BasePDFStream` instance available.\");\n this.#fullReader = this.#networkStream.getFullReader();\n this.#fullReader.onProgress = evt => this.#onProgress(evt);\n sink.onPull = () => {\n this.#fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this.#fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this.#fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this.#fullReader;\n if (isStreamingSupported && isRangeSupported) {\n this.#fullReader.onProgress = null;\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this.#networkStream, \"GetRangeReader - no `BasePDFStream` instance available.\");\n const rangeReader = this.#networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this.pagesMapper.pagesNumber = pdfInfo.numPages;\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n this.#onProgress({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.charProcOperatorList, exportedData.extra);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n const copy = structuredClone(data);\n this.commonObjs.resolve(id, copy);\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n this.#onProgress(data);\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.binaryDataFactory) {\n throw new Error(\"`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.binaryDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this.#fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n extractPages(pageInfos, copyLevels = null) {\n const params = {\n pageInfos\n };\n let transfer;\n const ImageBitmapCtor = globalThis.ImageBitmap;\n if (typeof ImageBitmapCtor === \"function\") {\n const infos = Array.isArray(pageInfos) ? pageInfos : [pageInfos];\n for (const pageInfo of infos) {\n if (pageInfo?.image instanceof ImageBitmapCtor) {\n (transfer ||= []).push(pageInfo.image);\n }\n }\n }\n if (this.annotationStorage.size > 0) {\n const serialized = this.annotationStorage.serializable;\n let {\n map\n } = serialized;\n if (serialized.transfer?.length) {\n if (transfer) {\n transfer.push(...serialized.transfer);\n } else {\n transfer = serialized.transfer;\n }\n }\n const mapping = this.pagesMapper.getMapping();\n if (mapping) {\n const remapped = new Map();\n for (const [k, v] of map) {\n if (v?.pageIndex !== undefined && v.pageIndex >= 0 && v.pageIndex < mapping.length) {\n const copyLevel = copyLevels?.[v.pageIndex] ?? 0;\n const sourceIdx = mapping[v.pageIndex] - 1;\n if (sourceIdx !== v.pageIndex || copyLevel !== 0) {\n remapped.set(k, {\n ...v,\n pageIndex: sourceIdx,\n copyLevel\n });\n continue;\n }\n }\n remapped.set(k, v);\n }\n map = remapped;\n }\n params.annotationStorage = map;\n }\n return this.messageHandler.sendWithPromise(\"ExtractPages\", params, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.pagesMapper.pagesNumber) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1;\n const newPageIndex = this.pagesMapper.getPageId(pageNumber) - 1;\n const cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: newPageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, newPageIndex);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this.pagesMapper, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n async getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n throw new Error(\"Invalid pageIndex request.\");\n }\n const index = await this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n const pageNumber = this.pagesMapper.getPageNumber(index + 1);\n if (pageNumber === 0) {\n throw new Error(\"GetPageIndex: page has been removed.\");\n }\n return pageNumber - 1;\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n getSignatures() {\n return this.#cacheSimpleMethod(\"GetSignatures\");\n }\n getSignatureData(id) {\n return this.messageHandler.sendWithPromise(\"GetSignatureData\", id);\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAttachmentContent(id) {\n return this.messageHandler.sendWithPromise(\"GetAttachmentContent\", id);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\";\n return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this.#fullReader?.filename ?? null,\n contentLength: this.#fullReader?.contentLength ?? null,\n hasStructTree: results[2]\n })));\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n const pageIndex = this.#pageRefCache.get(refStr);\n if (pageIndex >= 0) {\n const pageNumber = this.pagesMapper.getPageNumber(pageIndex + 1);\n if (pageNumber !== 0) {\n return pageNumber;\n }\n }\n return null;\n }\n}\nclass RenderTask {\n _internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this._internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this._internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this._internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n get imageCoordinates() {\n return this._internalRenderTask.imageCoordinates || null;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._imagesTracker = params.imagesTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker,\n imagesTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker, imagesTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"6.3.289\";\nconst build = \"1c8020a7d\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\"Space\"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.update(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n update(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #hasAlpha = false;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n colorAndOpacityType,\n opacityType,\n color,\n opacity\n } = this.#editor;\n const hasAlpha = this.#hasAlpha = FeatureTest.isAlphaColorInputSupported && opacityType !== undefined;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n if (hasAlpha) {\n input.setAttribute(\"alpha\", \"\");\n const alphaHex = Util.hexNums[Math.round((opacity ?? 1) * 255)];\n input.value = (color || \"#000000\") + alphaHex;\n } else {\n input.value = color || \"#000000\";\n }\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n if (hasAlpha) {\n const rgba = getRGBA(input.value);\n if (!rgba) {\n return;\n }\n const [r, g, b, op] = rgba;\n const hex = Util.makeHexColor(r, g, b);\n if (colorAndOpacityType !== undefined) {\n this.#uiManager.updateParams(colorAndOpacityType, {\n color: hex,\n opacity: op\n });\n } else {\n this.#uiManager.updateParams(colorType, hex);\n this.#uiManager.updateParams(opacityType, op);\n }\n } else {\n this.#uiManager.updateParams(colorType, input.value);\n }\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n if (this.#hasAlpha) {\n const alphaHex = Util.hexNums[Math.round(this.#editor.opacity * 255)];\n this.#input.value = value + alphaHex;\n } else {\n this.#input.value = value;\n }\n }\n updateOpacity(value) {\n if (!this.#input || !this.#hasAlpha) {\n return;\n }\n const alphaHex = Util.hexNums[Math.round(value * 255)];\n this.#input.value = this.#editor.color + alphaHex;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\n\nfunction makeColorComp(n) {\n return Math.floor(MathClamp(n, 0, 1) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return MathClamp(x, 0, 1) * 255;\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n case AnnotationType.RICHMEDIA:\n case AnnotationType.SCREEN:\n case AnnotationType.SOUND:\n return new MediaAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n page: this.parent.page,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement) && !(this instanceof MediaAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(...borderColor);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(Math.fround);\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects.get(name) || [];\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n updateOC(optionalContentConfig) {\n if (!this.data.oc || !optionalContentConfig) {\n return;\n }\n const isVisible = optionalContentConfig.isVisible(this.data.oc);\n if (isVisible) {\n this.show();\n } else {\n this.hide();\n }\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(...color);\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachmentId, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.has(\"Action\") || data.actions.has(\"Mouse Up\") || data.actions.has(\"Mouse Down\")) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachmentId, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n const openAttachment = async () => {\n const content = await this.linkService.getAttachmentContent(attachmentId);\n if (content) {\n this.downloadManager?.openOrDownloadData(content, attachment.filename, dest);\n }\n };\n link.onclick = () => {\n openAttachment();\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, {\n actions,\n id,\n overlaidText\n }) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of actions.keys()) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name\n }\n });\n return false;\n };\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick ||= () => false;\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects.get(fieldName) || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of this._fieldObjects.values()) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of this._fieldObjects.values()) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n const {\n actions\n } = this.data;\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || actions?.has(eventName)) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !actions?.has(\"Blur\")) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !actions?.has(\"Focus\")) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / ((/* inlined export .LINE_FACTOR */1.35) * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / (/* inlined export .LINE_FACTOR */1.35)));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / (/* inlined export .LINE_FACTOR */1.35)));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(...fontColor);\n if (this.data.textAlignment !== null && !this.data.comb) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n this.container.classList.add(\"hasOwnCanvas\");\n if (storage.has(id)) {\n this.container.classList.add(\"sandboxModified\");\n }\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.has(\"Focus\")) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.container.classList.add(\"sandboxModified\");\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.has(\"Blur\")) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.has(\"Keystroke\")) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const wordCharPattern = /\\w/;\n while (selStart > 0 && !wordCharPattern.test(value[selStart - 1])) {\n selStart--;\n }\n while (selStart > 0 && wordCharPattern.test(value[selStart - 1])) {\n selStart--;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^\\W*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.setProperty(\"--comb-width\", `calc(${combWidth}px * var(--total-scale-factor))`);\n const alignment = this.data.textAlignment;\n if (alignment === 1 || alignment === 2) {\n const setCombOffset = () => {\n const free = maxLen - element.value.length;\n element.style.setProperty(\"--comb-offset\", `${alignment === 1 ? free >> 1 : free}`);\n };\n setCombOffset();\n for (const evt of [\"input\", \"blur\", \"resetform\", \"updatefromsandbox\"]) {\n element.addEventListener(evt, setCombOffset);\n }\n }\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.buttonValue !== null && data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n const fixDisplayValue = (option, value) => {\n const newValue = value.replaceAll(\" \", \"\\u00A0\");\n option.textContent = newValue;\n if (newValue !== value) {\n option.setAttribute(\"display-value\", value);\n }\n };\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, option.displayValue);\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.getAttribute(\"display-value\") || option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, displayValue);\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, displayValue);\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parseInt(parentContainer.style.zIndex, 10) + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex, 10) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex, 10) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return !this.#commentManager && this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (const inkList of inkLists) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkList.join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n fileId,\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.fileId = fileId;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n attachmentId: this.fileId,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n async #download() {\n const {\n fileId,\n filename,\n content: fallbackContent\n } = this;\n const content = (await this.linkService.getAttachmentContent(fileId)) || fallbackContent;\n if (content) {\n this.downloadManager?.openOrDownloadData(content, filename);\n }\n }\n}\nclass MediaAnnotationElement extends AnnotationElement {\n #abortController = new AbortController();\n #contentUrl = null;\n #media = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.richMedia\n });\n }\n render() {\n this.container.classList.add(\"mediaAnnotation\");\n const {\n filename\n } = this.data.richMedia;\n const button = document.createElement(\"button\");\n button.className = \"mediaPlayButton\";\n button.type = \"button\";\n button.title = button.ariaLabel = filename;\n button.addEventListener(\"click\", () => this.#load(button), {\n signal: this.#abortController.signal\n });\n this.container.append(button);\n return this.container;\n }\n async #load(button) {\n const {\n fileId,\n filename,\n contentType\n } = this.data.richMedia;\n button.disabled = true;\n let content;\n try {\n content = await this.linkService.getAttachmentContent(fileId);\n } catch {\n return;\n } finally {\n button.disabled = false;\n }\n if (!content || !button.isConnected) {\n return;\n }\n const {\n signal\n } = this.#abortController;\n const url = URL.createObjectURL(new Blob([content], {\n type: contentType\n }));\n this.#contentUrl = url;\n const isAudio = contentType.startsWith(\"audio/\");\n const media = document.createElement(isAudio ? \"audio\" : \"video\");\n this.#media = media;\n media.className = \"mediaContent\";\n this._setBackgroundColor(media);\n media.src = url;\n media.title = filename;\n media.controls = true;\n media.autoplay = true;\n media.tabIndex = 0;\n if (isAudio) {\n let hovered = false;\n let focused = false;\n const updateControls = () => {\n media.controls = hovered || focused;\n };\n this.container.addEventListener(\"pointerenter\", () => {\n hovered = true;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"pointerleave\", () => {\n hovered = false;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"focusin\", () => {\n focused = true;\n updateControls();\n }, {\n signal\n });\n this.container.addEventListener(\"focusout\", () => {\n focused = false;\n updateControls();\n }, {\n signal\n });\n }\n media.addEventListener(\"emptied\", () => this.#revokeContentUrl(url), {\n once: true,\n signal\n });\n button.replaceWith(media);\n media.play().catch(() => {});\n }\n #revokeContentUrl(url = this.#contentUrl) {\n if (url && url === this.#contentUrl) {\n URL.revokeObjectURL(url);\n this.#contentUrl = null;\n }\n }\n destroy() {\n this.#abortController.abort();\n if (this.#media) {\n this.#media.pause();\n this.#media.removeAttribute(\"src\");\n this.#media.load();\n this.#media = null;\n }\n this.#revokeContentUrl();\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n zIndex = 0;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations,\n optionalContentConfig\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n popupToElements.getOrInsertComputed(data.popupRef, makeArr).push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n element.updateOC(optionalContentConfig);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n hidden,\n id,\n oc\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const enableLinkOwnership = contentElement.localName === \"a\" && !hidden && !oc;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId, {\n enableLinkOwnership\n }).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n const annotationIds = await this.#structTreeLayer?.getAnnotationIds();\n for (const {\n contentElement\n } of this.#elements) {\n if (annotationIds?.has(contentElement.id)) {\n continue;\n }\n this.#accessibilityManager.addPointerInTextLayer(contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport,\n optionalContentConfig\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n for (const element of this.#elements) {\n element.updateOC(optionalContentConfig);\n }\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n destroy() {\n for (const element of this.#elements) {\n element.destroy?.();\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n this.#elements.length = 0;\n this.#editableAnnotations.clear();\n this.div.replaceChildren();\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n if (Array.isArray(canvas)) {\n for (const cvs of canvas) {\n cvs.className = \"annotationContent\";\n cvs.ariaHidden = true;\n }\n } else {\n canvas.className = \"annotationContent\";\n canvas.ariaHidden = true;\n }\n const toRemove = [];\n for (const child of element.children) {\n if (child.nodeName === \"CANVAS\") {\n toRemove.push(child);\n }\n }\n for (const child of toRemove) {\n child.remove();\n }\n const firstCanvas = Array.isArray(canvas) ? canvas[0] : canvas;\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(firstCanvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(firstCanvas);\n } else {\n firstChild.after(firstCanvas);\n }\n if (Array.isArray(canvas)) {\n let lastCanvas = firstCanvas;\n for (let i = 1, ii = canvas.length; i < ii; i++) {\n lastCanvas.after(canvas[i]);\n lastCanvas = canvas[i];\n }\n }\n this.#annotationCanvasMap.delete(id);\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n }\n refreshCanvases() {\n this.#setAnnotationCanvasMap();\n }\n getEditableAnnotations() {\n return this.#editableAnnotations.values();\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\"], proto.commitOrRemove], [[\"Escape\"], proto.commitOrRemove], [[\"ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.freetext);\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent?.length) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #internalDiv = null;\n #mustBeCommitted;\n _clipPathId = null;\n _colorPicker = null;\n _drawId = null;\n _drawOutlines = null;\n _focusDrawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentClipPathId = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n onUpdatedOpacity() {\n this._colorPicker?.updateOpacity?.(this.opacity);\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions,\n clipPathId\n }) {\n this._drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert[this.editorType]);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this._clipPathId = clipPathId ?? null;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n this.#createFocusOutline(this.parent);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, this.constructor._hasClipPath);\n if (this.constructor._hasClipPath) {\n this._clipPathId = clipPathId;\n }\n this.#createFocusOutline(parent);\n return id;\n }\n #createFocusOutline(parent) {\n const properties = this._drawOutlines.getFocusSVGProperties(this.#rotationAngle);\n if (properties) {\n this._focusDrawId = parent.drawLayer.drawOutline(properties, this._drawOutlines.focusMustRemoveSelfIntersections);\n }\n }\n #updateFocusOutline(angle = this.#rotationAngle) {\n if (this._focusDrawId === null) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this._focusDrawId, this._drawOutlines.getFocusSVGProperties(angle));\n }\n #toggleFocusOutlineClass(rootClass) {\n if (this._focusDrawId !== null) {\n this.parent?.drawLayer.updateProperties(this._focusDrawId, {\n rootClass\n });\n }\n }\n #updateVisibility() {\n const {\n parent,\n _drawId,\n _focusDrawId,\n _isVisible\n } = this;\n if (!parent || _drawId === null) {\n return;\n }\n const rootClass = {\n hidden: !_isVisible\n };\n parent.drawLayer.updateProperties(_drawId, {\n rootClass\n });\n if (_focusDrawId !== null) {\n parent.drawLayer.updateProperties(_focusDrawId, {\n rootClass\n });\n }\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get _hasClipPath() {\n return false;\n }\n static get _hasDrawClass() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n get _drawRotation() {\n return this.rotation;\n }\n get _opacityName() {\n return this.constructor.typesMap.get(this.opacityType);\n }\n get #rotationAngle() {\n return (this.parentRotation - this._drawRotation + 360) % 360;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this._drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n } else if (type === this.opacityType) {\n this.onUpdatedOpacity();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _updateColorAndOpacity(color, opacity, type = this.colorAndOpacityType) {\n const colorName = this.constructor.typesMap.get(this.colorType);\n const opacityName = this._opacityName;\n const options = this._drawingOptions;\n const savedColor = options[colorName];\n const savedOpacity = options[opacityName];\n const setter = (c, op) => {\n options.updateProperty(colorName, c);\n options.updateProperty(opacityName, op);\n this._drawOutlines.updateProperty(colorName, c);\n this._drawOutlines.updateProperty(opacityName, op);\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n this.onUpdatedColor();\n this.onUpdatedOpacity();\n };\n this.addCommands({\n cmd: setter.bind(this, color, opacity),\n undo: setter.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n this.#updateFocusOutline();\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n get _mustBeDisabledOnCommit() {\n return true;\n }\n commit() {\n super.commit();\n if (this._mustBeDisabledOnCommit) {\n this.disableEditMode();\n this.disableEditing();\n }\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this._drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.#updateVisibility();\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n const {\n drawLayer\n } = this.parent;\n drawLayer.remove(this._drawId);\n this._drawId = null;\n if (this._focusDrawId !== null) {\n drawLayer.remove(this._focusDrawId);\n this._focusDrawId = null;\n }\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n const {\n drawLayer\n } = this.parent;\n drawLayer.updateParent(this._drawId, parent.drawLayer);\n if (this._focusDrawId !== null) {\n drawLayer.updateParent(this._focusDrawId, parent.drawLayer);\n }\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this._drawOutlines, parent);\n if (this._clipPathId && this.#internalDiv) {\n this.#internalDiv.style.clipPath = this._clipPathId;\n }\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n _drawRotation: rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n _drawRotation: rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox(parentRotation = this.parentRotation) {\n const {\n x,\n y,\n width,\n height,\n _drawRotation: rotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate(parentRotation = this.parentRotation) {\n if (!this.parent || this._drawId === null) {\n return;\n }\n const angle = (parentRotation - this._drawRotation + 360) % 360;\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox(parentRotation)\n }, this._drawOutlines.updateRotation(angle)));\n this.#updateFocusOutline(angle);\n }\n show(visible = this._isVisible) {\n super.show(visible);\n this.#updateVisibility();\n }\n select() {\n super.select();\n this.#toggleFocusOutlineClass({\n hovered: false,\n selected: true\n });\n }\n unselect() {\n super.unselect();\n this.#toggleFocusOutlineClass({\n selected: false\n });\n }\n pointerover() {\n if (!this.isSelected) {\n this.#toggleFocusOutlineClass({\n hovered: true\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.#toggleFocusOutlineClass({\n hovered: false\n });\n }\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n const bbox = this._drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n if (this.constructor._hasDrawClass) {\n div.classList.add(\"draw\");\n }\n const drawDiv = this.#internalDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n if (this._clipPathId) {\n drawDiv.style.clipPath = this._clipPathId;\n }\n bindEvents(this, drawDiv, [\"pointerover\", \"pointerleave\"]);\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_params) {\n unreachable(\"Not implemented\");\n }\n static _getDrawingTarget(_parent, {\n target\n }) {\n return target;\n }\n static _getPointerCoords({\n offsetX,\n offsetY,\n clientX,\n clientY\n }, referenceEvent = null) {\n if (!referenceEvent) {\n return [offsetX, offsetY];\n }\n let deltaX = clientX - referenceEvent.clientX;\n let deltaY = clientY - referenceEvent.clientY;\n switch (this._currentParent.viewport.rotation) {\n case 90:\n [deltaX, deltaY] = [deltaY, -deltaX];\n break;\n case 180:\n [deltaX, deltaY] = [-deltaX, -deltaY];\n break;\n case 270:\n [deltaX, deltaY] = [-deltaY, deltaX];\n break;\n }\n return [referenceEvent.offsetX + deltaX, referenceEvent.offsetY + deltaY];\n }\n static _addDrawingListeners(_target, _signal) {}\n static _endDrawingSession(isAborted = false) {\n return this._currentParent.endDrawingSession(isAborted);\n }\n static startDrawing(parent, uiManager, isLTR, event) {\n const {\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const target = this._getDrawingTarget(parent, event);\n const [x, y] = this._getPointerCoords(event);\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n x: boxX,\n y: boxY,\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n this._addDrawingListeners(target, signal);\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance({\n x,\n y,\n box: [boxX, boxY, parentWidth, parentHeight],\n rotation,\n parent,\n isLTR\n });\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, this._hasClipPath);\n this._currentDrawId = id;\n DrawingEditor.#currentClipPathId = this._hasClipPath ? clipPathId : null;\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n if (!CurrentPointers.isSamePointerId(event.pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n let properties;\n const coalesced = event.getCoalescedEvents?.();\n if (coalesced?.length) {\n const points = [];\n for (const sample of coalesced) {\n points.push(...this._getPointerCoords(sample, event));\n }\n properties = DrawingEditor.#currentDraw.addPoints(points);\n } else {\n properties = DrawingEditor.#currentDraw.add(...this._getPointerCoords(event));\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, properties);\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentClipPathId = null;\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n parent.drawLayer.updateProperties(this._currentDrawId, event?.target === parent.div ? DrawingEditor.#currentDraw.end(...this._getPointerCoords(event)) : DrawingEditor.#currentDraw.end());\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n clipPathId: DrawingEditor.#currentClipPathId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerMargin, _data, _uiManager) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data, uiManager);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this._drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n focusOutline = null;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n get defaultSVGProperties() {\n unreachable(\"Abstract getter `defaultSVGProperties` must be implemented.\");\n }\n get defaultProperties() {\n return this.defaultSVGProperties;\n }\n getFocusSVGProperties(_rotation) {\n return null;\n }\n get focusMustRemoveSelfIntersections() {\n return false;\n }\n updateProperty(_name, _value) {\n return null;\n }\n updateParentDimensions(_dimensions, _scale) {\n return null;\n }\n serializeQuadPoints(_pageTranslation, _pageDimensions) {\n return null;\n }\n updateRotation(_rotation) {\n return {};\n }\n getPathResizingSVGProperties(_bbox) {\n return {};\n }\n getPathResizedSVGProperties(_bbox) {\n return {};\n }\n getPathTranslatedSVGProperties(_bbox, _parentDimensions) {\n return {};\n }\n static _rotateBox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n removeLastElement() {\n this.#last.fill(NaN);\n this.#top.length = this.#bottom.length = this.#points.length = 0;\n return {\n path: {\n d: \"\"\n }\n };\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add(x, y) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox.set(BBOX_INIT, 0);\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(...bezierBbox, minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n updateThickness(thickness) {\n const outline = this.getNewOutline(thickness);\n this.#outline = outline.#outline;\n this.#points = outline.#points;\n this.#bbox.set(outline.#bbox);\n this.firstPoint = outline.firstPoint;\n this.lastPoint = outline.lastPoint;\n return this.#bbox;\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const points = this.#points;\n const outliner = this.newOutliner(points[0] * sx + tx, points[1] * sy + ty, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2, ii = points.length; i < ii; i += 2) {\n outliner.add(points[i] * sx + tx, points[i + 1] * sy + ty);\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nfunction getHighlightSVGProperties(outline) {\n return {\n bbox: outline.box,\n root: {\n viewBox: \"0 0 1 1\"\n },\n rootClass: {\n highlight: true,\n free: outline.isFree\n },\n path: {\n d: outline.toSVGPath()\n }\n };\n}\nfunction getHighlightFocusSVGProperties(outline, rotation) {\n const {\n focusOutline\n } = outline;\n return {\n bbox: Outline._rotateBox(focusOutline.box, rotation),\n root: {\n \"data-main-rotation\": rotation\n },\n rootClass: {\n highlightOutline: true,\n free: outline.isFree\n },\n path: {\n d: focusOutline.toSVGPath()\n }\n };\n}\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = BBOX_INIT.slice();\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #boxes = null;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n static build(boxes, isLTR) {\n const outline = new HighlightOutliner(boxes, 0.001).getOutlines();\n outline.#boxes = boxes;\n outline.focusOutline = new HighlightOutliner(boxes, 0.0025, 0.001, isLTR).getOutlines();\n return outline;\n }\n get isFree() {\n return false;\n }\n get defaultSVGProperties() {\n return getHighlightSVGProperties(this);\n }\n getFocusSVGProperties(rotation) {\n return getHighlightFocusSVGProperties(this, rotation);\n }\n updateRotation(rotation) {\n return {\n root: {\n \"data-main-rotation\": rotation\n }\n };\n }\n serializeQuadPoints([pageX, pageY], [pageWidth, pageHeight]) {\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightDrawer {\n #outliner;\n #thickness;\n constructor(x, y, box, scaleFactor, thickness, isLTR, innerMargin) {\n this.#outliner = new FreeHighlightOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n this.#thickness = thickness;\n }\n add(x, y) {\n return this.#outliner.add(x, y) ? {\n path: {\n d: this.#outliner.toSVGPath()\n }\n } : null;\n }\n addPoints(points) {\n let hasChanged = false;\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n hasChanged = this.#outliner.add(points[i], points[i + 1]) || hasChanged;\n }\n return hasChanged ? {\n path: {\n d: this.#outliner.toSVGPath()\n }\n } : null;\n }\n end(x, y) {\n return x === undefined ? null : this.add(x, y);\n }\n isEmpty() {\n return this.#outliner.isEmpty();\n }\n isCancellable() {\n return this.#outliner.isCancellable();\n }\n removeLastElement() {\n return this.#outliner.removeLastElement();\n }\n updateProperty(_name, _value) {\n return null;\n }\n getOutlines() {\n const outlines = this.#outliner.getOutlines();\n outlines.buildFocusOutline(2 * this.#thickness);\n return outlines;\n }\n get defaultSVGProperties() {\n return {\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\"\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this.#outliner.toSVGPath()\n }\n };\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n static #EXTRA_THICKNESS = 1.5;\n newOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(x, y, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n get isFree() {\n return true;\n }\n buildFocusOutline(thickness) {\n this.focusOutline = this.getNewOutline(thickness / 2 + FreeHighlightOutline.#EXTRA_THICKNESS, 0.0025);\n }\n get defaultSVGProperties() {\n return getHighlightSVGProperties(this);\n }\n getFocusSVGProperties(rotation) {\n return getHighlightFocusSVGProperties(this, rotation);\n }\n get focusMustRemoveSelfIntersections() {\n return true;\n }\n updateRotation(rotation) {\n return {\n root: {\n \"data-main-rotation\": rotation\n }\n };\n }\n updateProperty(name, value) {\n if (name !== \"thickness\") {\n return null;\n }\n const bbox = this.updateThickness(value / 2);\n this.buildFocusOutline(value);\n return bbox;\n }\n getPathResizedSVGProperties() {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\nclass HighlightDrawingOptions extends DrawingOptions {\n constructor(properties = null) {\n super();\n super.updateProperties(properties);\n }\n updateSVGProperty(name, value) {\n if (name !== \"thickness\") {\n super.updateSVGProperty(name, value);\n }\n }\n clone() {\n const clone = new HighlightDrawingOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass HighlightEditor extends DrawingEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #focusNode = null;\n #focusOffset = 0;\n #methodOfCreation = \"\";\n #text = \"\";\n static _DEFAULT_OPACITY = 1;\n static _DEFAULT_THICKNESS = 12;\n static _defaultDrawingOptions = null;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.#anchorNode = params.anchorNode || null;\n this.#anchorOffset = params.anchorOffset || 0;\n this.#focusNode = params.focusNode || null;\n this.#focusOffset = params.focusOffset || 0;\n this.#methodOfCreation = params.methodOfCreation || (this._drawOutlines?.isFree ? \"main_toolbar\" : \"\");\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n this.rotate();\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions ||= new HighlightDrawingOptions({\n fill: uiManager.highlightColors?.values().next().value || \"#fff066\",\n \"fill-opacity\": HighlightEditor._DEFAULT_OPACITY,\n thickness: HighlightEditor._DEFAULT_THICKNESS\n });\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.HIGHLIGHT_COLOR, \"fill\"], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, \"thickness\"]]));\n }\n static get isDrawer() {\n return false;\n }\n static get _hasClipPath() {\n return true;\n }\n static get _hasDrawClass() {\n return false;\n }\n _addOutlines(params) {\n const {\n boxes,\n drawOutlines\n } = params;\n if (!boxes && !drawOutlines) {\n return;\n }\n this._drawingOptions ||= params.drawingOptions || HighlightEditor.getDefaultDrawingOptions();\n if (boxes) {\n params = {\n ...params,\n drawOutlines: HighlightOutline.build(boxes, this._uiManager.direction === \"ltr\")\n };\n }\n super._addOutlines(params);\n }\n get colorType() {\n return AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n }\n get color() {\n return this._drawingOptions.fill;\n }\n get opacity() {\n return this._drawingOptions[\"fill-opacity\"];\n }\n get _opacityName() {\n return \"fill-opacity\";\n }\n get _drawRotation() {\n return this._drawOutlines?.isFree ? this.rotation : 0;\n }\n get isResizable() {\n return false;\n }\n get _mustBeDisabledOnCommit() {\n return false;\n }\n get _mustFixPosition() {\n return !this._drawOutlines?.isFree;\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this._drawOutlines.isFree ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this._drawingOptions.thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#relativeToBox(this._drawOutlines.focusOutline.lastPoint);\n }\n get commentButtonPosition() {\n return this.#relativeToBox(this._drawOutlines.firstPoint);\n }\n #relativeToBox([pointX, pointY]) {\n const [x, y, width, height] = this._drawOutlines.box;\n return [(pointX - x) / width, (pointY - y) / height];\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this._updateColorAndOpacity(value, HighlightEditor._DEFAULT_OPACITY, type);\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(value)\n }, true);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n super.updateParams(type, value);\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness: value\n }, true);\n break;\n }\n }\n get propertiesToUpdate() {\n const properties = super.propertiesToUpdate;\n properties.push([AnnotationEditorParamsType.HIGHLIGHT_FREE, this._drawOutlines.isFree]);\n return properties;\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n this._colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", this._colorPicker]];\n }\n return super.toolbarButtons;\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this._drawRotation);\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this._drawRotation);\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this._drawOutlines.isFree) {\n div.classList.add(\"free\");\n } else {\n div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n this.enableEditing();\n return div;\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n unselect() {\n super.unselect();\n if (!this._drawOutlines.isFree) {\n this.#setCaret(false);\n }\n }\n static createDrawerInstance({\n x,\n y,\n box,\n parent,\n isLTR\n }) {\n return new FreeHighlightDrawer(x, y, box, parent.scale, this._defaultDrawingOptions.thickness / 2, isLTR, 0.001);\n }\n static _getDrawingTarget(parent, {\n target\n }) {\n return target.closest(\".textLayer\");\n }\n static _getPointerCoords({\n x,\n y\n }) {\n return [x, y];\n }\n static _addDrawingListeners(target, signal) {\n target.classList.add(\"free\");\n signal.addEventListener(\"abort\", () => target.classList.remove(\"free\"), {\n once: true\n });\n window.addEventListener(\"blur\", () => this._endDraw(null), {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n }\n static _endDrawingSession(isAborted = false) {\n return this.endDrawing(isAborted);\n }\n createDrawingOptions({\n color,\n opacity,\n thickness\n }) {\n const {\n _defaultDrawingOptions: defaults,\n _DEFAULT_OPACITY\n } = HighlightEditor;\n this._drawingOptions = HighlightEditor.getDefaultDrawingOptions({\n fill: Util.makeHexColor(...color),\n \"fill-opacity\": opacity || _DEFAULT_OPACITY,\n thickness: thickness || defaults.thickness\n });\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, _innerMargin, data, uiManager) {\n const {\n quadPoints\n } = data;\n if (quadPoints) {\n const boxes = [];\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n return HighlightOutline.build(boxes, uiManager.direction === \"ltr\");\n }\n const thickness = data.thickness || this._defaultDrawingOptions.thickness;\n const points = (data.inkLists || data.outlines.points)[0];\n const outliner = new FreeHighlightOutliner(points[0] - pageX, pageHeight - (points[1] - pageY), [0, 0, pageWidth, pageHeight], 1, thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n outliner.add(points[i] - pageX, pageHeight - (points[i + 1] - pageY));\n }\n const outlines = outliner.getOutlines();\n outlines.buildFocusOutline(thickness);\n return outlines;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color: AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),\n opacity: this.opacity,\n thickness: this._drawingOptions.thickness,\n quadPoints: this._drawOutlines.serializeQuadPoints(this.pageTranslation, this.pageDimensions),\n outlines: this._drawOutlines.serialize(serialized.rect, this._drawRotation)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #tip = new Float64Array(2);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n this.#tip.set([x, y], 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines?.length;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n if (this.#add(x, y)) {\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#toSVGPathWithTip()\n }\n };\n }\n addPoints(points) {\n let needsPathUpdate = false;\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n if (!this.#add(points[i], points[i + 1])) {\n continue;\n }\n needsPathUpdate = true;\n if (this.#points.length <= 6) {\n this.toSVGPath();\n needsPathUpdate = false;\n }\n }\n if (needsPathUpdate) {\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#toSVGPathWithTip()\n }\n };\n }\n #add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n this.#tip.set([x, y], 0);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return false;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return true;\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return true;\n }\n end(x, y) {\n if (x !== undefined && this.#add(x, y)) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#tip.set([x, y], 0);\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n #toSVGPathWithTip() {\n const tipX = Outline.svgRound(this.#tip[0]);\n const tipY = Outline.svgRound(this.#tip[1]);\n if (this.#points.length === 2) {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n return `${this.#lastSVGPath} M ${firstX} ${firstY} L ${tipX} ${tipY}`;\n }\n return `${this.#lastSVGPath} L ${tipX} ${tipY}`;\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = F32_BBOX_INIT.slice();\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n return name === \"stroke-width\" ? this.#updateThickness(value) : null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance({\n x,\n y,\n box: [,, width, height],\n rotation\n }) {\n return new InkDrawOutliner(x, y, width, height, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get colorAndOpacityType() {\n return AnnotationEditorParamsType.INK_COLOR_AND_OPACITY;\n }\n get opacityType() {\n return AnnotationEditorParamsType.INK_OPACITY;\n }\n updateParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n this._updateColorAndOpacity(value.color, value.opacity);\n return;\n }\n super.updateParams(type, value);\n }\n static updateDefaultParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n super.updateDefaultParams(AnnotationEditorParamsType.INK_COLOR, value.color);\n super.updateDefaultParams(AnnotationEditorParamsType.INK_OPACITY, value.opacity);\n return;\n }\n super.updateDefaultParams(type, value);\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const bytes = await new Response(cs.readable).bytes();\n return bytes.toBase64();\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = Uint8Array.fromBase64(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n return this._uiManager.signatureManager ? [[\"editSignature\", this._uiManager.signatureManager]] : super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.stamp);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n maxDataDimension ||= 224;\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n stopEvent(e);\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n for (const editable of annotationLayer.getEditableAnnotations()) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\") || target.classList.contains(\"textLayerImages\") || target.classList.contains(\"textLayerImagePlaceholder\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n HighlightEditor.startDrawing(this, this.#uiManager, this.#uiManager.direction === \"ltr\", event);\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.#uiManager.getId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.#uiManager.getId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.POPUP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n async render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n await this.#uiManager.findClonesForPage(this);\n this.div.hidden = this.isEmpty;\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nfunction compareTextLayers(a, b) {\n if (a === b) {\n return 0;\n }\n return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}\nfunction getTextLayer(node) {\n if (!node) {\n return null;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.closest(\".textLayer\");\n }\n return node.parentElement?.closest(\".textLayer\") || null;\n}\nfunction isPointBefore(nodeA, offsetA, nodeB, offsetB) {\n if (nodeA === nodeB) {\n return offsetA <= offsetB;\n }\n const relation = nodeA.compareDocumentPosition(nodeB);\n if (relation & Node.DOCUMENT_POSITION_FOLLOWING) {\n return true;\n }\n if (relation & Node.DOCUMENT_POSITION_PRECEDING) {\n return false;\n }\n return null;\n}\nfunction normalizeEdgeBoundary(container, offset, textLayer) {\n if (container.nodeType !== Node.ELEMENT_NODE || !container.classList.contains(\"textLayer\") || offset !== container.childNodes.length) {\n return {\n container,\n offset\n };\n }\n let lastNode = container.lastChild;\n if (lastNode?.nodeType === Node.ELEMENT_NODE && lastNode.classList.contains(\"endOfContent\")) {\n lastNode = lastNode.previousSibling;\n }\n if (!lastNode || !textLayer.contains(lastNode)) {\n return null;\n }\n if (lastNode.nodeType === Node.TEXT_NODE) {\n return {\n container: lastNode,\n offset: lastNode.textContent.length\n };\n }\n return {\n container: lastNode,\n offset: lastNode.childNodes.length\n };\n}\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #textLayer = null;\n #filterFactory = null;\n #pageColors = null;\n #textLayerObserver = null;\n #toUpdate = new Map();\n static #id = 0;\n static #selectionId = 0;\n static #selectionChangeAC = null;\n static #selections = new Set();\n static #isSelecting = false;\n static #textLayerSet = new Set();\n static #textLayers = new WeakMap();\n constructor({\n filterFactory = null,\n pageColors = null,\n pageIndex,\n textLayer = null\n }) {\n this.pageIndex = pageIndex;\n this.#filterFactory = filterFactory;\n this.#pageColors = pageColors;\n if (textLayer) {\n const previousData = DrawLayer.#textLayers.get(textLayer);\n if (previousData?.selectionDiv) {\n previousData.selectionDiv.remove();\n DrawLayer.#selections.delete(previousData.selectionDiv);\n }\n DrawLayer.#textLayers.set(textLayer, {\n drawLayer: this\n });\n DrawLayer.#textLayerSet.add(textLayer);\n this.#textLayer = textLayer;\n this.#textLayerObserver = new MutationObserver(records => {\n if (!this.#parent || !this.#textLayer?.isConnected || !DrawLayer.#hasSelection()) {\n return;\n }\n for (const {\n addedNodes\n } of records) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains(\"endOfContent\")) {\n DrawLayer.#selectionChange();\n return;\n }\n }\n }\n });\n this.#textLayerObserver.observe(textLayer, {\n childList: true\n });\n if (DrawLayer.#selectionChangeAC === null) {\n DrawLayer.#selectionChangeAC = new AbortController();\n const {\n signal\n } = DrawLayer.#selectionChangeAC;\n document.addEventListener(\"selectionchange\", DrawLayer.#selectionChange.bind(DrawLayer), {\n signal\n });\n document.addEventListener(\"pointerdown\", () => {\n DrawLayer.#isSelecting = true;\n }, {\n signal\n });\n document.addEventListener(\"pointerup\", () => {\n DrawLayer.#isSelecting = false;\n }, {\n signal\n });\n window.addEventListener(\"blur\", () => {\n DrawLayer.#isSelecting = false;\n }, {\n signal\n });\n }\n }\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n if (this.#textLayer?.isConnected && DrawLayer.#hasSelection()) {\n DrawLayer.#selectionChange();\n }\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static #cleanupTextLayerSelection(textLayer) {\n const textLayerData = this.#textLayers.get(textLayer);\n if (!textLayerData?.selectionDiv) {\n return;\n }\n textLayerData.selectionDiv.remove();\n this.#selections.delete(textLayerData.selectionDiv);\n textLayerData.selectionDiv = null;\n textLayerData.path = null;\n }\n static #hasSelection() {\n const selection = document.getSelection();\n return !!selection && !selection.isCollapsed;\n }\n static #getOrderedTextLayers() {\n return this.#textLayerSet.keys().filter(textLayer => textLayer.isConnected).toArray().sort(compareTextLayers);\n }\n static #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n for (const root of this.#selections) {\n root.remove();\n }\n this.#selections.clear();\n return;\n }\n const rotators = new WeakMap();\n const orderedTextLayers = this.#getOrderedTextLayers();\n const ranges = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n let {\n startContainer,\n startOffset,\n endContainer,\n endOffset\n } = range;\n let startTextLayer = getTextLayer(startContainer);\n let endTextLayer = getTextLayer(endContainer);\n const startMissing = startTextLayer === null;\n const endMissing = endTextLayer === null;\n if (this.#isSelecting && startMissing !== endMissing) {\n return;\n }\n if (selection.rangeCount === 1) {\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const anchorLayer = getTextLayer(anchorNode);\n const focusLayer = getTextLayer(focusNode);\n const anchorBeforeFocus = isPointBefore(anchorNode, anchorOffset, focusNode, focusOffset);\n if (anchorLayer && focusLayer && anchorBeforeFocus !== null) {\n if (anchorBeforeFocus) {\n startContainer = anchorNode;\n startOffset = anchorOffset;\n startTextLayer = anchorLayer;\n endContainer = focusNode;\n endOffset = focusOffset;\n endTextLayer = focusLayer;\n } else {\n startContainer = focusNode;\n startOffset = focusOffset;\n startTextLayer = focusLayer;\n endContainer = anchorNode;\n endOffset = anchorOffset;\n endTextLayer = anchorLayer;\n }\n }\n }\n const activeTextLayers = orderedTextLayers.filter(textLayer => range.intersectsNode(textLayer));\n if (activeTextLayers.length === 0) {\n continue;\n }\n let boundarySubstituted = false;\n if (!startTextLayer) {\n startTextLayer = activeTextLayers[0];\n startContainer = startTextLayer;\n startOffset = 0;\n boundarySubstituted = true;\n }\n if (!endTextLayer) {\n endTextLayer = activeTextLayers.at(-1);\n endContainer = endTextLayer;\n endOffset = endTextLayer.childNodes.length;\n boundarySubstituted = true;\n }\n if (endContainer.nodeType === Node.ELEMENT_NODE) {\n if (endContainer.classList.contains(\"endOfContent\")) {\n const previousNode = endContainer.previousSibling;\n if (!previousNode) {\n continue;\n }\n endContainer = previousNode;\n endOffset = previousNode.nodeType === Node.TEXT_NODE ? previousNode.textContent.length : previousNode.childNodes.length;\n } else if (endContainer.classList.contains(\"textLayer\") && endContainer.childNodes.length === endOffset) {\n const normalizedEnd = normalizeEdgeBoundary(endContainer, endOffset, endTextLayer);\n if (!normalizedEnd) {\n continue;\n }\n endContainer = normalizedEnd.container;\n endOffset = normalizedEnd.offset;\n }\n }\n if (startContainer.nodeType === Node.ELEMENT_NODE) {\n const normalizedStart = normalizeEdgeBoundary(startContainer, startOffset, startTextLayer);\n if (!normalizedStart) {\n continue;\n }\n startContainer = normalizedStart.container;\n startOffset = normalizedStart.offset;\n }\n if (startTextLayer === endTextLayer && !boundarySubstituted && activeTextLayers.includes(startTextLayer)) {\n ranges.push([range, startTextLayer]);\n continue;\n }\n for (const textLayer of activeTextLayers) {\n const firstNode = textLayer.firstChild;\n if (!firstNode) {\n continue;\n }\n const subRange = document.createRange();\n if (textLayer === startTextLayer) {\n subRange.setStart(startContainer, startOffset);\n } else {\n subRange.setStartBefore(firstNode);\n }\n if (textLayer === endTextLayer) {\n subRange.setEnd(endContainer, endOffset);\n } else {\n const lastNode = textLayer.lastChild;\n if (!lastNode) {\n continue;\n }\n if (lastNode.nodeType === Node.ELEMENT_NODE && lastNode.classList.contains(\"endOfContent\")) {\n const lastTextNode = lastNode.previousSibling;\n if (!lastTextNode) {\n continue;\n }\n subRange.setEndAfter(lastTextNode);\n } else {\n subRange.setEndAfter(lastNode);\n }\n }\n if (!subRange.collapsed) {\n ranges.push([subRange, textLayer]);\n }\n }\n }\n const selectedTextLayers = new Set(ranges.map(range => range[1]));\n for (const textLayer of this.#textLayerSet) {\n if (!selectedTextLayers.has(textLayer)) {\n this.#cleanupTextLayerSelection(textLayer);\n }\n }\n for (const [range, textLayer] of ranges) {\n const textLayerData = DrawLayer.#textLayers.get(textLayer);\n if (!textLayerData) {\n continue;\n }\n let rotator = rotators.get(textLayer);\n if (!rotator) {\n const clientRect = textLayer.getBoundingClientRect();\n rotator = (x, y, w, h) => ({\n x: (x - clientRect.x) / clientRect.width,\n y: (y - clientRect.y) / clientRect.height,\n width: w / clientRect.width,\n height: h / clientRect.height\n });\n rotators.set(textLayer, rotator);\n }\n const boxes = [];\n for (let {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n ({\n x,\n y,\n width,\n height\n } = rotator(x, y, width, height));\n if (width === 1 && height === 1) {\n continue;\n }\n boxes.push(`M${x} ${y} h${width} v${height} h-${width} Z`);\n }\n if (boxes.length === 0) {\n continue;\n }\n const drawLayer = textLayerData.drawLayer;\n let div = textLayerData.selectionDiv;\n let path = textLayerData.path;\n if (!div) {\n const clipPathId = `clip_selection_${DrawLayer.#selectionId++}`;\n div = document.createElement(\"div\");\n div.className = \"selection\";\n div.style.clipPath = `url(#${clipPathId})`;\n const selectionStyle = drawLayer.#filterFactory?.createSelectionStyle(drawLayer.#pageColors);\n if (selectionStyle) {\n for (const [name, value] of Object.entries(selectionStyle)) {\n div.style.setProperty(name, value);\n }\n }\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.setAttribute(\"width\", \"100%\");\n svg.setAttribute(\"height\", \"100%\");\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n path = DrawLayer._svgFactory.createElement(\"path\");\n clipPath.append(path);\n svg.append(clipPath);\n div.append(svg);\n textLayerData.path = path;\n textLayerData.selectionDiv = div;\n }\n if (drawLayer.#parent && div.parentNode !== drawLayer.#parent) {\n drawLayer.#parent.append(div);\n this.#selections.add(div);\n }\n path.setAttribute(\"d\", boxes.join(\" \"));\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", \"true\");\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstElementChild;\n const pathElement = defs.firstElementChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n this.#textLayerObserver?.disconnect();\n this.#textLayerObserver = null;\n if (this.#textLayer) {\n const data = DrawLayer.#textLayers.get(this.#textLayer);\n if (data?.drawLayer === this) {\n DrawLayer.#cleanupTextLayerSelection(this.#textLayer);\n DrawLayer.#textLayers.delete(this.#textLayer);\n DrawLayer.#textLayerSet.delete(this.#textLayer);\n if (DrawLayer.#textLayerSet.size === 0) {\n DrawLayer.#selectionChangeAC?.abort();\n DrawLayer.#selectionChangeAC = null;\n DrawLayer.#isSelecting = false;\n }\n }\n this.#textLayer = null;\n }\n }\n}\n\n;// ./src/display/text_layer_images.js\n\nfunction percentage(value) {\n return `${(value * 100).toFixed(2)}%`;\n}\nclass TextLayerImages {\n #coordinates = [];\n #coordinatesByElement = new Map();\n #getPageCanvas = null;\n #minSize = 0;\n #pageWidth = 0;\n #pageHeight = 0;\n static #activeImage = null;\n constructor(minSize, coordinates, viewport, getPageCanvas) {\n this.#minSize = minSize;\n this.#coordinates = coordinates;\n this.#pageWidth = viewport.rawDims.pageWidth;\n this.#pageHeight = viewport.rawDims.pageHeight;\n this.#getPageCanvas = getPageCanvas;\n }\n render() {\n const container = document.createElement(\"div\");\n container.className = \"textLayerImages\";\n for (let i = 0; i < this.#coordinates.length; i += 6) {\n const el = this.#createImagePlaceholder(this.#coordinates.subarray(i, i + 6));\n if (el) {\n container.append(el);\n }\n }\n container.addEventListener(\"contextmenu\", event => {\n if (!(event.target instanceof HTMLCanvasElement)) {\n return;\n }\n const imgElement = event.target;\n const coords = this.#coordinatesByElement.get(imgElement);\n if (!coords) {\n return;\n }\n const activeImage = TextLayerImages.#activeImage?.deref();\n if (activeImage === imgElement) {\n return;\n }\n if (activeImage) {\n activeImage.width = 0;\n activeImage.height = 0;\n }\n TextLayerImages.#activeImage = new WeakRef(imgElement);\n const {\n inverseTransform,\n x1,\n y1,\n width,\n height\n } = coords;\n const pageCanvas = this.#getPageCanvas();\n const imageX1 = Math.ceil(x1 * pageCanvas.width);\n const imageY1 = Math.ceil(y1 * pageCanvas.height);\n const imageX2 = Math.floor((x1 + width / this.#pageWidth) * pageCanvas.width);\n const imageY2 = Math.floor((y1 + height / this.#pageHeight) * pageCanvas.height);\n imgElement.width = imageX2 - imageX1;\n imgElement.height = imageY2 - imageY1;\n const ctx = imgElement.getContext(\"2d\");\n ctx.setTransform(...inverseTransform);\n ctx.translate(-imageX1, -imageY1);\n ctx.drawImage(pageCanvas, 0, 0);\n });\n return container;\n }\n #createImagePlaceholder([x1, y1, x2, y2, x3, y3]) {\n const width = Math.hypot((x3 - x1) * this.#pageWidth, (y3 - y1) * this.#pageHeight);\n const height = Math.hypot((x2 - x1) * this.#pageWidth, (y2 - y1) * this.#pageHeight);\n if (width < this.#minSize || height < this.#minSize) {\n return null;\n }\n const transform = [(x3 - x1) * this.#pageWidth / width, (y3 - y1) * this.#pageHeight / width, (x2 - x1) * this.#pageWidth / height, (y2 - y1) * this.#pageHeight / height, 0, 0];\n const inverseTransform = Util.inverseTransform(transform);\n const imgElement = document.createElement(\"canvas\");\n imgElement.className = \"textLayerImagePlaceholder\";\n imgElement.width = 0;\n imgElement.height = 0;\n Object.assign(imgElement.style, {\n opacity: 0,\n position: \"absolute\",\n left: percentage(x1),\n top: percentage(y1),\n width: percentage(width / this.#pageWidth),\n height: percentage(height / this.#pageHeight),\n transformOrigin: \"0% 0%\",\n transform: `matrix(${transform.join(\",\")})`\n });\n this.#coordinatesByElement.set(imgElement, {\n inverseTransform,\n width,\n height,\n x1,\n y1\n });\n return imgElement;\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getRGBA: getRGBA,\n getUuid: getUuid,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n makeArr: makeArr,\n makeMap: makeMap,\n makeObj: makeObj,\n makeSet: makeSet,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordException: PasswordException,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TextLayerImages: TextLayerImages,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, FeatureTest, GlobalWorkerOptions, ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordException, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TextLayerImages, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getRGBA, getUuid, isDataScheme, isPdfFile, isValidExplicitDest, makeArr, makeMap, makeObj, makeSet, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","class StepScheduler {\n constructor(syncCallback, asyncCallback, params) {\n this._syncCallback = syncCallback;\n this._asyncCallback = asyncCallback;\n this._params = params;\n }\n\n start() {\n return new Promise((resolve) => {\n if (this._params.waitBeforeSync)\n setTimeout(() => this._scheduleCallbacks(resolve), this._params.waitBeforeSync);\n else\n this._scheduleCallbacks(resolve);\n });\n }\n}\n\nclass RAFStepScheduler extends StepScheduler {\n _scheduleCallbacks(resolve) {\n requestAnimationFrame(() => this._syncCallback());\n requestAnimationFrame(() => {\n setTimeout(() => {\n this._asyncCallback();\n setTimeout(resolve, 0);\n }, 0);\n });\n }\n}\n\nclass AsyncRAFStepScheduler extends StepScheduler {\n static mc = new MessageChannel();\n _scheduleCallbacks(resolve) {\n let gotTimer = false;\n let gotMessage = false;\n let gotPromise = false;\n\n const tryTriggerAsyncCallback = () => {\n if (!gotTimer || !gotMessage || !gotPromise)\n return;\n\n this._asyncCallback();\n setTimeout(resolve, 0);\n };\n\n requestAnimationFrame(async () => {\n await this._syncCallback();\n gotPromise = true;\n tryTriggerAsyncCallback();\n });\n\n requestAnimationFrame(() => {\n setTimeout(async () => {\n await Promise.resolve();\n gotTimer = true;\n tryTriggerAsyncCallback();\n });\n\n AsyncRAFStepScheduler.mc.port1.addEventListener(\n \"message\",\n async function () {\n await Promise.resolve();\n gotMessage = true;\n tryTriggerAsyncCallback();\n },\n { once: true }\n );\n AsyncRAFStepScheduler.mc.port1.start();\n AsyncRAFStepScheduler.mc.port2.postMessage(\"speedometer\");\n });\n }\n}\n\nexport const STEP_SCHEDULER_LOOKUP = {\n __proto__: null,\n raf: RAFStepScheduler,\n async: AsyncRAFStepScheduler,\n};\n","/**\n * Recursively queries the DOM for an element, traversing through shadow DOMs.\n *\n * @param {Element|ShadowRoot} lookupStartNode The node or shadow root to start the lookup from.\n * @param {string[]} path An array of CSS selectors representing the path to the target element.\n * @returns {Element|null} The target element if found, otherwise null.\n */\nexport function recursivelyQuerySelector(lookupStartNode, path) {\n lookupStartNode = lookupStartNode.shadowRoot ?? lookupStartNode;\n const target = path.reduce((root, selector) => {\n const node = root.querySelector(selector);\n return node.shadowRoot ?? node;\n }, lookupStartNode);\n\n return target;\n}\n\n/**\n * Retrieves a single DOM element, optionally traversing through shadow DOMs to a specified path before the final selection.\n *\n * @param {string} selector The CSS selector for the desired element.\n * @param {string[]} [path=[]] An optional array of CSS selectors to reach the desired shadowRoot or parent element.\n * @param {Element|ShadowRoot} [lookupStartNode=document] The starting node for the lookup.\n * @returns {Element|null} The found element, or null if not found.\n */\nexport function getElement(selector, path = [], lookupStartNode = document) {\n const element = recursivelyQuerySelector(lookupStartNode, path).querySelector(selector);\n return element;\n}\n\n/**\n * Retrieves all DOM elements matching a selector, optionally traversing through shadow DOMs to a specified path before the final selection.\n *\n * @param {string} selector The CSS selector for the desired elements.\n * @param {string[]} [path=[]] An optional array of CSS selectors to reach the desired shadowRoot or parent element.\n * @param {Element|ShadowRoot} [lookupStartNode=document] The starting node for the lookup.\n * @returns {Element[]} An array of found elements.\n */\nexport function getAllElements(selector, path = [], lookupStartNode = document) {\n const elements = Array.from(recursivelyQuerySelector(lookupStartNode, path).querySelectorAll(selector));\n return elements;\n}\n\nexport function forceLayout(body, layoutMode = \"getBoundingRectAndElementFromPoint\") {\n body ??= document.body;\n const rect = body.getBoundingClientRect();\n switch (layoutMode) {\n case \"getBoundingRectAndElementFromPoint\":\n return document.elementFromPoint((rect.width / 2) | 0, (rect.height / 2) | 0);\n case \"getBoundingClientRect\":\n return rect.height;\n default:\n throw Error(`Invalid layoutMode: ${layoutMode}`);\n }\n}\n\nexport function skipInShell(context) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\")\n // Skip in non-browser environments\n context.skip();\n}\n","import { STEP_SCHEDULER_LOOKUP } from \"./step-scheduler.mjs\";\nimport { forceLayout } from \"./helpers.mjs\";\n\nexport class StepRunner {\n #frame;\n #page;\n #params;\n #suite;\n #step;\n\n constructor(frame, page, params, suite, step) {\n this.#suite = suite;\n this.#step = step;\n this.#params = params;\n this.#page = page;\n this.#frame = frame;\n }\n\n get page() {\n return this.#page;\n }\n\n get step() {\n return this.#step;\n }\n\n get isAsync() {\n return false;\n }\n\n _runSyncStep(step, page) {\n step.run(page);\n }\n\n async runStep() {\n // Prepare all mark labels outside the measuring loop.\n const suiteName = this.#suite.name;\n const stepName = this.#step.name;\n const syncStartLabel = `${suiteName}.${stepName}-start`;\n const syncEndLabel = `${suiteName}.${stepName}-sync-end`;\n const asyncEndLabel = `${suiteName}.${stepName}-async-end`;\n\n let syncTime;\n let asyncStartTime;\n let asyncTime;\n\n const runSync = async () => {\n if (this.#params.warmupBeforeSync) {\n performance.mark(\"warmup-start\");\n const startTime = performance.now();\n // Infinite loop for the specified ms.\n while (performance.now() - startTime < this.#params.warmupBeforeSync)\n continue;\n performance.mark(\"warmup-end\");\n }\n performance.mark(syncStartLabel);\n const syncStartTime = performance.now();\n\n if (this.isAsync)\n await this._runSyncStep(this.step, this.page);\n else\n this._runSyncStep(this.step, this.page);\n\n const mark = performance.mark(syncEndLabel);\n const syncEndTime = mark.startTime;\n\n syncTime = syncEndTime - syncStartTime;\n asyncStartTime = syncEndTime;\n };\n const measureAsync = () => {\n // Some browsers don't immediately update the layout for paint.\n // Force the layout here to ensure we're measuring the layout time.\n //\n // Note: This matches the behavior of Page.layout() in benchmark-runner.mjs.\n // Since shared code cannot depend on Page, we duplicate the logic here,\n // falling back to document.body for remote workloads that don't have a frame.\n const body = this.#frame?.contentDocument?.body ?? document.body;\n const value = forceLayout(body, this.#params.layoutMode);\n body._leakedLayoutValue = value; // Prevent dead code elimination.\n\n const asyncEndTime = performance.now();\n performance.mark(asyncEndLabel);\n\n asyncTime = asyncEndTime - asyncStartTime;\n\n if (this.#params.warmupBeforeSync)\n performance.measure(\"warmup\", \"warmup-start\", \"warmup-end\");\n performance.measure(`${suiteName}.${stepName}-sync`, syncStartLabel, syncEndLabel);\n performance.measure(`${suiteName}.${stepName}-async`, syncEndLabel, asyncEndLabel);\n };\n\n const schedulerType = this.#suite.type === \"async\" || this.#params.useAsyncSteps ? \"async\" : this.#params.measurementMethod;\n const schedulerClass = STEP_SCHEDULER_LOOKUP[schedulerType];\n const scheduler = new schedulerClass(runSync, measureAsync, this.#params);\n await scheduler.start();\n return { syncTime, asyncTime };\n }\n}\n\nexport class AsyncStepRunner extends StepRunner {\n get isAsync() {\n return true;\n }\n\n async _runSyncStep(step, page) {\n await step.run(page);\n }\n}\n\nexport const STEP_RUNNER_LOOKUP = {\n __proto__: null,\n default: StepRunner,\n async: AsyncStepRunner,\n remote: StepRunner,\n};\n","export const LAYOUT_MODES = Object.freeze([\"getBoundingClientRect\", \"getBoundingRectAndElementFromPoint\"]);\n\nexport class Params {\n viewport = {\n width: 800,\n height: 600,\n };\n // Enable a detailed developer menu to change the current Params.\n developerMode = false;\n startAutomatically = false;\n iterationCount = 10;\n suites = [];\n // A list of tags to filter suites\n tags = [\"default\"];\n // Toggle running a dummy suite once before the normal test suites.\n useWarmupSuite = false;\n // toggle async type vs default raf type.\n useAsyncSteps = false;\n // Change how a test measurement is triggered and async time is measured:\n // \"timer\": The classic (as in Speedometer 2.x) way using setTimeout\n // \"raf\": Using rAF callbacks, both for triggering the sync part and for measuring async time.\n measurementMethod = \"raf\";\n // Wait time after suite preparation in ms.\n waitAfterSetup = 0;\n // Wait time before the sync step in ms.\n waitBeforeSync = 0;\n // Wait after running a suite.\n waitAfterSuite = 0;\n // Warmup time before the sync step in ms.\n warmupBeforeSync = 0;\n // Seed for shuffling the execution order of suites.\n // \"off\": do not shuffle\n // \"generate\": generate a random seed\n // : use the provided integer as a seed\n shuffleSeed = \"off\";\n // Param to tweak the relative complexity of all suites.\n // The default is 1.0, and for suites supporting this param, the duration\n // roughly scales with the complexity.\n complexity = 1.0;\n // Choices: \"getBoundingClientRect\" or \"getBoundingRectAndElementFromPoint\"\n layoutMode = LAYOUT_MODES[0];\n // Measure more workload prepare time.\n measurePrepare = false;\n // External config url to override internal tests.\n config = \"\";\n\n constructor(searchParams = undefined, warnUnused = false) {\n if (searchParams)\n this._copyFromSearchParams(searchParams, warnUnused);\n if (!this.developerMode) {\n Object.freeze(this.viewport);\n Object.freeze(this);\n }\n }\n\n _parseNumber(value, errorMessage, minValue = 0) {\n const number = Number(value);\n if (!Number.isFinite(number) && errorMessage)\n throw new Error(`Invalid ${errorMessage} param: '${value}', expected Number.`);\n if (number < minValue)\n throw new Error(`Invalid ${errorMessage} param: '${value}', value must be >= ${minValue}.`);\n return number;\n }\n\n _parseInt(value, errorMessage, minValue = 0) {\n const number = this._parseNumber(value, errorMessage, minValue);\n if (!Number.isInteger(number) && errorMessage)\n throw new Error(`Invalid ${errorMessage} param: '${value}', expected int.`);\n return parseInt(number);\n }\n\n _copyFromSearchParams(searchParams, warnUnused) {\n this.viewport = this._parseViewport(searchParams);\n this.startAutomatically = this._parseBooleanParam(searchParams, \"startAutomatically\");\n this.iterationCount = this._parseIntParam(searchParams, \"iterationCount\", 1);\n this.suites = this._parseSuites(searchParams);\n this.tags = this._parseTags(searchParams);\n this.developerMode = this._parseBooleanParam(searchParams, \"developerMode\");\n this.useWarmupSuite = this._parseBooleanParam(searchParams, \"useWarmupSuite\");\n this.useAsyncSteps = this._parseBooleanParam(searchParams, \"useAsyncSteps\");\n this.waitAfterSetup = this._parseIntParam(searchParams, \"waitAfterSetup\", 0);\n this.waitBeforeSync = this._parseIntParam(searchParams, \"waitBeforeSync\", 0);\n this.waitAfterSuite = this._parseIntParam(searchParams, \"waitAfterSuite\", 0);\n this.warmupBeforeSync = this._parseIntParam(searchParams, \"warmupBeforeSync\", 0);\n this.measurementMethod = this._parseEnumParam(searchParams, \"measurementMethod\", [\"raf\"]);\n this.shuffleSeed = this._parseShuffleSeed(searchParams);\n this.complexity = this._parserNumberParam(searchParams, \"complexity\", 0);\n this.layoutMode = this._parseEnumParam(searchParams, \"layoutMode\", LAYOUT_MODES);\n this.measurePrepare = this._parseBooleanParam(searchParams, \"measurePrepare\");\n this.config = this._parseConfig(searchParams);\n\n if (warnUnused) {\n const unused = Array.from(searchParams.keys());\n if (unused.length > 0)\n console.error(`Got unused search params: ${unused.join(\", \")}`);\n }\n }\n\n _parseBooleanParam(searchParams, paramKey) {\n if (!searchParams.has(paramKey))\n return false;\n searchParams.delete(paramKey);\n return true;\n }\n\n _parserNumberParam(searchParams, paramKey, minValue) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const parsedValue = this._parseNumber(searchParams.get(paramKey), \"waitBeforeSync\", minValue);\n searchParams.delete(paramKey);\n return parsedValue;\n }\n\n _parseIntParam(searchParams, paramKey, minValue) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const parsedValue = this._parseInt(searchParams.get(paramKey), \"waitBeforeSync\", minValue);\n searchParams.delete(paramKey);\n return parsedValue;\n }\n\n _parseViewport(searchParams) {\n if (!searchParams.has(\"viewport\"))\n return defaultParams.viewport;\n const viewportParam = searchParams.get(\"viewport\");\n const [width, height] = viewportParam.split(\"x\");\n const viewport = {\n width: this._parseInt(width, \"viewport.width\"),\n height: this._parseInt(height, \"viewport.height\"),\n };\n if (this.viewport.width < 800 || this.viewport.height < 600)\n throw new Error(`Invalid viewport param: ${viewportParam}`);\n searchParams.delete(\"viewport\");\n return viewport;\n }\n\n _parseSuites(searchParams) {\n if (searchParams.has(\"suite\") || searchParams.has(\"suites\")) {\n if (searchParams.has(\"suite\") && searchParams.has(\"suites\"))\n throw new Error(\"Params 'suite' and 'suites' can not be used together.\");\n const value = searchParams.get(\"suite\") || searchParams.get(\"suites\");\n const suites = value.split(\",\");\n if (suites.length === 0)\n throw new Error(\"No suites selected\");\n searchParams.delete(\"suite\");\n searchParams.delete(\"suites\");\n return suites;\n }\n return defaultParams.suites;\n }\n\n _parseTags(searchParams) {\n if (!searchParams.has(\"tags\"))\n return defaultParams.tags;\n if (this.suites.length)\n throw new Error(\"'suites' and 'tags' cannot be used together.\");\n const tags = searchParams.get(\"tags\").split(\",\");\n searchParams.delete(\"tags\");\n return tags;\n }\n\n _parseEnumParam(searchParams, paramKey, enumArray) {\n if (!searchParams.has(paramKey))\n return defaultParams[paramKey];\n const value = searchParams.get(paramKey);\n if (!enumArray.includes(value))\n throw new Error(`Got invalid ${paramKey}: '${value}', choices are ${enumArray}`);\n searchParams.delete(paramKey);\n return value;\n }\n\n _parseShuffleSeed(searchParams) {\n if (!searchParams.has(\"shuffleSeed\"))\n return defaultParams.shuffleSeed;\n let shuffleSeed = searchParams.get(\"shuffleSeed\");\n if (shuffleSeed !== \"off\") {\n if (shuffleSeed === \"generate\") {\n shuffleSeed = Math.floor((Math.random() * 1) << 16);\n console.log(`Generated a random suite order seed: ${shuffleSeed}`);\n } else {\n shuffleSeed = parseInt(shuffleSeed);\n }\n if (!Number.isInteger(shuffleSeed))\n throw new Error(`Invalid shuffle seed: '${shuffleSeed}', must be either 'off', 'generate' or an integer.`);\n }\n searchParams.delete(\"shuffleSeed\");\n return shuffleSeed;\n }\n\n _parseConfig(searchParams) {\n const config = searchParams.get(\"config\") ?? \"\";\n searchParams.delete(\"config\");\n if (config && !isValidJsonUrl(config))\n throw new Error(\"Invalid config url passed in.\");\n\n return config;\n }\n\n toCompleteSearchParamsObject() {\n return this.toSearchParamsObject(false);\n }\n\n toSearchParamsObject(filter = true) {\n const rawUrlParams = { __proto__: null };\n for (const [key, value] of Object.entries(this)) {\n // Handle composite values separately.\n if (key === \"viewport\" || key === \"suites\" || key === \"tags\")\n continue;\n // Skip over default values.\n if (filter && value === defaultParams[key])\n continue;\n rawUrlParams[key] = value;\n }\n\n if (this.viewport.width !== defaultParams.viewport.width || this.viewport.height !== defaultParams.viewport.height)\n rawUrlParams.viewport = `${this.viewport.width}x${this.viewport.height}`;\n\n if (this.suites.length) {\n rawUrlParams.suites = this.suites.join(\",\");\n } else if (this.tags.length) {\n if (!(this.tags.length === 1 && this.tags[0] === \"default\"))\n rawUrlParams.tags = this.tags.join(\",\");\n } else {\n rawUrlParams.suites = \"\";\n }\n\n return new URLSearchParams(rawUrlParams);\n }\n\n toSearchParams() {\n return this.toSearchParamsObject().toString();\n }\n\n isDefault() {\n return this === defaultParams;\n }\n}\n\nfunction isValidJsonUrl(url) {\n if (typeof url !== \"string\" || url.length === 0)\n return false;\n\n try {\n new URL(url, \"http://www.example.com\");\n return true;\n } catch (error) {\n return false;\n }\n}\n\nexport const defaultParams = new Params();\n\nexport let paramsError = null;\nlet maybeCustomParams = defaultParams;\nif (globalThis?.location?.search) {\n const searchParams = new URLSearchParams(globalThis.location.search);\n try {\n maybeCustomParams = new Params(searchParams, true);\n } catch (e) {\n paramsError = e;\n console.error(\"Invalid URL Param\", e, \"\\nUsing defaults as fallback:\", maybeCustomParams);\n }\n}\nexport const params = maybeCustomParams;\n","/* eslint-disable no-case-declarations */\nimport { StepRunner, AsyncStepRunner } from \"./step-runner.mjs\";\nimport { Params } from \"./params.mjs\";\n\n/**\n * BenchmarkStep\n *\n * A single test step, with a common interface to interact with.\n */\nexport class BenchmarkStep {\n constructor(name, run) {\n this.name = name;\n this.run = run;\n }\n\n async runAndRecordStep(params, suite, step) {\n const stepRunner = new StepRunner(null, null, params, suite, step);\n const result = await stepRunner.runStep();\n return result;\n }\n}\n\nexport class AsyncBenchmarkStep extends BenchmarkStep {\n async runAndRecordStep(params, suite, step) {\n const stepRunner = new AsyncStepRunner(null, null, params, suite, step);\n const result = await stepRunner.runStep();\n return result;\n }\n}\n\nexport const BENCHMARK_SUITE_TYPE = Object.freeze({\n __proto__: null,\n sync: \"sync\",\n async: \"async\",\n});\n\n/**\n * BenchmarkSuite\n *\n * A single test suite that contains one or more test steps.\n */\nexport class BenchmarkSuite {\n constructor(name, steps, type = BENCHMARK_SUITE_TYPE.sync) {\n this.name = name;\n this.steps = steps;\n this.type = type;\n console.assert(this.type in BENCHMARK_SUITE_TYPE, \"Invalid Type\", this.type);\n }\n\n async runAndRecordSuite(params, onProgress) {\n const measuredValues = {\n tests: {},\n prepare: 0,\n total: 0,\n };\n const suiteStartLabel = `suite-${this.name}-start`;\n const suiteEndLabel = `suite-${this.name}-end`;\n\n performance.mark(suiteStartLabel);\n\n for (const step of this.steps) {\n const rawResult = await step.runAndRecordStep(params, this, step);\n console.assert(rawResult, \"Missing test return value\", step);\n const { syncTime, asyncTime } = rawResult;\n const total = syncTime + asyncTime;\n const result = {\n tests: { Sync: syncTime, Async: asyncTime },\n total: total,\n };\n if (!step.ignoreResult) {\n measuredValues.tests[step.name] = result;\n measuredValues.total += total;\n }\n onProgress?.(step.name);\n }\n\n performance.mark(suiteEndLabel);\n performance.measure(`suite-${this.name}`, suiteStartLabel, suiteEndLabel);\n\n return {\n type: \"suite-tests-complete\",\n status: \"success\",\n result: measuredValues,\n suiteName: this.name,\n };\n }\n}\n\nexport class AsyncBenchmarkSuite extends BenchmarkSuite {\n constructor(name, steps) {\n super(name, steps, BENCHMARK_SUITE_TYPE.async);\n }\n}\n\nexport const MESSAGE_TYPE = Object.freeze({\n __proto__: null,\n appReady: \"app-ready\",\n suiteStart: \"suite-start\",\n stepComplete: \"step-complete\",\n suiteComplete: \"suite-complete\",\n});\n\nexport const MESSAGE_STATUS = Object.freeze({\n __proto__: null,\n success: \"success\",\n error: \"error\",\n});\n\n/** **********************************************************************\n * BenchmarkConnector\n *\n * postMessage is used to communicate between app and benchmark.\n * When the app is ready, an 'app-ready' message is sent to signal that the app can receive instructions.\n *\n * A prepare script within the apps appends window.name and window.version from the package.json file.\n * The appId is build by appending name-version\n * It's used as an additional safe-guard to ensure the correct app responds to a message.\n *************************************************************************/\nexport class BenchmarkConnector {\n constructor(suites, name, version) {\n this.suites = suites;\n this.name = name;\n this.version = version;\n\n if (!name || !version)\n console.warn(\"No name or version supplied, to create a unique appId\");\n\n this.appId = name && version ? `${name}-${version}` : -1;\n this.onMessage = this.onMessage.bind(this);\n }\n\n async onMessage(event) {\n const message = event.data;\n if (message.appId !== this.appId || message.key !== \"benchmark-connector\") {\n console.warn(\"Invalid message\", message);\n return;\n }\n\n switch (message.type) {\n case MESSAGE_TYPE.suiteStart:\n const params = new Params(new URLSearchParams(window.location.search));\n const { name } = message.payload;\n const suite = this.suites[name];\n if (!suite)\n console.error(`Suite with the name of \"${name}\" not found!`);\n const onProgress = (step) => this._sendMessage(MESSAGE_TYPE.stepComplete, { name: this.name, step });\n const { result } = await suite.runAndRecordSuite(params, onProgress);\n this._sendMessage(MESSAGE_TYPE.suiteComplete, { result });\n this.disconnect();\n break;\n default:\n console.error(`Message data type not supported: ${message.type}`);\n }\n }\n\n _sendMessage(type, payload, status = MESSAGE_STATUS.success) {\n const message = {\n appId: this.appId,\n type: type,\n payload: payload,\n status: status,\n };\n window.top.postMessage(message, \"*\");\n }\n\n connect() {\n window.addEventListener(\"message\", this.onMessage);\n this._sendMessage(MESSAGE_TYPE.appReady, { appId: this.appId });\n }\n\n disconnect() {\n window.removeEventListener(\"message\", this.onMessage);\n }\n}\n","// The chrome Firefox puts around an embedded pdf.js, rebuilt here rather than taken\n// from pdf.js' web/ viewer, which is a whole application and would drag in the render\n// queue and the scroll, scale and find debounces the workload avoids.\n//\n// The buttons are inert: wiring zoom would mean rebuilding canvases mid-step.\n\nconst TOOLBAR_GROUPS = [\n [\"views-manager\", \"separator\", \"page-number\"],\n [\"zoom-out\", \"zoom-level\", \"zoom-in\"],\n [\"search\", \"separator\", \"highlight\", \"free-text\", \"ink\", \"separator\", \"download\", \"print\", \"secondary\"],\n];\n\nconst SIDEBAR_TABS = [\"thumbnails\", \"outline\", \"attachments\", \"layers\"];\n\nfunction button(icon, label) {\n const element = document.createElement(\"button\");\n element.className = \"pdf-toolbar-button\";\n element.dataset.icon = icon;\n element.type = \"button\";\n element.title = label;\n element.setAttribute(\"aria-label\", label);\n return element;\n}\n\nfunction separator() {\n const element = document.createElement(\"span\");\n element.className = \"pdf-toolbar-separator\";\n return element;\n}\n\nfunction pageNumberField(pageCount) {\n const wrapper = document.createElement(\"span\");\n wrapper.className = \"pdf-page-field\";\n\n const input = document.createElement(\"input\");\n input.className = \"pdf-page-input\";\n input.type = \"text\";\n input.value = \"1\";\n input.readOnly = true;\n input.setAttribute(\"aria-label\", \"Page\");\n\n const total = document.createElement(\"span\");\n total.className = \"pdf-page-total\";\n total.textContent = `of ${pageCount}`;\n\n wrapper.append(input, total);\n return wrapper;\n}\n\nfunction zoomLevel(scale) {\n const element = document.createElement(\"span\");\n element.className = \"pdf-zoom-level\";\n element.textContent = `${Math.round(scale * 100)}%`;\n return element;\n}\n\nconst TOOLBAR_LABELS = {\n \"views-manager\": \"Toggle sidebar\",\n \"zoom-out\": \"Zoom out\",\n \"zoom-in\": \"Zoom in\",\n search: \"Find in document\",\n highlight: \"Highlight\",\n \"free-text\": \"Add text\",\n ink: \"Draw\",\n download: \"Save\",\n print: \"Print\",\n secondary: \"Tools\",\n};\n\nexport function buildToolbar(element, { pageCount, scale }) {\n const groups = TOOLBAR_GROUPS.map((items, index) => {\n const group = document.createElement(\"div\");\n group.className = index === TOOLBAR_GROUPS.length - 1 ? \"pdf-toolbar-group pdf-toolbar-group-end\" : \"pdf-toolbar-group\";\n for (const item of items) {\n if (item === \"separator\")\n group.append(separator());\n else if (item === \"page-number\")\n group.append(pageNumberField(pageCount));\n else if (item === \"zoom-level\")\n group.append(zoomLevel(scale));\n else\n group.append(button(item, TOOLBAR_LABELS[item]));\n }\n return group;\n });\n element.replaceChildren(...groups);\n}\n\n/**\n * Returns the panel the thumbnails go into. Only the active tab's panel is populated,\n * as in pdf.js' viewer, which builds the others the first time their tab is opened.\n */\nexport function buildSidebar(element) {\n const strip = document.createElement(\"div\");\n strip.className = \"pdf-sidebar-tabs\";\n for (const tab of SIDEBAR_TABS) {\n const control = button(`view-${tab}`, `Show ${tab}`);\n control.classList.add(\"pdf-sidebar-tab\");\n control.classList.toggle(\"pdf-sidebar-tab-active\", tab === \"thumbnails\");\n strip.append(control);\n }\n\n const panel = document.createElement(\"div\");\n panel.className = \"pdf-thumbnails\";\n\n element.replaceChildren(strip, panel);\n return panel;\n}\n","/**\n * A viewer on the pdf.js core API rather than pdf_viewer.mjs, whose render queue,\n * scroll and scale handlers and find controller all schedule work with setTimeout -\n * any of those timers firing inside a measured step would charge browser scheduling to\n * the score.\n */\nexport class PdfViewer {\n #pageContainer;\n #thumbnailContainer;\n #document;\n #scale;\n #outputScale;\n #thumbnailWidth;\n #pages = [];\n\n constructor({ pages, thumbnails }, pdfDocument, { scale, outputScale, thumbnailWidth }) {\n this.#pageContainer = pages;\n this.#thumbnailContainer = thumbnails;\n this.#document = pdfDocument;\n this.#scale = scale;\n this.#outputScale = outputScale;\n this.#thumbnailWidth = thumbnailWidth;\n }\n\n get pageCount() {\n return this.#pages.length;\n }\n\n /**\n * Nothing is rendered here on purpose: pdf.js caches the operator list on the\n * PDFPageProxy, so rendering a page ahead of the step - including as a thumbnail -\n * would hand that step a warm cache and measure almost nothing.\n */\n async layout() {\n const pageNumbers = Array.from({ length: this.#document.numPages }, (_, index) => index + 1);\n const proxies = await Promise.all(pageNumbers.map((pageNumber) => this.#document.getPage(pageNumber)));\n\n const pageFragment = document.createDocumentFragment();\n const thumbnailFragment = document.createDocumentFragment();\n\n this.#pages = proxies.map((proxy, index) => {\n const unscaled = proxy.getViewport({ scale: 1 });\n const viewport = proxy.getViewport({ scale: this.#scale });\n const element = document.createElement(\"div\");\n element.className = \"pdf-page\";\n element.style.width = `${Math.floor(viewport.width)}px`;\n element.style.height = `${Math.floor(viewport.height)}px`;\n pageFragment.append(element);\n\n const thumbnailViewport = proxy.getViewport({ scale: this.#thumbnailWidth / unscaled.width });\n const thumbnail = document.createElement(\"div\");\n thumbnail.className = \"pdf-thumbnail\";\n const thumbnailBox = document.createElement(\"div\");\n thumbnailBox.className = \"pdf-thumbnail-box\";\n thumbnailBox.style.width = `${Math.floor(thumbnailViewport.width)}px`;\n thumbnailBox.style.height = `${Math.floor(thumbnailViewport.height)}px`;\n const label = document.createElement(\"span\");\n label.className = \"pdf-thumbnail-label\";\n label.textContent = String(index + 1);\n thumbnail.append(thumbnailBox, label);\n thumbnailFragment.append(thumbnail);\n\n return { proxy, viewport, element, thumbnailViewport, thumbnailBox, canvas: null };\n });\n\n this.#pageContainer.replaceChildren(pageFragment);\n this.#thumbnailContainer.replaceChildren(thumbnailFragment);\n }\n\n /**\n * The pages overlap rather than running one after another: awaiting each in turn\n * would leave the step mostly idle, waiting on the worker to parse the next page's\n * operator list.\n */\n async renderPages(startIndex, count) {\n const end = Math.min(startIndex + count, this.#pages.length);\n const renders = [];\n for (let index = startIndex; index < end; index++)\n renders.push(this.#renderPage(this.#pages[index]));\n await Promise.all(renders);\n }\n\n #createCanvas(viewport, className) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = className;\n canvas.width = Math.floor(viewport.width * this.#outputScale);\n canvas.height = Math.floor(viewport.height * this.#outputScale);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n return canvas;\n }\n\n async #renderPage(page) {\n const { proxy, viewport, element, thumbnailViewport, thumbnailBox } = page;\n const transform = this.#outputScale === 1 ? null : [this.#outputScale, 0, 0, this.#outputScale, 0, 0];\n\n const canvas = this.#createCanvas(viewport, \"pdf-page-canvas\");\n element.replaceChildren(canvas);\n page.canvas = canvas;\n\n const thumbnailCanvas = this.#createCanvas(thumbnailViewport, \"pdf-thumbnail-canvas\");\n thumbnailBox.replaceChildren(thumbnailCanvas);\n\n await proxy.render({ canvas, viewport, transform }).promise;\n await proxy.render({ canvas: thumbnailCanvas, viewport: thumbnailViewport, transform }).promise;\n }\n}\n","import { AsyncBenchmarkStep, AsyncBenchmarkSuite } from \"speedometer-utils/benchmark.mjs\";\nimport { params } from \"speedometer-utils/params.mjs\";\n\nexport const appName = \"pdf-viewer\";\nexport const appVersion = \"1.0.0\";\n\n// Six is the smallest run that reaches one page of each of the document's four\n// layouts, which start after the front page and the table of contents.\nconst DEFAULT_PAGES_TO_RENDER = 6;\n\nexport function getNumberOfPagesToRender(pageCount) {\n return Math.max(1, Math.min(pageCount, Math.round(DEFAULT_PAGES_TO_RENDER * params.complexity)));\n}\n\n/**\n * pdf.js chunks every display-intent render on requestAnimationFrame, capped at 15ms of\n * operator-list work per chunk, so without this a 60ms page waits for four real frames\n * and the suite scores differently on a 60Hz and a 120Hz display.\n *\n * Scoped to the step, not installed at page load: the step scheduler runs in this same\n * frame for a remote suite, and a global shim would rewrite its frame scheduling too.\n * It registers both of its frame callbacks before the step body runs, so this only ever\n * reaches pdf.js.\n */\nasync function withoutAnimationFrames(render) {\n const { requestAnimationFrame, cancelAnimationFrame } = window;\n window.requestAnimationFrame = (callback) => window.setTimeout(() => callback(performance.now()), 0);\n window.cancelAnimationFrame = (handle) => window.clearTimeout(handle);\n try {\n await render();\n } finally {\n window.requestAnimationFrame = requestAnimationFrame;\n window.cancelAnimationFrame = cancelAnimationFrame;\n }\n}\n\nexport default function createSuites(viewer) {\n return {\n default: new AsyncBenchmarkSuite(\"PDFViewer-PDFjs\", [new AsyncBenchmarkStep(\"RenderPages\", () => withoutAnimationFrames(() => viewer.renderPages(0, getNumberOfPagesToRender(viewer.pageCount))))]),\n };\n}\n","import { getDocument, GlobalWorkerOptions, VerbosityLevel } from \"pdfjs-dist/build/pdf.mjs\";\nimport PdfWorker from \"pdfjs-dist/build/pdf.worker.mjs?worker\";\nimport { BenchmarkConnector } from \"speedometer-utils/benchmark.mjs\";\nimport { buildSidebar, buildToolbar } from \"./chrome.js\";\nimport { PdfViewer } from \"./viewer.js\";\nimport createSuites, { appName, appVersion } from \"./workload-test.mjs\";\n\nconst DOCUMENT_URL = \"document.pdf\";\n\n// Pages wrap into a grid, so this constant alone decides how many fit per row. 0.67 is\n// the tallest a US Letter page can be in the area the toolbar and sidebar leave over.\nconst PAGE_SCALE = 0.67;\nconst THUMBNAIL_WIDTH = 130;\nconst DEFAULT_OUTPUT_SCALE = 2;\n\n/**\n * Pinned rather than read from devicePixelRatio, so the workload rasterises the same\n * number of pixels everywhere. The harness only forwards params it knows about, so\n * `pdfPixelRatio` has to be set on the suite's own url, not the harness url.\n */\nfunction readOutputScale() {\n const raw = new URLSearchParams(window.location.search).get(\"pdfPixelRatio\");\n if (raw === null)\n return DEFAULT_OUTPUT_SCALE;\n const value = Number(raw);\n if (!Number.isFinite(value) || value <= 0) {\n console.error(`Invalid pdfPixelRatio param: '${raw}', expected a positive number.`);\n return DEFAULT_OUTPUT_SCALE;\n }\n return value;\n}\n\n// Everything that is not rendering happens before the app-ready message, and so\n// outside every measured window: worker boot, the fetch, getDocument and every getPage.\nasync function main() {\n GlobalWorkerOptions.workerPort = new PdfWorker();\n\n const response = await fetch(new URL(DOCUMENT_URL, document.baseURI));\n if (!response.ok)\n throw new Error(`Could not load ${DOCUMENT_URL}: ${response.status} ${response.statusText}`);\n\n const pdfDocument = await getDocument({\n data: await response.arrayBuffer(),\n // Everything the document needs is embedded, so never substitute a local face.\n useSystemFonts: false,\n verbosity: VerbosityLevel.ERRORS,\n }).promise;\n\n buildToolbar(document.getElementById(\"toolbar\"), { pageCount: pdfDocument.numPages, scale: PAGE_SCALE });\n const thumbnails = buildSidebar(document.getElementById(\"sidebar\"));\n\n const viewer = new PdfViewer({ pages: document.getElementById(\"viewer\"), thumbnails }, pdfDocument, {\n scale: PAGE_SCALE,\n outputScale: readOutputScale(),\n thumbnailWidth: THUMBNAIL_WIDTH,\n });\n await viewer.layout();\n\n new BenchmarkConnector(createSuites(viewer), appName, appVersion).connect();\n}\n\nmain().catch((error) => {\n console.error(error);\n document.getElementById(\"viewer\").textContent = `Failed to load the document: ${error.message}`;\n});\n"],"names":["isNodeJS","BBOX_INIT","F32_BBOX_INIT","FONT_IDENTITY_MATRIX","SVG_NS","RenderingIntentFlag","AnnotationMode","AnnotationPrefix","AnnotationEditorPrefix","AnnotationEditorType","AnnotationEditorParamsType","PermissionFlag","TextRenderingMode","ImageKind","AnnotationType","AnnotationBorderStyleType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","stringToUTF8String","absoluteUrl","updateUrlHash","hash","allowRel","res","stripPath","str","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","i","FeatureTest","buffer8","view32","platform","userAgent","ctx","input","Util","_","n","r","g","b","m1","m2","m","md","p","pos","p0","p1","transform","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","minMax","x0","y0","x1","y1","#getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","#getExtremum","a","delta","sqrtDelta","NormalizeRegex","NormalizationMap","normalizeUnicode","p2","getUuid","buf","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","makeArr","makeMap","makeObj","makeSet","separator","MathClamp","v","min","max","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","XfaText","xfa","items","walk","node","child","disallowedRichTextStyleRegExp","disallowedEventHandlerAttrRegExp","XfaLayer","html","id","element","storage","intent","storedData","event","option","linkService","attributes","isHTMLAnchorElement","key","allowedStyles","styleName","styleValue","#createElement","xmlns","parameters","root","rootHtml","isNotForRichText","rootDiv","textDivs","stack","parent","childHtml","el","xfaPage","PixelsPerInch","fetchData","type","isValidFetchUrl","response","resolve","reject","request","RenderingCancelledException","extraDelay","isDataScheme","ii","isPdfFile","filename","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","decode","decoded","pdfRegex","getLast","iterator","extensionStart","index","filenameStart","StatTimer","#started","longest","noContextMenu","e","stopEvent","PDFDateString","#regex","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","getRGBA","color","hex","parts","getRGB","rgba","getColorValues","colors","span","computedColor","getCurrentTransform","f","getCurrentTransformInverse","setLayerDimensions","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","widthStr","heightStr","OutputScale","pixelRatio","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","winPixels","SupportedImageMimeTypes","ColorScheme","CSSConstants","applyOpacity","opacity","white","RGBToHSL","rgb","l","HSLToRGB","hsl","h","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","baseHSL","fixedHSL","isFixedColorDark","minContrast","start","end","PRECISION","mid","renderRichText","dir","className","container","fragment","lines","line","makePathFromDrawOPS","data","path","EditorToolbar","#toolbar","#colorPicker","#editor","#buttons","#altText","#comment","#commentButtonDivider","#signatureDescriptionButton","#l10nRemove","editor","editToolbar","signal","#pointerDown","buttons","position","#focusIn","#focusOut","#addListenersToElement","editorType","_uiManager","button","#divider","divider","altText","comment","beforeElement","colorPicker","signatureManager","tool","beforeSelector","description","FloatingToolbar","#uiManager","uiManager","#render","#makeButton","#getLastPoint","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","INTERNAL_EVT","internalOpt","bindEvents","names","CurrentPointers","#pointerId","#pointerIds","#moveTimestamp","#pointerType","pointerId","pointerType","timeStamp","IdManager","#id","ImageManager","#baseId","#cache","svg","image","promise","#get","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","file","lastModified","size","blobPromise","blob","canvas","offscreen","bitmap","CommandManager","#commands","#locked","#maxSize","#position","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","isMac","keys","callback","hasMacOverride","k","shortcut","isMacKey","keyName","modifiers","#parseShortcut","keyPart","part","upper","modifier","#codeToKey","match","self","shortcuts","fallback","eventModifiers","bubbles","checker","ColorManager","RGB","AnnotationEditorUIManager","#abortController","#activeEditor","#allEditableAnnotations","#allEditors","#allLayers","#savedAllLayers","#savedEditorsByPage","#altTextManager","#annotationStorage","#changedExistingAnnotations","#commandManager","#commentManager","#copyPasteAC","#currentDrawingSession","#currentPageIndex","#deletedAnnotationsElementIds","#draggingEditors","#editorTypes","#editorsToRescale","#enableHighlightFloatingButton","#enableUpdatedAddImage","#enableNewAltTextWhenAddingImage","#filterFactory","#focusMainContainerTimeoutId","#focusManagerAC","#highlightColors","#highlightWhenShiftUp","#floatingToolbar","#idManager","#isEnabled","#isPointerDown","#isWaiting","#keyboardManagerAC","#lastActiveElement","#mainHighlightColorPicker","#missingCanvases","#mlManager","#mode","#selectedEditors","#selectedTextNode","#signatureManager","#pageColors","#showAllStates","#pdfDocument","#previousStates","#translation","#translationTimeoutId","#container","#viewer","#viewerAlert","#updateModeCapability","proto","arrowChecker","textInputChecker","_self","small","big","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","evtOpts","evt","#addSelectionListener","#addDragAndDropListeners","#addKeyboardManager","layer","ac","pair","_highlightColors","map","hasHCM","isNameForHCM","colorName","firstTime","posX","posY","pageIndex","uid","savedData","isSelected","visibility","pageNumber","onEditorsRendered","mode","layerX","layerY","pagesRotation","#getAnchorElementForSelection","anchorNode","#getLayerForTextLayer","textLayer","currentLayer","methodOfCreation","selection","anchorOffset","focusNode","focusOffset","text","isNoneMode","#displayFloatingToolbar","annotationId","storedValue","messageId","#selectionChange","#dispatchUpdateStates","activeLayer","pointerup","#onSelectEnd","#addFocusManager","#removeFocusManager","activeElement","lastEditor","lastActiveElement","#removeKeyboardManager","#addCopyPasteListeners","#removeCopyPasteListeners","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","#addEditorToLayer","#selectEditors","oldPageIndex","newPageIndex","savedEditorsByPage","saveEditor","promises","#dispatchUpdateUI","isEditing","#isEmpty","types","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","editComment","#disableAll","#enableAll","editorClass","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","visible","updateButton","mustWait","#lastSelectedEditor","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","w","range","editorId","AltText","#altTextDecorative","#altTextButton","#altTextButtonLabel","#altTextTooltip","#altTextTooltipTimeout","#altTextWasFromKeyBoard","#badge","#guessedText","#textWithDisclaimer","#useNewAltTextFlow","#l10nNewButton","l10n","label","onClick","#label","#setState","guessedText","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","Comment","#commentStandaloneButton","#commentToolbarButton","#commentWasFromKeyBoard","#initialText","#richText","#text","#date","#deleted","#popupPosition","parentX","parentY","selected","hasPopup","isStandalone","parentDimensions","richText","date","preventDefault","MIN_TOUCH_SPAN","stopTouchEvent","TouchManager","#isPinching","#isPinchingStopped","#isPinchingDisabled","#onPinchStart","#onPinching","#onPinchEnd","#onPanning","#ownsGesture","#pointerDownAC","#signal","#touchIds","#touchInfo","#touchManagerAC","#touchMoveAC","#unconfirmedPinch","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","onPanning","#onTouchStart","#pruneTouchIds","touchIds","identifier","#armPointerDown","opt","#onTouchMove","onTouchEnd","#onTouchEnd","#setTouchInfo","pointerDownAC","opts","cancelPointerDown","previous","#getTrackedTouches","touches","touch","touch0","touch1","wasOwned","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","pPanX","pPanY","prevGapX","prevGapY","currGapX","currGapY","panX","panY","dx","dy","screenPanX","screenPanY","translation","distance","pDistance","minDistance","direction","unconfirmed","wasTracking","#endGesture","AnnotationEditor","#accessibilityData","#allResizerDivs","#disabled","#dragPointerId","#dragPointerType","#resizersDiv","#lastPointerCoords","#savedDimensions","#fakeAnnotation","#focusAC","#focusedResizerName","#hasBeenClicked","#initialRect","#isEditing","#isInEditMode","#isResizerEnabledForKeyboard","#moveInDOMTimeout","#prevDragX","#prevDragY","#telemetryTimeouts","#touchManager","#isDraggable","#zIndex","resize","pageX","pageY","fakeEditor","FakeEditor","_type","_value","mime","#stopResizing","baseX","baseY","#translate","bx","by","_borderLineWidth","#rotatePoint","angle","#getRotationMatrix","parentScale","#createResizers","classes","#resizerPointerdown","savedDraggable","#resizerPointermove","savedParentCursor","savedCursor","pointerUpCallback","#addResizeToUndoStack","#resize","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","toolbarButtons","editToolbarDiv","trY","blX","blY","trX","contents","#addFocusListeners","#addTouchManager","#touchPinchStartCallback","#touchPinchCallback","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","#touchPinchEndCallback","#setUpDragSession","#selectOnPointerEvent","hasDraggingStarted","cancelDrag","shiftX","shiftY","creationDate","modificationDate","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","children","boundResizerKeydown","#resizerKeydown","boundResizerBlur","#resizerBlur","#resizerFocus","firstPosition","nextFirstPosition","#setResizerTabIndex","action","annotationLayer","content","firstElementChild","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","#modified","#modifiedIds","#editorsMap","#storage","defaultValue","modified","entry","val","#setModified","PrintAnnotationStorage","transfer","hasBitmap","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","editorStats","counters","ids","#serializable","serializable","clone","FORCED_DEPENDENCY_LABEL","floor","ceil","expandBBox","minX","minY","maxX","maxY","scaleCharBBox","scaleX","scaleY","bbox","temp","EMPTY_BBOX","BBoxReader","#bboxes","#coords","bboxes","coords","ensureDebugMetadata","CanvasBBoxTracker","#baseTransformStack","#clipBox","#pendingBBox","#canvasWidth","#canvasHeight","#bboxesCoords","operationsCount","#initializeBBoxes","oldBBoxes","buffer","opIdx","onSavePopped","lastSave","idx","clipBox","intersection","preserve","dependencyLists","dependencies","depIdx","depName","fallbackIdx","font","getMeasure","dependencyName","dependencyNames","CanvasDependencyTracker","#simple","#incremental","#namedDependencies","#pendingDependencies","#fontBBoxTrustworthy","#debugMetadata","#recordDebugMetadataDepenencyAfterRestore","#bboxTracker","bboxTracker","recordDebugMetadata","dep","fontBBox","isBBoxTrustworthy","computedBBox","measure","pendingDependencies","simple","incremental","metadata","needsCleanup","deps","CanvasNestedDependencyTracker","#dependencyTracker","#opIdx","#ignoreBBoxes","#nestingLevel","#savesLevel","dependencyTracker","ignoreBBoxes","Dependencies","CanvasImagesTracker","#capacity","#count","#CoordsArray","newCoords","finalBBox","rotationAngle","sin","cos","finalBBoxWidth","finalBBoxHeight","sin2","cos2","cosSin","denom","CONTROL_CHAR_REGEXP","isCSSString","quote","char","serializeFontFamily","fontFamily","FontLoader","#systemFonts","#styleSheet","ownerDocument","styleElement","nativeFontFace","rule","styleSheet","#getStyleSheet","StyleSheet","adoptedStyleSheets","disableFontFace","_inspectFont","loadedName","src","fontFace","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","string32","spliceString","s","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","#fontData","translatedData","inspectFont","charProcOperatorList","extra","css","objs","character","objId","cmds","CSS_FONT_INFO","SYSTEM_FONT_INFO","FONT_INFO","PATTERN_INFO","InfoUtils","CssFontInfo","#buffer","#view","#readString","decoder","SystemFontInfo","styleLength","weightLength","weight","FontInfo","#readBoolean","byteOffset","bitOffset","#readNumber","#readArray","arrLen","lookupName","increment","len","arr","#getDataOffsets","stringsLength","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","PatternInfo","dataView","kind","hasBBox","hasBackground","nCoord","nColor","nStop","stops","background","shadingType","bounds","FontPathInfo","getUrlProp","getDataProp","getFactoryUrlProp","isRefProxy","isNameProxy","isValidExplicitDest","LoopbackPort","#listeners","#deferred","listener","rmAbort","onAbort","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","#messageAC","sourceName","targetName","comObj","#onMessage","#processStreamMessage","callbackId","capability","result","reason","#createStreamSink","actionName","handler","ah","transfers","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","streamSink","lastDesiredSize","streamController","#deleteStreamController","dataReason","BaseBinaryDataFactory","#errorStr","cMapUrl","standardFontDataUrl","wasmUrl","DOMBinaryDataFactory","BaseCanvasFactory","#enableHWA","enableHWA","canvasAndContext","DOMCanvasFactory","BaseFilterFactory","maps","fgColor","bgColor","alpha","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","#baseUrl","#_cache","#_defs","#docId","#document","#_hcmCache","docId","#hcmCache","#defs","#createTables","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","#createUrl","tableR","tableG","tableB","filter","#createFilter","#addTransferMapConversion","fgRGB","#getRGB","bgRGB","#resetDefsColor","#addGrayConversion","getSteps","tableA","#addTransferMapAlphaConversion","#addLuminosityConversion","slope","feComponentTransfer","feFuncA","fgGray","bgGray","newFgRGB","newBgRGB","#getOpaqueTextColor","fg","bg","step","newStart","newStep","prev","j","feColorMatrix","#appendFeFunc","func","feFunc","rTable","gTable","bTable","aTable","#getRGBA","canvasR","canvasG","canvasB","blend","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeBinaryDataFactory","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","xorMask","srcLength","destPos","elem","convertRGBToRGBA","len32","src32","alphaMask","s1","s2","s3","jj","MESH_WGSL","WebGPU","#initPromise","#device","#meshPipeline","#preferredFormat","#initGPU","adapter","shaderModule","posData","colData","vertexCount","backgroundColor","paddedWidth","paddedHeight","borderSize","device","posBuffer","colBuffer","uniformBuffer","bindGroup","gpuCtx","clearValue","commandEncoder","renderPass","_webGPU","initGPU","isGPUReady","loadMeshShader","drawMeshWithGPU","PathType","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","dist","grad","firstPoint","secondPoint","colorStop","reversedStops","owner","inverse","pathType","pattern","precision","n1","n2","ps","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","p3","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","MeshShadingPattern","combinedScale","canvasFactory","boundsWidth","boundsHeight","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","baseTransform","absXStep","absYStep","nXFirst","nXLast","nYFirst","nYLast","clippedBBox","inv","dimx","dimy","graphics","useEOFill","bboxWidth","bboxHeight","combinedScaleX","combinedScaleY","xstep","ystep","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","realOutputSize","clip","paintType","current","fillStyle","strokeStyle","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","XY","mirrorContextOperations","destCtx","originalMethods","original","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","elemsInThisChunk","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","#SCALE_MATRIX","#knockoutGroupLevel","#knockoutElementDepth","#knockoutTempCanvasEntry","#knockoutSavedCtx","#knockoutSavedSMaskCtx","#knockoutSavedGCO","#knockoutElementAlpha","#knockoutFilterCache","#knockoutElementGroupMeta","#groupStackMeta","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","imagesTracker","transparency","savedFillStyle","transparentCanvas","operatorList","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","depObjId","objsPool","#restoreInitialState","meta","#destroyKnockoutPools","cache","#drawFilter","hcmFilterId","savedFilter","img","inverseTransform","widthScale","heightScale","scaleSteps","ws","hs","pw","ph","nw","nh","readEntry","writeEntry","paintWidth","paintHeight","source","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaledEntry","scaleResult","limit","dashArray","dashPhase","flatness","states","smask","inSMaskMode","subtype","backdrop","transferMap","hasFilter","filteredOOBAlpha","inputAlpha","SMASK_LAYER_TO_MASK_AREA_RATIO","layerW","layerH","maskArea","useLayerSize","filterSpec","bakedBackdrop","preparedEntry","drawX","drawY","srcEntry","sCtx","pCtx","filterApplied","scratchCanvas","#createKnockoutMaskCanvas","sourceCanvas","reuseEntry","maskEntry","maskCtx","needsAlphaScaling","knockoutFilter","sourceData","maskData","sourcePixels","maskPixels","alphaScale","#getOrCreatePooledEntry","#compositeKnockoutSurface","surfaceCanvas","backdropCanvas","destTransform","backdropOffset","reuseMaskEntry","poolMeta","sourceAlpha","sourceFilter","knockoutAlpha","knockoutMaskEntry","sourceCompositeOperation","backdropEntry","backdropCtx","#beginKnockoutElement","groupMeta","tempEntry","tempCtx","#endKnockoutElement","started","savedCtx","savedSMaskCtx","dirtyBox","suspendedCtx","applySMaskInPlace","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","clipX","clipY","clipW","clipH","oobAlpha","hasOOBAlpha","maskX0","maskY0","maskX1","maskY1","hasInnerCutout","maskOffsetX","maskOffsetY","old","op","outerExtraSize","tilingDims","consumePath","strokeColor","newPath","needRestore","tileIdx","paths","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","#getScaledPath","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","scaledPath","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","needsFill","needsStroke","lineWidth","chars","glyph","joinedChars","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","renderingOpIdx","group","currentCtx","canvasBounds","groupCtx","hasInnerBackdrop","savedKnockoutLevel","needsBackdropCopy","replaceBackdrop","#convertGroupToGray","currentMtx","parentGroupMeta","colorEntry","colorCtx","shapeMaskEntry","imageData","gray","hasOwnCanvas","canvasName","viewportScale","canvases","count","mask","skewX","skewY","positions","trans","images","imgToPaint","inlineImgCanvas","tag","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","SCALE_MATRIX","dashes","BasePDFStream","#PDFStreamReader","#PDFStreamRangeReader","PDFStreamReader","PDFStreamRangeReader","begin","reader","BasePDFStreamReader","stream","BasePDFStreamRangeReader","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","contentDispositionStr","iter","quot","quotindex","extvalue","encodingend","charset","createHeaders","isHttp","httpHeaders","headers","trimHeadersEnd","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","disableRange","rv","extractFilenameFromHeader","createResponseError","ensureResponseOrigin","rangeOrigin","origin","fetchUrl","withCredentials","abortController","ensureResponseStatus","getArrayBuffer","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","disableStream","contentLength","isRangeSupported","done","responseOrigin","transport_stream_getArrayBuffer","endRequests","PDFDataTransportStream","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","pdfDataRangeTransport","initialData","progressiveDone","#onReceiveData","rangeReader","#endRequests","contentDispositionFilename","loaded","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","PDFNetworkStream","#pendingRequests","PDFNetworkStreamReader","PDFNetworkStreamRangeReader","xhr","pendingRequest","#onStateChange","#onProgress","xhrStatus","rangeHeader","#onHeadersReceived","#onDone","#onError","fullRequestXhr","rawResponseHeaders","getReadableStream","fs","Readable","readStream","PDFNodeStream","PDFNodeStreamReader","PDFNodeStreamRangeReader","stat","readableStream","error","getNetworkStream","GlobalWorkerOptions","#port","#src","Metadata","#map","#data","parsedData","INTERNAL","OptionalContentGroup","#isDisplay","#isPrint","#userSet","#visible","renderingIntent","usage","rbGroups","print","view","internal","userSet","OptionalContentConfig","#cachedGetHash","#groups","#initialHash","#order","#rawData","groupState","on","off","#evaluateVisibilityExpression","operator","state","preserveRB","rbGroup","otherId","PagesMapper","#pageNumberToId","#prevPageNumbers","#pagesNumber","#clipboard","#savedData","#ensureInit","pageNumberToId","#buildIdToPageNumber","idToPageNumber","pageNumbers","selectedPages","pagesToMove","movedCount","mappedPagesToMove","removedBeforeTarget","pagesNumber","remainingLen","prevPageNumbers","adjustedTarget","pagesToDelete","prevIdToPageNumber","newN","newPageNumberToId","sourceIndex","destIndex","#updatePrevPageNumbers","pagesToCopy","copiedPageNumbers","copiedPageIds","deletedPageNumbers","pasteIndex","pasteEnd","idsIndices","oldPositions","#buildCopyLevels","extractedPageNumbers","copyLevels","counts","nCopy","extractParams","includePages","pageIndices","usedIds","INITIAL_DATA","dataObj","PDFObjects","#objs","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","TextLayer","#capability","#disableProcessItems","#fontInspectorEnabled","#imagesHandler","#lang","#layoutTextParams","#pageHeight","#pageWidth","#reader","#rootContainer","#rotation","#scale","#styleCache","#textContentItemsStr","#textContentSource","#textDivs","#textDivProperties","#transform","#ascentCache","#canvasContexts","#canvasCtxFonts","#minFontSize","#pendingTextLayers","textContentSource","#ensureMinFontSizeComputed","isWindows","isFirefox","pump","#processItems","onBefore","#getCtx","#layout","abortEx","textContentItemsStr","#appendText","geom","textDiv","textDivProperties","fontHeight","fontAscent","#getAscent","divStyle","shouldScaleText","absScaleX","absScaleY","br","#ensureCtxFont","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapPacked","iccUrl","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","BinaryDataFactory","gpuPromise","useWasm","pagesMapper","useSystemFonts","useWorkerFetch","transportFactory","docParams","transportParams","hasGPU","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","#listener","PDFDocumentProxy","pdfInfo","ref","pageIndexesToSkip","pageInfos","keepLoadedFonts","PDFPageProxy","#pendingCleanup","#pagesMapper","pageInfo","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordImages","recordOperations","intentArgs","intentState","intentPrint","recordForDebugger","shouldRecordOperations","shouldRecordImages","complete","internalRenderTask","recordedBBoxes","#tryCleanup","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","renderTasks","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","_capability","_messageHandler","_port","_webWorker","_fakeWorkerId","_isWorkerDisabled","_workerPorts","_PDFWorker_instances","resolve_fn","initializeFromPort_fn","initialize_fn","setupFakeWorker_fn","_PDFWorker_static","mainThreadWorkerMessageHandler_get","_PDFWorker","port","__privateAdd","__privateGet","__privateMethod","__privateSet","cachedPort","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","__privateWrapper","workerHandler","otherUrl","base","other","wrapper","#fullReader","#methodPromises","#networkStream","#pageCache","#pagePromises","#pageRefCache","#passwordCapability","loadingTask","factory","_pageIndex","#cacheSimpleMethod","total","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","updatePassword","err","exportedData","exportedError","fontData","imageRef","pageProxy","copy","ImageBitmapCtor","infos","mapping","remapped","copyLevel","sourceIdx","cachedPromise","results","refStr","RenderTask","separateAnnots","#rAF","#canvasInUse","useRequestAnimationFrame","version","build","ColorPicker","#button","#buttonSwatch","#defaultColor","#dropdown","#dropdownWasFromKeyboard","#isMainColorPicker","#eventBus","#openDropdownAC","#l10nColor","#openDropdown","#keyDown","swatch","dropdown","#getDropdownRoot","#colorSelect","#isDropdownVisible","BasicColorPicker","#input","#hasAlpha","colorType","colorAndOpacityType","opacityType","hasAlpha","alphaHex","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","MediaAnnotationElement","AnnotationElement","#updates","#hasBorder","#popupElement","isRenderable","ignoreBorder","createQuadrilaterals","quadPoints","inkLists","inkList","popup","newPopup","#setRectEdited","currentRect","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popupData","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","EditorAnnotationElement","link","isBound","#bindAttachment","#bindSetOCGState","#setInternalLink","destination","overlaidText","attachmentId","attachment","openAttachment","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","datetimeFormat","datetimeType","timeStep","hasDateOrTime","blurListener","formattedValue","target","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","wordCharPattern","combWidth","alignment","setCombOffset","free","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","fixDisplayValue","newValue","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","values","displayValue","selectChild","indices","change","elements","hasCommentManager","#createPopup","PopupElement","#boundKeyDown","#boundHide","#hide","#boundShow","#show","#boundToggle","#toggle","#color","#contentsObj","#dateObj","#elements","#parent","#parentRect","#pinned","#popup","#popupAbortController","#commentButton","#commentButtonPosition","#rect","#titleObj","#wasVisible","#firstElement","#commentText","titleObj","parentRect","open","#addEventListeners","#setCommentButtonPosition","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","#updateColor","#updateCommentButtonPosition","header","title","#html","#fontSize","#fontColor","#makePopupContent","popupLines","popupContent","lineAttributes","#setPosition","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","#line","#square","square","#circle","circle","#polyline","vertices","borderStyle","points","polyline","#polylinesGroupElement","#polylines","#getTransform","thickness","mark","underline","strikeout","#trigger","fileId","trigger","#download","fallbackContent","#contentUrl","#media","#load","contentType","isAudio","media","hovered","focused","updateControls","#revokeContentUrl","AnnotationLayer","#accessibilityManager","#annotationCanvasMap","#editableAnnotations","#structTreeLayer","#linkService","#hasAriaAttributesFromStructTree","accessibilityManager","annotationEditorUIManager","structTreeLayer","annotations","popupToElements","popupAnnotations","elementParams","isPopupAnnotation","rendered","#addElementsToDOM","#setAnnotationCanvasMap","contentElement","oc","enableLinkOwnership","ariaAttributes","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","annotationIds","cvs","toRemove","firstCanvas","firstChild","lastCanvas","editableAnnotation","EOL_PATTERN","FreeTextEditor","#content","#editorDivId","#editModeAC","#updateFontSize","setFontsize","#setEditorDimensions","savedFontsize","col","savedColor","#extractText","prevChild","#getNodeContent","savedDisplay","savedVisibility","savedText","newText","setText","#setContent","paste","#deserializeContent","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","#serializeContent","padding","textPosition","#hasElementChanged","DrawingOptions","#svgProperties","DrawingEditor","#internalDiv","#mustBeCommitted","#currentDraw","#currentDrawingAC","#currentDrawingOptions","#currentClipPathId","#createDrawOutlines","#addToDrawLayer","drawOutlines","drawId","drawingOptions","clipPathId","#createFocusOutline","#createDrawing","#updateBbox","#rotationAngle","#updateFocusOutline","#toggleFocusOutlineClass","rootClass","#updateVisibility","_drawId","_focusDrawId","_isVisible","p1Keys","_options","propertyName","_drawingOptions","savedValue","setter","opacityName","savedOpacity","#convertToDrawSpace","#rotateBox","_x","_y","#cleanDrawLayer","mustBeSelected","drawLayer","#convertToParentSpace","pW","pH","parentRotation","drawDiv","_params","_parent","clientX","clientY","referenceEvent","_target","_signal","isAborted","boxX","boxY","coalesced","sample","all","draw","lastElement","_data","_pageX","_pageY","_pageWidth","_pageHeight","_innerMargin","Outline","_bbox","_rotation","_name","_dimensions","_scale","_pageTranslation","_pageDimensions","_parentDimensions","sx","sy","FreeDrawOutliner","#box","#bottom","#innerMargin","#isLTR","#top","#last","#lastX","#lastY","#min","#min_dist","#scaleFactor","#thickness","#points","#MIN_DIST","#MIN_DIFF","#MIN","scaleFactor","innerMargin","#getLastCoords","lastTop","lastBottom","diffX","diffY","diffD","K","nX","nY","thX","thY","#toSVGPathTwoPoints","#toSVGPathEnd","#toSVGPathStart","lastTopX","lastTopY","lastBottomX","lastBottomY","outline","FreeDrawOutline","last","#getOutlineTwoPoints","N","#getOutlineEnd","#getOutlineStart","#bbox","#outline","#computeMinMax","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","outliner","getHighlightSVGProperties","getHighlightFocusSVGProperties","focusOutline","HighlightOutliner","#firstPoint","#lastPoint","#verticalEdges","#intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","#breakEdge","#insert","#remove","#getOutlines","edges","allEdges","edge1","edge2","outlines","HighlightOutline","#binarySearch","middle","y4","#boxes","#outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","FreeHighlightDrawer","#outliner","hasChanged","#EXTRA_THICKNESS","HighlightDrawingOptions","HighlightEditor","#anchorNode","#anchorOffset","#focusNode","#focusOffset","#methodOfCreation","#relativeToBox","pointX","pointY","#keydown","#setCaret","defaults","_DEFAULT_OPACITY","InkDrawOutliner","#tip","#lines","#lastSVGPath","#lastIndex","InkDrawOutline","#parentWidth","#parentHeight","#normalizePoint","#add","#toSVGPathWithTip","needsPathUpdate","tipX","tipY","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","#currentRotation","#parentScale","#computeBbox","serializedLines","serializedPoints","#getBBoxWithNoMargin","rescaleFn","newLines","#getMarginComponents","margin","marginX","marginY","#updateThickness","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","InkEditor","stroke","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","SignatureExtractor","#PARAMETERS","#neighborIndexToId","i0","j0","#neighborIdToIndex","#clockwiseNonZero","kk","shiftI","shiftJ","#counterClockwiseNonZero","#findContours","threshold","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","#douglasPeuckerHelper","ax","ay","abx","aby","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","#douglasPeucker","#bilateralFilter","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","out","histogram","center","sum","norm","neighbour","#getHistogram","#toUint8","#guessThreshold","M","L","spos","#getGrayPixels","originalBitmap","prevWidth","prevHeight","isteps","grayImage","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","contourList","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","minDiff","maxDiff","outlinesLength","bufferType","headerLength","cs","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","SignatureOptions","DrawnSignatureOptions","SignatureEditor","#isExtracted","#description","#signatureData","#signatureUUID","hasDescriptionStats","_isCopy","uuid","heightInPage","toolbar","outlineData","fontInfo","StampEditor","#bitmap","#bitmapId","#bitmapPromise","#bitmapUrl","#bitmapFile","#bitmapFileName","#canvas","#missingCanvas","#resizeTimeoutId","#isSvg","#hasBeenAddedInUndoStack","hasAltTextStats","#getBitmapFetched","fromId","#createCanvas","#getBitmapDone","updateAltTextData","#getBitmap","bitmapId","#drawBitmap","MAX_RATIO","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","#scaleBitmap","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","#serializeBitmap","toUrl","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","changes","area","prevData","isSamePageIndex","isSameAltText","AnnotationEditorLayer","#allowClick","#annotationLayer","#clickAC","#editorFocusTimeoutId","#editors","#hadPointerDown","#isDisabling","#isEnabling","#drawingAC","#focusedElement","#textLayer","#textSelectionAC","#textLayerDblClickAC","#lastPointerDownTimestamp","editorTypes","#cleanup","classList","#allEditorsIterator","annotationElementIds","editable","lastPointerDownTimestamp","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","#textLayerPointerDown","#currentEditorType","#createNewEditor","#getCenterPoint","isCentered","currentMode","relatedTarget","oldRotation","compareTextLayers","getTextLayer","isPointBefore","nodeA","offsetA","nodeB","offsetB","relation","normalizeEdgeBoundary","lastNode","DrawLayer","#mapping","#textLayerObserver","#toUpdate","#selectionId","#selectionChangeAC","#selections","#isSelecting","#textLayerSet","#textLayers","previousData","records","#hasSelection","addedNodes","#cleanupTextLayerSelection","textLayerData","#getOrderedTextLayers","rotators","orderedTextLayers","ranges","endContainer","endOffset","startTextLayer","endTextLayer","startMissing","endMissing","anchorLayer","focusLayer","anchorBeforeFocus","activeTextLayers","boundarySubstituted","previousNode","normalizedEnd","normalizedStart","firstNode","subRange","lastTextNode","selectedTextLayers","clientRect","selectionStyle","#setBox","#createSVG","#createClipPath","pathId","clipPathUse","#updateProperties","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","pathElement","percentage","TextLayerImages","#coordinates","#coordinatesByElement","#getPageCanvas","#minSize","#activeImage","minSize","coordinates","getPageCanvas","#createImagePlaceholder","imgElement","activeImage","pageCanvas","imageX1","imageY1","imageX2","imageY2","StepScheduler","syncCallback","asyncCallback","RAFStepScheduler","AsyncRAFStepScheduler","gotTimer","gotMessage","gotPromise","tryTriggerAsyncCallback","STEP_SCHEDULER_LOOKUP","forceLayout","body","layoutMode","StepRunner","#frame","#page","#params","#suite","#step","frame","suite","suiteName","stepName","syncStartLabel","syncEndLabel","asyncEndLabel","syncTime","asyncStartTime","asyncTime","runSync","startTime","syncStartTime","syncEndTime","measureAsync","asyncEndTime","schedulerType","schedulerClass","AsyncStepRunner","LAYOUT_MODES","Params","searchParams","warnUnused","errorMessage","minValue","number","unused","paramKey","defaultParams","parsedValue","viewportParam","suites","tags","enumArray","shuffleSeed","config","isValidJsonUrl","rawUrlParams","maybeCustomParams","BenchmarkStep","run","AsyncBenchmarkStep","BENCHMARK_SUITE_TYPE","BenchmarkSuite","onProgress","measuredValues","suiteStartLabel","suiteEndLabel","rawResult","AsyncBenchmarkSuite","MESSAGE_TYPE","MESSAGE_STATUS","BenchmarkConnector","payload","TOOLBAR_GROUPS","SIDEBAR_TABS","icon","pageNumberField","pageCount","zoomLevel","TOOLBAR_LABELS","buildToolbar","groups","buildSidebar","strip","tab","control","panel","PdfViewer","#pageContainer","#thumbnailContainer","#outputScale","#thumbnailWidth","#pages","pages","thumbnails","thumbnailWidth","proxies","pageFragment","thumbnailFragment","proxy","unscaled","thumbnailViewport","thumbnail","thumbnailBox","startIndex","renders","#renderPage","thumbnailCanvas","appName","appVersion","DEFAULT_PAGES_TO_RENDER","getNumberOfPagesToRender","withoutAnimationFrames","render","requestAnimationFrame","cancelAnimationFrame","handle","createSuites","DOCUMENT_URL","PAGE_SCALE","THUMBNAIL_WIDTH","DEFAULT_OUTPUT_SCALE","readOutputScale","raw","main","PdfWorker"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js new file mode 100644 index 000000000..5608ce747 --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js @@ -0,0 +1,54 @@ +const Eu=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),ca=[1/0,1/0,-1/0,-1/0],w0=new Float32Array(ca),Ea=[.001,0,0,.001,0,0],Mu=1.35,Du=.35,ol=Du/Mu,Ma="http://www.w3.org/2000/svg",an={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},_u="pdfjs_internal_id_",Mc="pdfjs_internal_editor_",js={FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,SIGNATURE:101},Pu={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},ls={TRIANGLES:1,LATTICE:2,PATCH:3},Dc={FILL:0,ADD_TO_PATH_FLAG:4},sn={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},_c={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},_o={GROUP:"Group",REPLY:"R"},fl={PLAY_OR_RESUME:0,PLAY:4},Kt={INVISIBLE:1,HIDDEN:2,PRINT:4,NOROTATE:16,NOVIEW:32,LOCKED:128,LOCKEDCONTENTS:512},ms={READONLY:1,REQUIRED:2,MULTILINE:4096,PASSWORD:8192,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,FILESELECT:1048576,MULTISELECT:2097152,DONOTSCROLL:8388608,COMB:16777216},Ja={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Pc={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"},Nu={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},Ou={O:"PageOpen",C:"PageClose"},hr={WARNINGS:1,INFOS:5},C={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},At={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},f0={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let P0=hr.WARNINGS;function Lu(t){Number.isInteger(t)&&(P0=t)}function zu(){return P0}function ut(t){P0>=hr.INFOS&&console.info(`Info: ${t}`)}function H(t){P0>=hr.WARNINGS&&console.warn(`Warning: ${t}`)}function st(t){throw new Error(t)}function Ct(t,e){t||st(e)}function Uu(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function x0(t,e=null,n=null){if(!t)return null;if(n&&typeof t=="string"&&(n.addDefaultProtocol&&t.startsWith("www.")&&t.match(/\./g)?.length>=2&&(t=`http://${t}`),n.tryConvertEncoding))try{t=bi(t)}catch{}const s=e?URL.parse(t,e):URL.parse(t);return Uu(s)?s:null}function Gu(t){return t.substring(t.lastIndexOf("/")+1)}function ue(t,e,n,s=!1){return Object.defineProperty(t,e,{value:n,enumerable:!s,configurable:!0,writable:!1}),n}const Bn=(function(){function e(n,s){this.message=n,this.name=s}return e.prototype=new Error,e.constructor=e,e})();class Os extends Bn{constructor(e,n){super(e,"PasswordException"),this.code=n}}class so extends Bn{constructor(e,n){super(e,"UnknownErrorException"),this.details=n}}class ur extends Bn{constructor(e){super(e,"InvalidPDFException")}}class ll extends Bn{constructor(e,n,s){super(e,"ResponseException"),this.status=n,this.missing=s}}class Y extends Bn{constructor(e){super(e,"FormatError")}}class fn extends Bn{constructor(e){super(e,"AbortException")}}function An(t){(typeof t!="object"||t?.length===void 0)&&st("Invalid argument for bytesToString");const e=t.length,n=8192;if(en.toString(16).padStart(2,"0")))}static makeHexColor(e,n,s){return`#${this.hexNums[e]}${this.hexNums[n]}${this.hexNums[s]}`}static transform(e,n){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],e[0]*n[4]+e[2]*n[5]+e[4],e[1]*n[4]+e[3]*n[5]+e[5]]}static multiplyByDOMMatrix(e,n){return[e[0]*n.a+e[2]*n.b,e[1]*n.a+e[3]*n.b,e[0]*n.c+e[2]*n.d,e[1]*n.c+e[3]*n.d,e[0]*n.e+e[2]*n.f+e[4],e[1]*n.e+e[3]*n.f+e[5]]}static applyTransform(e,n,s=0){const a=e[s],i=e[s+1];e[s]=a*n[0]+i*n[2]+n[4],e[s+1]=a*n[1]+i*n[3]+n[5]}static applyTransformToBezier(e,n,s=0){const a=n[0],i=n[1],r=n[2],o=n[3],f=n[4],l=n[5];for(let c=0;c<6;c+=2){const h=e[s+c],u=e[s+c+1];e[s+c]=h*a+u*r+f,e[s+c+1]=h*i+u*o+l}}static applyInverseTransform(e,n){const s=e[0],a=e[1],i=n[0]*n[3]-n[1]*n[2];e[0]=(s*n[3]-a*n[2]+n[2]*n[5]-n[4]*n[3])/i,e[1]=(-s*n[1]+a*n[0]+n[4]*n[1]-n[5]*n[0])/i}static axialAlignedBoundingBox(e,n,s){const a=n[0],i=n[1],r=n[2],o=n[3],f=n[4],l=n[5],c=e[0],h=e[1],u=e[2],d=e[3];let p=a*c+f,m=p,b=a*u+f,w=b,x=o*h+l,j=x,k=o*d+l,y=k;if(i!==0||r!==0){const q=i*c,v=i*u,A=r*h,S=r*d;p+=A,w+=A,b+=S,m+=S,x+=q,y+=q,k+=v,j+=v}s[0]=Math.min(s[0],p,b,m,w),s[1]=Math.min(s[1],x,k,j,y),s[2]=Math.max(s[2],p,b,m,w),s[3]=Math.max(s[3],x,k,j,y)}static inverseTransform(e){const n=e[0]*e[3]-e[1]*e[2];return[e[3]/n,-e[1]/n,-e[2]/n,e[0]/n,(e[2]*e[5]-e[4]*e[3])/n,(e[4]*e[1]-e[5]*e[0])/n]}static singularValueDecompose2dScale(e,n){const s=e[0],a=e[1],i=e[2],r=e[3],o=s**2+a**2,f=s*i+a*r,l=i**2+r**2,c=(o+l)/2,h=Math.sqrt(c**2-(o*l-f**2));n[0]=Math.sqrt(c+h||1),n[1]=Math.sqrt(c-h||1)}static normalizeRect(e){const n=e.slice(0);return e[0]>e[2]&&(n[0]=e[2],n[2]=e[0]),e[1]>e[3]&&(n[1]=e[3],n[3]=e[1]),n}static intersect(e,n){const s=Math.max(Math.min(e[0],e[2]),Math.min(n[0],n[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(n[0],n[2]));if(s>a)return null;const i=Math.max(Math.min(e[1],e[3]),Math.min(n[1],n[3])),r=Math.min(Math.max(e[1],e[3]),Math.max(n[1],n[3]));return i>r?null:[s,i,a,r]}static pointBoundingBox(e,n,s){s[0]=Math.min(s[0],e),s[1]=Math.min(s[1],n),s[2]=Math.max(s[2],e),s[3]=Math.max(s[3],n)}static rectBoundingBox(e,n,s,a,i){i[0]=Math.min(i[0],e,s),i[1]=Math.min(i[1],n,a),i[2]=Math.max(i[2],e,s),i[3]=Math.max(i[3],n,a)}static#e(e,n,s,a,i,r,o,f,l,c){if(l<=0||l>=1)return;const h=1-l,u=l*l,d=u*l,p=h*(h*(h*e+3*l*n)+3*u*s)+d*a,m=h*(h*(h*i+3*l*r)+3*u*o)+d*f;c[0]=Math.min(c[0],p),c[1]=Math.min(c[1],m),c[2]=Math.max(c[2],p),c[3]=Math.max(c[3],m)}static#t(e,n,s,a,i,r,o,f,l,c,h,u){if(Math.abs(l)<1e-12){Math.abs(c)>=1e-12&&this.#e(e,n,s,a,i,r,o,f,-h/c,u);return}const d=c**2-4*h*l;if(d<0)return;const p=Math.sqrt(d),m=2*l;this.#e(e,n,s,a,i,r,o,f,(-c+p)/m,u),this.#e(e,n,s,a,i,r,o,f,(-c-p)/m,u)}static bezierBoundingBox(e,n,s,a,i,r,o,f,l){l[0]=Math.min(l[0],e,o),l[1]=Math.min(l[1],n,f),l[2]=Math.max(l[2],e,o),l[3]=Math.max(l[3],n,f),this.#t(e,s,i,o,n,a,r,f,3*(-e+3*(s-i)+o),6*(e-2*s+i),3*(s-e),l),this.#t(e,s,i,o,n,a,r,f,3*(-n+3*(a-r)+f),6*(n-2*a+r),3*(a-n),l)}}function bi(t){return decodeURIComponent(escape(t))}function Po(t){return unescape(encodeURIComponent(t))}function za(t,e){if(t.length!==e.length)return!1;for(let n=0,s=t.length;nn?n.normalize("NFKC"):cl.get(s))}function Ku(t,e,n){if(!Array.isArray(n)||n.length<2)return!1;const[s,a,...i]=n;if(!t(s)&&!Number.isInteger(s)||!e(a))return!1;const r=i.length;let o=!0;switch(a.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;o=!1;break;default:return!1}for(const f of i)if(!(typeof f=="number"||o&&f===null))return!1;return!0}const ha=()=>[],Vu=()=>new Map,$u=()=>Object.create(null),Nc=()=>new Set;typeof Iterator.prototype.join!="function"&&(Iterator.prototype.join=function(t){return[...this].join(t)});const Xu=Symbol("CIRCULAR_REF"),ln=Symbol("EOF");let Oc=Object.create(null),Lc=Object.create(null),l0=Object.create(null);function Yu(){Oc=Object.create(null),Lc=Object.create(null),l0=Object.create(null)}class J{constructor(e){this.name=e}static get(e){return Lc[e]||=new J(e)}}class Ut{constructor(e){this.cmd=e}static get(e){return Oc[e]||=new Ut(e)}}const zc=()=>zc;class B{__nonSerializable__=zc;#e=new Map;objId=null;suppressEncryption=!1;xref;constructor(e=null){this.xref=e}assignXref(e){this.xref=e}get size(){return this.#e.size}#t(e,n,s){let a=this.#e.get(n);return a===void 0&&s!==void 0&&(a=this.#e.get(s)),a instanceof Q&&this.xref?e?this.xref.fetchAsync(a,this.suppressEncryption):this.xref.fetch(a,this.suppressEncryption):a}get(e,n){return this.#t(!1,e,n)}async getAsync(e,n){return this.#t(!0,e,n)}getArray(e,n){let s=this.#t(!1,e,n);if(Array.isArray(s)){s=s.slice();for(let a=0,i=s.length;a{st("Should not call `set` on the empty dictionary.")},ue(this,"empty",e)}static merge({xref:e,dictArray:n,mergeSubDicts:s=!1}){const a=new B(e),i=new Map;for(const r of n)if(r instanceof B)for(const[o,f]of r.getRawEntries()){const l=i.getOrInsertComputed(o,ha);l.length&&!(s&&f instanceof B)||l.push(f)}for(const[r,o]of i){if(o.length===1||!(o[0]instanceof B)){a.set(r,o[0]);continue}const f=new B(e);for(const l of o)for(const[c,h]of l.getRawEntries())f.setIfNotExists(c,h);f.size>0&&a.set(r,f)}return i.clear(),a.size>0?a:B.empty}clone(){const e=new B(this.xref);for(const[n,s]of this.#e)e.set(n,s);return e}delete(e){this.#e.delete(e)}}class Q{#e;constructor(e,n,s){this.#e=e,this.num=n,this.gen=s}toString(){return this.#e}static fromString(e){const n=l0[e];if(n)return n;const s=/^(\d+)R(\d*)$/.exec(e);if(!s||s[1]==="0")return null;const a=parseInt(s[1],10),i=s[2]?parseInt(s[2],10):0;return l0[e]=new Q(e,a,i)}static get(e,n){const s=n===0?`${e}R`:`${e}R${n}`;return l0[s]||=new Q(s,e,n)}}class bt{#e=new Set;constructor(e=null){if(e)for(const n of e)this.#e.add(n)}has(e){return this.#e.has(e.toString())}put(e){this.#e.add(e.toString())}remove(e){this.#e.delete(e.toString())}[Symbol.iterator](){return this.#e.keys()}clear(){this.#e.clear()}}class $t{#e=new Map;get size(){return this.#e.size}get(e){return this.#e.get(e.toString())}has(e){return this.#e.has(e.toString())}put(e,n){this.#e.set(e.toString(),n)}putAlias(e,n){this.#e.set(e.toString(),this.get(n))}getOrPutComputed(e,n){const s=this.#e,a=e.toString();return s.has(a)||s.set(a,n(e)),s.get(a)}[Symbol.iterator](){return this.#e.values()}clear(){this.#e.clear()}*values(){yield*this.#e.values()}*items(){for(const[e,n]of this.#e)yield[Q.fromString(e),n]}*keys(){for(const e of this.#e.keys())yield Q.fromString(e)}}function ze(t,e){return t instanceof J&&(e===void 0||t.name===e)}function Qt(t,e){return t instanceof Ut&&(e===void 0||t.cmd===e)}function wi(t,e){return t instanceof B&&(e===void 0||ze(t.get("Type"),e))}function xi(t,e){return t.num===e.num&&t.gen===e.gen}class Pe{get length(){st("Abstract getter `length` accessed")}get isEmpty(){st("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return ue(this,"isDataLoaded",!0)}getByte(){st("Abstract method `getByte` called")}getBytes(e){st("Abstract method `getBytes` called")}async getImageData(e,n){return this.getBytes(e,n)}async asyncGetBytes(){st("Abstract method `asyncGetBytes` called")}get isAsync(){return!1}get isAsyncDecoder(){return!1}get isImageStream(){return!1}get canAsyncDecodeImageFromBuffer(){return!1}async getTransferableImage(e,n){return null}peekByte(){const e=this.getByte();return e!==-1&&this.pos--,e}peekBytes(e){const n=this.getBytes(e);return this.pos-=n.length,n}getUint16(){const e=this.getByte(),n=this.getByte();return e===-1||n===-1?-1:(e<<8)+n}getInt32(){const e=this.getByte(),n=this.getByte(),s=this.getByte(),a=this.getByte();return(e<<24)+(n<<16)+(s<<8)+a}getByteRange(e,n){st("Abstract method `getByteRange` called")}getString(e){return An(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){st("Abstract method `reset` called")}moveStart(){st("Abstract method `moveStart` called")}makeSubStream(e,n,s=null){st("Abstract method `makeSubStream` called")}clone(){st("Abstract method `clone` called")}getBaseStreams(){return null}getOriginalStream(){return this.stream?.getOriginalStream()||this}}const No=new RegExp("\\p{Cc}","u");function Ju(t){const e=t[0];if(t.length<2||e!=='"'&&e!=="'"||t.at(-1)!==e)return!1;const n=t.length-1;for(let s=1;s=n||No.test(t[s])))return!1}return!0}function hl(t){return Ju(t)?t:`"${t.replaceAll(/["\\\p{Cc}]/gu,n=>n==='"'||n==="\\"?`\\${n}`:`\\${n.codePointAt(0).toString(16)} `)}"`}function Qu(t){return typeof t=="string"&&(!t||/^[\x00-\x7F]*$/.test(t))}function Zt(t){return t==null||Qu(t)?t:Uc(t,!0)}function Zu(t){const e=[];for(let n=0,s=t.length;n>8&255],ft.hexNums[a&255])}return e.join("")}function Uc(t,e=!1){const n=[];e&&n.push("þÿ");for(let s=0,a=t.length;s>8&255),String.fromCharCode(i&255))}return n.join("")}const e1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364],t1=Object.create(null);function Xe(t,e=!1){if(t[0]>="ï"){let s;if(t[0]==="þ"&&t[1]==="ÿ"?(s="utf-16be",t.length%2===1&&(t=t.slice(0,-1))):t[0]==="ÿ"&&t[1]==="þ"?(s="utf-16le",t.length%2===1&&(t=t.slice(0,-1))):t[0]==="ï"&&t[1]==="»"&&t[2]==="¿"&&(s="utf-8"),s)try{const a=t1[s]??=new TextDecoder(s,{fatal:!0}),i=Bt(t),r=a.decode(i);return e||!r.includes("\x1B")?r:r.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,"")}catch(a){H(`stringToPDFString: "${a}".`)}}const n=[];for(let s=0,a=t.length;s0,"The number should be a positive integer.");const n="M".repeat(t/1e3|0)+io[t%1e3/100|0]+io[10+(t%100/10|0)]+io[20+t%10];return e?n.toLowerCase():n}function es(t){return t===32||t===9||t===13||t===10}function a1(t,e){return Array.isArray(t)&&t.length===e&&t.every(n=>typeof n=="boolean")}function Rt(t,e){return Array.isArray(t)?(e===null||t.length===e)&&t.every(n=>typeof n=="number"):ArrayBuffer.isView(t)&&!(t instanceof BigInt64Array||t instanceof BigUint64Array)&&(e===null||t.length===e)}function Ps(t,e){return Rt(t,6)?t:e}function dr(t,e){return Rt(t,4)?t:e}function Cs(t,e){return Rt(t,4)?ft.normalizeRect(t):e}function Kc(t){const e=/^(.+)\[(\d+)\]$/;return t.split(".").map(n=>{const s=n.match(e);return s?{name:s[1],pos:parseInt(s[2],10)}:{name:n,pos:0}})}function jf(t){const e=[];let n=0;for(let s=0,a=t.length;s126||i===35||i===40||i===41||i===60||i===62||i===91||i===93||i===123||i===125||i===47||i===37)&&(ne===` +`?"\\n":e==="\r"?"\\r":`\\${e}`)}function j0(t,e,n,s){if(!t)return;let a=null;if(t instanceof Q){if(s.has(t))return;a=t,s.put(a),t=e.fetch(t)}if(Array.isArray(t))for(const i of t)j0(i,e,n,s);else if(t instanceof B){if(ze(t.get("S"),"JavaScript")){const i=t.get("JS");let r;i instanceof Pe?r=i.getString():typeof i=="string"&&(r=i),r&&=Xe(r,!0).replaceAll("\0",""),r&&n.push(r.trim())}j0(t.getRaw("Next"),e,n,s)}a&&s.remove(a)}function N0(t,e,n){const s=new Map,a=rn({dict:e,key:"AA",stopWhenFound:!1});if(a)for(let i=a.length-1;i>=0;i--){const r=a[i];if(r instanceof B)for(const[o,f]of r.getRawEntries()){const l=n[o];if(!l)continue;const c=new bt,h=[];j0(f,t,h,c),h.length>0&&s.set(l,h)}}if(e.has("A")){const i=e.get("A"),r=new bt,o=[];j0(i,t,o,r),o.length>0&&s.set("Action",o)}return s.size?s:null}const i1={60:"<",62:">",38:"&",34:""",39:"'"};function*r1(t){for(let e=0,n=t.length;e55295&&(s<57344||s>65533)&&e++,yield s}}function mi(t){const e=[];let n=0;for(let s=0,a=t.length;s65535&&s++,n=s+1}return e.length===0?t:(n: ${t}.`),!1;return!0}function o1(t){return t.replaceAll(/( +)(\d)?/g,(e,n,s)=>s??" ")}function f1(t){const s=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:i,italicAngle:r}=t;if(!Wo(a,!0))return!1;const o=i?i.toString():"";t.fontWeight=s.has(o)?o:"400";const f=parseFloat(r);return t.italicAngle=isNaN(f)||f<-90||f>90?"14":r.toString(),!0}function Vc(t){const e=["app.launchURL","window.open","xfa.host.gotoURL"],s=new RegExp("^\\s*("+e.join("|").replaceAll(".","\\.")+`)\\((?:'|")([^'"]*)(?:'|")(?:,\\s*(\\w+)\\)|\\))`,"i").exec(t);return s?.[2]?{url:s[2],newWindow:s[1]==="app.launchURL"&&s[3]==="true"}:null}function jt(t){if(Number.isInteger(t))return t.toString();const e=Math.round(t*100);return e%100===0?(e/100).toString():e%10===0?t.toFixed(1):t.toFixed(2)}function kf(t){if(!t)return null;const e=new Map;for(const[n,s]of t)n.startsWith(Mc)&&e.getOrInsertComputed(s.pageIndex,ha).push(s);return e.size>0?e:null}function ua(t=new Date){return t instanceof Date||(t=new Date(t)),[t.getUTCFullYear().toString(),(t.getUTCMonth()+1).toString().padStart(2,"0"),t.getUTCDate().toString().padStart(2,"0"),t.getUTCHours().toString().padStart(2,"0"),t.getUTCMinutes().toString().padStart(2,"0"),t.getUTCSeconds().toString().padStart(2,"0")].join("")}function k0(t,e,n){switch(t){case 90:return[0,1,-1,0,e,0];case 180:return[-1,0,0,-1,e,n];case 270:return[0,-1,1,0,0,n];default:throw new Error("Invalid rotation")}}function dl(t){return Math.ceil(Math.ceil(Math.log2(1+t))/8)}const $c=new Uint8Array(new Uint32Array([1]).buffer)[0]===1?4278190080:255,l1=~$c;class is{static#e=null;static _memory=null;static _destBuffer=null;static _destOffset=0;static _keepAlpha=!1;static get _memoryArray(){const e=this.#e;return e?.byteLength?e:this.#e=new Uint8Array(this._memory.buffer)}}function c1(t,e){const{_destBuffer:n,_destOffset:s,_keepAlpha:a,_memoryArray:i}=is;if(!a){n.set(i.subarray(t,t+e),s);return}const r=e>>2,o=n.byteOffset+s;if(((o|t)&3)===0){const f=new Uint32Array(n.buffer,o,r),l=new Uint32Array(is._memory.buffer,t,r);for(let c=0;c>>0}function d1(t,e){return In.qcms_convert_one(t,e)>>>0}function m1(t,e,n,s){return In.qcms_convert_three(t,e,n,s)>>>0}function p1(t){In.qcms_drop_transformer(t)}function g1(t,e,n){const s=Yc(t,In.__wbindgen_malloc),a=yf;return In.qcms_transformer_from_memory(s,a,e,n)>>>0}function b1(){return{__proto__:null,"./qcms_bg.js":{__proto__:null,__wbg___wbindgen_throw_344f42d3211c4765:function(e,n){throw new Error(w1(e,n))},__wbg_copy_result_0d15f3bf9d9012ae:function(e,n){c1(e>>>0,n>>>0)},__wbindgen_init_externref_table:function(){const e=In.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}}}}function w1(t,e){return j1(t>>>0,e)}let Ji=null;function Xc(){return(Ji===null||Ji.byteLength===0)&&(Ji=new Uint8Array(In.memory.buffer)),Ji}function Yc(t,e){const n=e(t.length*1,1)>>>0;return Xc().set(t,n/1),yf=t.length,n}let c0=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});c0.decode();const x1=2146435072;let oo=0;function j1(t,e){return oo+=e,oo>=x1&&(c0=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),c0.decode(),oo=e),c0.decode(Xc().subarray(t,t+e))}let yf=0,In;function k1(t,e){return In=t.exports,Ji=null,In.__wbindgen_start(),In}function y1(t){if(In!==void 0)return In;t!==void 0&&(Object.getPrototypeOf(t)===Object.prototype?{module:t}=t:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const e=b1();t instanceof WebAssembly.Module||(t=new WebAssembly.Module(t));const n=new WebAssembly.Instance(t,e);return k1(n)}function Tt(t,e,n){return Math.min(Math.max(t,e),n)}function q1(t,e,n,s,a,i,r){r=r!==1?0:r;const f=n/a,l=s/i;let c=0,h;const u=new Uint16Array(a),d=n*3;for(let p=0;pe&&(ut("Truncating too long decode map."),t.length=e),!1)}class on{static#e=new Uint8ClampedArray(3);constructor(e,n){this.name=e,this.numComps=n}getRgb(e,n,s=new Uint8ClampedArray(3)){return this.getRgbItem(e,n,s,0),s}getRgbHex(e,n){const s=this.getRgb(e,n,on.#e);return ft.makeHexColor(s[0],s[1],s[2])}getRgbItem(e,n,s,a){st("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,n,s,a,i,r,o){st("Should not call ColorSpace.getRgbBuffer")}getRgbItems(e,n,s,a,i){const{numComps:r}=this;for(let o=0,f=0;ou&&this.name!=="DeviceGray"&&this.name!=="DeviceRGB"){const p=o<=8?new Uint8Array(u):new Uint16Array(u);for(let b=0;b=.99554525?1:Tt((1+.055)*e**(1/2.4)-.055,0,1)}#h(e){return e<0?-this.#h(-e):e>8?((e+16)/116)**3:e*pn.#f}#d(e,n,s){if(e[0]===0&&e[1]===0&&e[2]===0){s[0]=n[0],s[1]=n[1],s[2]=n[2];return}const a=this.#h(0),i=a,r=this.#h(e[0]),o=a,f=this.#h(e[1]),l=a,c=this.#h(e[2]),h=(1-i)/(1-r),u=1-h,d=(1-o)/(1-f),p=1-d,m=(1-l)/(1-c),b=1-m;s[0]=n[0]*h+u,s[1]=n[1]*d+p,s[2]=n[2]*m+b}#m(e,n,s){if(e[0]===1&&e[2]===1){s[0]=n[0],s[1]=n[1],s[2]=n[2];return}const a=s;this.#o(pn.#e,n,a);const i=pn.#n;this.#l(e,a,i),this.#o(pn.#t,i,s)}#p(e,n,s){const a=s;this.#o(pn.#e,n,a);const i=pn.#n;this.#u(e,a,i),this.#o(pn.#t,i,s)}#b(e,n,s,a,i){const r=Tt(e[n]*i,0,1),o=Tt(e[n+1]*i,0,1),f=Tt(e[n+2]*i,0,1),l=r===1?1:r**this.GR,c=o===1?1:o**this.GG,h=f===1?1:f**this.GB,u=this.MXA*l+this.MXB*c+this.MXC*h,d=this.MYA*l+this.MYB*c+this.MYC*h,p=this.MZA*l+this.MZB*c+this.MZC*h,m=pn.#i;m[0]=u,m[1]=d,m[2]=p;const b=pn.#r;this.#m(this.whitePoint,m,b);const w=pn.#i;this.#d(this.blackPoint,b,w);const x=pn.#r;this.#p(pn.#a,w,x);const j=pn.#i;this.#o(pn.#s,x,j),s[a]=this.#c(j[0])*255,s[a+1]=this.#c(j[1])*255,s[a+2]=this.#c(j[2])*255}getRgbItem(e,n,s,a){this.#b(e,n,s,a,1)}getRgbBuffer(e,n,s,a,i,r,o){const f=1/((1<this.amax||this.bmin>this.bmax)&&(ut("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100)}#e(e){return e>=6/29?e**3:108/841*(e-4/29)}#t(e,n,s,a){return s+e*(a-s)/n}#s(e,n,s,a,i){let r=e[n],o=e[n+1],f=e[n+2];s!==!1&&(r=this.#t(r,s,0,100),o=this.#t(o,s,this.amin,this.amax),f=this.#t(f,s,this.bmin,this.bmax)),o>this.amax?o=this.amax:othis.bmax?f=this.bmax:fd1(this.#e,i[r]*255);break;case 3:a=ro.RGB8,this.#t=(i,r)=>m1(this.#e,i[r]*255,i[r+1]*255,i[r+2]*255);break;case 4:a=ro.CMYK,this.#t=(i,r)=>u1(this.#e,i[r]*255,i[r+1]*255,i[r+2]*255,i[r+3]*255);break;default:throw new Error(`Unsupported number of components: ${s}`)}if(this.#e=g1(e,a,h1.Perceptual),!this.#e)throw new Error("Failed to create ICC color space");Ls.#n||=new FinalizationRegistry(i=>{p1(i)}),Ls.#n.register(this,this.#e)}getRgbHex(e,n){const s=this.#t(e,n);return ft.makeHexColor(s>>16,s>>8&255,s&255)}getRgbItem(e,n,s,a){const i=this.#t(e,n);s[a]=i>>16,s[a+1]=i>>8&255,s[a+2]=i&255}getRgbItems(e,n,s,a,i){const{numComps:r}=this,o=n*r,f=new Uint8Array(o);for(let l=0;l=this.end?-1:this.bytes[this.pos++]}getBytes(e){const n=this.pos,s=e?Math.min(n+e,this.end):this.end;return this.pos=s,this.bytes.subarray(n,s)}getByteRange(e,n){return e<0&&(e=0),n>this.end&&(n=this.end),this.bytes.subarray(e,n)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,n,s=null){return new yt(this.bytes.buffer,e,n,s)}clone(){return new yt(this.bytes.buffer,this.start,this.length,this.dict?.clone())}}class hn extends yt{constructor(e,n=null){super(Bt(e),NaN,NaN,n)}}class Ko extends yt{constructor(){super(new Uint8Array(0))}}class H1 extends yt{progressiveDataLength=0;_lastSuccessfulEnsureByteChunk=-1;_loadedChunks=new Set;constructor(e,n,s){super(new Uint8Array(e),0,e,null),this.chunkSize=n,this.numChunks=Math.ceil(e/n),this.manager=s}getMissingChunks(){const e=[];for(let n=0,s=this.numChunks;n=this.end?this.numChunks:Math.floor(n/this.chunkSize);for(let i=s;ithis.numChunks)&&n!==this._lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(n))throw new kt(e,e+1);this._lastSuccessfulEnsureByteChunk=n}}ensureRange(e,n){if(e>=n||n<=this.progressiveDataLength)return;const s=Math.floor(e/this.chunkSize);if(s>this.numChunks)return;const a=Math.min(Math.floor((n-1)/this.chunkSize)+1,this.numChunks);for(let i=s;i=this.end?-1:(e>=this.progressiveDataLength&&this.ensureByte(e),this.bytes[this.pos++])}getBytes(e){const n=this.pos,s=e?Math.min(n+e,this.end):this.end;return s>this.progressiveDataLength&&this.ensureRange(n,s),this.pos=s,this.bytes.subarray(n,s)}getByteRange(e,n){return e<0&&(e=0),n>this.end&&(n=this.end),n>this.progressiveDataLength&&this.ensureRange(e,n),this.bytes.subarray(e,n)}makeSubStream(e,n,s=null){n?e+n>this.progressiveDataLength&&this.ensureRange(e,e+n):e>=this.progressiveDataLength&&this.ensureByte(e);function a(){}a.prototype=Object.create(this),a.prototype.getMissingChunks=function(){const r=this.chunkSize,o=Math.floor(this.start/r),f=Math.floor((this.end-1)/r)+1,l=[];for(let c=o;c(i.push(r),[])).push(n);if(i.length>0){const r=this.groupChunks(i);for(const o of r){const f=o.beginChunk*this.chunkSize,l=Math.min(o.endChunk*this.chunkSize,this.length);this.sendRequest(f,l).catch(a.reject)}}return a.promise.catch(r=>{if(!this.#e)throw r})}getStream(){return this.stream}requestRange(e,n){n=Math.min(n,this.length);const s=this.getBeginChunk(e),a=this.getEndChunk(n),i=[];for(let r=s;rs-a),this._requestChunks(n)}groupChunks(e){const n=[];let s=-1,a=-1;for(let i=0,r=e.length;i=0&&a+1!==o&&(n.push({beginChunk:s,endChunk:a+1}),s=o),i+1===e.length&&n.push({beginChunk:s,endChunk:o+1}),a=o}return n}onReceiveData(e){const{chunkSize:n,length:s,stream:a}=this,i=e.chunk,r=e.begin===void 0,o=r?a.progressiveDataLength:e.begin,f=o+i.byteLength,l=Math.floor(o/n),c=f0)&&h.push(p)}}}if(!this.disableAutoFetch&&this._requestsByChunk.size===0){let u;if(a.numChunksLoaded===1){const d=a.numChunks-1;a.hasChunk(d)||(u=d)}else u=a.nextEmptyChunk(c);Number.isInteger(u)&&this._requestChunks([u])}for(const u of h){const d=this._promisesByRequest.get(u);this._promisesByRequest.delete(u),d.resolve()}this.msgHandler.send("DocProgress",{loaded:Tt(a.numChunksLoaded*n,a.progressiveDataLength,s),total:s})}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.#e=!0,this.pdfStream?.cancelAllRequests(e);for(const n of this._promisesByRequest.values())n.reject(e);this.#t.reject(e)}}function eh(t){switch(t.kind){case sn.GRAYSCALE_1BPP:return Vo(t);case sn.RGB_24BPP:return M1(t)}return null}function Vo({src:t,srcPos:e=0,dest:n,width:s,height:a,nonBlackColor:i=4294967295,inverseDecode:r=!1}){const o=Tn.isLittleEndian?4278190080:255,[f,l]=r?[i,o]:[o,i],c=s>>3,h=s&7,u=f^l,d=t.length;n=new Uint32Array(n.buffer);let p=0;for(let m=0;m>7&1)&u,n[p+1]=f^-(x>>6&1)&u,n[p+2]=f^-(x>>5&1)&u,n[p+3]=f^-(x>>4&1)&u,n[p+4]=f^-(x>>3&1)&u,n[p+5]=f^-(x>>2&1)&u,n[p+6]=f^-(x>>1&1)&u,n[p+7]=f^-(x&1)&u}if(h===0)continue;const b=e>7-w&1)&u}return{srcPos:e,destPos:p}}function M1({src:t,srcPos:e=0,dest:n,destPos:s=0,width:a,height:i}){let r=0;const o=a*i*3,f=o>>2,l=new Uint32Array(t.buffer,e,f),c=Tn.isLittleEndian?4278190080:255;if(Tn.isLittleEndian){for(;r>>24|u<<8|c,n[s+2]=u>>>16|d<<16|c,n[s+3]=d>>>8|c}for(let h=r*4,u=e+o;h>>8|c,n[s+2]=u<<16|d>>>16|c,n[s+3]=d<<8|c}for(let h=r*4,u=e+o;hs||n>s)return!0;const a=e*n;if(this._hasMaxArea)return a>this.MAX_AREA;if(ai}static getReducePower(e,n,s=1/0){if(!Number.isInteger(e)||e<=0||!Number.isInteger(n)||n<=0)return 0;const a=e*n;if(!this.needsToBeResized(e,n))return a>s?Math.ceil(Math.log2(a/s)):0;const{MAX_DIM:i,MAX_AREA:r}=this,o=Math.max(e/i,n/i,Math.sqrt(a/Math.min(s,r)));return Math.max(0,Math.ceil(Math.log2(o)))}static getReducePowerForJPX(e,n,s){return this.getReducePower(e,n,2**30/(s*4))}static get MAX_DIM(){return ue(this,"MAX_DIM",this._guessMax(gl,_1,0,1))}static get MAX_AREA(){return this._hasMaxArea=!0,ue(this,"MAX_AREA",this._guessMax(this.#e,this.MAX_DIM,bl,0)**2)}static set MAX_AREA(e){e>=0&&(this._hasMaxArea=!0,ue(this,"MAX_AREA",e))}static setOptions({canvasMaxAreaInBytes:e=-1,isImageDecoderSupported:n=!1}){this._hasMaxArea||(this.MAX_AREA=e>>2),this.#t=n}static _areGoodDims(e,n){try{const s=new OffscreenCanvas(e,n),a=s.getContext("2d");a.fillRect(0,0,1,1);const i=a.getImageData(0,0,1,1).data[3];return s.width=s.height=1,i!==0}catch{return!1}}static _guessMax(e,n,s,a){for(;e+s+1ul){const x=this.#s();if(x)return x}const a=this._encodeBMP();let i,r;await vn.canUseImageDecoder?(i=new ImageDecoder({data:a,type:"image/bmp",preferAnimation:!1,transfer:[a.buffer]}),r=i.decode().catch(x=>(H(`BMP image decoding failed: ${x}`),createImageBitmap(new Blob([this._encodeBMP().buffer],{type:"image/bmp"})))).finally(()=>{i.close()})):r=createImageBitmap(new Blob([a.buffer],{type:"image/bmp"}));const{MAX_AREA:o,MAX_DIM:f}=vn,l=Math.max(n/f,s/f,Math.sqrt(n*s/o)),c=Math.max(l,2),h=Math.round(10*(l+1.25))/10/c,u=Math.floor(Math.log2(h)),d=new Array(u+2).fill(2);d[0]=c,d.splice(-1,1,h/(1<>o,l=a>>o;let c,h=a;try{c=new Uint8Array(r)}catch{let k=Math.floor(Math.log2(r+1));for(;;)try{c=new Uint8Array(2**k-1);break}catch{k-=1}h=Math.floor((2**k-1)/(s*4));const y=s*h*4;y>o;q>3,b=m+3&-4;if(m!==b){const w=new Uint8Array(b*n);let x=0;for(let j=0,k=n*m;ji&&(a=i)}else{for(;!this.eof;)this.readBlock(n);a=this.bufferLength}return this.pos=a,this.buffer.subarray(s,a)}async getImageData(e,n){if(!this.canAsyncDecodeImageFromBuffer)return this.isAsyncDecoder?this.decodeImage(null,e,n):this.getBytes(e,n);const s=await this.stream.asyncGetBytes();return this.decodeImage(s,e,n)}async asyncGetBytesFromDecompressionStream(e){this.stream.reset();const n=this.stream.isAsync?await this.stream.asyncGetBytes():this.stream.getBytes();try{const{readable:s,writable:a}=new DecompressionStream(e),i=a.getWriter();await i.ready,i.write(n).then(async()=>{await i.ready,await i.close()}).catch(()=>{});const r=[];let o=0;for await(const c of s)r.push(c),o+=c.byteLength;const f=new Uint8Array(o);let l=0;for(const c of r)f.set(c,l),l+=c.byteLength;return{decompressed:f,compressed:n}}catch{return{decompressed:null,compressed:n}}}reset(){this.pos=0}makeSubStream(e,n,s=null){if(n===void 0)for(;!this.eof;)this.readBlock();else{const a=e+n;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new yt(this.buffer,e,n,s)}clone(){for(;!this.eof;)this.readBlock();return new yt(this.buffer,0,this.bufferLength,this.dict?.clone())}getBaseStreams(){return this.stream?this.stream.getBaseStreams():null}}class N1 extends jn{constructor(e,n=null){e=e.filter(a=>a instanceof Pe&&!a.isImageStream);let s=0;for(const a of e)s+=a instanceof jn?a._rawMinBufferLength:a.length;super(s),this.streams=e,this._onError=n}readBlock(){const e=this.streams;if(e.length===0){this.eof=!0;return}const n=e.shift();let s;try{s=n.getBytes()}catch(o){if(this._onError){this._onError(o,n.dict?.objId);return}throw o}const a=this.bufferLength,i=a+s.length;this.ensureBuffer(i).set(s,a),this.bufferLength=i}getBaseStreams(){const e=[];for(const n of this.streams){const s=n.getBaseStreams();s&&e.push(...s)}return e.length>0?e:null}}class ht{static parse({cs:e,xref:n,resources:s=null,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r,asyncIfNotCached:o=!1}){const f={xref:n,resources:s,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r};let l,c,h;if(e instanceof Q){c=e;const u=i.getByRef(c)||r.getByRef(c);if(u)return u;e=n.fetch(e)}if(e instanceof J){l=e.name;const u=r.getByName(l);if(u)return u}try{h=this.#t(e,f)}catch(u){if(o&&!(u instanceof kt))return Promise.reject(u);throw u}return(l||c)&&(r.set(l,c,h),c&&i.set(null,c,h)),o?Promise.resolve(h):h}static#e(e,n){const{globalColorSpaceCache:s}=n;let a;if(e instanceof Q){a=e;const r=s.getByRef(a);if(r)return r}const i=this.#t(e,n);return a&&s.set(null,a,i),i}static#t(e,n){const{xref:s,resources:a,pdfFunctionFactory:i,globalColorSpaceCache:r}=n;if(e=s.fetchIfRef(e),e instanceof J)switch(e.name){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"DeviceRGBA":return this.rgba;case"CMYK":case"DeviceCMYK":return this.cmyk;case"Pattern":return new pl(null);default:if(a instanceof B){const o=a.get("ColorSpace");if(o instanceof B){const f=o.get(e.name);if(f){if(f instanceof J)return this.#t(f,n);e=f;break}}}return H(`Unrecognized ColorSpace: ${e.name}`),this.gray}if(Array.isArray(e)){const o=s.fetchIfRef(e[0]).name;let f,l,c,h,u,d;switch(o){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"CMYK":case"DeviceCMYK":return this.cmyk;case"CalGray":return f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint"),d=f.get("Gamma"),new F1(h,u,d);case"CalRGB":f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint"),d=f.getArray("Gamma");const p=f.getArray("Matrix");return new pn(h,u,d,p);case"ICCBased":const m=e[1]instanceof Q;if(m){const A=r.getByRef(e[1]);if(A)return A}const b=s.fetchIfRef(e[1]),w=b.dict;if(l=w.get("N"),Ls.isUsable)try{const A=new Ls(b.getBytes(),"ICCBased",l);return m&&r.set(null,e[1],A),A}catch(A){if(A instanceof kt)throw A;H(`ICCBased color space (${e[1]}): "${A}".`)}const x=w.getRaw("Alternate");if(x){const A=this.#e(x,n);if(A.numComps===l)return A;H("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(l===1)return this.gray;if(l===3)return this.rgb;if(l===4)return this.cmyk;break;case"Pattern":return c=e[1]||null,c&&=this.#e(c,n),new pl(c);case"I":case"Indexed":c=this.#e(e[1],n);const j=Tt(s.fetchIfRef(e[2]),0,255),k=s.fetchIfRef(e[3]);return new I1(c,j,k);case"Separation":case"DeviceN":const y=s.fetchIfRef(e[1]);l=Array.isArray(y)?y.length:1,c=this.#e(e[2],n);const q=i.create(e[3]);return new A1(l,c,q);case"Lab":f=s.fetchIfRef(e[1]),h=f.getArray("WhitePoint"),u=f.getArray("BlackPoint");const v=f.getArray("Range");return new R1(h,u,v);default:return H(`Unimplemented ColorSpace object: ${o}`),this.gray}}return H(`Unrecognized ColorSpace object: ${e}`),this.gray}static get gray(){return ue(this,"gray",new C1)}static get rgb(){return ue(this,"rgb",new T1)}static get rgba(){return ue(this,"rgba",new B1)}static get cmyk(){if(mr.isUsable)try{return ue(this,"cmyk",new mr)}catch{H("CMYK fallback: DeviceCMYK")}return ue(this,"cmyk",new Qc)}}class Xn extends Bn{constructor(e){super(e,"JpegError")}}class $o extends Bn{constructor(e,n){super(e,"DNLMarkerError"),this.scanLines=n}}class th extends Bn{constructor(e){super(e,"EOIMarkerError")}}const nr=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]),Pr=4017,Nr=799,Or=3406,Lr=2276,zr=1567,Ur=3784,Qa=5793,Gr=2896;function O1(t,e){let n=0,s,a,i=16;for(;i>0&&!t[i-1];)i--;const r=[{children:[],index:0}];let o=r[0],f;for(s=0;s0;)o=r.pop();for(o.index++,r.push(o);r.length<=s;)r.push(f={children:[],index:0}),o.children[o.index]=f.children,o=f;n++}s+10)return m--,p>>m&1;if(p=t[n++],p===255){const L=t[n++];if(L){if(L===220&&c){n+=2;const z=e.getUint16(n);if(n+=2,z>0&&z!==s.scanLines)throw new $o("Found DNL marker (0xFFDC) while parsing scan data",z)}else if(L===217){if(c){const z=N*(s.precision===8?8:0);if(z>0&&Math.round(s.scanLines/z)>=5)throw new $o("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",z)}throw new th("Found EOI marker (0xFFD9) while parsing scan data")}throw new Xn(`unexpected marker ${(p<<8|L).toString(16)}`)}}return m=7,p>>>7}function w(L){let z=L;for(;;){switch(z=z[b()],typeof z){case"number":return z;case"object":continue}throw new Xn("invalid huffman sequence")}}function x(L){let z=0;for(;L>0;)z=z<<1|b(),L--;return z}function j(L){if(L===1)return b()===1?1:-1;const z=x(L);return z>=1<>4;if(Fe===0){if(Ee<15)break;he+=16;continue}he+=Ee;const _e=nr[he];L.blockData[z+_e]=j(Fe),he++}}function y(L,z){const te=w(L.huffmanTableDC),je=te===0?0:j(te)<0){v--;return}let te=r;const je=o;for(;te<=je;){const he=w(L.huffmanTableAC),ie=he&15,Fe=he>>4;if(ie===0){if(Fe<15){v=x(Fe)+(1<>4,ie===0)he<15?(v=x(he)+(1<0){for(me=0;me0?"unexpected":"excessive";H(`decodeScan - ${z} MCU data, current marker is: ${$e.invalid}`),n=$e.offset}if($e.marker>=65488&&$e.marker<=65495)n+=2;else break}return n-d}function z1(t,e,n){const s=t.quantizationTable,a=t.blockData;let i,r,o,f,l,c,h,u,d,p,m,b,w,x,j,k,y;if(!s)throw new Xn("missing required Quantization Table.");for(let q=0;q<64;q+=8){if(d=a[e+q],p=a[e+q+1],m=a[e+q+2],b=a[e+q+3],w=a[e+q+4],x=a[e+q+5],j=a[e+q+6],k=a[e+q+7],d*=s[q],(p|m|b|w|x|j|k)===0){y=Qa*d+512>>10,n[q]=y,n[q+1]=y,n[q+2]=y,n[q+3]=y,n[q+4]=y,n[q+5]=y,n[q+6]=y,n[q+7]=y;continue}p*=s[q+1],m*=s[q+2],b*=s[q+3],w*=s[q+4],x*=s[q+5],j*=s[q+6],k*=s[q+7],i=Qa*d+128>>8,r=Qa*w+128>>8,o=m,f=j,l=Gr*(p-k)+128>>8,u=Gr*(p+k)+128>>8,c=b<<4,h=x<<4,i=i+r+1>>1,r=i-r,y=o*Ur+f*zr+128>>8,o=o*zr-f*Ur+128>>8,f=y,l=l+h+1>>1,h=l-h,u=u+c+1>>1,c=u-c,i=i+f+1>>1,f=i-f,r=r+o+1>>1,o=r-o,y=l*Lr+u*Or+2048>>12,l=l*Or-u*Lr+2048>>12,u=y,y=c*Nr+h*Pr+2048>>12,c=c*Pr-h*Nr+2048>>12,h=y,n[q]=i+u,n[q+7]=i-u,n[q+1]=r+h,n[q+6]=r-h,n[q+2]=o+c,n[q+5]=o-c,n[q+3]=f+l,n[q+4]=f-l}for(let q=0;q<8;++q){if(d=n[q],p=n[q+8],m=n[q+16],b=n[q+24],w=n[q+32],x=n[q+40],j=n[q+48],k=n[q+56],(p|m|b|w|x|j|k)===0){y=Qa*d+8192>>14,y<-2040?y=0:y>=2024?y=255:y=y+2056>>4,a[e+q]=y,a[e+q+8]=y,a[e+q+16]=y,a[e+q+24]=y,a[e+q+32]=y,a[e+q+40]=y,a[e+q+48]=y,a[e+q+56]=y;continue}i=Qa*d+2048>>12,r=Qa*w+2048>>12,o=m,f=j,l=Gr*(p-k)+2048>>12,u=Gr*(p+k)+2048>>12,c=b,h=x,i=(i+r+1>>1)+4112,r=i-r,y=o*Ur+f*zr+2048>>12,o=o*zr-f*Ur+2048>>12,f=y,l=l+h+1>>1,h=l-h,u=u+c+1>>1,c=u-c,i=i+f+1>>1,f=i-f,r=r+o+1>>1,o=r-o,y=l*Lr+u*Or+2048>>12,l=l*Or-u*Lr+2048>>12,u=y,y=c*Nr+h*Pr+2048>>12,c=c*Pr-h*Nr+2048>>12,h=y,d=i+u,k=i-u,p=r+h,j=r-h,m=o+c,x=o-c,b=f+l,w=f-l,d<16?d=0:d>=4080?d=255:d>>=4,p<16?p=0:p>=4080?p=255:p>>=4,m<16?m=0:m>=4080?m=255:m>>=4,b<16?b=0:b>=4080?b=255:b>>=4,w<16?w=0:w>=4080?w=255:w>>=4,x<16?x=0:x>=4080?x=255:x>>=4,j<16?j=0:j>=4080?j=255:j>>=4,k<16?k=0:k>=4080?k=255:k>>=4,a[e+q]=d,a[e+q+8]=p,a[e+q+16]=m,a[e+q+24]=b,a[e+q+32]=w,a[e+q+40]=x,a[e+q+48]=j,a[e+q+56]=k}}function U1(t,e){const n=e.blocksPerLine,s=e.blocksPerColumn,a=new Int16Array(64);for(let i=0;i=a)return null;const r=e.getUint16(n);if(r>=65472&&r<=65534)return{invalid:null,marker:r,offset:n};let o=e.getUint16(i);for(;!(o>=65472&&o<=65534);){if(++i>=a)return null;o=e.getUint16(i)}return{invalid:r.toString(16),marker:o,offset:i}}function G1(t){const e=Math.ceil(t.samplesPerLine/8/t.maxH),n=Math.ceil(t.scanLines/8/t.maxV);for(const s of t.components){const a=Math.ceil(Math.ceil(t.samplesPerLine/8)*s.h/t.maxH),i=Math.ceil(Math.ceil(t.scanLines/8)*s.v/t.maxV),r=e*s.h,f=64*(n*s.v)*(r+1);s.blockData=new Int16Array(f),s.blocksPerLine=a,s.blocksPerColumn=i}t.mcusPerLine=e,t.mcusPerColumn=n}function wl(t,e,n){const s=e.getUint16(n);n+=2;let a=n+s-2;const i=O0(t,e,a,n);i?.invalid&&(H("readDataBlock - incorrect length, current marker is: "+i.invalid),a=i.offset);const r=t.subarray(n,a);return{appData:r,oldOffset:n,newOffset:n+r.length}}function W1(t,e,n){const s=e.getUint16(n);n+=2;const a=n+s-2,i=O0(t,e,a,n);return i?.invalid?i.offset:a}class xl{constructor(e){this._colorTransform=e?.colorTransform??-1}static canUseImageDecoder(e,n=-1){const s=new DataView(e.buffer,e.byteOffset,e.byteLength),a={width:0,height:0,exifStart:0,exifEnd:0};let i=0,r=null,o=s.getUint16(i);if(i+=2,o!==65496)throw new Xn("SOI not found");o=s.getUint16(i),i+=2;e:for(;o!==65497;){switch(o){case 65505:const{appData:f,oldOffset:l,newOffset:c}=wl(e,s,i);if(i=c,f[0]===69&&f[1]===120&&f[2]===105&&f[3]===102&&f[4]===0&&f[5]===0){if(a.exifStart)throw new Xn("Duplicate EXIF-blocks found.");a.exifStart=l+6,a.exifEnd=c}o=s.getUint16(i),i+=2;continue;case 65472:case 65473:case 65474:a.height=s.getUint16(i+3),a.width=s.getUint16(i+5),r=e[i+7];break e;case 65535:e[i]!==255&&i--;break}i=W1(e,s,i),o=s.getUint16(i),i+=2}return r===4||r===3&&n===0?null:a}parse(e,{dnlScanLines:n=null}={}){const s=new DataView(e.buffer,e.byteOffset,e.byteLength),a=e.length-1;let i=0,r=null,o=null,f,l,c=0;const h=[],u=[],d=[];let p=s.getUint16(i);if(i+=2,p!==65496)throw new Xn("SOI not found");p=s.getUint16(i),i+=2;e:for(;p!==65497;){let m,b,w;switch(p){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{appData:x,newOffset:j}=wl(e,s,i);i=j,p===65504&&x[0]===74&&x[1]===70&&x[2]===73&&x[3]===70&&x[4]===0&&(r={version:{major:x[5],minor:x[6]},densityUnits:x[7],xDensity:x[8]<<8|x[9],yDensity:x[10]<<8|x[11],thumbWidth:x[12],thumbHeight:x[13],thumbData:x.subarray(14,14+3*x[12]*x[13])}),p===65518&&x[0]===65&&x[1]===100&&x[2]===111&&x[3]===98&&x[4]===101&&(o={version:x[5]<<8|x[6],flags0:x[7]<<8|x[8],flags1:x[9]<<8|x[10],transformCode:x[11]});break;case 65499:const k=s.getUint16(i);i+=2;const y=k+i-2;let q;for(;i>4===0)for(b=0;b<64;b++)q=nr[b],ye[q]=e[i++];else if(ee>>4===1)for(b=0;b<64;b++)q=nr[b],ye[q]=s.getUint16(i),i+=2;else throw new Xn("DQT - invalid table spec");h[ee&15]=ye}break;case 65472:case 65473:case 65474:if(f)throw new Xn("Only single frame JPEGs supported");i+=2,f={},f.extended=p===65473,f.progressive=p===65474,f.precision=e[i++];const v=s.getUint16(i);i+=2,f.scanLines=n||v,f.samplesPerLine=s.getUint16(i),i+=2,f.components=[],f.componentIds={};const A=e[i++];let S=0,F=0;for(m=0;m>4,Be=e[i+1]&15;S>4===0?d:u)[ee&15]=O1(ye,ae)}break;case 65501:i+=2,l=s.getUint16(i),i+=2;break;case 65498:const N=++c===1&&!n;i+=2;const D=e[i++],$=[];for(m=0;m>4],Be.huffmanTableAC=u[ae&15],$.push(Be)}const K=e[i++],oe=e[i++],me=e[i++];try{const ee=L1(e,s,i,f,$,l,K,oe,me>>4,me&15,N);i+=ee}catch(ee){if(ee instanceof $o)return H(`${ee.message} -- attempting to re-parse the JPEG image.`),this.parse(e,{dnlScanLines:ee.scanLines});if(ee instanceof th){H(`${ee.message} -- ignoring the rest of the image data.`);break e}throw ee}break;case 65500:i+=4;break;case 65535:e[i]!==255&&i--;break;default:const X=O0(e,s,i-2,i-3);if(X?.invalid){H("JpegImage.parse - unexpected data, current marker is: "+X.invalid),i=X.offset;break}if(!X||i>=a){H("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new Xn("JpegImage.parse - unknown marker: "+p.toString(16))}i4)throw new Xn("Unsupported color mode");const i=this.#e(e,n);if(this.numComponents===1&&(s||a)){const r=i.length*(s?4:3),o=new Uint8ClampedArray(r);let f=0;if(s)D1(i,new Uint32Array(o.buffer));else for(const l of i)o[f++]=l,o[f++]=l,o[f++]=l;return o}else if(this.numComponents===3&&this._isColorConversionNeeded){if(s){const r=new Uint8ClampedArray(i.length/3*4);return this._convertYccToRgba(i,r)}return this._convertYccToRgb(i)}else if(this.numComponents===4){if(this._isColorConversionNeeded)return s?this._convertYcckToRgba(i):a?this._convertYcckToRgb(i):this._convertYcckToCmyk(i);if(s)return this._convertCmykToRgba(i);if(a)return this._convertCmykToRgb(i)}return i}}class Ci extends jn{static#e=Tn.isImageDecoderSupported;constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.maybeLength=n,this.params=s}static get canUseImageDecoder(){return ue(this,"canUseImageDecoder",this.#e?ImageDecoder.isTypeSupported("image/jpeg"):Promise.resolve(!1))}static setOptions({isImageDecoderSupported:e=!1}){this.#e=e}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){this.decodeImage()}get jpegOptions(){const e={colorTransform:void 0};if(this.params instanceof B){const n=this.params.get("ColorTransform");Number.isInteger(n)&&(e.colorTransform=n)}return ue(this,"jpegOptions",e)}#t(e){for(let n=0,s=e.length-1;n0&&(e=e.subarray(n));break}return e}decodeImage(e){if(this.eof)return this.buffer;e=this.#t(e||this.bytes);const n=new xl(this.jpegOptions);n.parse(e);const s=n.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB});return this.buffer=s,this.bufferLength=s.length,this.eof=!0,this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}async getTransferableImage(e,n){if(!await Ci.canUseImageDecoder)return null;const s=this.jpegOptions;let a;try{const i=this.canAsyncDecodeImageFromBuffer&&await this.stream.asyncGetBytes()||this.bytes;if(!i)return null;let r=this.#t(i);const o=xl.canUseImageDecoder(r,s.colorTransform);if(!o)return null;const{width:f,height:l}=o,c=vn.getReducePower(f,l);if((f!==e||l!==n)&&(c||!l))return null;o.exifStart&&(r=r.slice(),r.fill(0,o.exifStart,o.exifEnd));const h={data:r,type:"image/jpeg",preferAnimation:!1};if(c){const u=2**c;h.desiredWidth=Math.ceil(f/u),h.desiredHeight=Math.ceil(l/u)}return a=new ImageDecoder(h),(await a.decode()).image}catch(i){return H(`getTransferableImage - failed: "${i}".`),null}finally{a?.close()}}get isImageStream(){return!0}}function Br(t,e,n,s,a){let i=t;for(let r=0,o=e.length-1;r1e3&&(p=Math.max(p,w),x+=b+2,w=0,b=0),m.push({transform:S,x:w,y:x,w:F.width,h:F.height}),w+=F.width+2,b=Math.max(b,F.height)}const j=Math.max(p,w)+1,k=x+b+1,y=new Uint8Array(j*k*4),q=j<<2;for(let A=0;A=0;)S[N-4]=S[N],S[N-3]=S[N+1],S[N-2]=S[N+2],S[N-1]=S[N+3],S[N+F]=S[N+F-4],S[N+F+1]=S[N+F-3],S[N+F+2]=S[N+F-2],S[N+F+3]=S[N+F-1],N-=q}const v={width:j,height:k};if(e.isOffscreenCanvasSupported){const A=new OffscreenCanvas(j,k);A.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(y.buffer),j,k),0,0),v.bitmap=A.transferToImageBitmap(),v.data=null}else v.kind=sn.RGBA_32BPP,v.data=y;return o.splice(c,d*4,C.paintInlineImageXObjectGroup),f.splice(c,d*4,[v,m]),c+1});Br(Ua,[C.save,C.transform,C.paintImageMaskXObject,C.restore],null,function(e,n){const s=e.fnArray,a=e.iCurr-3,i=(n-a)%4;switch(i){case 0:return s[n]===C.save;case 1:return s[n]===C.transform;case 2:return s[n]===C.paintImageMaskXObject;case 3:return s[n]===C.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${i}`)},function(e,n){const r=e.fnArray,o=e.argsArray,f=e.iCurr,l=f-3,c=f-2,h=f-1;let u=Math.floor((n-l)/4);if(u<10)return n-(n-l)%4;let d=!1,p,m;const b=o[h][0],w=o[c][0],x=o[c][1],j=o[c][2],k=o[c][3];if(x===j){d=!0,p=c+4;let y=h+4;for(let q=1;q=4&&a[o-4]===a[f]&&a[o-3]===a[l]&&a[o-2]===a[c]&&a[o-1]===a[h]&&i[o-4][0]===u&&i[o-4][1]===d&&(p++,m-=5);let b=m+4;for(let w=1;w{const e=t.argsArray,n=t.iCurr-1,s=e[n][0];if(s!==C.stroke&&s!==C.closeStroke&&s!==C.fillStroke&&s!==C.eoFillStroke&&s!==C.closeFillStroke&&s!==C.closeEOFillStroke)return!0;const a=t.iCurr-2,i=e[a];return i[0]===1&&i[1]===0&&i[2]===0&&i[3]===1},()=>!1,(t,e)=>{const{fnArray:n,argsArray:s}=t,a=t.iCurr,i=a-3,r=a-2,o=a-1,f=s[o],l=s[r],[,[c],h]=f;if(h){const u=w0.slice();ft.axialAlignedBoundingBox(h,l,u),h.set(u);for(let d=0,p=c.length;d=s)break}if(a=(a||Ua)[e[n]],!a||Array.isArray(a)){n++;continue}if(r.iCurr=n,n++,a.checkFn&&!(0,a.checkFn)(r)){a=null;continue}i=a,a=null}this.state=a,this.match=i,this.lastProcessed=n}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 Cn{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;static isOffscreenCanvasSupported=!1;constructor(e=0,n){this._streamSink=n,this.fnArray=[],this.argsArray=[],this.optimizer=n&&!(e&an.OPLIST)?new K1(this):new nh(this),this.dependencies=new Set,this._totalLength=0,this.weight=0,this._resolved=n?null:Promise.resolve()}static setOptions({isOffscreenCanvasSupported:e}){this.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,n){this.optimizer.push(e,n),this.weight++,this._streamSink&&(this.weight>=Cn.CHUNK_SIZE?this.flush():this.weight>=Cn.CHUNK_SIZE_ABOUT&&(e===C.restore||e===C.endText)&&this.flush())}addImageOps(e,n,s,a=!1){a&&(this.addOp(C.save),this.addOp(C.setGState,[[["SMask",!1]]])),s!==void 0&&this.addOp(C.beginMarkedContentProps,["OC",s]),this.addOp(e,n),s!==void 0&&this.addOp(C.endMarkedContent,[]),a&&this.addOp(C.restore)}addDependency(e){this.dependencies.has(e)||(this.dependencies.add(e),this.addOp(C.dependency,[e]))}addDependencies(e){for(const n of e)this.addDependency(n)}addOpList(e){if(!(e instanceof Cn)){H('addOpList - ignoring invalid "opList" parameter.');return}for(const n of e.dependencies)this.dependencies.add(n);for(let n=0,s=e.length;n=c||x<=0){ut("Bad shading domain.");return}const{numComps:k}=f,y=new Float32Array(1),q=sh(w,k),v=new Float32Array(q*k),A=new Uint8ClampedArray(w*3);for(let tt=0;tto?o:e,n=n>f?f:n,s=s{a[r++]=t[l*2],a[r++]=t[l*2+1],i[o++]=e[c*4],i[o++]=e[c*4+1],i[o++]=e[c*4+2],o++};for(const l of n){const c=l.coords,h=l.colors;if(l.type===ls.TRIANGLES)for(let u=0,d=c.length;u0&&o.getRgbItems(F,me,q,X,1);const ee=new Uint32Array(k);for(let ye=0;ye0)return!0;const e=this.stream.getByte();return e<0?!1:(this.buffer=e,this.bufferLength=8,!0)}readBits(e){const{stream:n}=this;let{buffer:s,bufferLength:a}=this;if(e===32){if(a===0)return n.getInt32()>>>0;s=s<<24|n.getByte()<<16|n.getByte()<<8|n.getByte();const i=n.getByte();return this.buffer=i&(1<>a)>>>0}if(e===8&&a===0)return n.getByte();for(;a>a}align(){this.buffer=0,this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const{bitsPerCoordinate:e,decode:n}=this.context,s=this.readBits(e),a=this.readBits(e),i=e<32?1/((1<Array.from({length:t+1},(e,n)=>{const s=n/t,a=1-s;return new Float32Array([a**3,3*s*a**2,3*s**2*a,s**3])}))}function Q1(){rh?.clear()}class Qs extends pi{static MIN_SPLIT_PATCH_CHUNKS_AMOUNT=3;static MAX_SPLIT_PATCH_CHUNKS_AMOUNT=20;static TRIANGLE_DENSITY=20;constructor(e,n,s,a,i,r){if(super(),!(e instanceof Pe))throw new Y("Mesh data is not a stream");const o=e.dict;this.shadingType=o.get("ShadingType"),this.bbox=Cs(o.getArray("BBox"),null);const f=ht.parse({cs:o.getRaw("CS")||o.getRaw("ColorSpace"),xref:n,resources:s,pdfFunctionFactory:a,globalColorSpaceCache:i,localColorSpaceCache:r});this.background=o.has("Background")?f.getRgb(o.get("Background"),0):null;const l=o.getRaw("Function"),c=l?a.create(l,!0):null;this.coords=[],this.colors=[],this.figures=[];const h={bitsPerCoordinate:o.get("BitsPerCoordinate"),bitsPerComponent:o.get("BitsPerComponent"),bitsPerFlag:o.get("BitsPerFlag"),decode:o.getArray("Decode"),colorFn:c,colorSpace:f,numComps:c?1:f.numComps},u=new J1(e,h);let d=!1;switch(this.shadingType){case wn.FREE_FORM_MESH:this._decodeType4Shading(u);break;case wn.LATTICE_FORM_MESH:const p=o.get("VerticesPerRow")|0;if(p<2)throw new Y("Invalid VerticesPerRow");this._decodeType5Shading(u,p);break;case wn.COONS_PATCH_MESH:this._decodeType6Shading(u),d=!0;break;case wn.TENSOR_PATCH_MESH:this._decodeType7Shading(u),d=!0;break;default:st("Unsupported mesh type.");break}if(d){this._updateBounds();for(let p=0,m=this.figures.length;p>>0}function Wr(t,e){return e===1?String.fromCharCode(t[0],t[1]):e===3?String.fromCharCode(t[0],t[1],t[2],t[3]):String.fromCharCode(...t.subarray(0,e+1))}function kn(t,e,n){let s=0;for(let a=n;a>=0;a--)s+=t[a]+e[a],t[a]=s&255,s>>=8}function ya(t,e){let n=1;for(let s=e;s>=0&&n>0;s--)n+=t[s],t[s]=n&255,n>>=8}const Za=16,ed=19;class td extends yt{tmpBuf=new Uint8Array(ed);constructor(e){super(e,0,e.length,null)}readNumber(){let e=0,n;do{const s=this.getByte();if(s<0)throw new Y("unexpected EOF in bcmap");n=!(s&128),e=e<<7|s&127}while(!n);return e}readSigned(){const e=this.readNumber();return e&1?~(e>>>1):e>>>1}readHex(e,n){e.set(this.getBytes(n+1))}readHexNumber(e,n){let s;const a=this.tmpBuf;let i=0;do{const l=this.getByte();if(l<0)throw new Y("unexpected EOF in bcmap");s=!(l&128),a[i++]=l&127}while(!s);let r=n,o=0,f=0;for(;r>=0;){for(;f<8&&a.length>0;)o|=a[--i]<>=8,f-=8}}readHexSigned(e,n){this.readHexNumber(e,n);const s=e[n]&1?255:0;let a=0;for(let i=0;i<=n;i++)a=(a&1)<<8|e[i],e[i]=a>>1^s}readString(){const e=this.readNumber(),n=new Array(e);for(let s=0;s=0;){const p=d>>5;if(p===7){switch(d&31){case 0:a.readString();break;case 1:r=a.readString();break}continue}const m=!!(d&16),b=d&15;if(b+1>Za)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const w=1,x=a.readNumber();switch(p){case 0:a.readHex(o,b),a.readHexNumber(f,b),kn(f,o,b),n.addCodespaceRange(b+1,dn(o,b),dn(f,b));for(let j=1;j=0;--f)o[r+f]=c&255,c>>=8}}}class ad extends jn{constructor(e,n){n&&(n*=.5),super(n),this.stream=e,this.dict=e.dict,this.firstDigit=-1}readBlock(){const n=this.stream.getBytes(8e3);if(!n.length){this.eof=!0;return}const s=n.length+1>>1,a=this.ensureBuffer(this.bufferLength+s);let i=this.bufferLength,r=this.firstDigit;for(const o of n){let f;if(o>=48&&o<=57)f=o&15;else if(o>=65&&o<=70||o>=97&&o<=102)f=(o&15)+9;else if(o===62){this.eof=!0;break}else continue;r<0?r=f:(a[i++]=r<<4|f,r=-1)}r>=0&&this.eof&&(a[i++]=r<<4,r=-1),this.firstDigit=r,this.bufferLength=i}}let id=()=>{const t=Int32Array.from([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]),e=Int32Array.from([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),n=Int32Array.from([0,3,2,1,0,0,0,0,0,0,3,3,3,3,3,3]),s=Int32Array.from([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),a=Int32Array.from([131072,131076,131075,196610,131072,131076,131075,262145,131072,131076,131075,196610,131072,131076,131075,262149]),i=Int32Array.from([1,5,9,13,17,25,33,41,49,65,81,97,113,145,177,209,241,305,369,497,753,1265,2289,4337,8433,16625]),r=Int32Array.from([2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,7,8,9,10,11,12,13,24]),o=Int16Array.from([0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9,10,12,14,24]),f=Int16Array.from([0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9,10,24]),l=new Int16Array(2816);d(l);function c(g){let T=-1,R=16,P=g;for(;R>0;){let O=P>>R;O!==0&&(T+=R,P=O),R=R>>1}return T+P}function h(g,T,R){return 16+T+2*(R<>R)+4,ne=c(O)-1;return((ne-1<<1|O>>ne&1)-1<>6,ne=-4;O>=2&&(O-=2,ne=0);const xe=(170064>>O*2&3)<<3|P>>3&7,ve=(156228>>O*2&3)<<3|P&7,Ge=R[ve],Ze=ne+Math.min(Ge,5)-2,We=P*4;g[We]=o[xe]|f[ve]<<8,g[We+1]=T[xe],g[We+2]=R[ve],g[We+3]=Ze}}function p(g){const T=g.isLargeWindow;if(g.isLargeWindow=0,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,1)===0)return 16;let R=ce(g,3);return R!==0?17+R:(R=ce(g,3),R!==0?R===1?T===0||(g.isLargeWindow=1,ce(g,1)===1)||(R=ce(g,6),R<10||R>30)?-1:R:8+R:17)}function m(g,T){return g.runningState!==1?Ie(g,-24):(g.cdNumChunks===0&&(g.cdChunks=new Array(16),g.cdChunkOffsets=new Int32Array(16),g.cdBlockBits=-1),g.cdNumChunks===15?Ie(g,-27):(g.cdChunks[g.cdNumChunks]=T,g.cdNumChunks++,g.cdTotalSize+=T.length,g.cdChunkOffsets[g.cdNumChunks]=g.cdTotalSize,0))}function b(g){if(g.runningState!==0)return Ie(g,-26);g.blockTrees=new Int32Array(3091),g.blockTrees[0]=7,g.distRbIdx=3;let T=u(g,2147483644,3,120);if(T<0)return T;const R=T;return g.distExtraBits=new Int8Array(R),g.distOffset=new Int32Array(R),T=qe(g),T<0?T:(g.runningState=1,0)}function w(g){return g.runningState===0?Ie(g,-25):(g.runningState>0&&(g.runningState=11),0)}function x(g){if(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,1)!==0){const T=ce(g,3);return T===0?1:ce(g,T)+(1<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.inputEnd=ce(g,1),g.metaBlockLength=0,g.isUncompressed=0,g.isMetadata=0,g.inputEnd!==0&&ce(g,1)!==0)return 0;const T=ce(g,2)+4;if(T===7){if(g.isMetadata=1,ce(g,1)!==0)return Ie(g,-6);const R=ce(g,2);if(R===0)return 0;for(let P=0;P=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const O=ce(g,8);if(O===0&&P+1===R&&R>1)return Ie(g,-8);g.metaBlockLength+=O<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const P=ce(g,4);if(P===0&&R+1===T&&T>4)return Ie(g,-8);g.metaBlockLength+=P<>>R.bitOffset;P+=O&255;const ne=g[P]>>16,xe=g[P]&65535;if(ne<=8)return R.bitOffset+=ne,xe;P+=xe;const ve=(1<>>8,R.bitOffset+=(g[P]>>16)+8,g[P]&65535}function y(g,T,R){R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const P=k(g,T,R),O=r[P];return R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16),i[P]+(O<=16?ce(R,O):Me(R,O))}function q(g,T){let R=T;const P=g[R];for(;R>0;)g[R]=g[R-1],R--;g[0]=P}function v(g,T){const R=new Int32Array(256);for(let P=0;P<256;++P)R[P]=P;for(let P=0;P0;){if(P.halfOffset>2030){const mt=Z(P);if(mt<0)return mt}P.bitOffset>=16&&(P.accumulator32=P.shortBuffer[P.halfOffset++]<<16|P.accumulator32>>>16,P.bitOffset-=16);const at=P.accumulator32>>>P.bitOffset&31;P.bitOffset+=Ze[at]>>16;const ct=Ze[at]&65535;if(ct<16)xe=0,R[O++]=ct,ct!==0&&(ne=ct,Ge-=32768>>ct);else{const mt=ct-14;let Dt=0;ct===16&&(Dt=ne),ve!==Dt&&(xe=0,ve=Dt);const as=xe;xe>0&&(xe-=2,xe=xe<=16&&(P.accumulator32=P.shortBuffer[P.halfOffset++]<<16|P.accumulator32>>>16,P.bitOffset-=16),xe+=ce(P,mt)+3;const On=xe-as;if(O+On>T)return Ie(P,-2);for(let tn=0;tn=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ct=ce(O,ve);if(ct>=T)return Ie(O,-15);xe[at]=ct}const Ze=S(O,xe,Ge);if(Ze<0)return Ze;let We=Ge;switch(Ge===4&&(We+=ce(O,1)),We){case 1:ne[xe[0]]=1;break;case 2:ne[xe[0]]=1,ne[xe[1]]=1;break;case 3:ne[xe[0]]=1,ne[xe[1]]=2,ne[xe[2]]=2;break;case 4:ne[xe[0]]=2,ne[xe[1]]=2,ne[xe[2]]=2,ne[xe[3]]=2;break;case 5:ne[xe[0]]=1,ne[xe[1]]=2,ne[xe[2]]=3,ne[xe[3]]=3;break}return de(R,P,8,ne,T)}function M(g,T,R,P,O){const ne=new Int32Array(g),xe=new Int32Array(18);let ve=32,Ge=0;for(let We=T;We<18;++We){const at=e[We];O.bitOffset>=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ct=O.accumulator32>>>O.bitOffset&15;O.bitOffset+=a[ct]>>16;const mt=a[ct]&65535;if(xe[at]=mt,mt!==0&&(ve-=32>>mt,Ge++,ve<=0))break}if(ve!==0&&Ge!==1)return Ie(O,-4);const Ze=A(xe,g,ne,O);return Ze<0?Ze:de(R,P,8,ne,g)}function N(g,T,R,P,O){if(O.halfOffset>2030){const xe=Z(O);if(xe<0)return xe}O.bitOffset>=16&&(O.accumulator32=O.shortBuffer[O.halfOffset++]<<16|O.accumulator32>>>16,O.bitOffset-=16);const ne=ce(O,2);return ne===1?F(g,T,R,P,O):M(T,ne,R,P,O)}function D(g,T,R){let P;if(R.halfOffset>2030&&(P=Z(R),P<0))return P;const O=x(R)+1;if(O===1)return T.fill(0,0,g),O;R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const ne=ce(R,1);let xe=0;ne!==0&&(xe=ce(R,4)+1);const ve=O+xe,Ge=t[ve+31>>5],Ze=new Int32Array(Ge+1),We=Ze.length-1;if(P=N(ve,ve,Ze,We,R),P<0)return P;let at=0;for(;at2030&&(P=Z(R),P<0))return P;R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);const ct=k(Ze,We,R);if(ct===0)T[at]=0,at++;else if(ct<=xe){R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16);let mt=(1<=g)return Ie(R,-3);T[at]=0,at++,mt--}}else T[at]=ct-xe,at++}return R.bitOffset>=16&&(R.accumulator32=R.shortBuffer[R.halfOffset++]<<16|R.accumulator32>>>16,R.bitOffset-=16),ce(R,1)===1&&v(T,g),O}function $(g,T,R){const P=g.rings,O=4+T*2;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);let ne=k(g.blockTrees,2*T,g);const xe=y(g.blockTrees,2*T+1,g);return ne===1?ne=P[O+1]+1:ne===0?ne=P[O]:ne-=2,ne>=R&&(ne-=R),P[O]=P[O+1],P[O+1]=ne,xe}function K(g){g.literalBlockLength=$(g,0,g.numLiteralBlockTypes);const T=g.rings[5];g.contextMapSlice=T<<6,g.literalTreeIdx=g.contextMap[g.contextMapSlice]&255;const R=g.contextModes[T];g.contextLookupOffset1=R<<9,g.contextLookupOffset2=g.contextLookupOffset1+256}function oe(g){g.commandBlockLength=$(g,1,g.numCommandBlockTypes),g.commandTreeIdx=g.rings[7]}function me(g){g.distanceBlockLength=$(g,2,g.numDistanceBlockTypes),g.distContextMapSlice=g.rings[9]<<2}function X(g){let T=g.maxRingBufferSize;if(T>g.expectedTotalSize){const ne=g.expectedTotalSize;for(;T>>1>ne;)T=T>>1;g.inputEnd===0&&T<16384&&g.maxRingBufferSize>=16384&&(T=16384)}if(T<=g.ringBufferSize)return;const R=T+37,P=new Int8Array(R),O=g.ringBuffer;O.length!==0&&P.set(O.subarray(0,g.ringBufferSize),0),g.ringBuffer=P,g.ringBufferSize=T}function ee(g){if(g.inputEnd!==0)return g.nextRunningState=10,g.runningState=12,0;g.literalTreeGroup=new Int32Array(0),g.commandTreeGroup=new Int32Array(0),g.distanceTreeGroup=new Int32Array(0);let T;if(g.halfOffset>2030&&(T=Z(g),T<0)||(T=j(g),T<0))return T;if(g.metaBlockLength===0&&g.isMetadata===0)return 0;if(g.isUncompressed!==0||g.isMetadata!==0){if(T=Je(g),T<0)return T;g.isMetadata===0?g.runningState=6:g.runningState=5}else g.runningState=3;return g.isMetadata!==0||(g.expectedTotalSize+=g.metaBlockLength,g.expectedTotalSize>1<<30&&(g.expectedTotalSize=1<<30),g.ringBufferSize2030&&(T=Z(g),T<0)))return T;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.distancePostfixBits=ce(g,2),g.numDirectDistanceCodes=ce(g,4)<=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),g.contextModes[R]=ce(g,2),R++;if(g.halfOffset>2030&&(T=Z(g),T<0))return T}const P=g.numLiteralBlockTypes<<6;if(g.contextMap=new Int8Array(P),T=D(P,g.contextMap,g),T<0)return T;const O=T;g.trivialLiteralContext=1;for(let Ge=0;Ge>6){g.trivialLiteralContext=0;break}if(g.distContextMap=new Int8Array(g.numDistanceBlockTypes<<2),T=D(g.numDistanceBlockTypes<<2,g.distContextMap,g),T<0)return T;const ne=T;if(g.literalTreeGroup=new Int32Array(G(256,O)),T=_(256,256,O,g,g.literalTreeGroup),T<0||(g.commandTreeGroup=new Int32Array(G(704,g.numCommandBlockTypes)),T=_(704,704,g.numCommandBlockTypes,g,g.commandTreeGroup),T<0))return T;let xe=h(g.distancePostfixBits,g.numDirectDistanceCodes,24),ve=xe;if(g.isLargeWindow===1){if(xe=h(g.distancePostfixBits,g.numDirectDistanceCodes,62),T=u(g,2147483644,g.distancePostfixBits,g.numDirectDistanceCodes),T<0)return T;ve=T}return g.distanceTreeGroup=new Int32Array(G(ve,ne)),T=_(xe,ve,ne,g,g.distanceTreeGroup),T<0?T:(Be(g,ve),g.contextMapSlice=0,g.distContextMapSlice=0,g.contextLookupOffset1=g.contextModes[0]*512,g.contextLookupOffset2=g.contextLookupOffset1+256,g.literalTreeIdx=0,g.commandTreeIdx=0,g.rings[4]=1,g.rings[5]=0,g.rings[6]=1,g.rings[7]=0,g.rings[8]=1,g.rings[9]=0,0)}function $e(g){const T=g.ringBuffer;let R;if(g.metaBlockLength<=0)return R=Ce(g),R<0?R:(g.runningState=2,0);const P=Math.min(g.ringBufferSize-g.pos,g.metaBlockLength);return R=lt(g,T,g.pos,P),R<0?R:(g.metaBlockLength-=P,g.pos+=P,g.pos===g.ringBufferSize?(g.nextRunningState=6,g.runningState=12,0):(R=Ce(g),R<0?R:(g.runningState=2,0)))}function tt(g){const T=Math.min(g.outputLength-g.outputUsed,g.ringBufferBytesReady-g.ringBufferBytesWritten);return T!==0&&(g.output.set(g.ringBuffer.subarray(g.ringBufferBytesWritten,g.ringBufferBytesWritten+T),g.outputOffset+g.outputUsed),g.outputUsed+=T,g.ringBufferBytesWritten+=T),g.outputUsed>5];return T+T*R}function _(g,T,R,P,O){let ne=R;for(let xe=0;xe2147483644)return Ie(g,-9);const R=g.distance-g.maxDistance-1-g.cdTotalSize;if(R<0){const P=je(g,-R-1,g.copyLength);if(P<0)return P;g.runningState=14}else{const P=Rn,O=g.copyLength;if(O>31)return Ie(g,-9);const ne=$a[O];if(ne===0)return Ie(g,-9);let xe=ss[O];const ve=(1<>ne;xe+=Ge*O;const We=Ee;if(Ze>=We.numTransforms)return Ie(g,-9);const at=Ue(g.ringBuffer,g.pos,P,xe,O,We,Ze);if(g.pos+=at,g.metaBlockLength-=at,g.pos>=T)return g.nextRunningState=4,g.runningState=12,0;g.runningState=4}return 0}function te(g){g.cdBlockMap=new Int8Array(256);let T=8;for(;g.cdTotalSize-1>>T!==0;)T++;T-=8,g.cdBlockBits=T;let R=0,P=0;for(;R>T]=P,R+=1<>g.cdBlockBits];for(;T>=g.cdChunkOffsets[P+1];)P++;return g.cdTotalSize>T+R?Ie(g,-9):(g.distRbIdx=g.distRbIdx+1&3,g.rings[g.distRbIdx]=g.distance,g.metaBlockLength-=R,g.cdBrIndex=P,g.cdBrOffset=T-g.cdChunkOffsets[P],g.cdBrLength=R,g.cdBrCopied=0,0)}function he(g,T){let R=g.pos;const P=R;for(;g.cdBrLength!==g.cdBrCopied;){const O=T-R,xe=g.cdChunkOffsets[g.cdBrIndex+1]-g.cdChunkOffsets[g.cdBrIndex]-g.cdBrOffset;let ve=g.cdBrLength-g.cdBrCopied;if(ve>xe&&(ve=xe),ve>O&&(ve=O),g.ringBuffer.set(g.cdChunks[g.cdBrIndex].subarray(g.cdBrOffset,g.cdBrOffset+ve),R),R+=ve,g.cdBrOffset+=ve,g.cdBrCopied+=ve,ve===xe&&(g.cdBrIndex++,g.cdBrOffset=0),R>=T)break}return R-P}function ie(g){let T;if(g.runningState===0)return Ie(g,-25);if(g.runningState<0)return Ie(g,-28);if(g.runningState===11)return Ie(g,-22);if(g.runningState===1){const ne=p(g);if(ne===-1)return Ie(g,-11);g.maxRingBufferSize=1<2030&&(T=Z(g),T<0))return T;g.commandBlockLength===0&&oe(g),g.commandBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const ne=k(g.commandTreeGroup,g.commandTreeIdx,g)<<2,xe=l[ne],ve=l[ne+1],Ge=l[ne+2];g.distanceCode=l[ne+3],g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const Ze=xe&255;g.insertLength=ve+(Ze<=16?ce(g,Ze):Me(g,Ze)),g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const We=xe>>8;g.copyLength=Ge+(We<=16?ce(g,We):Me(g,We)),g.j=0,g.runningState=7;continue;case 7:if(g.trivialLiteralContext!==0)for(;g.j2030&&(T=Z(g),T<0))return T;if(g.literalBlockLength===0&&K(g),g.literalBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),O[g.pos]=k(g.literalTreeGroup,g.literalTreeIdx,g),g.pos++,g.j++,g.pos>=R){g.nextRunningState=7,g.runningState=12;break}}else{let tn=O[g.pos-1&P]&255,et=O[g.pos-2&P]&255;for(;g.j2030&&(T=Z(g),T<0))return T;g.literalBlockLength===0&&K(g);const Ln=Qe[g.contextLookupOffset1+tn]|Qe[g.contextLookupOffset2+et],Ya=g.contextMap[g.contextMapSlice+Ln]&255;if(g.literalBlockLength--,et=tn,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),tn=k(g.literalTreeGroup,Ya,g),O[g.pos]=tn,g.pos++,g.j++,g.pos>=R){g.nextRunningState=7,g.runningState=12;break}}}if(g.runningState!==7)continue;if(g.metaBlockLength-=g.insertLength,g.metaBlockLength<=0){g.runningState=4;continue}let at=g.distanceCode;if(at<0)g.distance=g.rings[g.distRbIdx];else{if(g.halfOffset>2030&&(T=Z(g),T<0))return T;g.distanceBlockLength===0&&me(g),g.distanceBlockLength--,g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);const tn=g.distContextMap[g.distContextMapSlice+at]&255;if(at=k(g.distanceTreeGroup,tn,g),at<16){const et=g.distRbIdx+n[at]&3;if(g.distance=g.rings[et]+s[at],g.distance<0)return Ie(g,-12)}else{const et=g.distExtraBits[at];let Ln;g.bitOffset+et<=32?Ln=ce(g,et):(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),Ln=et<=16?ce(g,et):Me(g,et)),g.distance=g.distOffset[at]+(Ln<g.maxDistance){g.runningState=9;continue}if(at>0&&(g.distRbIdx=g.distRbIdx+1&3,g.rings[g.distRbIdx]=g.distance),g.copyLength>g.metaBlockLength)return Ie(g,-9);g.j=0,g.runningState=8;continue;case 8:let ct=g.pos-g.distance&P,mt=g.pos;const Dt=g.copyLength-g.j,as=ct+Dt,On=mt+Dt;if(asmt&&On>ct){const tn=Dt+3>>2;for(let et=0;et=R){g.nextRunningState=8,g.runningState=12;break}g.runningState===8&&(g.runningState=4);continue;case 9:if(T=z(g,R),T<0)return T;continue;case 14:if(g.pos+=he(g,R),g.pos>=R)return g.nextRunningState=14,g.runningState=12,2;g.runningState=4;continue;case 5:for(;g.metaBlockLength>0;){if(g.halfOffset>2030&&(T=Z(g),T<0))return T;g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16),ce(g,8),g.metaBlockLength--}g.runningState=2;continue;case 6:if(T=$e(g),T<0)return T;continue;case 12:g.ringBufferBytesReady=Math.min(g.pos,g.ringBufferSize),g.runningState=13;continue;case 13:if(T=tt(g),T!==0)return T;g.pos>=g.maxBackwardDistance&&(g.maxDistance=g.maxBackwardDistance),g.pos>=g.ringBufferSize&&(g.pos>g.ringBufferSize&&O.copyWithin(0,g.ringBufferSize,g.pos),g.pos=g.pos&P,g.ringBufferBytesWritten=0),g.runningState=g.nextRunningState;continue;default:return Ie(g,-28)}return g.runningState!==10?Ie(g,-29):g.metaBlockLength<0?Ie(g,-10):(T=Je(g),T!==0||(T=we(g,1),T!==0)?T:1)}function Fe(g,T,R){this.numTransforms=0,this.triplets=new Int32Array(0),this.prefixSuffixStorage=new Int8Array(0),this.prefixSuffixHeads=new Int32Array(0),this.params=new Int16Array(0),this.numTransforms=g,this.triplets=new Int32Array(g*3),this.params=new Int16Array(g),this.prefixSuffixStorage=new Int8Array(T),this.prefixSuffixHeads=new Int32Array(R+1)}const Ee=new Fe(121,167,50);function _e(g,T,R,P,O){const ne=Ae(P),xe=ne.length;let ve=1,Ge=0;for(let Ze=0;Ze# +#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing # + #:#ed #(# at #ly #="# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #`,` !! ! , *! &! " ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . " 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K`);function Ue(g,T,R,P,O,ne,xe){let ve=T;const Ge=ne.triplets,Ze=ne.prefixSuffixStorage,We=ne.prefixSuffixHeads,at=3*xe,ct=Ge[at],mt=Ge[at+1],Dt=Ge[at+2];let as=We[ct];const On=We[ct+1];let tn=We[Dt];const et=We[Dt+1];let Ln=mt-11,Ya=mt;for((Ln<1||Ln>9)&&(Ln=0),(Ya<1||Ya>9)&&(Ya=0);as!==On;)g[ve++]=Ze[as++];let zt=O;Ln>zt&&(Ln=zt);let Hu=P+Ln;zt-=Ln,zt-=Ya;let il=zt;for(;il>0;)g[ve++]=R[Hu++],il--;if(mt===10||mt===11){let St=ve-zt;for(mt===10&&(zt=1);zt>0;){const ka=g[St]&255;ka<192?(ka>=97&&ka<=122&&(g[St]=g[St]^32),St+=1,zt-=1):ka<224?(g[St+1]=g[St+1]^32,St+=2,zt-=2):(g[St+2]=g[St+2]^5,St+=3,zt-=3)}}else if(mt===21||mt===22){let St=ve-zt;const ka=ne.params[xe];let Hn=(ka&32767)+(16777216-(ka&32768));for(;zt>0;){let Vs=1;const Rs=g[St]&255;if(Rs<128)Hn+=Rs,g[St]=Hn&127;else if(!(Rs<192)){if(Rs<224)if(zt>=2){const $s=g[St+1];Hn+=$s&63|(Rs&31)<<6,g[St]=192|Hn>>6&31,g[St+1]=$s&192|Hn&63,Vs=2}else Vs=zt;else if(Rs<240)if(zt>=3){const $s=g[St+1],Ri=g[St+2];Hn+=Ri&63|($s&63)<<6|(Rs&15)<<12,g[St]=224|Hn>>12&15,g[St+1]=$s&192|Hn>>6&63,g[St+2]=Ri&192|Hn&63,Vs=3}else Vs=zt;else if(Rs<248)if(zt>=4){const $s=g[St+1],Ri=g[St+2],rl=g[St+3];Hn+=rl&63|(Ri&63)<<6|($s&63)<<12|(Rs&7)<<18,g[St]=240|Hn>>18&7,g[St+1]=$s&192|Hn>>12&63,g[St+2]=Ri&192|Hn>>6&63,g[St+3]=rl&192|Hn&63,Vs=4}else Vs=zt}St+=Vs,zt-=Vs,mt===21&&(zt=0)}}for(;tn!==et;)g[ve++]=Ze[tn++];return ve-T}function Ne(g,T){let R=1<>1;return(g&R-1)+R}function He(g,T,R,P,O){let ne=P;for(;ne>0;)ne-=R,g[T+ne]=O}function W(g,T,R){let P=T,O=1<0;)He(g,ne+ct,Dt,We,et<<16|xe[mt++]),ct=Ne(ct,et),ve[et]--;const as=at-1;let On=-1,tn=ne;Dt=1;for(let et=R+1;et<=15;++et)for(Dt=Dt<<1;ve[et]>0;)(ct&as)!==On&&(tn+=We,Ze=W(ve,et,R),We=1<>R),Dt,We,et-R<<16|xe[mt++]),ct=Ne(ct,et),ve[et]--;return at}function Z(g){if(g.endOfStreamReached!==0)return ot(g)>=-2?0:Ie(g,-16);const T=g.halfOffset<<1;let R=4096-T;for(g.byteBuffer.copyWithin(0,T,4096),g.halfOffset=0;R<4096;){const P=4096-R,O=Ks(g,g.byteBuffer,R,P);if(O<-1)return O;if(O<=0){g.endOfStreamReached=1,g.tailBytes=R,R+=1;break}R+=O}return Ft(g,R),0}function we(g,T){if(g.endOfStreamReached===0)return 0;const R=(g.halfOffset<<1)+(g.bitOffset+7>>3)-4;return R>g.tailBytes?Ie(g,-13):T!==0&&R!==g.tailBytes?Ie(g,-17):0}function ce(g,T){const R=g.accumulator32>>>g.bitOffset&(1<>>16,g.bitOffset-=16,R|ce(g,T-16)<<16}function qe(g){return g.byteBuffer=new Int8Array(4160),g.accumulator32=0,g.shortBuffer=new Int16Array(2080),g.bitOffset=32,g.halfOffset=2048,g.endOfStreamReached=0,Le(g)}function Le(g){if(g.halfOffset>2030){const R=Z(g);if(R!==0)return R}let T=we(g,0);return T!==0?T:(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16,g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16,0)}function Ce(g){return g.bitOffset===32?Le(g):0}function Je(g){const T=32-g.bitOffset&7;return T!==0&&ce(g,T)!==0?Ie(g,-5):0}function ot(g){let T=2048;return g.endOfStreamReached!==0&&(T=g.tailBytes+1>>1),T-g.halfOffset}function lt(g,T,R,P){let O=R,ne=P;if((g.bitOffset&7)!==0)return Ie(g,-30);for(;g.bitOffset!==32&&ne!==0;)T[O++]=g.accumulator32>>>g.bitOffset,g.bitOffset+=8,ne--;if(ne===0)return 0;const xe=Math.min(ot(g),ne>>1);if(xe>0){const ve=g.halfOffset<<1,Ge=xe<<1;T.set(g.byteBuffer.subarray(ve,ve+Ge),O),O+=Ge,ne-=Ge,g.halfOffset+=xe}if(ne===0)return 0;if(ot(g)>0){for(g.bitOffset>=16&&(g.accumulator32=g.shortBuffer[g.halfOffset++]<<16|g.accumulator32>>>16,g.bitOffset-=16);ne!==0;)T[O++]=g.accumulator32>>>g.bitOffset,g.bitOffset+=8,ne--;return we(g,0)}for(;ne>0;){const ve=Ks(g,T,O,ne);if(ve<-1)return ve;if(ve<=0)return Ie(g,-16);O+=ve,ne-=ve}return 0}function Ft(g,T){const R=g.byteBuffer,P=T>>1,O=g.shortBuffer;for(let ne=0;ne>2,g[1792+O]=2+(O>>6);for(let O=0;O<128;++O)g[1024+O]=4*(T.charCodeAt(O)-32);for(let O=0;O<64;++O)g[1152+O]=O&1,g[1216+O]=2+(O&1);let P=1280;for(let O=0;O<19;++O){const ne=O&3,xe=R.charCodeAt(O)-32;for(let ve=0;ve>1;for(let We=0;We!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+"sj`hfujo\'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sksolpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqnlupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\n.pjy....sqls$*8ojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#lxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*"+njmfyk9abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\b$**8svqfnbdfsbqbwlmfalmg904Y\\le\\$^*8333/yk9\vwbmhzbqgaltoavpk965YIbub03s{ ~ &@0&907YifeeF[SJ`bpkujpbdloepmltyk9rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8 ~ f{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8 \n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd\'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~ gvpw`ojs*- 43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~ KFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf. "331*mgltX2^8X^8 Old#pbow \n\nabmdwqjnabwk*x 33s{ ~*8hl9\0effpbg=p9,,#X^8wloosovd+*x x #-ip$133sgvboalbw-ISD*8 ~rvlw*8 $*8  ~1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8 abmgprvfvf>#x~8;3s{8`hjmdx \n\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8 \nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*##oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9npjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8 ~ elqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?".. l.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isdpvjwfpoj`fkbqqz213!#ptffwwq= mbnf>gjfdlsbdf#ptjpp..= eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9ojg>!`Mbnf!tlqpfpklwp.al{.gfowb %ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8 .2!*8wzsf>aovfpwqvozgbujp-ip$8= ?"pwffo#zlv#k1= elqn#ifpvp233&#nfmv- \n tbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w- Lmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2= \\elqn!ofbufppwqfpp!#,= -dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{fpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!= )#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\jnbdfwkqfbgmbwjufsl`hfwal{!= Pzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw##X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd Tkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8# Jm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=vpjmd# \nubq#=$*8 \n?,wg= ?,wq= abkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\bTA\nzk\vBl\bQ\vUmGx\bSM\nmC\bTA wQ\nd}\bW@\bTl\bTF i@ cT\vBM\v|jBV qw cC\bWI\npa fM\n{Z{X\bTF\bVV\bVK mkF []\bPm\bTv\nsI\vpg [I\bQpmx\v_W\n^M\npe\vQ}\vGu\nel\npeChBV\bTA So\nzk\vGL\vxD\nd[JzMY\bQpli\nfl\npC{BNt\vwT i_\bTgQQ\n|p\vXN\bQS\vxDQC\bWZ pD\vVS\bTWNtYh\nzuKjN} wr Ha\n_D j`\vQ}\vWp\nxZ{c ji BU\nbDa| Tn pV\nZd\nmC\vEV{X c} To\bWl\bUd IQ cg\vxs\nXW wR\vek c} ]y Jn\nrp\neg\npV\nz\\{W\npl\nz\\\nzU Pc `{\bV@\nc|\bRw i_\bVb\nwX HvSu\bTF\v_W\vWs\vsIm\nTT\ndc US }f iZ\bWz c}MD Be iD\v@@\bTl\bPv }tSwM`\vnU kW\ved\nqo\vxY A|\bTz\vy`BRBM iaXU\nyun^ fL iI\nXW fD\bWz\bW@ yj m av BN\vb\\ pD\bTf\nY[ Jn\bQy [^\vWc\vyuDlCJ\vWj\vHR `V\vuW Qy\np@\vGuplJm\bW[\nLP\nxC\n`m wQuiR\nbI wQ BZ WVBR\npg cgtiCW\n_y Rg\bQa\vQB\vWc\nYble\ngESu\nL[ Q ea dj\v]W\nb~M` wL\bTV\bVH\nt\npl |bs_\bU|\bTaoQlvSkM`\bTv\vK}\nfl cCoQBR Hk |d\bQp HK BZ\vHR\bPv\vLx\vEZ\bT\bTv iDoDMU\vwBSuk`St\ntC Pl Kg\noi jY\vxYh}\nzk\bWZ m\ve` TB fE\nzk `zYh\nV| HK AJ AJ\bUL p\\ ql\nYcKd\nfyYh [I\vDgJm\n]n\nlb\bUd\n{Z lu fsoQ\bTWJm\vwB eaYhBC sb Tn\nzU\n_y\vxY Q]\ngwmt O\\\ntb\bWW\bQy mI V[\ny\\\naB\vRb wQ\n]QQJ\bWg\vWa\bQj\ntC\bVH\nYm\vxs\bVK\nel\bWI\vxYCq\ntR\vHV\bTl\bVw ay\bQa\bVV }t dj\nr| p\\ wR\n{i\nTT [I i[ AJ\vxs\v_W d{\vQ} cg Tz A| Cj\vLmN}m\nbK dZ p\\ `V sV\np@ iD wQ\vQ}\bTfkaJm\v@@\bV` zp\n@NSw iI cg\noiSu\bVwloCy c}\vb\\ sUBA\bWI\bTf\nxS Vp\nd|\bTV\vbC NoJu\nTC |`\n{Z D]\bU| c}lm\bTl Bv Pl c}\bQp m\nLk kj\n@NSbKO j_ p\\\nzU\bTl\bTg\bWI cfXO\bWW\ndzli BN\nd[\bWOMD\vKC dj I_\bVV\ny\\\vLmxl xB kV\vb\\\vJW\vVS Vx\vxD d{MD\bTa |`\vPzR}\vWsBM\nsICN\bTaJm\npe i_\npV\nrh Rd Hv\n~A\nxR\vWh\vWk\nxS\vAz\vwX\nbIoQ fw\nqI\nV|\nunz\vpg d\\\voA{D i_xB\bT `Vqr TTg]CA\vuR VJ T`\npw\vRb I_\nCxRo\vsICjKh Bv WVBBoD{D\nhcKm\v^R QE\n{I\np@\nc|Gt c}Dl\nzUqN sVk} Hh\v|j\nqou| Q]\vekZM`St\npe dj\bVG\veE m\vWc|I\n[W fL\bT BZSu\vKaCqNtY[\nqI\bTv fM i@ }fB\\ Qy\vBl\bWgXDkc\vx[\bVV Q] a Py\vxD\nfI }foD dj SGls ~DCN\n{Z \\v\n_D\nhc\vx_C[ AJ\nLM VxCI bj c^ cF\ntCSx wrXA\bU\\ |a\vK\\\bTV\bVj\nd| fsCX\ntb\bRw Vx AE A|\bTNt\vDg Vc\bTld@\npo M cF\npe iZ Bo\bSq\nfHl`\bTx\bWf HE\vF{ cO fD\nlm\vfZ\nlm\veU dGBH\bTV SiMW\nwX\nz\\ \\cCX\nd} l}\bQp\bTV F~\bQ `i\ng@nO\bUd\bTl\nL[ wQ ji\ntC |J\nLU\naB\vxYKj AJuN i[\npeSk\vDg\vx]\bVb\bVV\nea kV\nqI\bTaSk\nAO pD\ntb\nts\nyi\bVg i_\v_W\nLkNt yj fMR iI\bTl\vwX sV\vMl\nyu AJ\bVjKO WV\vA}\vW\nrp iD\v|olv\vsIBM d~ CU\bVbeV\npC\vwT j` c}\vxs\vps\vvh WV\vGg\vAe\vVK\v]W rg\vWcF` Br\vb\\ dZ\bQp\nqIkF\nLk\vAR\bWI\bTg bs dw\n{L\n_y iZ\bTA lg\bVV\bTl dk\n`k a{ i_{Awj wN\v@@\bTe i_\n_D wL\nAH\viK\vek\n[] p_ yj\bTv US [r\n{I\npsGt\vVK\nplS}\vWP |dMD\vHV\bTR}M`\bTV\bVHlvCh\bW[Ke R{\v^R ab BZ VA B`\nd|\nhsKe BeOi R{ d\\nB\bWZ dZ VJOs muQ\vhZQ@QQ\nfI\bW[B\\li\nzU\nMdM`\nxS\bVV\n\\}\vxD m\bTpIS\nc| kVi~ V{\vhZ |b\bWt\n@R\voA\vnU\bWI ea B` iD c} TzBR\vQBNj CP [I\bTv `WuN\vpg\vpg\vWc iT bs wL U_ c\\ |h\vKa Nr fL\nq|\nzu\nz\\ Nr\bUg |bm`\bTv\nyd\nrp\bWf UXBV\nzk\nd} wQ }fCe\ved\bTW\bSB\nxU cn\bTb\ne a\\ SG\bU|\npV\nN\\Kn\vnU At pD\v^R\vIrb[ R{ dE\vxD\vWK\vWA\bQL\bW@Su\bUd\nDM PcCADloQ Hswiub\na\bQpOb\nLP\bTlY[\vK} AJ\bQn^\vsA\bSM\nqM\bWZ\n^W\vz{S| fD\bVK\bTv\bPvBB CPdF id\vxsmx\vws cC\ntC ycM`\vW\nrh\bQp\vxD\\o\nsI_k\nzukF fDXsXO jp\bTvBS{B Br\nzQ\nbI c{BDBVnO\bTF caJd fL PV I_\nlK`o wX\npa gu\bP}{^\bWf\n{I BN\npaKl\vpg cn fL\vvhCq\bTl\vnU\bSqCm wR\bUJ\npe\nyd\nYgCy\vKW fD\neaoQ j_ BvnM\vID\bTa\nzApl\n]n\bTa R{ fr\n_y\bUg{Xkk\vxD|Ixl\nfyCe\vwB\nLk\vd]\noi\n}h Q]\npe\bVwHkOQ\nzk AJ\npV\bPv\ny\\ A{Oi\bSBXA\veE jp\nq} iDqN\v^R m iZ Br\bVg\noi\n\\X U_\nc|\vHV\bTf Tn\\N\\N\nuBlv\nyu Td\bTf\bPL\v]W dG\nA`\nw^\ngI\npe dw\nz\\ia\bWZ cFJm\n{Z\bWO_kDfRR d\\\bVV\vxsBNtilm Td ]y\vHV So\v|jXX A|\vZ^\vGu\bTWM`kF\vhZ\vVK dG\vBl ay\nxUqEnO\bVw\nqICX\ne Pl\bWO\vLm dLuHCm dTfn\vwBka\vnU\n@M\nyT Hv \\}Kh d~Yhk}\neR d\\\bWI |b HK iD\bTWMY\npl\bQ_ wr\vAx HE\bTg\bSqvp\vb\\\bWO\nOl\nsI\nfy\vID \\c\n{Z\n^~\npe\nAO TT\vxvk_\bWO\v|j\vwB Qy i@ Pl Ha dZk}ra UT\vJc\ved\np@ QN\nd| kj HkM`\noi wr d\\\nlq\no_\nlb\nL[ acBBBHCm\npl IQ\bVK\vxs\n`e\viK\npaOi US\bTp fD\nPGkkXA\nz\\\neg\vWh wRqN\nqS cnlo\nxS\n^W BU\nt HE p\\ fF fw\bVV\bW@ ak\vVKls VJ\bVV\veE\\o\nyX\nYmM`lL\nd|\nzk A{sE wQXT\nt Pl ]y\vwT{pMD\vb\\ Q]Kj Jn\nAH\vRb BU HK \\c\nfIm\nqM\n@R So\noiBT Hv\n_yKh BZ ]i\bUJ V{Sr\nbI\vGg a_\bTR\nfI\nfl [K IIS|\vuW iI\bWI\nqI\v|jBV\bVg\bWZkF\vx]\bTA ab fr i@ Jd Jd\vps\nAO\bTaxu iD\nzk |d |`\bW[ lP dG\bVV\vw}\vqO i[\bQ\bTz\vVF wNts dw\bTv\neS\ngi NryS\npe\bVV\bSq\n`m yj BZ\vWX\bSB c\\\nUR [J c_nM\bWQ\vAx\nMd Brui\vxY\bSM\vWc\v|j\vxs }Q BO\bPL\bWW fM\nAO Pc\veUe^\bTg\nqI ac\bPv cFoQ Q\vhZka\nz\\ iK BU\n`k CPS|M`\n{I S{_O BZZiSk ps p\\\nYu\n]s\nxC\bWt\nbD kV\vGuyS\nqA [r\neKM` dZlL\bUg\bTl\nbD US\vb\\ pV\nccS\\ ct `z\bPL\vWs\nA`\neg\bSquECR\vDg `W\vz{\vWcSkSk bW\bUg ea\nxZ iI UX VJ\nqn S{\vRb\bTQ\nplGt\vuWuj\npF\nqI fL [I iaXO\nyu\vDg\ved q{VG\bQka Vj kV xB\nd|\np@ QN Pc ps]j kV oU\bTp\nzUnB\vB] a{\bV@\n]nm` cz R{m`\bQa\vwT\bSMMYqN dj~s\vQ}MY\vMB Bv wR\bRg\vQ} ql\vKC\nrmxuCC\vwB\vvh BqXq\npV i_ObuE\nbd\nqo\v{i\nC~ BL\veEuH\bVjEyGz\vzR\v{i cf\n{Z\n]nXA\vGu\vnU hS\vGI\nCc HE\bTA HBBHCj\nCc\bTF HE\nXI A{\bQ c\\\vmO\vWX\nfH\np@MY\bTF\nlK Bt\nzU TTKm\vwT\npV\ndt\vyI Vx Q Rg Td\nzU\bRS\nLM wAnM Tn\ndS ]g\nLc\vwB }t [I CPkX\vFm\vhZm i[\np@\vQ}\vW |d\nMO\nMd f_ fD cJ Hz\vRb io PyY[\nxU ct\v@@ ww\bPvBMFF\ntbv|\vKm Bq BqKh`o\nZdXU i] |` StB\\\bQ\v_W TJ\nqI |a A{\vuPMD Pl\nxR fL\vws c{ d\\\bV`\neg HKkc\nd|\bVV\ny\\kc i]\bVG `V ss I_ AE bs du\nel pD\vW\nqslv\bSMZi\vVKia\vQB Q\n{Z\bPt\vKl\nlK\nhs\ndS\bVKmf\nd^ kV cO\nc|\bVH \\]\bTv\bSq mI\vDg VJ cn\ny\\\bVg\bTv\nyX\bTF ]]\bTp\noi\nhs\veU\nBf djMr\n|p \\g ]r\bVb{D\nd[XN fM O\\s_ cf iZXN\vWc qv\n`m U^oD\nd|\vGg dE\vwflou}\nd|oQ `iOi\vxD\ndZ\nCxYw\nzk\ntb\ngw yj B`\nyX\vps\ntC\vpP\vqw\bPu\bPX Dm\npwNj ss aG\vxs\bPt\noLGz Ok i@ i]eC IQ ii dj\v@J |duh\bWZ\veU\vnU\bTa cCg]\nzkYh\bVK\nLU\np@\ntb\ntR Cj\vNP i@\bP{\n\\}\n{c\nwX fL\bVG c{ |` AJ |C fDln |d bs\nqI{B\vAx\np@\nzk\vRbOs\vWSe^\vD_ Bv\vWd\bVb\vxs\veE\bRw\n]n\n|p\vg| fwkc\bTIka\n\\TSp ju\vps\npeu|\vGr\bVe CU]MXU\vxD\bTa IQ\vWq CU am dj\bSoSw\vnUCh Q]s_\bPt fS\bTa \\}\n@OYc UZ\bTx\npe\vnU\nzU |} iD\nz\\\bSM\vxDBR\nzQ QN]MYh\nLP\vFm\vLXvc\vqlka HK\bVb\ntC\nCy\bTv\nuVoQ `z [I B`\vRb yj sb\vWs\bTl kV\ved\nelL\vxN m\nJn jY\vxD\bVb\bSq\vyu wL\vXL\bTA pg At nDXX wR\npl\nhwyS\nps cO\bW[\v|jXN sV p\\ Be\nb~\nAJ\n]ek`qN dw WV HE\vEVJz id B` zhE] fD\bTgqN\bTa jaCv\bSM\nhc\bUet_ ieg] wQ\nPn\bVB jw\bVg\vbE BZ\vRH\bP{ jp\n\\} a_ cC |a\vD] BZ i[ fD\vxW\no_ d\\\n_D\ntb \\c AJ\nlKoQlo\vLx\vM@\bWZKn\vpg\nTi\nIv\n|r\v@}JzLmWhk}ln\vxD\n]sgc\vps Br\bTW\vBMtZ\nBYDW jf\vSWC}\nqo dE mv IQ\bPP\bUblvBC\nzQ [I\vgl\nig\bUsBT\vbC\bSq sU iW\nJn SY HK rg\npV\vID\v|jKO `S |a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8 `lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz- Wkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8 sbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm Tkfm#lapfquf?,k1= Nlgfqm#sqlujgf!#bow>!alqgfqp- Elq# Nbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s= #@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8 jpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0= #pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8 avqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq= `lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,= 9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2= lmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!= sfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz \n\n?"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+#X^8 GBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsksbo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm \n?"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-iptfbqjmdBoo#Qjd8 ~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..= ?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#  ?"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg= #qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le Plnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!= nlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz= fujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg= #kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8 ~*8 elvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8 ##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo ?"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8 alnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfpx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj= -#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s= \n\njw#jmwlqbmhfg#qbwf#levo= ##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=  #qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,= \n\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8 #jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8 ##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8 ##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl"..#fmgojfp#jm$^*8 ##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd# \n\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq ?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!= svpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno= sflsof-jm#lmf#>tjmgltellwfq\\b#dllg#qfhobnblwkfqp/wl#wkjp\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,= Bwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x gjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=   nbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbmgjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!= +*8!#qfb#sob`f_v330@bbalvw#bwq= \n\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s= ?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=  ?"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo\'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!= nfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1= ##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg= `lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo= \n\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8 `lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b= fof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!= \n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=- Plnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-# Wkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz Bewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg= \nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?"..#fmg?,psbm=??aq#,= \\slsvspp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*- Wkf#wb{lmlnznv`k#le#?,psbm= !#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg= bwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{ ?kfbg= bqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!= %maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8"..#wjwof!=?,irvfqz-?,elqn= +\vBl\bQ*+\vUmGx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn= pwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x plovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!= f{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof= qfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm= ?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof= nlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof= qfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo= pvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg= nj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn= \npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..= ?"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8 plvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s= `bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..= ?"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!= qfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8 sqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq %ow8"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg Jm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl ?kfbg= ?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju= ?,b=?,wg=gfsfmg#lmpfbq`k!= sjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp- Bewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{qjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le ?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\fUh\fT{\fTN\n{I\np@Fr\vBl\bQ A{\vUmGx A{ypYA\0zX\bTV\bWl\bUdBM\vB{\npV\v@xB\\\np@DbGz al\npa fM uD\bV~mx\vQ}\ndS p\\\bVK\bS]\bU|oD kV\ved\vHR\nb~M`\nJpoD|Q\nLPSw\bTl\nAI\nxC\bWt BqF`Cm\vLm Kx }t\bPv\ny\\\naB V\nZdXUli fr i@ BHBDBV `V\n[] p_ Tn\n~A\nxR uD `{\bV@ Tn HK AJ\vxsZf\nqIZf\vBM\v|j }t\bSM\nmC\vQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\fHB\fIk\fHn\fH^\fHS\fHc\fHU\fId\fHn\fH{\fHC\fHR\fHT\fHR\fHI\fHc\fHY\fHn\fH\\\fHU\fIk\fHy\fIg\fHd\fHy\fIm\fHw\fH\\\fHU\fHR\fH@\fHR\fHJ\fHy\fHU\fHR\fHT\fHA\fIl\fHU\fIm\fHc\fH\\\fHU\fIl\fHB\fId\fHn\fHJ\fHS\fHD\fH@\fHR\fHHgjsolgl`p\fHT\fHB\fHC\fH\\\fIn\fHF\fHD\fHR\fHB\fHF\fHH\fHR\fHG\fHS\fH\\\fHx\fHT\fHH\fHH\fH\\\fHU\fH^\fIg\fH{\fHU\fIm\fHj\fH@\fHR\fH\\\fHJ\fIk\fHZ\fHU\fIm\fHd\fHz\fIk\fH^\fHC\fHJ\fHS\fHy\fHR\fHB\fHY\fIk\fH@\fHH\fIl\fHD\fH@\fIl\fHv\fHB\fI`\fHH\fHT\fHR\fH^\fH^\fIk\fHz\fHp\fIe\fH@\fHB\fHJ\fHJ\fHH\fHI\fHR\fHD\fHU\fIl\fHZ\fHU\fH\\\fHi\fH^\fH{\fHy\fHA\fIl\fHD\fH{\fH\\\fHF\fHR\fHT\fH\\\fHR\fHH\fHy\fHS\fHc\fHe\fHT\fIk\fH{\fHC\fIl\fHU\fIn\fHm\fHj\fH{\fIk\fHs\fIl\fHB\fHz\fIg\fHp\fHy\fHR\fH\\\fHi\fHA\fIl\fH{\fHC\fIk\fHH\fIm\fHB\fHY\fIg\fHs\fHJ\fIk\fHn\fHi\fH{\fH\\\fH|\fHT\fIk\fHB\fIk\fH^\fH^\fH{\fHR\fHU\fHR\fH^\fHf\fHF\fH\\\fHv\fHR\fH\\\fH|\fHT\fHR\fHJ\fIk\fH\\\fHp\fHS\fHT\fHJ\fHS\fH^\fH@\fHn\fHJ\fH@\fHD\fHR\fHU\fIn\fHn\fH^\fHR\fHz\fHp\fIl\fHH\fH@\fHs\fHD\fHB\fHS\fH^\fHk\fHT\fIk\fHj\fHD\fIk\fHD\fHC\fHR\fHy\fIm\fH^\fH^\fIe\fH{\fHA\fHR\fH{\fH\\\fIk\fH^\fHp\fH{\fHU\fH\\\fHR\fHB\fH^\fH{\fIk\fHF\fIk\fHp\fHU\fHR\fHI\fHk\fHT\fIl\fHT\fHU\fIl\fHy\fH^\fHR\fHL\fIl\fHy\fHU\fHR\fHm\fHJ\fIn\fH\\\fHH\fHU\fHH\fHT\fHR\fHH\fHC\fHR\fHJ\fHj\fHC\fHR\fHF\fHR\fHy\fHy\fI`\fHD\fHZ\fHR\fHB\fHJ\fIk\fHz\fHC\fHU\fIl\fH\\\fHR\fHC\fHz\fIm\fHJ\fH^\fH{\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof= @lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!= nfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw Gvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof= baplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof= #`lopsbm>!?,elqn= ##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8 evm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm evm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn= ?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~ ?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof= \ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>! ?"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp ?,kfbg= qf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp %ow8"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo ?kfbg= ?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!= sqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..= ?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw= qfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm= \n\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks!owqOjfvwfmbmw ?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm- Jm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.= ?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm= #l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju= ##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof= ?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw','fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISDwkvnasbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le Kltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz Bowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p \n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!= ?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le ?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!= ?kfbg= ?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s= ?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju= #pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw= kbujmd#affm ?kfbg= ?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm ?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm= @lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!= rvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw ?,kfbg= @lmufqpfoz/= ?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le \n?,gju=  ?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw= ?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq \n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof= ##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju= \n\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#pklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\n\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju= Kltfufq#wkfofbg#wl#wkf\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?"X@GBWBX Lqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw= ,jmgf{-kwno!tjmglt-lsfm+#"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw= sbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!= ?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?"Xfmgje^..=~ ?,p`qjsw= @kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/ -mlmwlv`k#lapfqubwjlmp?,b= ?,gju= e#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!= pv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp \n\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\n\n?,p`qjsw= \n\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju= `lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo= ?,gju= tbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#= ?kfbg= ?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=pbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf ?,p`qjsw= bm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b= wklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju= ?gju#!=?,gju= ##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(_p(\',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo= ?,gju= skjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x ?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg= ?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof \n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg= ?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw"Xfmgje^..= Jmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz= ?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\n\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf ?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp ?nfwb#mbnf>!b``lnnlgbwjlm?,gju= ?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf ?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8 ?,p`qjsw= ?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?"Xfmgje^..= ?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg= ?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8 ?,p`qjsw= -pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?"Xfmgje^..= gjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw= wzsf>!pvanjw!# +evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?"Xfmgje^..= gfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!= ?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b= ?,oj= ?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf ?gju#`obpp>!`obpp>!pfbq`k.,algz= ?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg= ?algz#pwzof>!tjgwk9Wj\rVSmd#Uj\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8 ?,p`qjsw= Gfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju= ?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq ?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg= ?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm \n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a ?,p`qjsw= ?tbp#elvmgfg#jmjmwfqujft#tjwk\\jg!#`lmwfmw>!`bsjwbo#le#wkf ?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#xje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le ?,kfbg= ?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,= ?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~ - ?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le= ?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?"Xfmgje^..= pwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=  fmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg= ?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\n\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8 ?,p`qjsw= ?skjolplskj`bo#pqsphlkqubwphjwj\rVSmd#Uj\rWkw!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=##?b#kqfe>!?"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,= \n\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz= ?,kwno= pklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm ##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8 ?,p`qjsw= qfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju= ?,gju= bgnjmjpwqbwjuf#?,algz= ?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!= ?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,= ?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp \n?gju#`obpp>!?,gju= \n?,gju= jmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,= ?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8 ?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf= \n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw= vo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\bTA\nzk#+\vBl\bQ*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\fHe\fHF\fHC\fIg\fH{\fHF\fIn\fH\\\fIa\fHY\fHU\fHB\fHR\fH\\\fIk\fH^\fIg\fH{\fIg\fHn\fHv\fIm\fHD\fHR\fHY\fH^\fIk\fHy\fHS\fHD\fHT\fH\\\fHy\fHR\fH\\\fHF\fIm\fH^\fHS\fHT\fHz\fIg\fHp\fIk\fHn\fHv\fHR\fHU\fHS\fHc\fHA\fIk\fHp\fIk\fHn\fHZ\fHR\fHB\fHS\fH^\fHU\fHB\fHR\fH\\\fIl\fHp\fHR\fH{\fH\\\fHO\fH@\fHD\fHR\fHD\fIk\fHy\fIm\fHB\fHR\fH\\\fH@\fIa\fH^\fIe\fH{\fHB\fHR\fH^\fHS\fHy\fHB\fHU\fHS\fH^\fHR\fHF\fIo\fH[\fIa\fHL\fH@\fHN\fHP\fHH\fIk\fHA\fHR\fHp\fHF\fHR\fHy\fIa\fH^\fHS\fHy\fHs\fIa\fH\\\fIk\fHD\fHz\fHS\fH^\fHR\fHG\fHJ\fI`\fH\\\fHR\fHD\fHB\fHR\fHB\fH^\fIk\fHB\fHH\fHJ\fHR\fHD\fH@\fHR\fHp\fHR\fH\\\fHY\fHS\fHy\fHR\fHT\fHy\fIa\fHC\fIg\fHn\fHv\fHR\fHU\fHH\fIk\fHF\fHU\fIm\fHm\fHv\fH@\fHH\fHR\fHC\fHR\fHT\fHn\fHY\fHR\fHJ\fHJ\fIk\fHz\fHD\fIk\fHF\fHS\fHw\fH^\fIk\fHY\fHS\fHZ\fIk\fH[\fH\\\fHR\fHp\fIa\fHC\fHe\fHH\fIa\fHH\fH\\\fHB\fIm\fHn\fH@\fHd\fHJ\fIg\fHD\fIg\fHn\fHe\fHF\fHy\fH\\\fHO\fHF\fHN\fHP\fIk\fHn\fHT\fIa\fHI\fHS\fHH\fHG\fHS\fH^\fIa\fHB\fHB\fIm\fHz\fIa\fHC\fHi\fHv\fIa\fHw\fHR\fHw\fIn\fHs\fHH\fIl\fHT\fHn\fH{\fIl\fHH\fHp\fHR\fHc\fH{\fHR\fHY\fHS\fHA\fHR\fH{\fHt\fHO\fIa\fHs\fIk\fHJ\fIn\fHT\fH\\\fIk\fHJ\fHS\fHD\fIg\fHn\fHU\fHH\fIa\fHC\fHR\fHT\fIk\fHy\fIa\fHT\fH{\fHR\fHn\fHK\fIl\fHY\fHS\fHZ\fIa\fHY\fH\\\fHR\fHH\fIk\fHn\fHJ\fId\fHs\fIa\fHT\fHD\fHy\fIa\fHZ\fHR\fHT\fHR\fHB\fHD\fIk\fHi\fHJ\fHR\fH^\fHH\fH@\fHS\fHp\fH^\fIl\fHF\fIm\fH\\\fIn\fH[\fHU\fHS\fHn\fHJ\fIl\fHB\fHS\fHH\fIa\fH\\\fHy\fHY\fHS\fHH\fHR\fH\\\fIm\fHF\fHC\fIk\fHT\fIa\fHI\fHR\fHD\fHy\fH\\\fIg\fHM\fHP\fHB\fIm\fHy\fIa\fHH\fHC\fIg\fHp\fHD\fHR\fHy\fIo\fHF\fHC\fHR\fHF\fIg\fHT\fIa\fHs\fHt\fH\\\fIk\fH^\fIn\fHy\fHR\fH\\\fIa\fHC\fHY\fHS\fHv\fHR\fH\\\fHT\fIn\fHv\fHD\fHR\fHB\fIn\fH^\fIa\fHC\fHJ\fIk\fHz\fIk\fHn\fHU\fHB\fIk\fHZ\fHR\fHT\fIa\fHy\fIn\fH^\fHB\fId\fHn\fHD\fIk\fHH\fId\fHC\fHR\fH\\\fHp\fHS\fHT\fHy\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw= ?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8 ?,p`qjsw= ?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz= ?,kwno= lufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw= ,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8 gl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8 ?,p`qjsw= ?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju= \n\n?,gju= gjpsobz9#mlmf8!=!#,= ?ojmh#qfo>! ##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isdwkvnaofewubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw= \npAzWbdMbnf+p*X3^ip!=?,p`qjsw= ?-ip!=?,p`qjsw= ojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf= ##?sbdf= ?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*"y"W"W"["Q"U"V"@=i=l<^<\\=n=m!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isdqjdkwwkvna-ip!=?,p`qjsw= ?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,= ?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm= ##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8 jmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju= ?,gju= ?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf# ?,algz= ?,kwno= pwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!= afdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju= ?,gju=  wkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz= ?,kwno="y"W"W"["Q"U"V"@ wbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!= wkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,= `ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\aobmh!=Lm#wkf#lwkfq#kbmg/-isdwkvnaqjdkw1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz= ?,kwno= ?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!= gvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?"GL@WZSF#kwno= ?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju= ?,gju=  ?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw= sbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju= ?,gju= ?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju= ?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\n\n?,gju= \n\n?,gju= wkf#nlwjlm#sj`wvqf<}=f!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,, ?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw= ?,gju= ?gju#`obpp>!t0-lqd,2:::,{kwno!#  ?,algz= ?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<= t-bggFufmwOjpwfmfq!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,= nfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw= ?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg ?,p`qjsw= ?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..= ?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju= ?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju= ?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm ?,p`qjsw= ?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf ?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8 ?,p`qjsw= ?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw= ?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju= ?,gju= ?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le ?,gju= ?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,= jmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj= ?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!# ?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju= ?,gju= ?,gju= fpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9 ?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm= ?lswjlm#ubov?"GL@WZSF#kwno= ?"..XJmwfqmbwjlmbo#Bjqslqw= ?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\fTL\fT^\fTE\fT^\fUh\fT{\fTN\roI\ro|\roL\ro{\roO\rov\rot\nAOGx\bTA\nzk#+\vUmGx*\fHD\fHS\fH\\\fIa\fHJ\fIk\fHZ\fHM\fHR\fHe\fHD\fH^\fIg\fHM\fHy\fIa\fH[\fIk\fHH\fIa\fH\\\fHp\fHR\fHD\fHy\fHR\fH\\\fIl\fHT\fHn\fH@\fHn\fHK\fHS\fHH\fHT\fIa\fHI\fHR\fHF\fHD\fHR\fHT\fIa\fHY\fIl\fHy\fHR\fH\\\fHT\fHn\fHT\fIa\fHy\fH\\\fHO\fHT\fHR\fHB\fH{\fIa\fH\\\fIl\fHv\fHS\fHs\fIa\fHL\fIg\fHn\fHY\fHS\fHp\fIa\fHr\fHR\fHD\fHi\fHB\fIk\fH\\\fHS\fHy\fHR\fHY\fHS\fHA\fHS\fHD\fIa\fHD\fH{\fHR\fHM\fHS\fHC\fHR\fHm\fHy\fIa\fHC\fIg\fHn\fHy\fHS\fHT\fIm\fH\\\fHy\fIa\fH[\fHR\fHF\fHU\fIm\fHm\fHv\fHH\fIl\fHF\fIa\fH\\\fH@\fHn\fHK\fHD\fHs\fHS\fHF\fIa\fHF\fHO\fIl\fHy\fIa\fH\\\fHS\fHy\fIk\fHs\fHF\fIa\fH\\\fHR\fH\\\fHn\fHA\fHF\fIa\fH\\\fHR\fHF\fIa\fHH\fHB\fHR\fH^\fHS\fHy\fIg\fHn\fH\\\fHG\fHP\fIa\fHH\fHR\fH\\\fHD\fHS\fH\\\fIa\fHB\fHR\fHO\fH^\fHS\fHB\fHS\fHs\fIk\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?"GL@WZSF#kwno= ?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p ?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!# algz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!= ?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8 +evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\n\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm= ?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,= ojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw= ?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!= ?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!= ?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!= ?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,= #pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=&*&'&^&ˆŸా&ƭ&ƒ&)&^&%&'&‚&P&1&±&3&]&m&u&E&t&C&Ï&V&V&/&>&6&ྲྀ᝼o&p&@&E&M&P&x&@&F&e&Ì&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1ɞ*Ϫ⇳&፲&K&;&)&E&H&P&0&?&9&V&&-&v&a&,&E&)&?&=&'&'&B&മ&ԃ&̖*&*8&%&%&&&%,)&š&>&†&7&]&F&2&>&J&6&n&2&%&?&Ž&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%Լ„(,(<&,&Ϛ&ᣇ&-&,(%&(&%&(Ļ0&X&D&&j&'&J&(&.&B&3&Z&R&h&3&E&E&<Æ-͠ỳ&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&Cܬ⨥&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&ṸÌ-&7&1&F&7&t&W&7&I&.&.&^&=ྜ᧓&8(>&/&/&ݻ')'ၥ')'%@/&0&%оী*&*@&CԽהɴ׫4෗ܚӑ6඄&/Ÿ̃Z&*%ɆϿ&Ĵ&1¨ҴŴ",ja,"AAAAKKLLKKKKKJJIHHIHHGGFF"),wa(xa,ja);function Xa(g){this.data=new Int8Array(0),this.offset=0,this.data=g}function Ks(g,T,R,P){if(g.input===null)return-1;const O=g.input,ne=Math.min(O.offset+P,O.data.length),xe=ne-O.offset;return T.set(O.data.subarray(O.offset,ne),R),O.offset+=xe,xe}function le(g){g.input=new Xa(new Int8Array(0))}function ge(g){const T=g.length,R=new Int8Array(T);for(let P=0;P=0)return T;throw g.runningState>=0&&(g.runningState=T),new Error("Brotli error code: "+T)}function nt(g,T){let R=new en;if(R.input=new Xa(g),b(R),T){let ve=T.customDictionary;ve&&m(R,ve)}let P=0,O=[];for(;;){let ve=new Int8Array(16384);if(O.push(ve),R.output=ve,R.outputOffset=0,R.outputLength=16384,R.outputUsed=0,ie(R),P+=R.outputUsed,R.outputUsed<16384)break}w(R),le(R);let ne=new Int8Array(P),xe=0;for(let ve=0;ve{throw de},a=import.meta.url,i="";try{i=new URL(".",a).href}catch{}console.log.bind(console);var r=console.error.bind(console),o=!1,f,l,c,h,u,d=!1;function p(){var W=Ee.buffer;h=new Int8Array(W),u=new Uint8Array(W),new BigInt64Array(W),new BigUint64Array(W)}function m(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)F(n.preRun.shift());q(S)}function b(){d=!0,He.j()}function w(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)A(n.postRun.shift());q(v)}function x(W){n.onAbort?.(W),W="Aborted("+W+")",r(W),o=!0,W+=". Build with -sASSERTIONS for more info.";var de=new WebAssembly.RuntimeError(W);throw c?.(de),de}function j(){var W={a:Ue};return W}async function k(){function W(Z,we){return He=Z.exports,_e(He),p(),He}var de=j();return new Promise((Z,we)=>{n.instantiateWasm(de,(ce,Me)=>{Z(W(ce))})})}class y{name="ExitStatus";constructor(de){this.message=`Program terminated with exit(${de})`,this.status=de}}var q=W=>{for(;W.length>0;)W.shift()(n)},v=[],A=W=>v.push(W),S=[],F=W=>S.push(W),M=!0,N=()=>x(""),D=0,$=()=>{M=!1,D=0},K={},oe=W=>{if(W instanceof y||W=="unwind")return f;s(1,W)},me=()=>M||D>0,X=W=>{f=W,me()||(n.onExit?.(W),o=!0),s(W,new y(W))},ee=(W,de)=>{f=W,X(W)},ye=ee,Be=()=>{if(!me())try{ye(f)}catch(W){oe(W)}},ae=W=>{if(!o)try{return W()}catch(de){oe(de)}finally{Be()}},$e=()=>performance.now(),tt=(W,de)=>{if(K[W]&&(clearTimeout(K[W].id),delete K[W]),!de)return 0;var Z=setTimeout(()=>{delete K[W],ae(()=>Fe(W,$e()))},de);return K[W]={id:Z,timeout_ms:de},0};function G(W){n.imageData=new Uint8Array(W)}var _=()=>2147483648,L=(W,de)=>Math.ceil(W/de)*de,z=W=>{var de=Ee.buffer.byteLength,Z=(W-de+65535)/65536|0;try{return Ee.grow(Z),p(),1}catch{}},te=W=>{var de=u.length;W>>>=0;var Z=_();if(W>Z)return!1;for(var we=1;we<=4;we*=2){var ce=de*(1+.2/we);ce=Math.min(ce,W+100663296);var Me=Math.min(Z,L(Math.max(W,ce),65536)),qe=z(Me);if(qe)return!0}return!1};function je(W,de,Z,we){if(Z===de){n.imageData=new Uint8ClampedArray(u.subarray(W,W+Z*we));return}const ce=de*we,Me=n.imageData=new Uint8ClampedArray(ce);for(let qe=W,Le=0;Le{h.set(W,de)};if(n.noExitRuntime&&(M=n.noExitRuntime),n.print&&n.print,n.printErr&&(r=n.printErr),n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.writeArrayToMemory=ie;var Fe,Ee;function _e(W){n._malloc=W.k,n._free=W.l,n._jbig2_decode=W.m,n._ccitt_decode=W.n,Fe=W.o,Ee=W.i,W.__indirect_function_table}var Ue={e:N,b:$,c:tt,g:G,d:te,a:X,h:je,f:he};function Ne(){m();function W(){n.calledRun=!0,!o&&(b(),l?.(n),n.onRuntimeInitialized?.(),w())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),W()},1)):W()}var He;return He=await k(),Ne(),d?e=n:e=new Promise((W,de)=>{l=W,c=de}),e}const ld=fd;class gn{static#e=null;static#t=new Set;static#s=!0;static#a=!0;static#n=null;#i=null;#r=null;_filename=null;_noWasmFilename=null;static setOptions({handler:e,useWasm:n,useWorkerFetch:s,wasmUrl:a}){gn.#s=n,gn.#a=s,gn.#n=a,s||(gn.#e=e)}static get instance(){st("Abstract getter `instance` accessed")}static cleanup(){for(const e of gn.#t)e.#r=null}constructor(e=!1){e&&gn.#t.add(this)}async#f(e){let n=null;try{n=(await import(`${gn.#n}${this._noWasmFilename}`)).default()}catch(s){H(`#getJsModule: ${s}`)}e(n)}async#o(e,n,s){try{this.#i||(gn.#a?this.#i=await Uo(`${gn.#n}${this._filename}`):this.#i=await gn.#e.sendWithPromise("FetchBinaryData",{kind:"wasmUrl",filename:this._filename}));const a=await WebAssembly.instantiate(this.#i,n);return s(a.instance)}catch(a){return H(`#instantiateWasm: ${a}`),this.#f(e),null}}_getModule(e){if(!this.#r){const{promise:n,resolve:s}=Promise.withResolvers(),a=[n];gn.#s?a.push(e({warn:H,instantiateWasm:this.#o.bind(this,s)})):this.#f(s),this.#r=Promise.race(a)}return this.#r}async decode(e,n){st("Abstract method `decode` called")}}class ql extends Bn{constructor(e){super(e,"Jbig2Error")}}class L0 extends gn{_filename="jbig2.wasm";_noWasmFilename="jbig2_nowasm_fallback.js";static get instance(){return ue(this,"instance",new L0(!0))}async decode(e,n,s,a,i){const r=await this._getModule(ld);if(!r)throw new ql("JBig2 failed to initialize");let o,f;try{const l=e.length;if(o=r._malloc(l),r.writeArrayToMemory(e,o),i)r._ccitt_decode(o,l,n,s,i.K,i.EndOfLine?1:0,i.EncodedByteAlign?1:0,i.BlackIs1?1:0,i.Columns,i.Rows);else{const h=a?a.length:0;h>0&&(f=r._malloc(h),r.writeArrayToMemory(a,f)),r._jbig2_decode(o,l,n,s,f,h)}if(!r.imageData)throw new ql("Unknown error");const{imageData:c}=r;return r.imageData=null,c}finally{o&&r._free(o),f&&r._free(f)}}}class cd extends jn{constructor(e,n,s){super(n),this.stream=e,this.maybeLength=n,this.dict=e.dict,s instanceof B||(s=B.empty),this.params={K:s.get("K")||0,EndOfLine:!!s.get("EndOfLine"),EncodedByteAlign:!!s.get("EncodedByteAlign"),Columns:s.get("Columns")||1728,Rows:s.get("Rows")||0,EndOfBlock:!!(s.get("EndOfBlock")??!0),BlackIs1:!!s.get("BlackIs1")}}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}get isImageStream(){return!0}get isAsyncDecoder(){return!0}async decodeImage(e,n,s){return this.eof?this.buffer:(e??=this.stream.isAsync?await this.stream.asyncGetBytes()||this.bytes:this.bytes,this.buffer=await L0.instance.decode(e,this.dict.get("W","Width"),this.dict.get("H","Height"),null,this.params),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer)}}const vl=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),hd=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]),ud=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]),dd=[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],md=[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 Sl extends jn{#e=!0;constructor(e,n){super(n),this.stream=e,this.dict=e.dict;const s=e.getByte(),a=e.getByte();if(s===-1||a===-1)throw new Y(`Invalid header in flate stream: ${s}, ${a}`);if((s&15)!==8)throw new Y(`Unknown compression method in flate stream: ${s}, ${a}`);if(((s<<8)+a)%31!==0)throw new Y(`Bad FCHECK in flate stream: ${s}, ${a}`);if(a&32)throw new Y(`FDICT bit set in flate stream: ${s}, ${a}`);this.codeSize=0,this.codeBuf=0}async getImageData(e,n){const s=await this.asyncGetBytes();return s?s.length<=e?s:s.subarray(0,e):this.getBytes(e)}async asyncGetBytes(){const{decompressed:e,compressed:n}=await this.asyncGetBytesFromDecompressionStream("deflate");return e||(this.#e=!1,this.stream=new yt(n,2,n.length,this.stream.dict),this.reset(),null)}get isAsync(){return this.#e}getBits(e){const n=this.stream;let s=this.codeSize,a=this.codeBuf,i;for(;s>e,this.codeSize=s-=e,i}getCode(e){const n=this.stream,s=e[0],a=e[1];let i=this.codeSize,r=this.codeBuf,o;for(;i>16,c=f&65535;if(l<1||i>l,this.codeSize=i-l,c}generateHuffmanTable(e){const n=e.length;let s=0,a;for(a=0;as&&(s=e[a]);const i=1<>=1;for(a=h;a>=1,n===0){let l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}let c=l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}if(c|=l<<8,(l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}let h=l;if((l=a.getByte())===-1){this.#t("Bad block header in flate stream");return}if(h|=l<<8,h!==(~c&65535)&&(c!==0||h!==0))throw new Y("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;const u=this.bufferLength,d=u+c;if(e=this.ensureBuffer(d),this.bufferLength=d,c===0)a.peekByte()===-1&&(this.eof=!0);else{const p=a.getBytes(c);e.set(p,u),p.length0;)b[d++]=j}i=this.generateHuffmanTable(b.subarray(0,l)),r=this.generateHuffmanTable(b.subarray(l,m))}else throw new Y("Unknown block type in flate stream");e=this.buffer;let o=e?e.length:0,f=this.bufferLength;for(;;){let l=this.getCode(i);if(l<256){f+1>=o&&(e=this.ensureBuffer(f+1),o=e.length),e[f++]=l;continue}if(l===256){this.bufferLength=f;return}l-=257,l=hd[l];let c=l>>16;c>0&&(c=this.getBits(c)),s=(l&65535)+c,l=this.getCode(r),l=ud[l],c=l>>16,c>0&&(c=this.getBits(c));const h=(l&65535)+c;f+s>=o&&(e=this.ensureBuffer(f+s),o=e.length);for(let u=0;u=9&&e[0]===151&&e[1]===74&&e[2]===66&&e[3]===50&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10){const n=(e[8]&2)===0?13:9;return e.subarray(n)}return e}async decodeImage(e,n,s){if(this.eof)return this.buffer;e=q0.stripFileHeader(e||this.bytes);let a=null;if(this.params instanceof B){const i=this.params.get("JBIG2Globals");i instanceof Pe&&(a=q0.stripFileHeader(i.getBytes()))}return this.buffer=await L0.instance.decode(e,this.dict.get("Width"),this.dict.get("Height"),a),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}async function pd(t={}){var e,n=t,s="./this.program",a=(le,ge)=>{throw ge},i=import.meta.url,r="";try{r=new URL(".",i).href}catch{}var o=console.log.bind(console),f=console.error.bind(console),l=!1,c,h,u,d=!1;function p(){var le=Fs.buffer;v=new Int8Array(le),S=new Uint8Array(le),q=new Int32Array(le),A=new Uint32Array(le),new BigInt64Array(le),new BigUint64Array(le)}function m(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)$(n.preRun.shift());F(D)}function b(){d=!0,Ks.s()}function w(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)N(n.postRun.shift());F(M)}function x(le){n.onAbort?.(le),le=`Aborted(${le})`,f(le),l=!0,le+=". Build with -sASSERTIONS for more info.";var ge=new WebAssembly.RuntimeError(le);throw u?.(ge),ge}function j(){var le={a:ja};return le}async function k(){function le(Ae,Ie){return Ks=Ae.exports,xa(Ks),p(),Ks}var ge=j();return new Promise((Ae,Ie)=>{n.instantiateWasm(ge,(nt,g)=>{Ae(le(nt))})})}class y{name="ExitStatus";constructor(ge){this.message=`Program terminated with exit(${ge})`,this.status=ge}}var q,v,A,S,F=le=>{for(;le.length>0;)le.shift()(n)},M=[],N=le=>M.push(le),D=[],$=le=>D.push(le),K=!0,oe=()=>x(""),me=0,X=()=>{K=!1,me=0},ee={},ye=le=>{if(le instanceof y||le=="unwind")return c;a(1,le)},Be=()=>K||me>0,ae=le=>{c=le,Be()||(n.onExit?.(le),l=!0),a(le,new y(le))},$e=(le,ge)=>{c=le,ae(le)},tt=$e,G=()=>{if(!Be())try{tt(c)}catch(le){ye(le)}},_=le=>{if(!l)try{return le()}catch(ge){ye(ge)}finally{G()}},L=()=>performance.now(),z=(le,ge)=>{if(ee[le]&&(clearTimeout(ee[le].id),delete ee[le]),!ge)return 0;var Ae=setTimeout(()=>{delete ee[le],_(()=>wa(le,L()))},ge);return ee[le]={id:Ae,timeout_ms:ge},0};function te(le,ge){le>>=2;const Ae=n.imageData=new Uint8ClampedArray(ge),Ie=q.subarray(le,le+ge);Ae.set(Ie)}function je(le,ge,Ae,Ie){le>>=2,ge>>=2,Ae>>=2;const nt=n.imageData=new Uint8ClampedArray(Ie*3),g=q.subarray(le,le+Ie),T=q.subarray(ge,ge+Ie),R=q.subarray(Ae,Ae+Ie);for(let P=0;P>=2,ge>>=2,Ae>>=2,Ie>>=2;const g=n.imageData=new Uint8ClampedArray(nt*4),T=q.subarray(le,le+nt),R=q.subarray(ge,ge+nt),P=q.subarray(Ae,Ae+nt),O=q.subarray(Ie,Ie+nt);for(let ne=0;ne2147483648,Fe=(le,ge)=>Math.ceil(le/ge)*ge,Ee=le=>{var ge=Fs.buffer.byteLength,Ae=(le-ge+65535)/65536|0;try{return Fs.grow(Ae),p(),1}catch{}},_e=le=>{var ge=S.length;le>>>=0;var Ae=ie();if(le>Ae)return!1;for(var Ie=1;Ie<=4;Ie*=2){var nt=ge*(1+.2/Ie);nt=Math.min(nt,le+100663296);var g=Math.min(Ae,Fe(Math.max(le,nt),65536)),T=Ee(g);if(T)return!0}return!1},Ue={},Ne=()=>s||"./this.program",He=()=>{if(!He.strings){var le=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",ge={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:le,_:Ne()};for(var Ae in Ue)Ue[Ae]===void 0?delete ge[Ae]:ge[Ae]=Ue[Ae];var Ie=[];for(var Ae in ge)Ie.push(`${Ae}=${ge[Ae]}`);He.strings=Ie}return He.strings},W=(le,ge,Ae,Ie)=>{if(!(Ie>0))return 0;for(var nt=Ae,g=Ae+Ie-1,T=0;T=g)break;ge[Ae++]=R}else if(R<=2047){if(Ae+1>=g)break;ge[Ae++]=192|R>>6,ge[Ae++]=128|R&63}else if(R<=65535){if(Ae+2>=g)break;ge[Ae++]=224|R>>12,ge[Ae++]=128|R>>6&63,ge[Ae++]=128|R&63}else{if(Ae+3>=g)break;ge[Ae++]=240|R>>18,ge[Ae++]=128|R>>12&63,ge[Ae++]=128|R>>6&63,ge[Ae++]=128|R&63,T++}}return ge[Ae]=0,Ae-nt},de=(le,ge,Ae)=>W(le,S,ge,Ae),Z=(le,ge)=>{var Ae=0,Ie=0;for(var nt of He()){var g=ge+Ae;A[le+Ie>>2]=g,Ae+=de(nt,g,1/0)+1,Ie+=4}return 0},we=le=>{for(var ge=0,Ae=0;Ae=55296&&Ie<=57343?(ge+=4,++Ae):ge+=3}return ge},ce=(le,ge)=>{var Ae=He();A[le>>2]=Ae.length;var Ie=0;for(var nt of Ae)Ie+=we(nt)+1;return A[ge>>2]=Ie,0};function Me(le,ge,Ae,Ie){return 70}var qe=[null,[],[]],Le=globalThis.TextDecoder&&new TextDecoder,Ce=(le,ge,Ae,Ie)=>{for(var nt=ge+Ae;le[ge]&&!(ge>=nt);)++ge;return ge},Je=(le,ge=0,Ae,Ie)=>{var nt=Ce(le,ge,Ae);if(nt-ge>16&&le.buffer&&Le)return Le.decode(le.subarray(ge,nt));for(var g="";ge>10,56320|O&1023)}}return g},ot=(le,ge)=>{var Ae=qe[le];ge===0||ge===10?((le===1?o:f)(Je(Ae)),Ae.length=0):Ae.push(ge)},lt=(le,ge,Ae)=>le?Je(S,le,ge):"",Ft=(le,ge,Ae,Ie)=>{for(var nt=0,g=0;g>2],R=A[ge+4>>2];ge+=8;for(var P=0;P>2]=nt,0};function Qe(le,ge){le>>=2;const Ae=n.imageData=new Uint8ClampedArray(ge*4),Ie=q.subarray(le,le+ge);for(let nt=0;nt>=2,ge>>=2;const Ie=n.imageData=new Uint8ClampedArray(Ae*4),nt=q.subarray(le,le+Ae),g=q.subarray(ge,ge+Ae);for(let T=0;T>=2,ge>>=2,Ae>>=2;const nt=n.imageData=new Uint8ClampedArray(Ie*4),g=q.subarray(le,le+Ie),T=q.subarray(ge,ge+Ie),R=q.subarray(Ae,Ae+Ie);for(let P=0;P{v.set(le,ge)};if(n.noExitRuntime&&(K=n.noExitRuntime),n.print&&(o=n.print),n.printErr&&(f=n.printErr),n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&(s=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.writeArrayToMemory=$a;var wa,Fs;function xa(le){n._malloc=le.t,n._free=le.u,n._jp2_decode=le.v,wa=le.w,Fs=le.r,le.__indirect_function_table}var ja={m:oe,l:X,i:z,f:te,e:je,d:he,j:_e,o:Z,p:ce,n:Me,b:Ft,q:Qe,h:Lt,c:en,k:ae,g:Rn,a:ss};function Xa(){m();function le(){n.calledRun=!0,!l&&(b(),h?.(n),n.onRuntimeInitialized?.(),w())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),le()},1)):le()}var Ks;return Ks=await k(),Xa(),d?e=n:e=new Promise((le,ge)=>{h=le,u=ge}),e}const gd=pd;class Kr extends Bn{constructor(e){super(e,"JpxError")}}class z0 extends gn{_filename="openjpeg.wasm";_noWasmFilename="openjpeg_nowasm_fallback.js";static get instance(){return ue(this,"instance",new z0(!0))}async decode(e,{numComponents:n=4,isIndexedColormap:s=!1,smaskInData:a=!1,reducePower:i=0}={}){const r=await this._getModule(gd);if(!r)throw new Kr("OpenJPEG failed to initialize");let o;try{const f=e.length;if(o=r._malloc(f),r.writeArrayToMemory(e,o),r._jp2_decode(o,f,n>0?n:0,!!s,!!a,i)){const{errorMessages:h}=r;throw h?(delete r.errorMessages,new Kr(h)):new Kr("Unknown error")}const{imageData:c}=r;return r.imageData=null,c}finally{o&&r._free(o)}}static parseImageProperties(e){let n=e.getByte();for(;n>=0;){const s=n;if(n=e.getByte(),(s<<8|n)===65361){e.skip(4);const i=e.getInt32()>>>0,r=e.getInt32()>>>0,o=e.getInt32()>>>0,f=e.getInt32()>>>0;e.skip(16);const l=e.getUint16();return{width:i-o,height:r-f,bitsPerComponent:8,componentsCount:l}}}throw new Kr("No size marker found in JPX stream")}}class bd extends jn{constructor(e,n){super(n),this.stream=e,this.dict=e.dict,this.maybeLength=n}get bytes(){return ue(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}get isAsyncDecoder(){return!0}async decodeImage(e,n,s){return this.eof?this.buffer:(e||=this.bytes,this.buffer=await z0.instance.decode(e,s),this.bufferLength=this.buffer.length,this.eof=!0,this.buffer)}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}get isImageStream(){return!0}}class Al extends jn{constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.cachedData=0,this.bitsCached=0;const a=4096,i={earlyChange:s,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let r=0;r<256;++r)i.dictionaryValues[r]=r,i.dictionaryLengths[r]=1;this.lzwState=i}readBits(e){let n=this.bitsCached,s=this.cachedData;for(;n>>n&(1<0;if(k<256)m[0]=k,b=1;else if(k>=258)if(k=0;i--)m[i]=c[r],r=u[r];else m[b++]=m[0];else if(k===256){d=9,l=258,b=0;continue}else{this.eof=!0,delete this.lzwState;break}if(y&&(u[l]=p,h[l]=h[p]+1,c[l]=m[0],l++,d=l+f&l+f-1?d:Math.min(Math.log(l+f)/.6931471805599453+1,12)|0),p=k,w+=b,s15))throw new Y(`Unsupported predictor: ${a}`);this.readBlock=a===2?this.readBlockTiff:this.readBlockPng,this.stream=e,this.dict=e.dict;const i=this.colors=s.get("Colors")||1,r=this.bits=s.get("BPC","BitsPerComponent")||8,o=this.columns=s.get("Columns")||1;return this.pixBytes=i*r+7>>3,this.rowBytes=o*i*r+7>>3,this}readBlockTiff(){const e=this.rowBytes,n=this.bufferLength,s=this.ensureBuffer(n+e),a=this.bits,i=this.colors,r=this.stream.getBytes(e);if(this.eof=!r.length,this.eof)return;let o=0,f=0,l=0,c=0,h=n,u;if(a===1&&i===1)for(u=0;u>1,d^=d>>2,d^=d>>4,o=(d&1)<<7,s[h++]=d}else if(a===8){for(u=0;u>8&255,s[h++]=p&255}}else{const d=new Uint8Array(i+1),p=(1<>l-a)&p,l-=a,f=f<=8&&(s[b++]=f>>c-8&255,c-=8);c>0&&(s[b++]=(f<<8-c)+(o&(1<<8-c)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,n=this.pixBytes,s=this.stream.getByte(),a=this.stream.getBytes(e);if(this.eof=!a.length,this.eof)return;const i=this.bufferLength,r=this.ensureBuffer(i+e);let o=r.subarray(i-e,i);o.length===0&&(o=new Uint8Array(e));let f,l=i,c,h;switch(s){case 0:for(f=0;f>1)+a[f];for(;f>1)+a[f]&255,l++;break;case 4:for(f=0;f0){const i=this.stream.getBytes(a);n.set(i,s),s+=a}}else a=257-a,n=this.ensureBuffer(s+a+1),n.fill(e[1],s,s+a),s+=a;this.bufferLength=s}}const xd=1e3;function jd(t){const e=[],n=t.length;let s=0;for(;s>")&&this.buf1!==ln;){if(!(this.buf1 instanceof J)){ut("Malformed dictionary: key must be a name object"),this.shift();continue}const i=this.buf1.name;if(this.shift(),this.buf1===ln)break;a.set(i,this.getObj(e))}if(this.buf1===ln){if(this.recoveryMode)return a;throw new zo("End of file inside dictionary.")}return Qt(this.buf2,"stream")?this.allowStreams?this.makeStream(a,e):a:(this.shift(),a);default:return n}if(Number.isInteger(n)){if(Number.isInteger(this.buf1)&&Qt(this.buf2,"R")){const s=Q.get(n,this.buf1);return this.shift(),this.shift(),s}return n}return typeof n=="string"&&e?e.decryptString(n):n}findDefaultInlineStreamEnd(e){const{knownCommands:f}=this.lexer,l=e.pos,c=15;let h=0,u,d;for(;(u=e.getByte())!==-1;)if(h===0)h=u===69?1:0;else if(h===1)h=u===73?2:0;else if(u===32||u===10||u===13){d=e.pos;const m=e.peekBytes(c),b=m.length;if(b===0)break;for(let j=0;j127)){h=0;break}if(h!==2)continue;if(!f){H("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const w=new cs(new yt(e.peekBytes(5*c)),f);w._hexStringWarn=()=>{};let x=0;for(;;){const j=w.getObj();if(j===ln){h=0;break}if(j instanceof Ut){const k=f[j.cmd];if(k){if(k.variableArgs?x<=k.numArgs:x===k.numArgs)break}else{h=0;break}x=0;continue}x++}if(h===2)break}else h=0;u===-1&&(H("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"),d&&(H('... trying to recover by using the last "EI" occurrence.'),e.skip(-(e.pos-d))));let p=4;return e.skip(-p),u=e.peekByte(),e.skip(p),es(u)||p--,e.pos-p-l}findDCTDecodeInlineStreamEnd(e){const n=e.pos;let s=!1,a,i;for(;(a=e.getByte())!==-1;)if(a===255){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:s=!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:i=e.getUint16(),i>2?e.skip(i-2):e.skip(-2);break}if(s)break}const r=e.pos-n;return a===-1?(H("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."),e.skip(-r),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),r)}findASCII85DecodeInlineStreamEnd(e){const a=e.pos;let i;for(;(i=e.getByte())!==-1;)if(i===126){const o=e.pos;for(i=e.peekByte();es(i);)e.skip(),i=e.peekByte();if(i===62){e.skip();break}if(e.pos>o){const f=e.peekBytes(2);if(f[0]===69&&f[1]===73)break}}const r=e.pos-a;return i===-1?(H("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-r),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),r)}findASCIIHexDecodeInlineStreamEnd(e){const s=e.pos;let a;for(;(a=e.getByte())!==-1&&a!==62;);const i=e.pos-s;return a===-1?(H("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-i),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),i)}inlineStreamSkipEI(e){let a=0,i;for(;(i=e.getByte())!==-1;)if(a===0)a=i===69?1:0;else if(a===1)a=i===73?2:0;else if(a===2)break}makeInlineImage(e){const n=this.lexer,s=n.stream,a=new B(this.xref);let i;for(;!Qt(this.buf1,"ID")&&this.buf1!==ln;){if(!(this.buf1 instanceof J))throw new Y("Dictionary key must be a name object");const u=this.buf1.name;if(this.shift(),this.buf1===ln)break;a.set(u,this.getObj(e))}n.beginInlineImagePos!==-1&&(i=s.pos-n.beginInlineImagePos);const r=a.get("F","Filter");let o;if(r instanceof J)o=r.name;else if(Array.isArray(r)){const u=this.#s(r[0]);u instanceof J&&(o=u.name)}const f=s.pos;let l;switch(o){case"DCT":case"DCTDecode":l=this.findDCTDecodeInlineStreamEnd(s);break;case"A85":case"ASCII85Decode":l=this.findASCII85DecodeInlineStreamEnd(s);break;case"AHx":case"ASCIIHexDecode":l=this.findASCIIHexDecodeInlineStreamEnd(s);break;default:l=this.findDefaultInlineStreamEnd(s)}let c;if(l0){const u=s.pos;s.pos=n.beginInlineImagePos,c=jd(s.getBytes(i+l)),s.pos=u;const d=this.#e?.get(c);if(d)return this.buf2=Ut.get("EI"),this.shift(),d.reset(),d}let h=s.makeSubStream(f,l,a);return e&&!this.#a(r)&&(h=e.createStream(h,l)),h=this.filter(h,a,l,e),h.dict=a,c&&(h.cacheKey=`inline_img_${++this.#t}`,(this.#e??=new Map).set(c,h)),this.buf2=Ut.get("EI"),this.shift(),h}#s(e){return this.xref?this.xref.fetchIfRef(e):e}#a(e){return Array.isArray(e)?e.some(n=>ze(this.#s(n),"Crypt")):ze(e,"Crypt")}#n(e){const{stream:n}=this.lexer;n.pos=e;const s=2048,a=9,i=new Uint8Array([101,110,100]),r=i.length,o=[new Uint8Array([115,116,114,101,97,109]),new Uint8Array([115,116,101,97,109]),new Uint8Array([115,116,114,101,97])],f=a-r;for(;n.pos=r){let d=!1;for(const p of o){const m=p.length;let b=0;for(;b=f){d=!0;break}if(b>=m){const w=l[h+u+b];es(w)&&(ut(`Found "${An([...i,...p])}" when searching for endstream command.`),d=!0);break}}if(d)return n.pos+=h,n.pos-e}h++}n.pos+=c}return-1}makeStream(e,n){const s=this.lexer;let a=s.stream;s.skipToNextLine();const i=a.pos-1;let r=e.get("Length");if(Number.isInteger(r)||(ut(`Bad length "${r&&r.toString()}" in stream.`),r=0),a.pos=i+r,s.nextChar(),this.tryShift()&&Qt(this.buf2,"endstream"))this.shift();else{if(r=this.#n(i),r<0)throw new Y("Missing endstream command.");s.nextChar(),this.shift(),this.shift()}this.shift(),a=a.makeSubStream(i,r,e);const o=e.get("F","Filter");return n&&!this.#a(o)&&(a=n.createStream(a,r)),a=this.filter(a,e,r,n),a.dict=e,a}filter(e,n,s,a=null){let i=n.get("F","Filter"),r=n.get("DP","DecodeParms");if(i instanceof J)return Array.isArray(r)&&H("/DecodeParms should not be an Array, when /Filter is a Name."),this.makeFilter(e,i.name,s,r,a);let o=s;if(Array.isArray(i)){const f=i,l=r;for(let c=0,h=f.length;c=48&&t<=57?t&15:t>=65&&t<=70||t>=97&&t<=102?(t&15)+9:-1}class cs{constructor(e,n=null){this.stream=e,this.nextChar(),this.strBuf=[],this.knownCommands=n,this._hexStringNumWarn=0,this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,n=0,s=1;if(e===45?(s=-1,e=this.nextChar(),e===45&&(e=this.nextChar())):e===43&&(e=this.nextChar()),e===10||e===13)do e=this.nextChar();while(e===10||e===13);if(e===46&&(n=10,e=this.nextChar()),e<48||e>57){const i=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(es(e)||e===40||e===60||e===-1)return ut(`Lexer.getNumber - "${i}".`),0;throw new Y(i)}let a=e-48;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const i=e-48;n!==0&&(n*=10),a=a*10+i}else if(e===46)if(n===0)n=1;else break;else if(e===45)H("Badly formatted number: minus sign in the middle");else break;return n!==0&&(a/=n),s*a}getString(){let e=1,n=!1;const s=this.strBuf;s.length=0;let a=this.nextChar();for(;;){let i=!1;switch(a|0){case-1:H("Unterminated string"),n=!0;break;case 40:++e,s.push("(");break;case 41:--e===0?(this.nextChar(),n=!0):s.push(")");break;case 92:switch(a=this.nextChar(),a){case-1:H("Unterminated string"),n=!0;break;case 110:s.push(` +`);break;case 114:s.push("\r");break;case 116:s.push(" ");break;case 98:s.push("\b");break;case 102:s.push("\f");break;case 92:case 40:case 41:s.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let r=a&15;a=this.nextChar(),i=!0,a>=48&&a<=55&&(r=(r<<3)+(a&15),a=this.nextChar(),a>=48&&a<=55&&(i=!1,r=(r<<3)+(a&15))),s.push(String.fromCharCode(r));break;case 13:this.peekChar()===10&&this.nextChar();break;case 10:break;default:s.push(String.fromCharCode(a));break}break;default:s.push(String.fromCharCode(a));break}if(n)break;i||(a=this.nextChar())}return s.join("")}getName(){let e,n;const s=this.strBuf;for(s.length=0;(e=this.nextChar())>=0&&!ei[e];)if(e===35){if(e=this.nextChar(),ei[e]){H("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."),s.push("#");break}const a=fo(e);if(a!==-1){n=e,e=this.nextChar();const i=fo(e);if(i===-1){if(H(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`),s.push("#",String.fromCharCode(n)),ei[e])break;s.push(String.fromCharCode(e));continue}s.push(String.fromCharCode(a<<4|i))}else s.push("#",String.fromCharCode(e))}else s.push(String.fromCharCode(e));return s.length>127&&H(`Name token is longer than allowed by the spec: ${s.length}`),J.get(s.join(""))}_hexStringWarn(e){if(this._hexStringNumWarn++===5){H("getHexString - ignoring additional invalid characters.");return}this._hexStringNumWarn>5||H(`getHexString - ignoring invalid character: ${e}`)}getHexString(){const e=this.strBuf;e.length=0;let n=this.currentChar,s=-1,a=-1;for(this._hexStringNumWarn=0;;)if(n<0){H("Unterminated hex string");break}else if(n===62){this.nextChar();break}else if(ei[n]===1){n=this.nextChar();continue}else a=fo(n),a===-1?this._hexStringWarn(n):s===-1?s=a:(e.push(String.fromCharCode(s<<4|a)),s=-1),n=this.nextChar();return s!==-1&&e.push(String.fromCharCode(s<<4)),e.join("")}getObj(){let e=!1,n=this.currentChar;for(;;){if(n<0)return ln;if(e)(n===10||n===13)&&(e=!1);else if(n===37)e=!0;else if(ei[n]!==1)break;n=this.nextChar()}switch(n|0){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:return this.nextChar(),Ut.get("[");case 93:return this.nextChar(),Ut.get("]");case 60:return n=this.nextChar(),n===60?(this.nextChar(),Ut.get("<<")):this.getHexString();case 62:return n=this.nextChar(),n===62?(this.nextChar(),Ut.get(">>")):Ut.get(">");case 123:return this.nextChar(),Ut.get("{");case 125:return this.nextChar(),Ut.get("}");case 41:throw this.nextChar(),new Y(`Illegal character: ${n}`)}let s=String.fromCharCode(n);if(n<32||n>127){const r=this.peekChar();if(r>=32&&r<=127)return this.nextChar(),Ut.get(s)}const a=this.knownCommands;let i=a?.[s]!==void 0;for(;(n=this.nextChar())>=0&&!ei[n];){const r=s+String.fromCharCode(n);if(i&&a[r]===void 0)break;if(s.length===128)throw new Y(`Command token too long: ${s.length}`);s=r,i=a?.[s]!==void 0}return s==="true"?!0:s==="false"?!1:s==="null"?null:(s==="BI"&&(this.beginInlineImagePos=this.stream.pos),Ut.get(s))}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(e===13){e=this.nextChar(),e===10&&this.nextChar();break}else if(e===10){this.nextChar();break}e=this.nextChar()}}}class kd{static create(e){function n(h,u,d=!1){const p=h.get(u);if(Number.isInteger(p)&&(d?p>=0:p>0))return p;throw new Error(`The "${u}" parameter in the linearization dictionary is invalid.`)}function s(h){const u=h.get("H");let d;if(Array.isArray(u)&&((d=u.length)===2||d===4)){for(let p=0;p0))throw new Error(`Hint (${p}) in the linearization dictionary is invalid.`)}return u}throw new Error("Hint array in the linearization dictionary is invalid.")}const a=new Zs({lexer:new cs(e),xref:null}),i=a.getObj(),r=a.getObj(),o=a.getObj(),f=a.getObj();let l,c;if(Number.isInteger(i)&&Number.isInteger(r)&&Qt(o,"obj")&&f instanceof B&&typeof(l=f.get("Linearized"))=="number"&&l>0){if((c=n(f,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.')}else return null;return{length:c,hints:s(f),objectNumberFirst:n(f,"O"),endFirst:n(f,"E"),numPages:n(f,"N"),mainXRefEntriesOffset:n(f,"T"),pageFirst:f.has("P")?n(f,"P",!0):0}}}const yd=["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"],lo=2**24-1;class qf{constructor(e=!1){this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.name="",this.vertical=!1,this.useCMap=null,this.builtInCMap=e}addCodespaceRange(e,n,s){this.codespaceRanges[e-1].push(n,s),this.numCodespaceRanges++}mapCidRange(e,n,s){if(n-e>lo)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=n;)this._map[e++]=s++}mapBfRange(e,n,s){if(n-e>lo)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=s.length-1;for(;e<=n;){this._map[e++]=s;const i=s.charCodeAt(a)+1;if(i>255){s=s.substring(0,a-1)+String.fromCharCode(s.charCodeAt(a-1)+1)+"\0";continue}s=s.substring(0,a)+String.fromCharCode(i)}}mapBfRangeToArray(e,n,s){if(n-e>lo)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=s.length;let i=0;for(;e<=n&&i>>0;const f=i[r];for(let l=0,c=f.length;l=h&&a<=u){s.charcode=a,s.length=r+1;return}}}s.charcode=0,s.length=1}getCharCodeLength(e){const n=this.codespaceRanges;for(let s=0,a=n.length;s=f&&e<=l)return s+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if(!(this.name==="Identity-H"||this.name==="Identity-V")||this._map.length!==65536)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class sr extends qf{constructor(e,n){super(),this.vertical=e,this.addCodespaceRange(n,0,65535)}mapCidRange(e,n,s){st("should not call mapCidRange")}mapBfRange(e,n,s){st("should not call mapBfRange")}mapBfRangeToArray(e,n,s){st("should not call mapBfRangeToArray")}mapOne(e,n){st("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 n=0;n<=65535;n++)e(n,n)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let n=0;n<=65535;n++)e[n]=n;return e}get length(){return 65536}get isIdentityCMap(){st("should not access .isIdentityCMap")}}function da(t){let e=0;for(let n=0;n>>0}function Ga(t){if(typeof t!="string")throw new Y("Malformed CMap: expected string.")}function oh(t){if(!Number.isInteger(t))throw new Y("Malformed CMap: expected int.")}function qd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endbfchar"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=n;t.mapOne(s,a)}}function vd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endbfrange"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=da(n);if(n=e.getObj(),Number.isInteger(n)||typeof n=="string"){const i=Number.isInteger(n)?String.fromCharCode(n):n;t.mapBfRange(s,a,i)}else if(Qt(n,"[")){n=e.getObj();const i=[];for(;!Qt(n,"]")&&n!==ln;)i.push(n),n=e.getObj();t.mapBfRangeToArray(s,a,i)}else break}throw new Y("Invalid bf range.")}function Sd(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcidchar"))return;Ga(n);const s=da(n);n=e.getObj(),oh(n);const a=n;t.mapOne(s,a)}}function Ad(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcidrange"))return;Ga(n);const s=da(n);n=e.getObj(),Ga(n);const a=da(n);n=e.getObj(),oh(n);const i=n;t.mapCidRange(s,a,i)}}function Id(t,e){for(;;){let n=e.getObj();if(n===ln)break;if(Qt(n,"endcodespacerange"))return;if(typeof n!="string")break;const s=da(n);if(n=e.getObj(),typeof n!="string")break;const a=da(n);t.addCodespaceRange(n.length,s,a)}throw new Y("Invalid codespace range.")}function Cd(t,e){const n=e.getObj();Number.isInteger(n)&&(t.vertical=!!n)}function Td(t,e){const n=e.getObj();n instanceof J&&(t.name=n.name)}async function fh(t,e,n,s){let a,i;e:for(;;)try{const r=e.getObj();if(r===ln)break;if(r instanceof J)r.name==="WMode"?Cd(t,e):r.name==="CMapName"&&Td(t,e),a=r;else if(r instanceof Ut)switch(r.cmd){case"endcmap":break e;case"usecmap":a instanceof J&&(i=a.name);break;case"begincodespacerange":Id(t,e);break;case"beginbfchar":qd(t,e);break;case"begincidchar":Sd(t,e);break;case"beginbfrange":vd(t,e);break;case"begincidrange":Ad(t,e);break}}catch(r){if(r instanceof kt)throw r;H("Invalid cMap data: "+r);continue}return!s&&i&&(s=i),s?lh(t,n,s):t}async function lh(t,e,n){if(t.useCMap=await Yo(n,e),t.numCodespaceRanges===0){const s=t.useCMap.codespaceRanges;for(let a=0;alh(a,e,r));const i=new cs(new yt(n));return fh(a,i,e,null)}class Hi{static async create({encoding:e,fetchBuiltInCMap:n,useCMap:s}){if(e instanceof J)return Yo(e.name,n);if(e instanceof Pe){if(e.isAsync){const i=await e.asyncGetBytes();i&&(e=new yt(i,0,i.length,e.dict))}const a=await fh(new qf,new cs(e),n,s);return a.isIdentityCMap?Yo(a.name,n):a}throw new Error("Encoding required.")}}const ch=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],Bd=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],vf=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],zs=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],pr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],U0=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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",""],Sf=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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",""];function gr(t){switch(t){case"WinAnsiEncoding":return pr;case"StandardEncoding":return zs;case"MacRomanEncoding":return vf;case"SymbolSetEncoding":return U0;case"ZapfDingbatsEncoding":return Sf;case"ExpertEncoding":return ch;case"MacExpertEncoding":return Bd;default:return null}}const us=It(function(t){t.A=65,t.AE=198,t.AEacute=508,t.AEmacron=482,t.AEsmall=63462,t.Aacute=193,t.Aacutesmall=63457,t.Abreve=258,t.Abreveacute=7854,t.Abrevecyrillic=1232,t.Abrevedotbelow=7862,t.Abrevegrave=7856,t.Abrevehookabove=7858,t.Abrevetilde=7860,t.Acaron=461,t.Acircle=9398,t.Acircumflex=194,t.Acircumflexacute=7844,t.Acircumflexdotbelow=7852,t.Acircumflexgrave=7846,t.Acircumflexhookabove=7848,t.Acircumflexsmall=63458,t.Acircumflextilde=7850,t.Acute=63177,t.Acutesmall=63412,t.Acyrillic=1040,t.Adblgrave=512,t.Adieresis=196,t.Adieresiscyrillic=1234,t.Adieresismacron=478,t.Adieresissmall=63460,t.Adotbelow=7840,t.Adotmacron=480,t.Agrave=192,t.Agravesmall=63456,t.Ahookabove=7842,t.Aiecyrillic=1236,t.Ainvertedbreve=514,t.Alpha=913,t.Alphatonos=902,t.Amacron=256,t.Amonospace=65313,t.Aogonek=260,t.Aring=197,t.Aringacute=506,t.Aringbelow=7680,t.Aringsmall=63461,t.Asmall=63329,t.Atilde=195,t.Atildesmall=63459,t.Aybarmenian=1329,t.B=66,t.Bcircle=9399,t.Bdotaccent=7682,t.Bdotbelow=7684,t.Becyrillic=1041,t.Benarmenian=1330,t.Beta=914,t.Bhook=385,t.Blinebelow=7686,t.Bmonospace=65314,t.Brevesmall=63220,t.Bsmall=63330,t.Btopbar=386,t.C=67,t.Caarmenian=1342,t.Cacute=262,t.Caron=63178,t.Caronsmall=63221,t.Ccaron=268,t.Ccedilla=199,t.Ccedillaacute=7688,t.Ccedillasmall=63463,t.Ccircle=9400,t.Ccircumflex=264,t.Cdot=266,t.Cdotaccent=266,t.Cedillasmall=63416,t.Chaarmenian=1353,t.Cheabkhasiancyrillic=1212,t.Checyrillic=1063,t.Chedescenderabkhasiancyrillic=1214,t.Chedescendercyrillic=1206,t.Chedieresiscyrillic=1268,t.Cheharmenian=1347,t.Chekhakassiancyrillic=1227,t.Cheverticalstrokecyrillic=1208,t.Chi=935,t.Chook=391,t.Circumflexsmall=63222,t.Cmonospace=65315,t.Coarmenian=1361,t.Csmall=63331,t.D=68,t.DZ=497,t.DZcaron=452,t.Daarmenian=1332,t.Dafrican=393,t.Dcaron=270,t.Dcedilla=7696,t.Dcircle=9401,t.Dcircumflexbelow=7698,t.Dcroat=272,t.Ddotaccent=7690,t.Ddotbelow=7692,t.Decyrillic=1044,t.Deicoptic=1006,t.Delta=8710,t.Deltagreek=916,t.Dhook=394,t.Dieresis=63179,t.DieresisAcute=63180,t.DieresisGrave=63181,t.Dieresissmall=63400,t.Digammagreek=988,t.Djecyrillic=1026,t.Dlinebelow=7694,t.Dmonospace=65316,t.Dotaccentsmall=63223,t.Dslash=272,t.Dsmall=63332,t.Dtopbar=395,t.Dz=498,t.Dzcaron=453,t.Dzeabkhasiancyrillic=1248,t.Dzecyrillic=1029,t.Dzhecyrillic=1039,t.E=69,t.Eacute=201,t.Eacutesmall=63465,t.Ebreve=276,t.Ecaron=282,t.Ecedillabreve=7708,t.Echarmenian=1333,t.Ecircle=9402,t.Ecircumflex=202,t.Ecircumflexacute=7870,t.Ecircumflexbelow=7704,t.Ecircumflexdotbelow=7878,t.Ecircumflexgrave=7872,t.Ecircumflexhookabove=7874,t.Ecircumflexsmall=63466,t.Ecircumflextilde=7876,t.Ecyrillic=1028,t.Edblgrave=516,t.Edieresis=203,t.Edieresissmall=63467,t.Edot=278,t.Edotaccent=278,t.Edotbelow=7864,t.Efcyrillic=1060,t.Egrave=200,t.Egravesmall=63464,t.Eharmenian=1335,t.Ehookabove=7866,t.Eightroman=8551,t.Einvertedbreve=518,t.Eiotifiedcyrillic=1124,t.Elcyrillic=1051,t.Elevenroman=8554,t.Emacron=274,t.Emacronacute=7702,t.Emacrongrave=7700,t.Emcyrillic=1052,t.Emonospace=65317,t.Encyrillic=1053,t.Endescendercyrillic=1186,t.Eng=330,t.Enghecyrillic=1188,t.Enhookcyrillic=1223,t.Eogonek=280,t.Eopen=400,t.Epsilon=917,t.Epsilontonos=904,t.Ercyrillic=1056,t.Ereversed=398,t.Ereversedcyrillic=1069,t.Escyrillic=1057,t.Esdescendercyrillic=1194,t.Esh=425,t.Esmall=63333,t.Eta=919,t.Etarmenian=1336,t.Etatonos=905,t.Eth=208,t.Ethsmall=63472,t.Etilde=7868,t.Etildebelow=7706,t.Euro=8364,t.Ezh=439,t.Ezhcaron=494,t.Ezhreversed=440,t.F=70,t.Fcircle=9403,t.Fdotaccent=7710,t.Feharmenian=1366,t.Feicoptic=996,t.Fhook=401,t.Fitacyrillic=1138,t.Fiveroman=8548,t.Fmonospace=65318,t.Fourroman=8547,t.Fsmall=63334,t.G=71,t.GBsquare=13191,t.Gacute=500,t.Gamma=915,t.Gammaafrican=404,t.Gangiacoptic=1002,t.Gbreve=286,t.Gcaron=486,t.Gcedilla=290,t.Gcircle=9404,t.Gcircumflex=284,t.Gcommaaccent=290,t.Gdot=288,t.Gdotaccent=288,t.Gecyrillic=1043,t.Ghadarmenian=1346,t.Ghemiddlehookcyrillic=1172,t.Ghestrokecyrillic=1170,t.Gheupturncyrillic=1168,t.Ghook=403,t.Gimarmenian=1331,t.Gjecyrillic=1027,t.Gmacron=7712,t.Gmonospace=65319,t.Grave=63182,t.Gravesmall=63328,t.Gsmall=63335,t.Gsmallhook=667,t.Gstroke=484,t.H=72,t.H18533=9679,t.H18543=9642,t.H18551=9643,t.H22073=9633,t.HPsquare=13259,t.Haabkhasiancyrillic=1192,t.Hadescendercyrillic=1202,t.Hardsigncyrillic=1066,t.Hbar=294,t.Hbrevebelow=7722,t.Hcedilla=7720,t.Hcircle=9405,t.Hcircumflex=292,t.Hdieresis=7718,t.Hdotaccent=7714,t.Hdotbelow=7716,t.Hmonospace=65320,t.Hoarmenian=1344,t.Horicoptic=1e3,t.Hsmall=63336,t.Hungarumlaut=63183,t.Hungarumlautsmall=63224,t.Hzsquare=13200,t.I=73,t.IAcyrillic=1071,t.IJ=306,t.IUcyrillic=1070,t.Iacute=205,t.Iacutesmall=63469,t.Ibreve=300,t.Icaron=463,t.Icircle=9406,t.Icircumflex=206,t.Icircumflexsmall=63470,t.Icyrillic=1030,t.Idblgrave=520,t.Idieresis=207,t.Idieresisacute=7726,t.Idieresiscyrillic=1252,t.Idieresissmall=63471,t.Idot=304,t.Idotaccent=304,t.Idotbelow=7882,t.Iebrevecyrillic=1238,t.Iecyrillic=1045,t.Ifraktur=8465,t.Igrave=204,t.Igravesmall=63468,t.Ihookabove=7880,t.Iicyrillic=1048,t.Iinvertedbreve=522,t.Iishortcyrillic=1049,t.Imacron=298,t.Imacroncyrillic=1250,t.Imonospace=65321,t.Iniarmenian=1339,t.Iocyrillic=1025,t.Iogonek=302,t.Iota=921,t.Iotaafrican=406,t.Iotadieresis=938,t.Iotatonos=906,t.Ismall=63337,t.Istroke=407,t.Itilde=296,t.Itildebelow=7724,t.Izhitsacyrillic=1140,t.Izhitsadblgravecyrillic=1142,t.J=74,t.Jaarmenian=1345,t.Jcircle=9407,t.Jcircumflex=308,t.Jecyrillic=1032,t.Jheharmenian=1355,t.Jmonospace=65322,t.Jsmall=63338,t.K=75,t.KBsquare=13189,t.KKsquare=13261,t.Kabashkircyrillic=1184,t.Kacute=7728,t.Kacyrillic=1050,t.Kadescendercyrillic=1178,t.Kahookcyrillic=1219,t.Kappa=922,t.Kastrokecyrillic=1182,t.Kaverticalstrokecyrillic=1180,t.Kcaron=488,t.Kcedilla=310,t.Kcircle=9408,t.Kcommaaccent=310,t.Kdotbelow=7730,t.Keharmenian=1364,t.Kenarmenian=1343,t.Khacyrillic=1061,t.Kheicoptic=998,t.Khook=408,t.Kjecyrillic=1036,t.Klinebelow=7732,t.Kmonospace=65323,t.Koppacyrillic=1152,t.Koppagreek=990,t.Ksicyrillic=1134,t.Ksmall=63339,t.L=76,t.LJ=455,t.LL=63167,t.Lacute=313,t.Lambda=923,t.Lcaron=317,t.Lcedilla=315,t.Lcircle=9409,t.Lcircumflexbelow=7740,t.Lcommaaccent=315,t.Ldot=319,t.Ldotaccent=319,t.Ldotbelow=7734,t.Ldotbelowmacron=7736,t.Liwnarmenian=1340,t.Lj=456,t.Ljecyrillic=1033,t.Llinebelow=7738,t.Lmonospace=65324,t.Lslash=321,t.Lslashsmall=63225,t.Lsmall=63340,t.M=77,t.MBsquare=13190,t.Macron=63184,t.Macronsmall=63407,t.Macute=7742,t.Mcircle=9410,t.Mdotaccent=7744,t.Mdotbelow=7746,t.Menarmenian=1348,t.Mmonospace=65325,t.Msmall=63341,t.Mturned=412,t.Mu=924,t.N=78,t.NJ=458,t.Nacute=323,t.Ncaron=327,t.Ncedilla=325,t.Ncircle=9411,t.Ncircumflexbelow=7754,t.Ncommaaccent=325,t.Ndotaccent=7748,t.Ndotbelow=7750,t.Nhookleft=413,t.Nineroman=8552,t.Nj=459,t.Njecyrillic=1034,t.Nlinebelow=7752,t.Nmonospace=65326,t.Nowarmenian=1350,t.Nsmall=63342,t.Ntilde=209,t.Ntildesmall=63473,t.Nu=925,t.O=79,t.OE=338,t.OEsmall=63226,t.Oacute=211,t.Oacutesmall=63475,t.Obarredcyrillic=1256,t.Obarreddieresiscyrillic=1258,t.Obreve=334,t.Ocaron=465,t.Ocenteredtilde=415,t.Ocircle=9412,t.Ocircumflex=212,t.Ocircumflexacute=7888,t.Ocircumflexdotbelow=7896,t.Ocircumflexgrave=7890,t.Ocircumflexhookabove=7892,t.Ocircumflexsmall=63476,t.Ocircumflextilde=7894,t.Ocyrillic=1054,t.Odblacute=336,t.Odblgrave=524,t.Odieresis=214,t.Odieresiscyrillic=1254,t.Odieresissmall=63478,t.Odotbelow=7884,t.Ogoneksmall=63227,t.Ograve=210,t.Ogravesmall=63474,t.Oharmenian=1365,t.Ohm=8486,t.Ohookabove=7886,t.Ohorn=416,t.Ohornacute=7898,t.Ohorndotbelow=7906,t.Ohorngrave=7900,t.Ohornhookabove=7902,t.Ohorntilde=7904,t.Ohungarumlaut=336,t.Oi=418,t.Oinvertedbreve=526,t.Omacron=332,t.Omacronacute=7762,t.Omacrongrave=7760,t.Omega=8486,t.Omegacyrillic=1120,t.Omegagreek=937,t.Omegaroundcyrillic=1146,t.Omegatitlocyrillic=1148,t.Omegatonos=911,t.Omicron=927,t.Omicrontonos=908,t.Omonospace=65327,t.Oneroman=8544,t.Oogonek=490,t.Oogonekmacron=492,t.Oopen=390,t.Oslash=216,t.Oslashacute=510,t.Oslashsmall=63480,t.Osmall=63343,t.Ostrokeacute=510,t.Otcyrillic=1150,t.Otilde=213,t.Otildeacute=7756,t.Otildedieresis=7758,t.Otildesmall=63477,t.P=80,t.Pacute=7764,t.Pcircle=9413,t.Pdotaccent=7766,t.Pecyrillic=1055,t.Peharmenian=1354,t.Pemiddlehookcyrillic=1190,t.Phi=934,t.Phook=420,t.Pi=928,t.Piwrarmenian=1363,t.Pmonospace=65328,t.Psi=936,t.Psicyrillic=1136,t.Psmall=63344,t.Q=81,t.Qcircle=9414,t.Qmonospace=65329,t.Qsmall=63345,t.R=82,t.Raarmenian=1356,t.Racute=340,t.Rcaron=344,t.Rcedilla=342,t.Rcircle=9415,t.Rcommaaccent=342,t.Rdblgrave=528,t.Rdotaccent=7768,t.Rdotbelow=7770,t.Rdotbelowmacron=7772,t.Reharmenian=1360,t.Rfraktur=8476,t.Rho=929,t.Ringsmall=63228,t.Rinvertedbreve=530,t.Rlinebelow=7774,t.Rmonospace=65330,t.Rsmall=63346,t.Rsmallinverted=641,t.Rsmallinvertedsuperior=694,t.S=83,t.SF010000=9484,t.SF020000=9492,t.SF030000=9488,t.SF040000=9496,t.SF050000=9532,t.SF060000=9516,t.SF070000=9524,t.SF080000=9500,t.SF090000=9508,t.SF100000=9472,t.SF110000=9474,t.SF190000=9569,t.SF200000=9570,t.SF210000=9558,t.SF220000=9557,t.SF230000=9571,t.SF240000=9553,t.SF250000=9559,t.SF260000=9565,t.SF270000=9564,t.SF280000=9563,t.SF360000=9566,t.SF370000=9567,t.SF380000=9562,t.SF390000=9556,t.SF400000=9577,t.SF410000=9574,t.SF420000=9568,t.SF430000=9552,t.SF440000=9580,t.SF450000=9575,t.SF460000=9576,t.SF470000=9572,t.SF480000=9573,t.SF490000=9561,t.SF500000=9560,t.SF510000=9554,t.SF520000=9555,t.SF530000=9579,t.SF540000=9578,t.Sacute=346,t.Sacutedotaccent=7780,t.Sampigreek=992,t.Scaron=352,t.Scarondotaccent=7782,t.Scaronsmall=63229,t.Scedilla=350,t.Schwa=399,t.Schwacyrillic=1240,t.Schwadieresiscyrillic=1242,t.Scircle=9416,t.Scircumflex=348,t.Scommaaccent=536,t.Sdotaccent=7776,t.Sdotbelow=7778,t.Sdotbelowdotaccent=7784,t.Seharmenian=1357,t.Sevenroman=8550,t.Shaarmenian=1351,t.Shacyrillic=1064,t.Shchacyrillic=1065,t.Sheicoptic=994,t.Shhacyrillic=1210,t.Shimacoptic=1004,t.Sigma=931,t.Sixroman=8549,t.Smonospace=65331,t.Softsigncyrillic=1068,t.Ssmall=63347,t.Stigmagreek=986,t.T=84,t.Tau=932,t.Tbar=358,t.Tcaron=356,t.Tcedilla=354,t.Tcircle=9417,t.Tcircumflexbelow=7792,t.Tcommaaccent=354,t.Tdotaccent=7786,t.Tdotbelow=7788,t.Tecyrillic=1058,t.Tedescendercyrillic=1196,t.Tenroman=8553,t.Tetsecyrillic=1204,t.Theta=920,t.Thook=428,t.Thorn=222,t.Thornsmall=63486,t.Threeroman=8546,t.Tildesmall=63230,t.Tiwnarmenian=1359,t.Tlinebelow=7790,t.Tmonospace=65332,t.Toarmenian=1337,t.Tonefive=444,t.Tonesix=388,t.Tonetwo=423,t.Tretroflexhook=430,t.Tsecyrillic=1062,t.Tshecyrillic=1035,t.Tsmall=63348,t.Twelveroman=8555,t.Tworoman=8545,t.U=85,t.Uacute=218,t.Uacutesmall=63482,t.Ubreve=364,t.Ucaron=467,t.Ucircle=9418,t.Ucircumflex=219,t.Ucircumflexbelow=7798,t.Ucircumflexsmall=63483,t.Ucyrillic=1059,t.Udblacute=368,t.Udblgrave=532,t.Udieresis=220,t.Udieresisacute=471,t.Udieresisbelow=7794,t.Udieresiscaron=473,t.Udieresiscyrillic=1264,t.Udieresisgrave=475,t.Udieresismacron=469,t.Udieresissmall=63484,t.Udotbelow=7908,t.Ugrave=217,t.Ugravesmall=63481,t.Uhookabove=7910,t.Uhorn=431,t.Uhornacute=7912,t.Uhorndotbelow=7920,t.Uhorngrave=7914,t.Uhornhookabove=7916,t.Uhorntilde=7918,t.Uhungarumlaut=368,t.Uhungarumlautcyrillic=1266,t.Uinvertedbreve=534,t.Ukcyrillic=1144,t.Umacron=362,t.Umacroncyrillic=1262,t.Umacrondieresis=7802,t.Umonospace=65333,t.Uogonek=370,t.Upsilon=933,t.Upsilon1=978,t.Upsilonacutehooksymbolgreek=979,t.Upsilonafrican=433,t.Upsilondieresis=939,t.Upsilondieresishooksymbolgreek=980,t.Upsilonhooksymbol=978,t.Upsilontonos=910,t.Uring=366,t.Ushortcyrillic=1038,t.Usmall=63349,t.Ustraightcyrillic=1198,t.Ustraightstrokecyrillic=1200,t.Utilde=360,t.Utildeacute=7800,t.Utildebelow=7796,t.V=86,t.Vcircle=9419,t.Vdotbelow=7806,t.Vecyrillic=1042,t.Vewarmenian=1358,t.Vhook=434,t.Vmonospace=65334,t.Voarmenian=1352,t.Vsmall=63350,t.Vtilde=7804,t.W=87,t.Wacute=7810,t.Wcircle=9420,t.Wcircumflex=372,t.Wdieresis=7812,t.Wdotaccent=7814,t.Wdotbelow=7816,t.Wgrave=7808,t.Wmonospace=65335,t.Wsmall=63351,t.X=88,t.Xcircle=9421,t.Xdieresis=7820,t.Xdotaccent=7818,t.Xeharmenian=1341,t.Xi=926,t.Xmonospace=65336,t.Xsmall=63352,t.Y=89,t.Yacute=221,t.Yacutesmall=63485,t.Yatcyrillic=1122,t.Ycircle=9422,t.Ycircumflex=374,t.Ydieresis=376,t.Ydieresissmall=63487,t.Ydotaccent=7822,t.Ydotbelow=7924,t.Yericyrillic=1067,t.Yerudieresiscyrillic=1272,t.Ygrave=7922,t.Yhook=435,t.Yhookabove=7926,t.Yiarmenian=1349,t.Yicyrillic=1031,t.Yiwnarmenian=1362,t.Ymonospace=65337,t.Ysmall=63353,t.Ytilde=7928,t.Yusbigcyrillic=1130,t.Yusbigiotifiedcyrillic=1132,t.Yuslittlecyrillic=1126,t.Yuslittleiotifiedcyrillic=1128,t.Z=90,t.Zaarmenian=1334,t.Zacute=377,t.Zcaron=381,t.Zcaronsmall=63231,t.Zcircle=9423,t.Zcircumflex=7824,t.Zdot=379,t.Zdotaccent=379,t.Zdotbelow=7826,t.Zecyrillic=1047,t.Zedescendercyrillic=1176,t.Zedieresiscyrillic=1246,t.Zeta=918,t.Zhearmenian=1338,t.Zhebrevecyrillic=1217,t.Zhecyrillic=1046,t.Zhedescendercyrillic=1174,t.Zhedieresiscyrillic=1244,t.Zlinebelow=7828,t.Zmonospace=65338,t.Zsmall=63354,t.Zstroke=437,t.a=97,t.aabengali=2438,t.aacute=225,t.aadeva=2310,t.aagujarati=2694,t.aagurmukhi=2566,t.aamatragurmukhi=2622,t.aarusquare=13059,t.aavowelsignbengali=2494,t.aavowelsigndeva=2366,t.aavowelsigngujarati=2750,t.abbreviationmarkarmenian=1375,t.abbreviationsigndeva=2416,t.abengali=2437,t.abopomofo=12570,t.abreve=259,t.abreveacute=7855,t.abrevecyrillic=1233,t.abrevedotbelow=7863,t.abrevegrave=7857,t.abrevehookabove=7859,t.abrevetilde=7861,t.acaron=462,t.acircle=9424,t.acircumflex=226,t.acircumflexacute=7845,t.acircumflexdotbelow=7853,t.acircumflexgrave=7847,t.acircumflexhookabove=7849,t.acircumflextilde=7851,t.acute=180,t.acutebelowcmb=791,t.acutecmb=769,t.acutecomb=769,t.acutedeva=2388,t.acutelowmod=719,t.acutetonecmb=833,t.acyrillic=1072,t.adblgrave=513,t.addakgurmukhi=2673,t.adeva=2309,t.adieresis=228,t.adieresiscyrillic=1235,t.adieresismacron=479,t.adotbelow=7841,t.adotmacron=481,t.ae=230,t.aeacute=509,t.aekorean=12624,t.aemacron=483,t.afii00208=8213,t.afii08941=8356,t.afii10017=1040,t.afii10018=1041,t.afii10019=1042,t.afii10020=1043,t.afii10021=1044,t.afii10022=1045,t.afii10023=1025,t.afii10024=1046,t.afii10025=1047,t.afii10026=1048,t.afii10027=1049,t.afii10028=1050,t.afii10029=1051,t.afii10030=1052,t.afii10031=1053,t.afii10032=1054,t.afii10033=1055,t.afii10034=1056,t.afii10035=1057,t.afii10036=1058,t.afii10037=1059,t.afii10038=1060,t.afii10039=1061,t.afii10040=1062,t.afii10041=1063,t.afii10042=1064,t.afii10043=1065,t.afii10044=1066,t.afii10045=1067,t.afii10046=1068,t.afii10047=1069,t.afii10048=1070,t.afii10049=1071,t.afii10050=1168,t.afii10051=1026,t.afii10052=1027,t.afii10053=1028,t.afii10054=1029,t.afii10055=1030,t.afii10056=1031,t.afii10057=1032,t.afii10058=1033,t.afii10059=1034,t.afii10060=1035,t.afii10061=1036,t.afii10062=1038,t.afii10063=63172,t.afii10064=63173,t.afii10065=1072,t.afii10066=1073,t.afii10067=1074,t.afii10068=1075,t.afii10069=1076,t.afii10070=1077,t.afii10071=1105,t.afii10072=1078,t.afii10073=1079,t.afii10074=1080,t.afii10075=1081,t.afii10076=1082,t.afii10077=1083,t.afii10078=1084,t.afii10079=1085,t.afii10080=1086,t.afii10081=1087,t.afii10082=1088,t.afii10083=1089,t.afii10084=1090,t.afii10085=1091,t.afii10086=1092,t.afii10087=1093,t.afii10088=1094,t.afii10089=1095,t.afii10090=1096,t.afii10091=1097,t.afii10092=1098,t.afii10093=1099,t.afii10094=1100,t.afii10095=1101,t.afii10096=1102,t.afii10097=1103,t.afii10098=1169,t.afii10099=1106,t.afii10100=1107,t.afii10101=1108,t.afii10102=1109,t.afii10103=1110,t.afii10104=1111,t.afii10105=1112,t.afii10106=1113,t.afii10107=1114,t.afii10108=1115,t.afii10109=1116,t.afii10110=1118,t.afii10145=1039,t.afii10146=1122,t.afii10147=1138,t.afii10148=1140,t.afii10192=63174,t.afii10193=1119,t.afii10194=1123,t.afii10195=1139,t.afii10196=1141,t.afii10831=63175,t.afii10832=63176,t.afii10846=1241,t.afii299=8206,t.afii300=8207,t.afii301=8205,t.afii57381=1642,t.afii57388=1548,t.afii57392=1632,t.afii57393=1633,t.afii57394=1634,t.afii57395=1635,t.afii57396=1636,t.afii57397=1637,t.afii57398=1638,t.afii57399=1639,t.afii57400=1640,t.afii57401=1641,t.afii57403=1563,t.afii57407=1567,t.afii57409=1569,t.afii57410=1570,t.afii57411=1571,t.afii57412=1572,t.afii57413=1573,t.afii57414=1574,t.afii57415=1575,t.afii57416=1576,t.afii57417=1577,t.afii57418=1578,t.afii57419=1579,t.afii57420=1580,t.afii57421=1581,t.afii57422=1582,t.afii57423=1583,t.afii57424=1584,t.afii57425=1585,t.afii57426=1586,t.afii57427=1587,t.afii57428=1588,t.afii57429=1589,t.afii57430=1590,t.afii57431=1591,t.afii57432=1592,t.afii57433=1593,t.afii57434=1594,t.afii57440=1600,t.afii57441=1601,t.afii57442=1602,t.afii57443=1603,t.afii57444=1604,t.afii57445=1605,t.afii57446=1606,t.afii57448=1608,t.afii57449=1609,t.afii57450=1610,t.afii57451=1611,t.afii57452=1612,t.afii57453=1613,t.afii57454=1614,t.afii57455=1615,t.afii57456=1616,t.afii57457=1617,t.afii57458=1618,t.afii57470=1607,t.afii57505=1700,t.afii57506=1662,t.afii57507=1670,t.afii57508=1688,t.afii57509=1711,t.afii57511=1657,t.afii57512=1672,t.afii57513=1681,t.afii57514=1722,t.afii57519=1746,t.afii57534=1749,t.afii57636=8362,t.afii57645=1470,t.afii57658=1475,t.afii57664=1488,t.afii57665=1489,t.afii57666=1490,t.afii57667=1491,t.afii57668=1492,t.afii57669=1493,t.afii57670=1494,t.afii57671=1495,t.afii57672=1496,t.afii57673=1497,t.afii57674=1498,t.afii57675=1499,t.afii57676=1500,t.afii57677=1501,t.afii57678=1502,t.afii57679=1503,t.afii57680=1504,t.afii57681=1505,t.afii57682=1506,t.afii57683=1507,t.afii57684=1508,t.afii57685=1509,t.afii57686=1510,t.afii57687=1511,t.afii57688=1512,t.afii57689=1513,t.afii57690=1514,t.afii57694=64298,t.afii57695=64299,t.afii57700=64331,t.afii57705=64287,t.afii57716=1520,t.afii57717=1521,t.afii57718=1522,t.afii57723=64309,t.afii57793=1460,t.afii57794=1461,t.afii57795=1462,t.afii57796=1467,t.afii57797=1464,t.afii57798=1463,t.afii57799=1456,t.afii57800=1458,t.afii57801=1457,t.afii57802=1459,t.afii57803=1474,t.afii57804=1473,t.afii57806=1465,t.afii57807=1468,t.afii57839=1469,t.afii57841=1471,t.afii57842=1472,t.afii57929=700,t.afii61248=8453,t.afii61289=8467,t.afii61352=8470,t.afii61573=8236,t.afii61574=8237,t.afii61575=8238,t.afii61664=8204,t.afii63167=1645,t.afii64937=701,t.agrave=224,t.agujarati=2693,t.agurmukhi=2565,t.ahiragana=12354,t.ahookabove=7843,t.aibengali=2448,t.aibopomofo=12574,t.aideva=2320,t.aiecyrillic=1237,t.aigujarati=2704,t.aigurmukhi=2576,t.aimatragurmukhi=2632,t.ainarabic=1593,t.ainfinalarabic=65226,t.aininitialarabic=65227,t.ainmedialarabic=65228,t.ainvertedbreve=515,t.aivowelsignbengali=2504,t.aivowelsigndeva=2376,t.aivowelsigngujarati=2760,t.akatakana=12450,t.akatakanahalfwidth=65393,t.akorean=12623,t.alef=1488,t.alefarabic=1575,t.alefdageshhebrew=64304,t.aleffinalarabic=65166,t.alefhamzaabovearabic=1571,t.alefhamzaabovefinalarabic=65156,t.alefhamzabelowarabic=1573,t.alefhamzabelowfinalarabic=65160,t.alefhebrew=1488,t.aleflamedhebrew=64335,t.alefmaddaabovearabic=1570,t.alefmaddaabovefinalarabic=65154,t.alefmaksuraarabic=1609,t.alefmaksurafinalarabic=65264,t.alefmaksurainitialarabic=65267,t.alefmaksuramedialarabic=65268,t.alefpatahhebrew=64302,t.alefqamatshebrew=64303,t.aleph=8501,t.allequal=8780,t.alpha=945,t.alphatonos=940,t.amacron=257,t.amonospace=65345,t.ampersand=38,t.ampersandmonospace=65286,t.ampersandsmall=63270,t.amsquare=13250,t.anbopomofo=12578,t.angbopomofo=12580,t.angbracketleft=12296,t.angbracketright=12297,t.angkhankhuthai=3674,t.angle=8736,t.anglebracketleft=12296,t.anglebracketleftvertical=65087,t.anglebracketright=12297,t.anglebracketrightvertical=65088,t.angleleft=9001,t.angleright=9002,t.angstrom=8491,t.anoteleia=903,t.anudattadeva=2386,t.anusvarabengali=2434,t.anusvaradeva=2306,t.anusvaragujarati=2690,t.aogonek=261,t.apaatosquare=13056,t.aparen=9372,t.apostrophearmenian=1370,t.apostrophemod=700,t.apple=63743,t.approaches=8784,t.approxequal=8776,t.approxequalorimage=8786,t.approximatelyequal=8773,t.araeaekorean=12686,t.araeakorean=12685,t.arc=8978,t.arighthalfring=7834,t.aring=229,t.aringacute=507,t.aringbelow=7681,t.arrowboth=8596,t.arrowdashdown=8675,t.arrowdashleft=8672,t.arrowdashright=8674,t.arrowdashup=8673,t.arrowdblboth=8660,t.arrowdbldown=8659,t.arrowdblleft=8656,t.arrowdblright=8658,t.arrowdblup=8657,t.arrowdown=8595,t.arrowdownleft=8601,t.arrowdownright=8600,t.arrowdownwhite=8681,t.arrowheaddownmod=709,t.arrowheadleftmod=706,t.arrowheadrightmod=707,t.arrowheadupmod=708,t.arrowhorizex=63719,t.arrowleft=8592,t.arrowleftdbl=8656,t.arrowleftdblstroke=8653,t.arrowleftoverright=8646,t.arrowleftwhite=8678,t.arrowright=8594,t.arrowrightdblstroke=8655,t.arrowrightheavy=10142,t.arrowrightoverleft=8644,t.arrowrightwhite=8680,t.arrowtableft=8676,t.arrowtabright=8677,t.arrowup=8593,t.arrowupdn=8597,t.arrowupdnbse=8616,t.arrowupdownbase=8616,t.arrowupleft=8598,t.arrowupleftofdown=8645,t.arrowupright=8599,t.arrowupwhite=8679,t.arrowvertex=63718,t.asciicircum=94,t.asciicircummonospace=65342,t.asciitilde=126,t.asciitildemonospace=65374,t.ascript=593,t.ascriptturned=594,t.asmallhiragana=12353,t.asmallkatakana=12449,t.asmallkatakanahalfwidth=65383,t.asterisk=42,t.asteriskaltonearabic=1645,t.asteriskarabic=1645,t.asteriskmath=8727,t.asteriskmonospace=65290,t.asterisksmall=65121,t.asterism=8258,t.asuperior=63209,t.asymptoticallyequal=8771,t.at=64,t.atilde=227,t.atmonospace=65312,t.atsmall=65131,t.aturned=592,t.aubengali=2452,t.aubopomofo=12576,t.audeva=2324,t.augujarati=2708,t.augurmukhi=2580,t.aulengthmarkbengali=2519,t.aumatragurmukhi=2636,t.auvowelsignbengali=2508,t.auvowelsigndeva=2380,t.auvowelsigngujarati=2764,t.avagrahadeva=2365,t.aybarmenian=1377,t.ayin=1506,t.ayinaltonehebrew=64288,t.ayinhebrew=1506,t.b=98,t.babengali=2476,t.backslash=92,t.backslashmonospace=65340,t.badeva=2348,t.bagujarati=2732,t.bagurmukhi=2604,t.bahiragana=12400,t.bahtthai=3647,t.bakatakana=12496,t.bar=124,t.barmonospace=65372,t.bbopomofo=12549,t.bcircle=9425,t.bdotaccent=7683,t.bdotbelow=7685,t.beamedsixteenthnotes=9836,t.because=8757,t.becyrillic=1073,t.beharabic=1576,t.behfinalarabic=65168,t.behinitialarabic=65169,t.behiragana=12409,t.behmedialarabic=65170,t.behmeeminitialarabic=64671,t.behmeemisolatedarabic=64520,t.behnoonfinalarabic=64621,t.bekatakana=12505,t.benarmenian=1378,t.bet=1489,t.beta=946,t.betasymbolgreek=976,t.betdagesh=64305,t.betdageshhebrew=64305,t.bethebrew=1489,t.betrafehebrew=64332,t.bhabengali=2477,t.bhadeva=2349,t.bhagujarati=2733,t.bhagurmukhi=2605,t.bhook=595,t.bihiragana=12403,t.bikatakana=12499,t.bilabialclick=664,t.bindigurmukhi=2562,t.birusquare=13105,t.blackcircle=9679,t.blackdiamond=9670,t.blackdownpointingtriangle=9660,t.blackleftpointingpointer=9668,t.blackleftpointingtriangle=9664,t.blacklenticularbracketleft=12304,t.blacklenticularbracketleftvertical=65083,t.blacklenticularbracketright=12305,t.blacklenticularbracketrightvertical=65084,t.blacklowerlefttriangle=9699,t.blacklowerrighttriangle=9698,t.blackrectangle=9644,t.blackrightpointingpointer=9658,t.blackrightpointingtriangle=9654,t.blacksmallsquare=9642,t.blacksmilingface=9787,t.blacksquare=9632,t.blackstar=9733,t.blackupperlefttriangle=9700,t.blackupperrighttriangle=9701,t.blackuppointingsmalltriangle=9652,t.blackuppointingtriangle=9650,t.blank=9251,t.blinebelow=7687,t.block=9608,t.bmonospace=65346,t.bobaimaithai=3610,t.bohiragana=12412,t.bokatakana=12508,t.bparen=9373,t.bqsquare=13251,t.braceex=63732,t.braceleft=123,t.braceleftbt=63731,t.braceleftmid=63730,t.braceleftmonospace=65371,t.braceleftsmall=65115,t.bracelefttp=63729,t.braceleftvertical=65079,t.braceright=125,t.bracerightbt=63742,t.bracerightmid=63741,t.bracerightmonospace=65373,t.bracerightsmall=65116,t.bracerighttp=63740,t.bracerightvertical=65080,t.bracketleft=91,t.bracketleftbt=63728,t.bracketleftex=63727,t.bracketleftmonospace=65339,t.bracketlefttp=63726,t.bracketright=93,t.bracketrightbt=63739,t.bracketrightex=63738,t.bracketrightmonospace=65341,t.bracketrighttp=63737,t.breve=728,t.brevebelowcmb=814,t.brevecmb=774,t.breveinvertedbelowcmb=815,t.breveinvertedcmb=785,t.breveinverteddoublecmb=865,t.bridgebelowcmb=810,t.bridgeinvertedbelowcmb=826,t.brokenbar=166,t.bstroke=384,t.bsuperior=63210,t.btopbar=387,t.buhiragana=12406,t.bukatakana=12502,t.bullet=8226,t.bulletinverse=9688,t.bulletoperator=8729,t.bullseye=9678,t.c=99,t.caarmenian=1390,t.cabengali=2458,t.cacute=263,t.cadeva=2330,t.cagujarati=2714,t.cagurmukhi=2586,t.calsquare=13192,t.candrabindubengali=2433,t.candrabinducmb=784,t.candrabindudeva=2305,t.candrabindugujarati=2689,t.capslock=8682,t.careof=8453,t.caron=711,t.caronbelowcmb=812,t.caroncmb=780,t.carriagereturn=8629,t.cbopomofo=12568,t.ccaron=269,t.ccedilla=231,t.ccedillaacute=7689,t.ccircle=9426,t.ccircumflex=265,t.ccurl=597,t.cdot=267,t.cdotaccent=267,t.cdsquare=13253,t.cedilla=184,t.cedillacmb=807,t.cent=162,t.centigrade=8451,t.centinferior=63199,t.centmonospace=65504,t.centoldstyle=63394,t.centsuperior=63200,t.chaarmenian=1401,t.chabengali=2459,t.chadeva=2331,t.chagujarati=2715,t.chagurmukhi=2587,t.chbopomofo=12564,t.cheabkhasiancyrillic=1213,t.checkmark=10003,t.checyrillic=1095,t.chedescenderabkhasiancyrillic=1215,t.chedescendercyrillic=1207,t.chedieresiscyrillic=1269,t.cheharmenian=1395,t.chekhakassiancyrillic=1228,t.cheverticalstrokecyrillic=1209,t.chi=967,t.chieuchacirclekorean=12919,t.chieuchaparenkorean=12823,t.chieuchcirclekorean=12905,t.chieuchkorean=12618,t.chieuchparenkorean=12809,t.chochangthai=3594,t.chochanthai=3592,t.chochingthai=3593,t.chochoethai=3596,t.chook=392,t.cieucacirclekorean=12918,t.cieucaparenkorean=12822,t.cieuccirclekorean=12904,t.cieuckorean=12616,t.cieucparenkorean=12808,t.cieucuparenkorean=12828,t.circle=9675,t.circlecopyrt=169,t.circlemultiply=8855,t.circleot=8857,t.circleplus=8853,t.circlepostalmark=12342,t.circlewithlefthalfblack=9680,t.circlewithrighthalfblack=9681,t.circumflex=710,t.circumflexbelowcmb=813,t.circumflexcmb=770,t.clear=8999,t.clickalveolar=450,t.clickdental=448,t.clicklateral=449,t.clickretroflex=451,t.club=9827,t.clubsuitblack=9827,t.clubsuitwhite=9831,t.cmcubedsquare=13220,t.cmonospace=65347,t.cmsquaredsquare=13216,t.coarmenian=1409,t.colon=58,t.colonmonetary=8353,t.colonmonospace=65306,t.colonsign=8353,t.colonsmall=65109,t.colontriangularhalfmod=721,t.colontriangularmod=720,t.comma=44,t.commaabovecmb=787,t.commaaboverightcmb=789,t.commaaccent=63171,t.commaarabic=1548,t.commaarmenian=1373,t.commainferior=63201,t.commamonospace=65292,t.commareversedabovecmb=788,t.commareversedmod=701,t.commasmall=65104,t.commasuperior=63202,t.commaturnedabovecmb=786,t.commaturnedmod=699,t.compass=9788,t.congruent=8773,t.contourintegral=8750,t.control=8963,t.controlACK=6,t.controlBEL=7,t.controlBS=8,t.controlCAN=24,t.controlCR=13,t.controlDC1=17,t.controlDC2=18,t.controlDC3=19,t.controlDC4=20,t.controlDEL=127,t.controlDLE=16,t.controlEM=25,t.controlENQ=5,t.controlEOT=4,t.controlESC=27,t.controlETB=23,t.controlETX=3,t.controlFF=12,t.controlFS=28,t.controlGS=29,t.controlHT=9,t.controlLF=10,t.controlNAK=21,t.controlNULL=0,t.controlRS=30,t.controlSI=15,t.controlSO=14,t.controlSOT=2,t.controlSTX=1,t.controlSUB=26,t.controlSYN=22,t.controlUS=31,t.controlVT=11,t.copyright=169,t.copyrightsans=63721,t.copyrightserif=63193,t.cornerbracketleft=12300,t.cornerbracketlefthalfwidth=65378,t.cornerbracketleftvertical=65089,t.cornerbracketright=12301,t.cornerbracketrighthalfwidth=65379,t.cornerbracketrightvertical=65090,t.corporationsquare=13183,t.cosquare=13255,t.coverkgsquare=13254,t.cparen=9374,t.cruzeiro=8354,t.cstretched=663,t.curlyand=8911,t.curlyor=8910,t.currency=164,t.cyrBreve=63185,t.cyrFlex=63186,t.cyrbreve=63188,t.cyrflex=63189,t.d=100,t.daarmenian=1380,t.dabengali=2470,t.dadarabic=1590,t.dadeva=2342,t.dadfinalarabic=65214,t.dadinitialarabic=65215,t.dadmedialarabic=65216,t.dagesh=1468,t.dageshhebrew=1468,t.dagger=8224,t.daggerdbl=8225,t.dagujarati=2726,t.dagurmukhi=2598,t.dahiragana=12384,t.dakatakana=12480,t.dalarabic=1583,t.dalet=1491,t.daletdagesh=64307,t.daletdageshhebrew=64307,t.dalethebrew=1491,t.dalfinalarabic=65194,t.dammaarabic=1615,t.dammalowarabic=1615,t.dammatanaltonearabic=1612,t.dammatanarabic=1612,t.danda=2404,t.dargahebrew=1447,t.dargalefthebrew=1447,t.dasiapneumatacyrilliccmb=1157,t.dblGrave=63187,t.dblanglebracketleft=12298,t.dblanglebracketleftvertical=65085,t.dblanglebracketright=12299,t.dblanglebracketrightvertical=65086,t.dblarchinvertedbelowcmb=811,t.dblarrowleft=8660,t.dblarrowright=8658,t.dbldanda=2405,t.dblgrave=63190,t.dblgravecmb=783,t.dblintegral=8748,t.dbllowline=8215,t.dbllowlinecmb=819,t.dbloverlinecmb=831,t.dblprimemod=698,t.dblverticalbar=8214,t.dblverticallineabovecmb=782,t.dbopomofo=12553,t.dbsquare=13256,t.dcaron=271,t.dcedilla=7697,t.dcircle=9427,t.dcircumflexbelow=7699,t.dcroat=273,t.ddabengali=2465,t.ddadeva=2337,t.ddagujarati=2721,t.ddagurmukhi=2593,t.ddalarabic=1672,t.ddalfinalarabic=64393,t.dddhadeva=2396,t.ddhabengali=2466,t.ddhadeva=2338,t.ddhagujarati=2722,t.ddhagurmukhi=2594,t.ddotaccent=7691,t.ddotbelow=7693,t.decimalseparatorarabic=1643,t.decimalseparatorpersian=1643,t.decyrillic=1076,t.degree=176,t.dehihebrew=1453,t.dehiragana=12391,t.deicoptic=1007,t.dekatakana=12487,t.deleteleft=9003,t.deleteright=8998,t.delta=948,t.deltaturned=397,t.denominatorminusonenumeratorbengali=2552,t.dezh=676,t.dhabengali=2471,t.dhadeva=2343,t.dhagujarati=2727,t.dhagurmukhi=2599,t.dhook=599,t.dialytikatonos=901,t.dialytikatonoscmb=836,t.diamond=9830,t.diamondsuitwhite=9826,t.dieresis=168,t.dieresisacute=63191,t.dieresisbelowcmb=804,t.dieresiscmb=776,t.dieresisgrave=63192,t.dieresistonos=901,t.dihiragana=12386,t.dikatakana=12482,t.dittomark=12291,t.divide=247,t.divides=8739,t.divisionslash=8725,t.djecyrillic=1106,t.dkshade=9619,t.dlinebelow=7695,t.dlsquare=13207,t.dmacron=273,t.dmonospace=65348,t.dnblock=9604,t.dochadathai=3598,t.dodekthai=3604,t.dohiragana=12393,t.dokatakana=12489,t.dollar=36,t.dollarinferior=63203,t.dollarmonospace=65284,t.dollaroldstyle=63268,t.dollarsmall=65129,t.dollarsuperior=63204,t.dong=8363,t.dorusquare=13094,t.dotaccent=729,t.dotaccentcmb=775,t.dotbelowcmb=803,t.dotbelowcomb=803,t.dotkatakana=12539,t.dotlessi=305,t.dotlessj=63166,t.dotlessjstrokehook=644,t.dotmath=8901,t.dottedcircle=9676,t.doubleyodpatah=64287,t.doubleyodpatahhebrew=64287,t.downtackbelowcmb=798,t.downtackmod=725,t.dparen=9375,t.dsuperior=63211,t.dtail=598,t.dtopbar=396,t.duhiragana=12389,t.dukatakana=12485,t.dz=499,t.dzaltone=675,t.dzcaron=454,t.dzcurl=677,t.dzeabkhasiancyrillic=1249,t.dzecyrillic=1109,t.dzhecyrillic=1119,t.e=101,t.eacute=233,t.earth=9793,t.ebengali=2447,t.ebopomofo=12572,t.ebreve=277,t.ecandradeva=2317,t.ecandragujarati=2701,t.ecandravowelsigndeva=2373,t.ecandravowelsigngujarati=2757,t.ecaron=283,t.ecedillabreve=7709,t.echarmenian=1381,t.echyiwnarmenian=1415,t.ecircle=9428,t.ecircumflex=234,t.ecircumflexacute=7871,t.ecircumflexbelow=7705,t.ecircumflexdotbelow=7879,t.ecircumflexgrave=7873,t.ecircumflexhookabove=7875,t.ecircumflextilde=7877,t.ecyrillic=1108,t.edblgrave=517,t.edeva=2319,t.edieresis=235,t.edot=279,t.edotaccent=279,t.edotbelow=7865,t.eegurmukhi=2575,t.eematragurmukhi=2631,t.efcyrillic=1092,t.egrave=232,t.egujarati=2703,t.eharmenian=1383,t.ehbopomofo=12573,t.ehiragana=12360,t.ehookabove=7867,t.eibopomofo=12575,t.eight=56,t.eightarabic=1640,t.eightbengali=2542,t.eightcircle=9319,t.eightcircleinversesansserif=10129,t.eightdeva=2414,t.eighteencircle=9329,t.eighteenparen=9349,t.eighteenperiod=9369,t.eightgujarati=2798,t.eightgurmukhi=2670,t.eighthackarabic=1640,t.eighthangzhou=12328,t.eighthnotebeamed=9835,t.eightideographicparen=12839,t.eightinferior=8328,t.eightmonospace=65304,t.eightoldstyle=63288,t.eightparen=9339,t.eightperiod=9359,t.eightpersian=1784,t.eightroman=8567,t.eightsuperior=8312,t.eightthai=3672,t.einvertedbreve=519,t.eiotifiedcyrillic=1125,t.ekatakana=12456,t.ekatakanahalfwidth=65396,t.ekonkargurmukhi=2676,t.ekorean=12628,t.elcyrillic=1083,t.element=8712,t.elevencircle=9322,t.elevenparen=9342,t.elevenperiod=9362,t.elevenroman=8570,t.ellipsis=8230,t.ellipsisvertical=8942,t.emacron=275,t.emacronacute=7703,t.emacrongrave=7701,t.emcyrillic=1084,t.emdash=8212,t.emdashvertical=65073,t.emonospace=65349,t.emphasismarkarmenian=1371,t.emptyset=8709,t.enbopomofo=12579,t.encyrillic=1085,t.endash=8211,t.endashvertical=65074,t.endescendercyrillic=1187,t.eng=331,t.engbopomofo=12581,t.enghecyrillic=1189,t.enhookcyrillic=1224,t.enspace=8194,t.eogonek=281,t.eokorean=12627,t.eopen=603,t.eopenclosed=666,t.eopenreversed=604,t.eopenreversedclosed=606,t.eopenreversedhook=605,t.eparen=9376,t.epsilon=949,t.epsilontonos=941,t.equal=61,t.equalmonospace=65309,t.equalsmall=65126,t.equalsuperior=8316,t.equivalence=8801,t.erbopomofo=12582,t.ercyrillic=1088,t.ereversed=600,t.ereversedcyrillic=1101,t.escyrillic=1089,t.esdescendercyrillic=1195,t.esh=643,t.eshcurl=646,t.eshortdeva=2318,t.eshortvowelsigndeva=2374,t.eshreversedloop=426,t.eshsquatreversed=645,t.esmallhiragana=12359,t.esmallkatakana=12455,t.esmallkatakanahalfwidth=65386,t.estimated=8494,t.esuperior=63212,t.eta=951,t.etarmenian=1384,t.etatonos=942,t.eth=240,t.etilde=7869,t.etildebelow=7707,t.etnahtafoukhhebrew=1425,t.etnahtafoukhlefthebrew=1425,t.etnahtahebrew=1425,t.etnahtalefthebrew=1425,t.eturned=477,t.eukorean=12641,t.euro=8364,t.evowelsignbengali=2503,t.evowelsigndeva=2375,t.evowelsigngujarati=2759,t.exclam=33,t.exclamarmenian=1372,t.exclamdbl=8252,t.exclamdown=161,t.exclamdownsmall=63393,t.exclammonospace=65281,t.exclamsmall=63265,t.existential=8707,t.ezh=658,t.ezhcaron=495,t.ezhcurl=659,t.ezhreversed=441,t.ezhtail=442,t.f=102,t.fadeva=2398,t.fagurmukhi=2654,t.fahrenheit=8457,t.fathaarabic=1614,t.fathalowarabic=1614,t.fathatanarabic=1611,t.fbopomofo=12552,t.fcircle=9429,t.fdotaccent=7711,t.feharabic=1601,t.feharmenian=1414,t.fehfinalarabic=65234,t.fehinitialarabic=65235,t.fehmedialarabic=65236,t.feicoptic=997,t.female=9792,t.ff=64256,t.f_f=64256,t.ffi=64259,t.f_f_i=64259,t.ffl=64260,t.f_f_l=64260,t.fi=64257,t.f_i=64257,t.fifteencircle=9326,t.fifteenparen=9346,t.fifteenperiod=9366,t.figuredash=8210,t.filledbox=9632,t.filledrect=9644,t.finalkaf=1498,t.finalkafdagesh=64314,t.finalkafdageshhebrew=64314,t.finalkafhebrew=1498,t.finalmem=1501,t.finalmemhebrew=1501,t.finalnun=1503,t.finalnunhebrew=1503,t.finalpe=1507,t.finalpehebrew=1507,t.finaltsadi=1509,t.finaltsadihebrew=1509,t.firsttonechinese=713,t.fisheye=9673,t.fitacyrillic=1139,t.five=53,t.fivearabic=1637,t.fivebengali=2539,t.fivecircle=9316,t.fivecircleinversesansserif=10126,t.fivedeva=2411,t.fiveeighths=8541,t.fivegujarati=2795,t.fivegurmukhi=2667,t.fivehackarabic=1637,t.fivehangzhou=12325,t.fiveideographicparen=12836,t.fiveinferior=8325,t.fivemonospace=65301,t.fiveoldstyle=63285,t.fiveparen=9336,t.fiveperiod=9356,t.fivepersian=1781,t.fiveroman=8564,t.fivesuperior=8309,t.fivethai=3669,t.fl=64258,t.f_l=64258,t.florin=402,t.fmonospace=65350,t.fmsquare=13209,t.fofanthai=3615,t.fofathai=3613,t.fongmanthai=3663,t.forall=8704,t.four=52,t.fourarabic=1636,t.fourbengali=2538,t.fourcircle=9315,t.fourcircleinversesansserif=10125,t.fourdeva=2410,t.fourgujarati=2794,t.fourgurmukhi=2666,t.fourhackarabic=1636,t.fourhangzhou=12324,t.fourideographicparen=12835,t.fourinferior=8324,t.fourmonospace=65300,t.fournumeratorbengali=2551,t.fouroldstyle=63284,t.fourparen=9335,t.fourperiod=9355,t.fourpersian=1780,t.fourroman=8563,t.foursuperior=8308,t.fourteencircle=9325,t.fourteenparen=9345,t.fourteenperiod=9365,t.fourthai=3668,t.fourthtonechinese=715,t.fparen=9377,t.fraction=8260,t.franc=8355,t.g=103,t.gabengali=2455,t.gacute=501,t.gadeva=2327,t.gafarabic=1711,t.gaffinalarabic=64403,t.gafinitialarabic=64404,t.gafmedialarabic=64405,t.gagujarati=2711,t.gagurmukhi=2583,t.gahiragana=12364,t.gakatakana=12460,t.gamma=947,t.gammalatinsmall=611,t.gammasuperior=736,t.gangiacoptic=1003,t.gbopomofo=12557,t.gbreve=287,t.gcaron=487,t.gcedilla=291,t.gcircle=9430,t.gcircumflex=285,t.gcommaaccent=291,t.gdot=289,t.gdotaccent=289,t.gecyrillic=1075,t.gehiragana=12370,t.gekatakana=12466,t.geometricallyequal=8785,t.gereshaccenthebrew=1436,t.gereshhebrew=1523,t.gereshmuqdamhebrew=1437,t.germandbls=223,t.gershayimaccenthebrew=1438,t.gershayimhebrew=1524,t.getamark=12307,t.ghabengali=2456,t.ghadarmenian=1394,t.ghadeva=2328,t.ghagujarati=2712,t.ghagurmukhi=2584,t.ghainarabic=1594,t.ghainfinalarabic=65230,t.ghaininitialarabic=65231,t.ghainmedialarabic=65232,t.ghemiddlehookcyrillic=1173,t.ghestrokecyrillic=1171,t.gheupturncyrillic=1169,t.ghhadeva=2394,t.ghhagurmukhi=2650,t.ghook=608,t.ghzsquare=13203,t.gihiragana=12366,t.gikatakana=12462,t.gimarmenian=1379,t.gimel=1490,t.gimeldagesh=64306,t.gimeldageshhebrew=64306,t.gimelhebrew=1490,t.gjecyrillic=1107,t.glottalinvertedstroke=446,t.glottalstop=660,t.glottalstopinverted=662,t.glottalstopmod=704,t.glottalstopreversed=661,t.glottalstopreversedmod=705,t.glottalstopreversedsuperior=740,t.glottalstopstroke=673,t.glottalstopstrokereversed=674,t.gmacron=7713,t.gmonospace=65351,t.gohiragana=12372,t.gokatakana=12468,t.gparen=9378,t.gpasquare=13228,t.gradient=8711,t.grave=96,t.gravebelowcmb=790,t.gravecmb=768,t.gravecomb=768,t.gravedeva=2387,t.gravelowmod=718,t.gravemonospace=65344,t.gravetonecmb=832,t.greater=62,t.greaterequal=8805,t.greaterequalorless=8923,t.greatermonospace=65310,t.greaterorequivalent=8819,t.greaterorless=8823,t.greateroverequal=8807,t.greatersmall=65125,t.gscript=609,t.gstroke=485,t.guhiragana=12368,t.guillemotleft=171,t.guillemotright=187,t.guilsinglleft=8249,t.guilsinglright=8250,t.gukatakana=12464,t.guramusquare=13080,t.gysquare=13257,t.h=104,t.haabkhasiancyrillic=1193,t.haaltonearabic=1729,t.habengali=2489,t.hadescendercyrillic=1203,t.hadeva=2361,t.hagujarati=2745,t.hagurmukhi=2617,t.haharabic=1581,t.hahfinalarabic=65186,t.hahinitialarabic=65187,t.hahiragana=12399,t.hahmedialarabic=65188,t.haitusquare=13098,t.hakatakana=12495,t.hakatakanahalfwidth=65418,t.halantgurmukhi=2637,t.hamzaarabic=1569,t.hamzalowarabic=1569,t.hangulfiller=12644,t.hardsigncyrillic=1098,t.harpoonleftbarbup=8636,t.harpoonrightbarbup=8640,t.hasquare=13258,t.hatafpatah=1458,t.hatafpatah16=1458,t.hatafpatah23=1458,t.hatafpatah2f=1458,t.hatafpatahhebrew=1458,t.hatafpatahnarrowhebrew=1458,t.hatafpatahquarterhebrew=1458,t.hatafpatahwidehebrew=1458,t.hatafqamats=1459,t.hatafqamats1b=1459,t.hatafqamats28=1459,t.hatafqamats34=1459,t.hatafqamatshebrew=1459,t.hatafqamatsnarrowhebrew=1459,t.hatafqamatsquarterhebrew=1459,t.hatafqamatswidehebrew=1459,t.hatafsegol=1457,t.hatafsegol17=1457,t.hatafsegol24=1457,t.hatafsegol30=1457,t.hatafsegolhebrew=1457,t.hatafsegolnarrowhebrew=1457,t.hatafsegolquarterhebrew=1457,t.hatafsegolwidehebrew=1457,t.hbar=295,t.hbopomofo=12559,t.hbrevebelow=7723,t.hcedilla=7721,t.hcircle=9431,t.hcircumflex=293,t.hdieresis=7719,t.hdotaccent=7715,t.hdotbelow=7717,t.he=1492,t.heart=9829,t.heartsuitblack=9829,t.heartsuitwhite=9825,t.hedagesh=64308,t.hedageshhebrew=64308,t.hehaltonearabic=1729,t.heharabic=1607,t.hehebrew=1492,t.hehfinalaltonearabic=64423,t.hehfinalalttwoarabic=65258,t.hehfinalarabic=65258,t.hehhamzaabovefinalarabic=64421,t.hehhamzaaboveisolatedarabic=64420,t.hehinitialaltonearabic=64424,t.hehinitialarabic=65259,t.hehiragana=12408,t.hehmedialaltonearabic=64425,t.hehmedialarabic=65260,t.heiseierasquare=13179,t.hekatakana=12504,t.hekatakanahalfwidth=65421,t.hekutaarusquare=13110,t.henghook=615,t.herutusquare=13113,t.het=1495,t.hethebrew=1495,t.hhook=614,t.hhooksuperior=689,t.hieuhacirclekorean=12923,t.hieuhaparenkorean=12827,t.hieuhcirclekorean=12909,t.hieuhkorean=12622,t.hieuhparenkorean=12813,t.hihiragana=12402,t.hikatakana=12498,t.hikatakanahalfwidth=65419,t.hiriq=1460,t.hiriq14=1460,t.hiriq21=1460,t.hiriq2d=1460,t.hiriqhebrew=1460,t.hiriqnarrowhebrew=1460,t.hiriqquarterhebrew=1460,t.hiriqwidehebrew=1460,t.hlinebelow=7830,t.hmonospace=65352,t.hoarmenian=1392,t.hohipthai=3627,t.hohiragana=12411,t.hokatakana=12507,t.hokatakanahalfwidth=65422,t.holam=1465,t.holam19=1465,t.holam26=1465,t.holam32=1465,t.holamhebrew=1465,t.holamnarrowhebrew=1465,t.holamquarterhebrew=1465,t.holamwidehebrew=1465,t.honokhukthai=3630,t.hookabovecomb=777,t.hookcmb=777,t.hookpalatalizedbelowcmb=801,t.hookretroflexbelowcmb=802,t.hoonsquare=13122,t.horicoptic=1001,t.horizontalbar=8213,t.horncmb=795,t.hotsprings=9832,t.house=8962,t.hparen=9379,t.hsuperior=688,t.hturned=613,t.huhiragana=12405,t.huiitosquare=13107,t.hukatakana=12501,t.hukatakanahalfwidth=65420,t.hungarumlaut=733,t.hungarumlautcmb=779,t.hv=405,t.hyphen=45,t.hypheninferior=63205,t.hyphenmonospace=65293,t.hyphensmall=65123,t.hyphensuperior=63206,t.hyphentwo=8208,t.i=105,t.iacute=237,t.iacyrillic=1103,t.ibengali=2439,t.ibopomofo=12583,t.ibreve=301,t.icaron=464,t.icircle=9432,t.icircumflex=238,t.icyrillic=1110,t.idblgrave=521,t.ideographearthcircle=12943,t.ideographfirecircle=12939,t.ideographicallianceparen=12863,t.ideographiccallparen=12858,t.ideographiccentrecircle=12965,t.ideographicclose=12294,t.ideographiccomma=12289,t.ideographiccommaleft=65380,t.ideographiccongratulationparen=12855,t.ideographiccorrectcircle=12963,t.ideographicearthparen=12847,t.ideographicenterpriseparen=12861,t.ideographicexcellentcircle=12957,t.ideographicfestivalparen=12864,t.ideographicfinancialcircle=12950,t.ideographicfinancialparen=12854,t.ideographicfireparen=12843,t.ideographichaveparen=12850,t.ideographichighcircle=12964,t.ideographiciterationmark=12293,t.ideographiclaborcircle=12952,t.ideographiclaborparen=12856,t.ideographicleftcircle=12967,t.ideographiclowcircle=12966,t.ideographicmedicinecircle=12969,t.ideographicmetalparen=12846,t.ideographicmoonparen=12842,t.ideographicnameparen=12852,t.ideographicperiod=12290,t.ideographicprintcircle=12958,t.ideographicreachparen=12867,t.ideographicrepresentparen=12857,t.ideographicresourceparen=12862,t.ideographicrightcircle=12968,t.ideographicsecretcircle=12953,t.ideographicselfparen=12866,t.ideographicsocietyparen=12851,t.ideographicspace=12288,t.ideographicspecialparen=12853,t.ideographicstockparen=12849,t.ideographicstudyparen=12859,t.ideographicsunparen=12848,t.ideographicsuperviseparen=12860,t.ideographicwaterparen=12844,t.ideographicwoodparen=12845,t.ideographiczero=12295,t.ideographmetalcircle=12942,t.ideographmooncircle=12938,t.ideographnamecircle=12948,t.ideographsuncircle=12944,t.ideographwatercircle=12940,t.ideographwoodcircle=12941,t.ideva=2311,t.idieresis=239,t.idieresisacute=7727,t.idieresiscyrillic=1253,t.idotbelow=7883,t.iebrevecyrillic=1239,t.iecyrillic=1077,t.ieungacirclekorean=12917,t.ieungaparenkorean=12821,t.ieungcirclekorean=12903,t.ieungkorean=12615,t.ieungparenkorean=12807,t.igrave=236,t.igujarati=2695,t.igurmukhi=2567,t.ihiragana=12356,t.ihookabove=7881,t.iibengali=2440,t.iicyrillic=1080,t.iideva=2312,t.iigujarati=2696,t.iigurmukhi=2568,t.iimatragurmukhi=2624,t.iinvertedbreve=523,t.iishortcyrillic=1081,t.iivowelsignbengali=2496,t.iivowelsigndeva=2368,t.iivowelsigngujarati=2752,t.ij=307,t.ikatakana=12452,t.ikatakanahalfwidth=65394,t.ikorean=12643,t.ilde=732,t.iluyhebrew=1452,t.imacron=299,t.imacroncyrillic=1251,t.imageorapproximatelyequal=8787,t.imatragurmukhi=2623,t.imonospace=65353,t.increment=8710,t.infinity=8734,t.iniarmenian=1387,t.integral=8747,t.integralbottom=8993,t.integralbt=8993,t.integralex=63733,t.integraltop=8992,t.integraltp=8992,t.intersection=8745,t.intisquare=13061,t.invbullet=9688,t.invcircle=9689,t.invsmileface=9787,t.iocyrillic=1105,t.iogonek=303,t.iota=953,t.iotadieresis=970,t.iotadieresistonos=912,t.iotalatin=617,t.iotatonos=943,t.iparen=9380,t.irigurmukhi=2674,t.ismallhiragana=12355,t.ismallkatakana=12451,t.ismallkatakanahalfwidth=65384,t.issharbengali=2554,t.istroke=616,t.isuperior=63213,t.iterationhiragana=12445,t.iterationkatakana=12541,t.itilde=297,t.itildebelow=7725,t.iubopomofo=12585,t.iucyrillic=1102,t.ivowelsignbengali=2495,t.ivowelsigndeva=2367,t.ivowelsigngujarati=2751,t.izhitsacyrillic=1141,t.izhitsadblgravecyrillic=1143,t.j=106,t.jaarmenian=1393,t.jabengali=2460,t.jadeva=2332,t.jagujarati=2716,t.jagurmukhi=2588,t.jbopomofo=12560,t.jcaron=496,t.jcircle=9433,t.jcircumflex=309,t.jcrossedtail=669,t.jdotlessstroke=607,t.jecyrillic=1112,t.jeemarabic=1580,t.jeemfinalarabic=65182,t.jeeminitialarabic=65183,t.jeemmedialarabic=65184,t.jeharabic=1688,t.jehfinalarabic=64395,t.jhabengali=2461,t.jhadeva=2333,t.jhagujarati=2717,t.jhagurmukhi=2589,t.jheharmenian=1403,t.jis=12292,t.jmonospace=65354,t.jparen=9381,t.jsuperior=690,t.k=107,t.kabashkircyrillic=1185,t.kabengali=2453,t.kacute=7729,t.kacyrillic=1082,t.kadescendercyrillic=1179,t.kadeva=2325,t.kaf=1499,t.kafarabic=1603,t.kafdagesh=64315,t.kafdageshhebrew=64315,t.kaffinalarabic=65242,t.kafhebrew=1499,t.kafinitialarabic=65243,t.kafmedialarabic=65244,t.kafrafehebrew=64333,t.kagujarati=2709,t.kagurmukhi=2581,t.kahiragana=12363,t.kahookcyrillic=1220,t.kakatakana=12459,t.kakatakanahalfwidth=65398,t.kappa=954,t.kappasymbolgreek=1008,t.kapyeounmieumkorean=12657,t.kapyeounphieuphkorean=12676,t.kapyeounpieupkorean=12664,t.kapyeounssangpieupkorean=12665,t.karoriisquare=13069,t.kashidaautoarabic=1600,t.kashidaautonosidebearingarabic=1600,t.kasmallkatakana=12533,t.kasquare=13188,t.kasraarabic=1616,t.kasratanarabic=1613,t.kastrokecyrillic=1183,t.katahiraprolongmarkhalfwidth=65392,t.kaverticalstrokecyrillic=1181,t.kbopomofo=12558,t.kcalsquare=13193,t.kcaron=489,t.kcedilla=311,t.kcircle=9434,t.kcommaaccent=311,t.kdotbelow=7731,t.keharmenian=1412,t.kehiragana=12369,t.kekatakana=12465,t.kekatakanahalfwidth=65401,t.kenarmenian=1391,t.kesmallkatakana=12534,t.kgreenlandic=312,t.khabengali=2454,t.khacyrillic=1093,t.khadeva=2326,t.khagujarati=2710,t.khagurmukhi=2582,t.khaharabic=1582,t.khahfinalarabic=65190,t.khahinitialarabic=65191,t.khahmedialarabic=65192,t.kheicoptic=999,t.khhadeva=2393,t.khhagurmukhi=2649,t.khieukhacirclekorean=12920,t.khieukhaparenkorean=12824,t.khieukhcirclekorean=12906,t.khieukhkorean=12619,t.khieukhparenkorean=12810,t.khokhaithai=3586,t.khokhonthai=3589,t.khokhuatthai=3587,t.khokhwaithai=3588,t.khomutthai=3675,t.khook=409,t.khorakhangthai=3590,t.khzsquare=13201,t.kihiragana=12365,t.kikatakana=12461,t.kikatakanahalfwidth=65399,t.kiroguramusquare=13077,t.kiromeetorusquare=13078,t.kirosquare=13076,t.kiyeokacirclekorean=12910,t.kiyeokaparenkorean=12814,t.kiyeokcirclekorean=12896,t.kiyeokkorean=12593,t.kiyeokparenkorean=12800,t.kiyeoksioskorean=12595,t.kjecyrillic=1116,t.klinebelow=7733,t.klsquare=13208,t.kmcubedsquare=13222,t.kmonospace=65355,t.kmsquaredsquare=13218,t.kohiragana=12371,t.kohmsquare=13248,t.kokaithai=3585,t.kokatakana=12467,t.kokatakanahalfwidth=65402,t.kooposquare=13086,t.koppacyrillic=1153,t.koreanstandardsymbol=12927,t.koroniscmb=835,t.kparen=9382,t.kpasquare=13226,t.ksicyrillic=1135,t.ktsquare=13263,t.kturned=670,t.kuhiragana=12367,t.kukatakana=12463,t.kukatakanahalfwidth=65400,t.kvsquare=13240,t.kwsquare=13246,t.l=108,t.labengali=2482,t.lacute=314,t.ladeva=2354,t.lagujarati=2738,t.lagurmukhi=2610,t.lakkhangyaothai=3653,t.lamaleffinalarabic=65276,t.lamalefhamzaabovefinalarabic=65272,t.lamalefhamzaaboveisolatedarabic=65271,t.lamalefhamzabelowfinalarabic=65274,t.lamalefhamzabelowisolatedarabic=65273,t.lamalefisolatedarabic=65275,t.lamalefmaddaabovefinalarabic=65270,t.lamalefmaddaaboveisolatedarabic=65269,t.lamarabic=1604,t.lambda=955,t.lambdastroke=411,t.lamed=1500,t.lameddagesh=64316,t.lameddageshhebrew=64316,t.lamedhebrew=1500,t.lamfinalarabic=65246,t.lamhahinitialarabic=64714,t.laminitialarabic=65247,t.lamjeeminitialarabic=64713,t.lamkhahinitialarabic=64715,t.lamlamhehisolatedarabic=65010,t.lammedialarabic=65248,t.lammeemhahinitialarabic=64904,t.lammeeminitialarabic=64716,t.largecircle=9711,t.lbar=410,t.lbelt=620,t.lbopomofo=12556,t.lcaron=318,t.lcedilla=316,t.lcircle=9435,t.lcircumflexbelow=7741,t.lcommaaccent=316,t.ldot=320,t.ldotaccent=320,t.ldotbelow=7735,t.ldotbelowmacron=7737,t.leftangleabovecmb=794,t.lefttackbelowcmb=792,t.less=60,t.lessequal=8804,t.lessequalorgreater=8922,t.lessmonospace=65308,t.lessorequivalent=8818,t.lessorgreater=8822,t.lessoverequal=8806,t.lesssmall=65124,t.lezh=622,t.lfblock=9612,t.lhookretroflex=621,t.lira=8356,t.liwnarmenian=1388,t.lj=457,t.ljecyrillic=1113,t.ll=63168,t.lladeva=2355,t.llagujarati=2739,t.llinebelow=7739,t.llladeva=2356,t.llvocalicbengali=2529,t.llvocalicdeva=2401,t.llvocalicvowelsignbengali=2531,t.llvocalicvowelsigndeva=2403,t.lmiddletilde=619,t.lmonospace=65356,t.lmsquare=13264,t.lochulathai=3628,t.logicaland=8743,t.logicalnot=172,t.logicalnotreversed=8976,t.logicalor=8744,t.lolingthai=3621,t.longs=383,t.lowlinecenterline=65102,t.lowlinecmb=818,t.lowlinedashed=65101,t.lozenge=9674,t.lparen=9383,t.lslash=322,t.lsquare=8467,t.lsuperior=63214,t.ltshade=9617,t.luthai=3622,t.lvocalicbengali=2444,t.lvocalicdeva=2316,t.lvocalicvowelsignbengali=2530,t.lvocalicvowelsigndeva=2402,t.lxsquare=13267,t.m=109,t.mabengali=2478,t.macron=175,t.macronbelowcmb=817,t.macroncmb=772,t.macronlowmod=717,t.macronmonospace=65507,t.macute=7743,t.madeva=2350,t.magujarati=2734,t.magurmukhi=2606,t.mahapakhhebrew=1444,t.mahapakhlefthebrew=1444,t.mahiragana=12414,t.maichattawalowleftthai=63637,t.maichattawalowrightthai=63636,t.maichattawathai=3659,t.maichattawaupperleftthai=63635,t.maieklowleftthai=63628,t.maieklowrightthai=63627,t.maiekthai=3656,t.maiekupperleftthai=63626,t.maihanakatleftthai=63620,t.maihanakatthai=3633,t.maitaikhuleftthai=63625,t.maitaikhuthai=3655,t.maitholowleftthai=63631,t.maitholowrightthai=63630,t.maithothai=3657,t.maithoupperleftthai=63629,t.maitrilowleftthai=63634,t.maitrilowrightthai=63633,t.maitrithai=3658,t.maitriupperleftthai=63632,t.maiyamokthai=3654,t.makatakana=12510,t.makatakanahalfwidth=65423,t.male=9794,t.mansyonsquare=13127,t.maqafhebrew=1470,t.mars=9794,t.masoracirclehebrew=1455,t.masquare=13187,t.mbopomofo=12551,t.mbsquare=13268,t.mcircle=9436,t.mcubedsquare=13221,t.mdotaccent=7745,t.mdotbelow=7747,t.meemarabic=1605,t.meemfinalarabic=65250,t.meeminitialarabic=65251,t.meemmedialarabic=65252,t.meemmeeminitialarabic=64721,t.meemmeemisolatedarabic=64584,t.meetorusquare=13133,t.mehiragana=12417,t.meizierasquare=13182,t.mekatakana=12513,t.mekatakanahalfwidth=65426,t.mem=1502,t.memdagesh=64318,t.memdageshhebrew=64318,t.memhebrew=1502,t.menarmenian=1396,t.merkhahebrew=1445,t.merkhakefulahebrew=1446,t.merkhakefulalefthebrew=1446,t.merkhalefthebrew=1445,t.mhook=625,t.mhzsquare=13202,t.middledotkatakanahalfwidth=65381,t.middot=183,t.mieumacirclekorean=12914,t.mieumaparenkorean=12818,t.mieumcirclekorean=12900,t.mieumkorean=12609,t.mieumpansioskorean=12656,t.mieumparenkorean=12804,t.mieumpieupkorean=12654,t.mieumsioskorean=12655,t.mihiragana=12415,t.mikatakana=12511,t.mikatakanahalfwidth=65424,t.minus=8722,t.minusbelowcmb=800,t.minuscircle=8854,t.minusmod=727,t.minusplus=8723,t.minute=8242,t.miribaarusquare=13130,t.mirisquare=13129,t.mlonglegturned=624,t.mlsquare=13206,t.mmcubedsquare=13219,t.mmonospace=65357,t.mmsquaredsquare=13215,t.mohiragana=12418,t.mohmsquare=13249,t.mokatakana=12514,t.mokatakanahalfwidth=65427,t.molsquare=13270,t.momathai=3617,t.moverssquare=13223,t.moverssquaredsquare=13224,t.mparen=9384,t.mpasquare=13227,t.mssquare=13235,t.msuperior=63215,t.mturned=623,t.mu=181,t.mu1=181,t.muasquare=13186,t.muchgreater=8811,t.muchless=8810,t.mufsquare=13196,t.mugreek=956,t.mugsquare=13197,t.muhiragana=12416,t.mukatakana=12512,t.mukatakanahalfwidth=65425,t.mulsquare=13205,t.multiply=215,t.mumsquare=13211,t.munahhebrew=1443,t.munahlefthebrew=1443,t.musicalnote=9834,t.musicalnotedbl=9835,t.musicflatsign=9837,t.musicsharpsign=9839,t.mussquare=13234,t.muvsquare=13238,t.muwsquare=13244,t.mvmegasquare=13241,t.mvsquare=13239,t.mwmegasquare=13247,t.mwsquare=13245,t.n=110,t.nabengali=2472,t.nabla=8711,t.nacute=324,t.nadeva=2344,t.nagujarati=2728,t.nagurmukhi=2600,t.nahiragana=12394,t.nakatakana=12490,t.nakatakanahalfwidth=65413,t.napostrophe=329,t.nasquare=13185,t.nbopomofo=12555,t.nbspace=160,t.ncaron=328,t.ncedilla=326,t.ncircle=9437,t.ncircumflexbelow=7755,t.ncommaaccent=326,t.ndotaccent=7749,t.ndotbelow=7751,t.nehiragana=12397,t.nekatakana=12493,t.nekatakanahalfwidth=65416,t.newsheqelsign=8362,t.nfsquare=13195,t.ngabengali=2457,t.ngadeva=2329,t.ngagujarati=2713,t.ngagurmukhi=2585,t.ngonguthai=3591,t.nhiragana=12435,t.nhookleft=626,t.nhookretroflex=627,t.nieunacirclekorean=12911,t.nieunaparenkorean=12815,t.nieuncieuckorean=12597,t.nieuncirclekorean=12897,t.nieunhieuhkorean=12598,t.nieunkorean=12596,t.nieunpansioskorean=12648,t.nieunparenkorean=12801,t.nieunsioskorean=12647,t.nieuntikeutkorean=12646,t.nihiragana=12395,t.nikatakana=12491,t.nikatakanahalfwidth=65414,t.nikhahitleftthai=63641,t.nikhahitthai=3661,t.nine=57,t.ninearabic=1641,t.ninebengali=2543,t.ninecircle=9320,t.ninecircleinversesansserif=10130,t.ninedeva=2415,t.ninegujarati=2799,t.ninegurmukhi=2671,t.ninehackarabic=1641,t.ninehangzhou=12329,t.nineideographicparen=12840,t.nineinferior=8329,t.ninemonospace=65305,t.nineoldstyle=63289,t.nineparen=9340,t.nineperiod=9360,t.ninepersian=1785,t.nineroman=8568,t.ninesuperior=8313,t.nineteencircle=9330,t.nineteenparen=9350,t.nineteenperiod=9370,t.ninethai=3673,t.nj=460,t.njecyrillic=1114,t.nkatakana=12531,t.nkatakanahalfwidth=65437,t.nlegrightlong=414,t.nlinebelow=7753,t.nmonospace=65358,t.nmsquare=13210,t.nnabengali=2467,t.nnadeva=2339,t.nnagujarati=2723,t.nnagurmukhi=2595,t.nnnadeva=2345,t.nohiragana=12398,t.nokatakana=12494,t.nokatakanahalfwidth=65417,t.nonbreakingspace=160,t.nonenthai=3603,t.nonuthai=3609,t.noonarabic=1606,t.noonfinalarabic=65254,t.noonghunnaarabic=1722,t.noonghunnafinalarabic=64415,t.nooninitialarabic=65255,t.noonjeeminitialarabic=64722,t.noonjeemisolatedarabic=64587,t.noonmedialarabic=65256,t.noonmeeminitialarabic=64725,t.noonmeemisolatedarabic=64590,t.noonnoonfinalarabic=64653,t.notcontains=8716,t.notelement=8713,t.notelementof=8713,t.notequal=8800,t.notgreater=8815,t.notgreaternorequal=8817,t.notgreaternorless=8825,t.notidentical=8802,t.notless=8814,t.notlessnorequal=8816,t.notparallel=8742,t.notprecedes=8832,t.notsubset=8836,t.notsucceeds=8833,t.notsuperset=8837,t.nowarmenian=1398,t.nparen=9385,t.nssquare=13233,t.nsuperior=8319,t.ntilde=241,t.nu=957,t.nuhiragana=12396,t.nukatakana=12492,t.nukatakanahalfwidth=65415,t.nuktabengali=2492,t.nuktadeva=2364,t.nuktagujarati=2748,t.nuktagurmukhi=2620,t.numbersign=35,t.numbersignmonospace=65283,t.numbersignsmall=65119,t.numeralsigngreek=884,t.numeralsignlowergreek=885,t.numero=8470,t.nun=1504,t.nundagesh=64320,t.nundageshhebrew=64320,t.nunhebrew=1504,t.nvsquare=13237,t.nwsquare=13243,t.nyabengali=2462,t.nyadeva=2334,t.nyagujarati=2718,t.nyagurmukhi=2590,t.o=111,t.oacute=243,t.oangthai=3629,t.obarred=629,t.obarredcyrillic=1257,t.obarreddieresiscyrillic=1259,t.obengali=2451,t.obopomofo=12571,t.obreve=335,t.ocandradeva=2321,t.ocandragujarati=2705,t.ocandravowelsigndeva=2377,t.ocandravowelsigngujarati=2761,t.ocaron=466,t.ocircle=9438,t.ocircumflex=244,t.ocircumflexacute=7889,t.ocircumflexdotbelow=7897,t.ocircumflexgrave=7891,t.ocircumflexhookabove=7893,t.ocircumflextilde=7895,t.ocyrillic=1086,t.odblacute=337,t.odblgrave=525,t.odeva=2323,t.odieresis=246,t.odieresiscyrillic=1255,t.odotbelow=7885,t.oe=339,t.oekorean=12634,t.ogonek=731,t.ogonekcmb=808,t.ograve=242,t.ogujarati=2707,t.oharmenian=1413,t.ohiragana=12362,t.ohookabove=7887,t.ohorn=417,t.ohornacute=7899,t.ohorndotbelow=7907,t.ohorngrave=7901,t.ohornhookabove=7903,t.ohorntilde=7905,t.ohungarumlaut=337,t.oi=419,t.oinvertedbreve=527,t.okatakana=12458,t.okatakanahalfwidth=65397,t.okorean=12631,t.olehebrew=1451,t.omacron=333,t.omacronacute=7763,t.omacrongrave=7761,t.omdeva=2384,t.omega=969,t.omega1=982,t.omegacyrillic=1121,t.omegalatinclosed=631,t.omegaroundcyrillic=1147,t.omegatitlocyrillic=1149,t.omegatonos=974,t.omgujarati=2768,t.omicron=959,t.omicrontonos=972,t.omonospace=65359,t.one=49,t.onearabic=1633,t.onebengali=2535,t.onecircle=9312,t.onecircleinversesansserif=10122,t.onedeva=2407,t.onedotenleader=8228,t.oneeighth=8539,t.onefitted=63196,t.onegujarati=2791,t.onegurmukhi=2663,t.onehackarabic=1633,t.onehalf=189,t.onehangzhou=12321,t.oneideographicparen=12832,t.oneinferior=8321,t.onemonospace=65297,t.onenumeratorbengali=2548,t.oneoldstyle=63281,t.oneparen=9332,t.oneperiod=9352,t.onepersian=1777,t.onequarter=188,t.oneroman=8560,t.onesuperior=185,t.onethai=3665,t.onethird=8531,t.oogonek=491,t.oogonekmacron=493,t.oogurmukhi=2579,t.oomatragurmukhi=2635,t.oopen=596,t.oparen=9386,t.openbullet=9702,t.option=8997,t.ordfeminine=170,t.ordmasculine=186,t.orthogonal=8735,t.oshortdeva=2322,t.oshortvowelsigndeva=2378,t.oslash=248,t.oslashacute=511,t.osmallhiragana=12361,t.osmallkatakana=12457,t.osmallkatakanahalfwidth=65387,t.ostrokeacute=511,t.osuperior=63216,t.otcyrillic=1151,t.otilde=245,t.otildeacute=7757,t.otildedieresis=7759,t.oubopomofo=12577,t.overline=8254,t.overlinecenterline=65098,t.overlinecmb=773,t.overlinedashed=65097,t.overlinedblwavy=65100,t.overlinewavy=65099,t.overscore=175,t.ovowelsignbengali=2507,t.ovowelsigndeva=2379,t.ovowelsigngujarati=2763,t.p=112,t.paampssquare=13184,t.paasentosquare=13099,t.pabengali=2474,t.pacute=7765,t.padeva=2346,t.pagedown=8671,t.pageup=8670,t.pagujarati=2730,t.pagurmukhi=2602,t.pahiragana=12401,t.paiyannoithai=3631,t.pakatakana=12497,t.palatalizationcyrilliccmb=1156,t.palochkacyrillic=1216,t.pansioskorean=12671,t.paragraph=182,t.parallel=8741,t.parenleft=40,t.parenleftaltonearabic=64830,t.parenleftbt=63725,t.parenleftex=63724,t.parenleftinferior=8333,t.parenleftmonospace=65288,t.parenleftsmall=65113,t.parenleftsuperior=8317,t.parenlefttp=63723,t.parenleftvertical=65077,t.parenright=41,t.parenrightaltonearabic=64831,t.parenrightbt=63736,t.parenrightex=63735,t.parenrightinferior=8334,t.parenrightmonospace=65289,t.parenrightsmall=65114,t.parenrightsuperior=8318,t.parenrighttp=63734,t.parenrightvertical=65078,t.partialdiff=8706,t.paseqhebrew=1472,t.pashtahebrew=1433,t.pasquare=13225,t.patah=1463,t.patah11=1463,t.patah1d=1463,t.patah2a=1463,t.patahhebrew=1463,t.patahnarrowhebrew=1463,t.patahquarterhebrew=1463,t.patahwidehebrew=1463,t.pazerhebrew=1441,t.pbopomofo=12550,t.pcircle=9439,t.pdotaccent=7767,t.pe=1508,t.pecyrillic=1087,t.pedagesh=64324,t.pedageshhebrew=64324,t.peezisquare=13115,t.pefinaldageshhebrew=64323,t.peharabic=1662,t.peharmenian=1402,t.pehebrew=1508,t.pehfinalarabic=64343,t.pehinitialarabic=64344,t.pehiragana=12410,t.pehmedialarabic=64345,t.pekatakana=12506,t.pemiddlehookcyrillic=1191,t.perafehebrew=64334,t.percent=37,t.percentarabic=1642,t.percentmonospace=65285,t.percentsmall=65130,t.period=46,t.periodarmenian=1417,t.periodcentered=183,t.periodhalfwidth=65377,t.periodinferior=63207,t.periodmonospace=65294,t.periodsmall=65106,t.periodsuperior=63208,t.perispomenigreekcmb=834,t.perpendicular=8869,t.perthousand=8240,t.peseta=8359,t.pfsquare=13194,t.phabengali=2475,t.phadeva=2347,t.phagujarati=2731,t.phagurmukhi=2603,t.phi=966,t.phi1=981,t.phieuphacirclekorean=12922,t.phieuphaparenkorean=12826,t.phieuphcirclekorean=12908,t.phieuphkorean=12621,t.phieuphparenkorean=12812,t.philatin=632,t.phinthuthai=3642,t.phisymbolgreek=981,t.phook=421,t.phophanthai=3614,t.phophungthai=3612,t.phosamphaothai=3616,t.pi=960,t.pieupacirclekorean=12915,t.pieupaparenkorean=12819,t.pieupcieuckorean=12662,t.pieupcirclekorean=12901,t.pieupkiyeokkorean=12658,t.pieupkorean=12610,t.pieupparenkorean=12805,t.pieupsioskiyeokkorean=12660,t.pieupsioskorean=12612,t.pieupsiostikeutkorean=12661,t.pieupthieuthkorean=12663,t.pieuptikeutkorean=12659,t.pihiragana=12404,t.pikatakana=12500,t.pisymbolgreek=982,t.piwrarmenian=1411,t.planckover2pi=8463,t.planckover2pi1=8463,t.plus=43,t.plusbelowcmb=799,t.pluscircle=8853,t.plusminus=177,t.plusmod=726,t.plusmonospace=65291,t.plussmall=65122,t.plussuperior=8314,t.pmonospace=65360,t.pmsquare=13272,t.pohiragana=12413,t.pointingindexdownwhite=9759,t.pointingindexleftwhite=9756,t.pointingindexrightwhite=9758,t.pointingindexupwhite=9757,t.pokatakana=12509,t.poplathai=3611,t.postalmark=12306,t.postalmarkface=12320,t.pparen=9387,t.precedes=8826,t.prescription=8478,t.primemod=697,t.primereversed=8245,t.product=8719,t.projective=8965,t.prolongedkana=12540,t.propellor=8984,t.propersubset=8834,t.propersuperset=8835,t.proportion=8759,t.proportional=8733,t.psi=968,t.psicyrillic=1137,t.psilipneumatacyrilliccmb=1158,t.pssquare=13232,t.puhiragana=12407,t.pukatakana=12503,t.pvsquare=13236,t.pwsquare=13242,t.q=113,t.qadeva=2392,t.qadmahebrew=1448,t.qafarabic=1602,t.qaffinalarabic=65238,t.qafinitialarabic=65239,t.qafmedialarabic=65240,t.qamats=1464,t.qamats10=1464,t.qamats1a=1464,t.qamats1c=1464,t.qamats27=1464,t.qamats29=1464,t.qamats33=1464,t.qamatsde=1464,t.qamatshebrew=1464,t.qamatsnarrowhebrew=1464,t.qamatsqatanhebrew=1464,t.qamatsqatannarrowhebrew=1464,t.qamatsqatanquarterhebrew=1464,t.qamatsqatanwidehebrew=1464,t.qamatsquarterhebrew=1464,t.qamatswidehebrew=1464,t.qarneyparahebrew=1439,t.qbopomofo=12561,t.qcircle=9440,t.qhook=672,t.qmonospace=65361,t.qof=1511,t.qofdagesh=64327,t.qofdageshhebrew=64327,t.qofhebrew=1511,t.qparen=9388,t.quarternote=9833,t.qubuts=1467,t.qubuts18=1467,t.qubuts25=1467,t.qubuts31=1467,t.qubutshebrew=1467,t.qubutsnarrowhebrew=1467,t.qubutsquarterhebrew=1467,t.qubutswidehebrew=1467,t.question=63,t.questionarabic=1567,t.questionarmenian=1374,t.questiondown=191,t.questiondownsmall=63423,t.questiongreek=894,t.questionmonospace=65311,t.questionsmall=63295,t.quotedbl=34,t.quotedblbase=8222,t.quotedblleft=8220,t.quotedblmonospace=65282,t.quotedblprime=12318,t.quotedblprimereversed=12317,t.quotedblright=8221,t.quoteleft=8216,t.quoteleftreversed=8219,t.quotereversed=8219,t.quoteright=8217,t.quoterightn=329,t.quotesinglbase=8218,t.quotesingle=39,t.quotesinglemonospace=65287,t.r=114,t.raarmenian=1404,t.rabengali=2480,t.racute=341,t.radeva=2352,t.radical=8730,t.radicalex=63717,t.radoverssquare=13230,t.radoverssquaredsquare=13231,t.radsquare=13229,t.rafe=1471,t.rafehebrew=1471,t.ragujarati=2736,t.ragurmukhi=2608,t.rahiragana=12425,t.rakatakana=12521,t.rakatakanahalfwidth=65431,t.ralowerdiagonalbengali=2545,t.ramiddlediagonalbengali=2544,t.ramshorn=612,t.ratio=8758,t.rbopomofo=12566,t.rcaron=345,t.rcedilla=343,t.rcircle=9441,t.rcommaaccent=343,t.rdblgrave=529,t.rdotaccent=7769,t.rdotbelow=7771,t.rdotbelowmacron=7773,t.referencemark=8251,t.reflexsubset=8838,t.reflexsuperset=8839,t.registered=174,t.registersans=63720,t.registerserif=63194,t.reharabic=1585,t.reharmenian=1408,t.rehfinalarabic=65198,t.rehiragana=12428,t.rekatakana=12524,t.rekatakanahalfwidth=65434,t.resh=1512,t.reshdageshhebrew=64328,t.reshhebrew=1512,t.reversedtilde=8765,t.reviahebrew=1431,t.reviamugrashhebrew=1431,t.revlogicalnot=8976,t.rfishhook=638,t.rfishhookreversed=639,t.rhabengali=2525,t.rhadeva=2397,t.rho=961,t.rhook=637,t.rhookturned=635,t.rhookturnedsuperior=693,t.rhosymbolgreek=1009,t.rhotichookmod=734,t.rieulacirclekorean=12913,t.rieulaparenkorean=12817,t.rieulcirclekorean=12899,t.rieulhieuhkorean=12608,t.rieulkiyeokkorean=12602,t.rieulkiyeoksioskorean=12649,t.rieulkorean=12601,t.rieulmieumkorean=12603,t.rieulpansioskorean=12652,t.rieulparenkorean=12803,t.rieulphieuphkorean=12607,t.rieulpieupkorean=12604,t.rieulpieupsioskorean=12651,t.rieulsioskorean=12605,t.rieulthieuthkorean=12606,t.rieultikeutkorean=12650,t.rieulyeorinhieuhkorean=12653,t.rightangle=8735,t.righttackbelowcmb=793,t.righttriangle=8895,t.rihiragana=12426,t.rikatakana=12522,t.rikatakanahalfwidth=65432,t.ring=730,t.ringbelowcmb=805,t.ringcmb=778,t.ringhalfleft=703,t.ringhalfleftarmenian=1369,t.ringhalfleftbelowcmb=796,t.ringhalfleftcentered=723,t.ringhalfright=702,t.ringhalfrightbelowcmb=825,t.ringhalfrightcentered=722,t.rinvertedbreve=531,t.rittorusquare=13137,t.rlinebelow=7775,t.rlongleg=636,t.rlonglegturned=634,t.rmonospace=65362,t.rohiragana=12429,t.rokatakana=12525,t.rokatakanahalfwidth=65435,t.roruathai=3619,t.rparen=9389,t.rrabengali=2524,t.rradeva=2353,t.rragurmukhi=2652,t.rreharabic=1681,t.rrehfinalarabic=64397,t.rrvocalicbengali=2528,t.rrvocalicdeva=2400,t.rrvocalicgujarati=2784,t.rrvocalicvowelsignbengali=2500,t.rrvocalicvowelsigndeva=2372,t.rrvocalicvowelsigngujarati=2756,t.rsuperior=63217,t.rtblock=9616,t.rturned=633,t.rturnedsuperior=692,t.ruhiragana=12427,t.rukatakana=12523,t.rukatakanahalfwidth=65433,t.rupeemarkbengali=2546,t.rupeesignbengali=2547,t.rupiah=63197,t.ruthai=3620,t.rvocalicbengali=2443,t.rvocalicdeva=2315,t.rvocalicgujarati=2699,t.rvocalicvowelsignbengali=2499,t.rvocalicvowelsigndeva=2371,t.rvocalicvowelsigngujarati=2755,t.s=115,t.sabengali=2488,t.sacute=347,t.sacutedotaccent=7781,t.sadarabic=1589,t.sadeva=2360,t.sadfinalarabic=65210,t.sadinitialarabic=65211,t.sadmedialarabic=65212,t.sagujarati=2744,t.sagurmukhi=2616,t.sahiragana=12373,t.sakatakana=12469,t.sakatakanahalfwidth=65403,t.sallallahoualayhewasallamarabic=65018,t.samekh=1505,t.samekhdagesh=64321,t.samekhdageshhebrew=64321,t.samekhhebrew=1505,t.saraaathai=3634,t.saraaethai=3649,t.saraaimaimalaithai=3652,t.saraaimaimuanthai=3651,t.saraamthai=3635,t.saraathai=3632,t.saraethai=3648,t.saraiileftthai=63622,t.saraiithai=3637,t.saraileftthai=63621,t.saraithai=3636,t.saraothai=3650,t.saraueeleftthai=63624,t.saraueethai=3639,t.saraueleftthai=63623,t.sarauethai=3638,t.sarauthai=3640,t.sarauuthai=3641,t.sbopomofo=12569,t.scaron=353,t.scarondotaccent=7783,t.scedilla=351,t.schwa=601,t.schwacyrillic=1241,t.schwadieresiscyrillic=1243,t.schwahook=602,t.scircle=9442,t.scircumflex=349,t.scommaaccent=537,t.sdotaccent=7777,t.sdotbelow=7779,t.sdotbelowdotaccent=7785,t.seagullbelowcmb=828,t.second=8243,t.secondtonechinese=714,t.section=167,t.seenarabic=1587,t.seenfinalarabic=65202,t.seeninitialarabic=65203,t.seenmedialarabic=65204,t.segol=1462,t.segol13=1462,t.segol1f=1462,t.segol2c=1462,t.segolhebrew=1462,t.segolnarrowhebrew=1462,t.segolquarterhebrew=1462,t.segoltahebrew=1426,t.segolwidehebrew=1462,t.seharmenian=1405,t.sehiragana=12379,t.sekatakana=12475,t.sekatakanahalfwidth=65406,t.semicolon=59,t.semicolonarabic=1563,t.semicolonmonospace=65307,t.semicolonsmall=65108,t.semivoicedmarkkana=12444,t.semivoicedmarkkanahalfwidth=65439,t.sentisquare=13090,t.sentosquare=13091,t.seven=55,t.sevenarabic=1639,t.sevenbengali=2541,t.sevencircle=9318,t.sevencircleinversesansserif=10128,t.sevendeva=2413,t.seveneighths=8542,t.sevengujarati=2797,t.sevengurmukhi=2669,t.sevenhackarabic=1639,t.sevenhangzhou=12327,t.sevenideographicparen=12838,t.seveninferior=8327,t.sevenmonospace=65303,t.sevenoldstyle=63287,t.sevenparen=9338,t.sevenperiod=9358,t.sevenpersian=1783,t.sevenroman=8566,t.sevensuperior=8311,t.seventeencircle=9328,t.seventeenparen=9348,t.seventeenperiod=9368,t.seventhai=3671,t.sfthyphen=173,t.shaarmenian=1399,t.shabengali=2486,t.shacyrillic=1096,t.shaddaarabic=1617,t.shaddadammaarabic=64609,t.shaddadammatanarabic=64606,t.shaddafathaarabic=64608,t.shaddakasraarabic=64610,t.shaddakasratanarabic=64607,t.shade=9618,t.shadedark=9619,t.shadelight=9617,t.shademedium=9618,t.shadeva=2358,t.shagujarati=2742,t.shagurmukhi=2614,t.shalshelethebrew=1427,t.shbopomofo=12565,t.shchacyrillic=1097,t.sheenarabic=1588,t.sheenfinalarabic=65206,t.sheeninitialarabic=65207,t.sheenmedialarabic=65208,t.sheicoptic=995,t.sheqel=8362,t.sheqelhebrew=8362,t.sheva=1456,t.sheva115=1456,t.sheva15=1456,t.sheva22=1456,t.sheva2e=1456,t.shevahebrew=1456,t.shevanarrowhebrew=1456,t.shevaquarterhebrew=1456,t.shevawidehebrew=1456,t.shhacyrillic=1211,t.shimacoptic=1005,t.shin=1513,t.shindagesh=64329,t.shindageshhebrew=64329,t.shindageshshindot=64300,t.shindageshshindothebrew=64300,t.shindageshsindot=64301,t.shindageshsindothebrew=64301,t.shindothebrew=1473,t.shinhebrew=1513,t.shinshindot=64298,t.shinshindothebrew=64298,t.shinsindot=64299,t.shinsindothebrew=64299,t.shook=642,t.sigma=963,t.sigma1=962,t.sigmafinal=962,t.sigmalunatesymbolgreek=1010,t.sihiragana=12375,t.sikatakana=12471,t.sikatakanahalfwidth=65404,t.siluqhebrew=1469,t.siluqlefthebrew=1469,t.similar=8764,t.sindothebrew=1474,t.siosacirclekorean=12916,t.siosaparenkorean=12820,t.sioscieuckorean=12670,t.sioscirclekorean=12902,t.sioskiyeokkorean=12666,t.sioskorean=12613,t.siosnieunkorean=12667,t.siosparenkorean=12806,t.siospieupkorean=12669,t.siostikeutkorean=12668,t.six=54,t.sixarabic=1638,t.sixbengali=2540,t.sixcircle=9317,t.sixcircleinversesansserif=10127,t.sixdeva=2412,t.sixgujarati=2796,t.sixgurmukhi=2668,t.sixhackarabic=1638,t.sixhangzhou=12326,t.sixideographicparen=12837,t.sixinferior=8326,t.sixmonospace=65302,t.sixoldstyle=63286,t.sixparen=9337,t.sixperiod=9357,t.sixpersian=1782,t.sixroman=8565,t.sixsuperior=8310,t.sixteencircle=9327,t.sixteencurrencydenominatorbengali=2553,t.sixteenparen=9347,t.sixteenperiod=9367,t.sixthai=3670,t.slash=47,t.slashmonospace=65295,t.slong=383,t.slongdotaccent=7835,t.smileface=9786,t.smonospace=65363,t.sofpasuqhebrew=1475,t.softhyphen=173,t.softsigncyrillic=1100,t.sohiragana=12381,t.sokatakana=12477,t.sokatakanahalfwidth=65407,t.soliduslongoverlaycmb=824,t.solidusshortoverlaycmb=823,t.sorusithai=3625,t.sosalathai=3624,t.sosothai=3595,t.sosuathai=3626,t.space=32,t.spacehackarabic=32,t.spade=9824,t.spadesuitblack=9824,t.spadesuitwhite=9828,t.sparen=9390,t.squarebelowcmb=827,t.squarecc=13252,t.squarecm=13213,t.squarediagonalcrosshatchfill=9641,t.squarehorizontalfill=9636,t.squarekg=13199,t.squarekm=13214,t.squarekmcapital=13262,t.squareln=13265,t.squarelog=13266,t.squaremg=13198,t.squaremil=13269,t.squaremm=13212,t.squaremsquared=13217,t.squareorthogonalcrosshatchfill=9638,t.squareupperlefttolowerrightfill=9639,t.squareupperrighttolowerleftfill=9640,t.squareverticalfill=9637,t.squarewhitewithsmallblack=9635,t.srsquare=13275,t.ssabengali=2487,t.ssadeva=2359,t.ssagujarati=2743,t.ssangcieuckorean=12617,t.ssanghieuhkorean=12677,t.ssangieungkorean=12672,t.ssangkiyeokkorean=12594,t.ssangnieunkorean=12645,t.ssangpieupkorean=12611,t.ssangsioskorean=12614,t.ssangtikeutkorean=12600,t.ssuperior=63218,t.sterling=163,t.sterlingmonospace=65505,t.strokelongoverlaycmb=822,t.strokeshortoverlaycmb=821,t.subset=8834,t.subsetnotequal=8842,t.subsetorequal=8838,t.succeeds=8827,t.suchthat=8715,t.suhiragana=12377,t.sukatakana=12473,t.sukatakanahalfwidth=65405,t.sukunarabic=1618,t.summation=8721,t.sun=9788,t.superset=8835,t.supersetnotequal=8843,t.supersetorequal=8839,t.svsquare=13276,t.syouwaerasquare=13180,t.t=116,t.tabengali=2468,t.tackdown=8868,t.tackleft=8867,t.tadeva=2340,t.tagujarati=2724,t.tagurmukhi=2596,t.taharabic=1591,t.tahfinalarabic=65218,t.tahinitialarabic=65219,t.tahiragana=12383,t.tahmedialarabic=65220,t.taisyouerasquare=13181,t.takatakana=12479,t.takatakanahalfwidth=65408,t.tatweelarabic=1600,t.tau=964,t.tav=1514,t.tavdages=64330,t.tavdagesh=64330,t.tavdageshhebrew=64330,t.tavhebrew=1514,t.tbar=359,t.tbopomofo=12554,t.tcaron=357,t.tccurl=680,t.tcedilla=355,t.tcheharabic=1670,t.tchehfinalarabic=64379,t.tchehinitialarabic=64380,t.tchehmedialarabic=64381,t.tcircle=9443,t.tcircumflexbelow=7793,t.tcommaaccent=355,t.tdieresis=7831,t.tdotaccent=7787,t.tdotbelow=7789,t.tecyrillic=1090,t.tedescendercyrillic=1197,t.teharabic=1578,t.tehfinalarabic=65174,t.tehhahinitialarabic=64674,t.tehhahisolatedarabic=64524,t.tehinitialarabic=65175,t.tehiragana=12390,t.tehjeeminitialarabic=64673,t.tehjeemisolatedarabic=64523,t.tehmarbutaarabic=1577,t.tehmarbutafinalarabic=65172,t.tehmedialarabic=65176,t.tehmeeminitialarabic=64676,t.tehmeemisolatedarabic=64526,t.tehnoonfinalarabic=64627,t.tekatakana=12486,t.tekatakanahalfwidth=65411,t.telephone=8481,t.telephoneblack=9742,t.telishagedolahebrew=1440,t.telishaqetanahebrew=1449,t.tencircle=9321,t.tenideographicparen=12841,t.tenparen=9341,t.tenperiod=9361,t.tenroman=8569,t.tesh=679,t.tet=1496,t.tetdagesh=64312,t.tetdageshhebrew=64312,t.tethebrew=1496,t.tetsecyrillic=1205,t.tevirhebrew=1435,t.tevirlefthebrew=1435,t.thabengali=2469,t.thadeva=2341,t.thagujarati=2725,t.thagurmukhi=2597,t.thalarabic=1584,t.thalfinalarabic=65196,t.thanthakhatlowleftthai=63640,t.thanthakhatlowrightthai=63639,t.thanthakhatthai=3660,t.thanthakhatupperleftthai=63638,t.theharabic=1579,t.thehfinalarabic=65178,t.thehinitialarabic=65179,t.thehmedialarabic=65180,t.thereexists=8707,t.therefore=8756,t.theta=952,t.theta1=977,t.thetasymbolgreek=977,t.thieuthacirclekorean=12921,t.thieuthaparenkorean=12825,t.thieuthcirclekorean=12907,t.thieuthkorean=12620,t.thieuthparenkorean=12811,t.thirteencircle=9324,t.thirteenparen=9344,t.thirteenperiod=9364,t.thonangmonthothai=3601,t.thook=429,t.thophuthaothai=3602,t.thorn=254,t.thothahanthai=3607,t.thothanthai=3600,t.thothongthai=3608,t.thothungthai=3606,t.thousandcyrillic=1154,t.thousandsseparatorarabic=1644,t.thousandsseparatorpersian=1644,t.three=51,t.threearabic=1635,t.threebengali=2537,t.threecircle=9314,t.threecircleinversesansserif=10124,t.threedeva=2409,t.threeeighths=8540,t.threegujarati=2793,t.threegurmukhi=2665,t.threehackarabic=1635,t.threehangzhou=12323,t.threeideographicparen=12834,t.threeinferior=8323,t.threemonospace=65299,t.threenumeratorbengali=2550,t.threeoldstyle=63283,t.threeparen=9334,t.threeperiod=9354,t.threepersian=1779,t.threequarters=190,t.threequartersemdash=63198,t.threeroman=8562,t.threesuperior=179,t.threethai=3667,t.thzsquare=13204,t.tihiragana=12385,t.tikatakana=12481,t.tikatakanahalfwidth=65409,t.tikeutacirclekorean=12912,t.tikeutaparenkorean=12816,t.tikeutcirclekorean=12898,t.tikeutkorean=12599,t.tikeutparenkorean=12802,t.tilde=732,t.tildebelowcmb=816,t.tildecmb=771,t.tildecomb=771,t.tildedoublecmb=864,t.tildeoperator=8764,t.tildeoverlaycmb=820,t.tildeverticalcmb=830,t.timescircle=8855,t.tipehahebrew=1430,t.tipehalefthebrew=1430,t.tippigurmukhi=2672,t.titlocyrilliccmb=1155,t.tiwnarmenian=1407,t.tlinebelow=7791,t.tmonospace=65364,t.toarmenian=1385,t.tohiragana=12392,t.tokatakana=12488,t.tokatakanahalfwidth=65412,t.tonebarextrahighmod=741,t.tonebarextralowmod=745,t.tonebarhighmod=742,t.tonebarlowmod=744,t.tonebarmidmod=743,t.tonefive=445,t.tonesix=389,t.tonetwo=424,t.tonos=900,t.tonsquare=13095,t.topatakthai=3599,t.tortoiseshellbracketleft=12308,t.tortoiseshellbracketleftsmall=65117,t.tortoiseshellbracketleftvertical=65081,t.tortoiseshellbracketright=12309,t.tortoiseshellbracketrightsmall=65118,t.tortoiseshellbracketrightvertical=65082,t.totaothai=3605,t.tpalatalhook=427,t.tparen=9391,t.trademark=8482,t.trademarksans=63722,t.trademarkserif=63195,t.tretroflexhook=648,t.triagdn=9660,t.triaglf=9668,t.triagrt=9658,t.triagup=9650,t.ts=678,t.tsadi=1510,t.tsadidagesh=64326,t.tsadidageshhebrew=64326,t.tsadihebrew=1510,t.tsecyrillic=1094,t.tsere=1461,t.tsere12=1461,t.tsere1e=1461,t.tsere2b=1461,t.tserehebrew=1461,t.tserenarrowhebrew=1461,t.tserequarterhebrew=1461,t.tserewidehebrew=1461,t.tshecyrillic=1115,t.tsuperior=63219,t.ttabengali=2463,t.ttadeva=2335,t.ttagujarati=2719,t.ttagurmukhi=2591,t.tteharabic=1657,t.ttehfinalarabic=64359,t.ttehinitialarabic=64360,t.ttehmedialarabic=64361,t.tthabengali=2464,t.tthadeva=2336,t.tthagujarati=2720,t.tthagurmukhi=2592,t.tturned=647,t.tuhiragana=12388,t.tukatakana=12484,t.tukatakanahalfwidth=65410,t.tusmallhiragana=12387,t.tusmallkatakana=12483,t.tusmallkatakanahalfwidth=65391,t.twelvecircle=9323,t.twelveparen=9343,t.twelveperiod=9363,t.twelveroman=8571,t.twentycircle=9331,t.twentyhangzhou=21316,t.twentyparen=9351,t.twentyperiod=9371,t.two=50,t.twoarabic=1634,t.twobengali=2536,t.twocircle=9313,t.twocircleinversesansserif=10123,t.twodeva=2408,t.twodotenleader=8229,t.twodotleader=8229,t.twodotleadervertical=65072,t.twogujarati=2792,t.twogurmukhi=2664,t.twohackarabic=1634,t.twohangzhou=12322,t.twoideographicparen=12833,t.twoinferior=8322,t.twomonospace=65298,t.twonumeratorbengali=2549,t.twooldstyle=63282,t.twoparen=9333,t.twoperiod=9353,t.twopersian=1778,t.tworoman=8561,t.twostroke=443,t.twosuperior=178,t.twothai=3666,t.twothirds=8532,t.u=117,t.uacute=250,t.ubar=649,t.ubengali=2441,t.ubopomofo=12584,t.ubreve=365,t.ucaron=468,t.ucircle=9444,t.ucircumflex=251,t.ucircumflexbelow=7799,t.ucyrillic=1091,t.udattadeva=2385,t.udblacute=369,t.udblgrave=533,t.udeva=2313,t.udieresis=252,t.udieresisacute=472,t.udieresisbelow=7795,t.udieresiscaron=474,t.udieresiscyrillic=1265,t.udieresisgrave=476,t.udieresismacron=470,t.udotbelow=7909,t.ugrave=249,t.ugujarati=2697,t.ugurmukhi=2569,t.uhiragana=12358,t.uhookabove=7911,t.uhorn=432,t.uhornacute=7913,t.uhorndotbelow=7921,t.uhorngrave=7915,t.uhornhookabove=7917,t.uhorntilde=7919,t.uhungarumlaut=369,t.uhungarumlautcyrillic=1267,t.uinvertedbreve=535,t.ukatakana=12454,t.ukatakanahalfwidth=65395,t.ukcyrillic=1145,t.ukorean=12636,t.umacron=363,t.umacroncyrillic=1263,t.umacrondieresis=7803,t.umatragurmukhi=2625,t.umonospace=65365,t.underscore=95,t.underscoredbl=8215,t.underscoremonospace=65343,t.underscorevertical=65075,t.underscorewavy=65103,t.union=8746,t.universal=8704,t.uogonek=371,t.uparen=9392,t.upblock=9600,t.upperdothebrew=1476,t.upsilon=965,t.upsilondieresis=971,t.upsilondieresistonos=944,t.upsilonlatin=650,t.upsilontonos=973,t.uptackbelowcmb=797,t.uptackmod=724,t.uragurmukhi=2675,t.uring=367,t.ushortcyrillic=1118,t.usmallhiragana=12357,t.usmallkatakana=12453,t.usmallkatakanahalfwidth=65385,t.ustraightcyrillic=1199,t.ustraightstrokecyrillic=1201,t.utilde=361,t.utildeacute=7801,t.utildebelow=7797,t.uubengali=2442,t.uudeva=2314,t.uugujarati=2698,t.uugurmukhi=2570,t.uumatragurmukhi=2626,t.uuvowelsignbengali=2498,t.uuvowelsigndeva=2370,t.uuvowelsigngujarati=2754,t.uvowelsignbengali=2497,t.uvowelsigndeva=2369,t.uvowelsigngujarati=2753,t.v=118,t.vadeva=2357,t.vagujarati=2741,t.vagurmukhi=2613,t.vakatakana=12535,t.vav=1493,t.vavdagesh=64309,t.vavdagesh65=64309,t.vavdageshhebrew=64309,t.vavhebrew=1493,t.vavholam=64331,t.vavholamhebrew=64331,t.vavvavhebrew=1520,t.vavyodhebrew=1521,t.vcircle=9445,t.vdotbelow=7807,t.vecyrillic=1074,t.veharabic=1700,t.vehfinalarabic=64363,t.vehinitialarabic=64364,t.vehmedialarabic=64365,t.vekatakana=12537,t.venus=9792,t.verticalbar=124,t.verticallineabovecmb=781,t.verticallinebelowcmb=809,t.verticallinelowmod=716,t.verticallinemod=712,t.vewarmenian=1406,t.vhook=651,t.vikatakana=12536,t.viramabengali=2509,t.viramadeva=2381,t.viramagujarati=2765,t.visargabengali=2435,t.visargadeva=2307,t.visargagujarati=2691,t.vmonospace=65366,t.voarmenian=1400,t.voicediterationhiragana=12446,t.voicediterationkatakana=12542,t.voicedmarkkana=12443,t.voicedmarkkanahalfwidth=65438,t.vokatakana=12538,t.vparen=9393,t.vtilde=7805,t.vturned=652,t.vuhiragana=12436,t.vukatakana=12532,t.w=119,t.wacute=7811,t.waekorean=12633,t.wahiragana=12431,t.wakatakana=12527,t.wakatakanahalfwidth=65436,t.wakorean=12632,t.wasmallhiragana=12430,t.wasmallkatakana=12526,t.wattosquare=13143,t.wavedash=12316,t.wavyunderscorevertical=65076,t.wawarabic=1608,t.wawfinalarabic=65262,t.wawhamzaabovearabic=1572,t.wawhamzaabovefinalarabic=65158,t.wbsquare=13277,t.wcircle=9446,t.wcircumflex=373,t.wdieresis=7813,t.wdotaccent=7815,t.wdotbelow=7817,t.wehiragana=12433,t.weierstrass=8472,t.wekatakana=12529,t.wekorean=12638,t.weokorean=12637,t.wgrave=7809,t.whitebullet=9702,t.whitecircle=9675,t.whitecircleinverse=9689,t.whitecornerbracketleft=12302,t.whitecornerbracketleftvertical=65091,t.whitecornerbracketright=12303,t.whitecornerbracketrightvertical=65092,t.whitediamond=9671,t.whitediamondcontainingblacksmalldiamond=9672,t.whitedownpointingsmalltriangle=9663,t.whitedownpointingtriangle=9661,t.whiteleftpointingsmalltriangle=9667,t.whiteleftpointingtriangle=9665,t.whitelenticularbracketleft=12310,t.whitelenticularbracketright=12311,t.whiterightpointingsmalltriangle=9657,t.whiterightpointingtriangle=9655,t.whitesmallsquare=9643,t.whitesmilingface=9786,t.whitesquare=9633,t.whitestar=9734,t.whitetelephone=9743,t.whitetortoiseshellbracketleft=12312,t.whitetortoiseshellbracketright=12313,t.whiteuppointingsmalltriangle=9653,t.whiteuppointingtriangle=9651,t.wihiragana=12432,t.wikatakana=12528,t.wikorean=12639,t.wmonospace=65367,t.wohiragana=12434,t.wokatakana=12530,t.wokatakanahalfwidth=65382,t.won=8361,t.wonmonospace=65510,t.wowaenthai=3623,t.wparen=9394,t.wring=7832,t.wsuperior=695,t.wturned=653,t.wynn=447,t.x=120,t.xabovecmb=829,t.xbopomofo=12562,t.xcircle=9447,t.xdieresis=7821,t.xdotaccent=7819,t.xeharmenian=1389,t.xi=958,t.xmonospace=65368,t.xparen=9395,t.xsuperior=739,t.y=121,t.yaadosquare=13134,t.yabengali=2479,t.yacute=253,t.yadeva=2351,t.yaekorean=12626,t.yagujarati=2735,t.yagurmukhi=2607,t.yahiragana=12420,t.yakatakana=12516,t.yakatakanahalfwidth=65428,t.yakorean=12625,t.yamakkanthai=3662,t.yasmallhiragana=12419,t.yasmallkatakana=12515,t.yasmallkatakanahalfwidth=65388,t.yatcyrillic=1123,t.ycircle=9448,t.ycircumflex=375,t.ydieresis=255,t.ydotaccent=7823,t.ydotbelow=7925,t.yeharabic=1610,t.yehbarreearabic=1746,t.yehbarreefinalarabic=64431,t.yehfinalarabic=65266,t.yehhamzaabovearabic=1574,t.yehhamzaabovefinalarabic=65162,t.yehhamzaaboveinitialarabic=65163,t.yehhamzaabovemedialarabic=65164,t.yehinitialarabic=65267,t.yehmedialarabic=65268,t.yehmeeminitialarabic=64733,t.yehmeemisolatedarabic=64600,t.yehnoonfinalarabic=64660,t.yehthreedotsbelowarabic=1745,t.yekorean=12630,t.yen=165,t.yenmonospace=65509,t.yeokorean=12629,t.yeorinhieuhkorean=12678,t.yerahbenyomohebrew=1450,t.yerahbenyomolefthebrew=1450,t.yericyrillic=1099,t.yerudieresiscyrillic=1273,t.yesieungkorean=12673,t.yesieungpansioskorean=12675,t.yesieungsioskorean=12674,t.yetivhebrew=1434,t.ygrave=7923,t.yhook=436,t.yhookabove=7927,t.yiarmenian=1397,t.yicyrillic=1111,t.yikorean=12642,t.yinyang=9775,t.yiwnarmenian=1410,t.ymonospace=65369,t.yod=1497,t.yoddagesh=64313,t.yoddageshhebrew=64313,t.yodhebrew=1497,t.yodyodhebrew=1522,t.yodyodpatahhebrew=64287,t.yohiragana=12424,t.yoikorean=12681,t.yokatakana=12520,t.yokatakanahalfwidth=65430,t.yokorean=12635,t.yosmallhiragana=12423,t.yosmallkatakana=12519,t.yosmallkatakanahalfwidth=65390,t.yotgreek=1011,t.yoyaekorean=12680,t.yoyakorean=12679,t.yoyakthai=3618,t.yoyingthai=3597,t.yparen=9396,t.ypogegrammeni=890,t.ypogegrammenigreekcmb=837,t.yr=422,t.yring=7833,t.ysuperior=696,t.ytilde=7929,t.yturned=654,t.yuhiragana=12422,t.yuikorean=12684,t.yukatakana=12518,t.yukatakanahalfwidth=65429,t.yukorean=12640,t.yusbigcyrillic=1131,t.yusbigiotifiedcyrillic=1133,t.yuslittlecyrillic=1127,t.yuslittleiotifiedcyrillic=1129,t.yusmallhiragana=12421,t.yusmallkatakana=12517,t.yusmallkatakanahalfwidth=65389,t.yuyekorean=12683,t.yuyeokorean=12682,t.yyabengali=2527,t.yyadeva=2399,t.z=122,t.zaarmenian=1382,t.zacute=378,t.zadeva=2395,t.zagurmukhi=2651,t.zaharabic=1592,t.zahfinalarabic=65222,t.zahinitialarabic=65223,t.zahiragana=12374,t.zahmedialarabic=65224,t.zainarabic=1586,t.zainfinalarabic=65200,t.zakatakana=12470,t.zaqefgadolhebrew=1429,t.zaqefqatanhebrew=1428,t.zarqahebrew=1432,t.zayin=1494,t.zayindagesh=64310,t.zayindageshhebrew=64310,t.zayinhebrew=1494,t.zbopomofo=12567,t.zcaron=382,t.zcircle=9449,t.zcircumflex=7825,t.zcurl=657,t.zdot=380,t.zdotaccent=380,t.zdotbelow=7827,t.zecyrillic=1079,t.zedescendercyrillic=1177,t.zedieresiscyrillic=1247,t.zehiragana=12380,t.zekatakana=12476,t.zero=48,t.zeroarabic=1632,t.zerobengali=2534,t.zerodeva=2406,t.zerogujarati=2790,t.zerogurmukhi=2662,t.zerohackarabic=1632,t.zeroinferior=8320,t.zeromonospace=65296,t.zerooldstyle=63280,t.zeropersian=1776,t.zerosuperior=8304,t.zerothai=3664,t.zerowidthjoiner=65279,t.zerowidthnonjoiner=8204,t.zerowidthspace=8203,t.zeta=950,t.zhbopomofo=12563,t.zhearmenian=1386,t.zhebrevecyrillic=1218,t.zhecyrillic=1078,t.zhedescendercyrillic=1175,t.zhedieresiscyrillic=1245,t.zihiragana=12376,t.zikatakana=12472,t.zinorhebrew=1454,t.zlinebelow=7829,t.zmonospace=65370,t.zohiragana=12382,t.zokatakana=12478,t.zparen=9397,t.zretroflexhook=656,t.zstroke=438,t.zuhiragana=12378,t.zukatakana=12474,t[".notdef"]=0,t.angbracketleftbig=9001,t.angbracketleftBig=9001,t.angbracketleftbigg=9001,t.angbracketleftBigg=9001,t.angbracketrightBig=9002,t.angbracketrightbig=9002,t.angbracketrightBigg=9002,t.angbracketrightbigg=9002,t.arrowhookleft=8618,t.arrowhookright=8617,t.arrowlefttophalf=8636,t.arrowleftbothalf=8637,t.arrownortheast=8599,t.arrownorthwest=8598,t.arrowrighttophalf=8640,t.arrowrightbothalf=8641,t.arrowsoutheast=8600,t.arrowsouthwest=8601,t.backslashbig=8726,t.backslashBig=8726,t.backslashBigg=8726,t.backslashbigg=8726,t.bardbl=8214,t.bracehtipdownleft=65079,t.bracehtipdownright=65079,t.bracehtipupleft=65080,t.bracehtipupright=65080,t.braceleftBig=123,t.braceleftbig=123,t.braceleftbigg=123,t.braceleftBigg=123,t.bracerightBig=125,t.bracerightbig=125,t.bracerightbigg=125,t.bracerightBigg=125,t.bracketleftbig=91,t.bracketleftBig=91,t.bracketleftbigg=91,t.bracketleftBigg=91,t.bracketrightBig=93,t.bracketrightbig=93,t.bracketrightbigg=93,t.bracketrightBigg=93,t.ceilingleftbig=8968,t.ceilingleftBig=8968,t.ceilingleftBigg=8968,t.ceilingleftbigg=8968,t.ceilingrightbig=8969,t.ceilingrightBig=8969,t.ceilingrightbigg=8969,t.ceilingrightBigg=8969,t.circledotdisplay=8857,t.circledottext=8857,t.circlemultiplydisplay=8855,t.circlemultiplytext=8855,t.circleplusdisplay=8853,t.circleplustext=8853,t.contintegraldisplay=8750,t.contintegraltext=8750,t.coproductdisplay=8720,t.coproducttext=8720,t.floorleftBig=8970,t.floorleftbig=8970,t.floorleftbigg=8970,t.floorleftBigg=8970,t.floorrightbig=8971,t.floorrightBig=8971,t.floorrightBigg=8971,t.floorrightbigg=8971,t.hatwide=770,t.hatwider=770,t.hatwidest=770,t.intercal=7488,t.integraldisplay=8747,t.integraltext=8747,t.intersectiondisplay=8898,t.intersectiontext=8898,t.logicalanddisplay=8743,t.logicalandtext=8743,t.logicalordisplay=8744,t.logicalortext=8744,t.parenleftBig=40,t.parenleftbig=40,t.parenleftBigg=40,t.parenleftbigg=40,t.parenrightBig=41,t.parenrightbig=41,t.parenrightBigg=41,t.parenrightbigg=41,t.prime=8242,t.productdisplay=8719,t.producttext=8719,t.radicalbig=8730,t.radicalBig=8730,t.radicalBigg=8730,t.radicalbigg=8730,t.radicalbt=8730,t.radicaltp=8730,t.radicalvertex=8730,t.slashbig=47,t.slashBig=47,t.slashBigg=47,t.slashbigg=47,t.summationdisplay=8721,t.summationtext=8721,t.tildewide=732,t.tildewider=732,t.tildewidest=732,t.uniondisplay=8899,t.unionmultidisplay=8846,t.unionmultitext=8846,t.unionsqdisplay=8852,t.unionsqtext=8852,t.uniontext=8899,t.vextenddouble=8741,t.vextendsingle=8739}),Fd=It(function(t){t.space=32,t.a1=9985,t.a2=9986,t.a202=9987,t.a3=9988,t.a4=9742,t.a5=9990,t.a119=9991,t.a118=9992,t.a117=9993,t.a11=9755,t.a12=9758,t.a13=9996,t.a14=9997,t.a15=9998,t.a16=9999,t.a105=1e4,t.a17=10001,t.a18=10002,t.a19=10003,t.a20=10004,t.a21=10005,t.a22=10006,t.a23=10007,t.a24=10008,t.a25=10009,t.a26=10010,t.a27=10011,t.a28=10012,t.a6=10013,t.a7=10014,t.a8=10015,t.a9=10016,t.a10=10017,t.a29=10018,t.a30=10019,t.a31=10020,t.a32=10021,t.a33=10022,t.a34=10023,t.a35=9733,t.a36=10025,t.a37=10026,t.a38=10027,t.a39=10028,t.a40=10029,t.a41=10030,t.a42=10031,t.a43=10032,t.a44=10033,t.a45=10034,t.a46=10035,t.a47=10036,t.a48=10037,t.a49=10038,t.a50=10039,t.a51=10040,t.a52=10041,t.a53=10042,t.a54=10043,t.a55=10044,t.a56=10045,t.a57=10046,t.a58=10047,t.a59=10048,t.a60=10049,t.a61=10050,t.a62=10051,t.a63=10052,t.a64=10053,t.a65=10054,t.a66=10055,t.a67=10056,t.a68=10057,t.a69=10058,t.a70=10059,t.a71=9679,t.a72=10061,t.a73=9632,t.a74=10063,t.a203=10064,t.a75=10065,t.a204=10066,t.a76=9650,t.a77=9660,t.a78=9670,t.a79=10070,t.a81=9687,t.a82=10072,t.a83=10073,t.a84=10074,t.a97=10075,t.a98=10076,t.a99=10077,t.a100=10078,t.a101=10081,t.a102=10082,t.a103=10083,t.a104=10084,t.a106=10085,t.a107=10086,t.a108=10087,t.a112=9827,t.a111=9830,t.a110=9829,t.a109=9824,t.a120=9312,t.a121=9313,t.a122=9314,t.a123=9315,t.a124=9316,t.a125=9317,t.a126=9318,t.a127=9319,t.a128=9320,t.a129=9321,t.a130=10102,t.a131=10103,t.a132=10104,t.a133=10105,t.a134=10106,t.a135=10107,t.a136=10108,t.a137=10109,t.a138=10110,t.a139=10111,t.a140=10112,t.a141=10113,t.a142=10114,t.a143=10115,t.a144=10116,t.a145=10117,t.a146=10118,t.a147=10119,t.a148=10120,t.a149=10121,t.a150=10122,t.a151=10123,t.a152=10124,t.a153=10125,t.a154=10126,t.a155=10127,t.a156=10128,t.a157=10129,t.a158=10130,t.a159=10131,t.a160=10132,t.a161=8594,t.a163=8596,t.a164=8597,t.a196=10136,t.a165=10137,t.a192=10138,t.a166=10139,t.a167=10140,t.a168=10141,t.a169=10142,t.a170=10143,t.a171=10144,t.a172=10145,t.a173=10146,t.a162=10147,t.a174=10148,t.a175=10149,t.a176=10150,t.a177=10151,t.a178=10152,t.a179=10153,t.a193=10154,t.a180=10155,t.a199=10156,t.a181=10157,t.a200=10158,t.a182=10159,t.a201=10161,t.a183=10162,t.a184=10163,t.a197=10164,t.a185=10165,t.a194=10166,t.a198=10167,t.a186=10168,t.a195=10169,t.a187=10170,t.a188=10171,t.a189=10172,t.a190=10173,t.a191=10174,t.a89=10088,t.a90=10089,t.a93=10090,t.a94=10091,t.a91=10092,t.a92=10093,t.a205=10094,t.a85=10095,t.a206=10096,t.a86=10097,t.a87=10098,t.a88=10099,t.a95=10100,t.a96=10101,t[".notdef"]=0}),Rd=It(function(t){t[63721]=169,t[63193]=169,t[63720]=174,t[63194]=174,t[63722]=8482,t[63195]=8482,t[63718]=9168,t[63719]=9135,t[63733]=9134,t[63729]=9127,t[63730]=9128,t[63731]=9129,t[63740]=9131,t[63741]=9132,t[63742]=9133,t[63726]=9121,t[63727]=9122,t[63728]=9123,t[63737]=9124,t[63738]=9125,t[63739]=9126,t[63723]=9115,t[63724]=9116,t[63725]=9117,t[63734]=9118,t[63735]=9119,t[63736]=9120});function Hd(t){return t>=65520&&t<=65535?0:t>=62976&&t<=63743?Rd()[t]||t:t===173?45:t}function ki(t,e){let n=e[t];if(n!==void 0)return n;if(!t)return-1;if(t[0]==="u"){const s=t.length;let a;if(s===7&&t[1]==="n"&&t[2]==="i")a=t.substring(3);else if(s>=5&&s<=7)a=t.substring(1);else return-1;if(a===a.toUpperCase()&&(n=parseInt(a,16),n>=0))return n}return-1}const co=[[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]];function Ed(t,e=-1){if(e!==-1){const n=co[e];for(let s=0,a=n.length;s=n[s]&&t<=n[s+1])return e}for(let n=0,s=co.length;n=a[i]&&t<=a[i+1])return n}return-1}const Md=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),Jo=new Map;function Dd(t){const e=Jo.get(t);if(e)return e;const n=t.match(Md),s={isWhitespace:!!n?.[1],isZeroWidthDiacritic:!!n?.[2],isInvisibleFormatMark:!!n?.[3]};return Jo.set(t,s),s}function _d(){Jo.clear()}const os={FixedPitch:1,Serif:2,Symbolic:4,Nonsymbolic:32},v0=[".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 hh(t,e){if(e[t]!==void 0)return t;const n=ki(t,e);if(n!==-1){for(const s in e)if(e[s]===n)return s}return ut("Unable to recover a standard glyph name for: "+t),t}function uh(t,e,n){const s=Object.create(null);let a,i,r;const o=!!(t.flags&os.Symbolic);if(t.isInternalFont)for(r=e,i=0;i=0?a:0;else if(t.baseEncodingName)for(r=gr(t.baseEncodingName),i=0;i=0?a:0;else if(o)for(i in e)s[i]=e[i];else for(r=zs,i=0;i=0?a:0;const f=t.differences;let l;if(f)for(i in f){const c=f[i];if(a=n.indexOf(c),a===-1){l??=us();const h=hh(c,l);h!==c&&(a=n.indexOf(h))}s[i]=a>=0?a:0}return s}function ma(t){return t.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const Pd=It(t=>{t[8211]=65074,t[8212]=65073,t[8229]=65072,t[8230]=65049,t[12289]=65041,t[12290]=65042,t[12296]=65087,t[12297]=65088,t[12298]=65085,t[12299]=65086,t[12300]=65089,t[12301]=65090,t[12302]=65091,t[12303]=65092,t[12304]=65083,t[12305]=65084,t[12308]=65081,t[12309]=65082,t[12310]=65047,t[12311]=65048,t[65103]=65076,t[65281]=65045,t[65288]=65077,t[65289]=65078,t[65292]=65040,t[65306]=65043,t[65307]=65044,t[65311]=65046,t[65339]=65095,t[65341]=65096,t[65343]=65075,t[65371]=65079,t[65373]=65080}),Cl=1e3;function Nd({data:t,width:e,height:n}){if(e>Cl||n>Cl)return null;const s=1e3,a=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),i=e+1,r=new Uint8Array(i*(n+1));let o,f,l;const c=e+7&-8,h=new Uint8Array(c*n);let u=0;for(const q of t){let v=128;for(;v>0;)h[u++]=q&v?0:255,v>>=1}let d=0;for(u=0,h[u]!==0&&(r[0]=1,++d),f=1;f>2)+(h[u+1]?4:0)+(h[u-c+1]?8:0),a[q]&&(r[l+f]=a[q],++d),u++;if(h[u-c]!==h[u]&&(r[l+f]=h[u]?2:4,++d),d>s)return null}for(u=c*(n-1),l=o*i,h[u]!==0&&(r[l]=8,++d),f=1;fs)return null;const p=new Int32Array([0,i,-1,0,-i,0,0,0,1]),m=[],{a:b,b:w,c:x,d:j,e:k,f:y}=new DOMMatrix().scaleSelf(1/e,-1/n).translateSelf(0,-n);for(o=0;d&&o<=n;o++){let q=o*i;const v=q+e;for(;q>4,r[q]&=M>>2|M<<2),A=q%i,S=q/i|0,m.push(At.lineTo,b*A+x*S+k,w*A+j*S+y),r[q]||--d}while(F!==q);--o}return[C.rawFillPath,[new Float32Array(m)],new Float32Array([0,0,e,n])]}const Od=[".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"],Ld=[".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"],zd=[".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"];class Vt{#e;#t=1024;#s=!1;#a=0;#n;constructor({exactLength:e=0,minLength:n=0}){this.#s=!!e,this.#i(e||n)}#i(e){if(this.#s)this.#t=e;else for(;this.#tthis.#t&&this.#i(n),this.#e.set(e,this.#a),this.#a=n}setInt16(e){const n=this.#a+2;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt16(this.#a,e),this.#a=n}setSafeInt16(e){const n=this.#a+2;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt16(this.#a,Tt(e,-32768,32767)),this.#a=n}setInt32(e){const n=this.#a+4;!this.#s&&n>this.#t&&this.#i(n),this.#n.setInt32(this.#a,e),this.#a=n}}const Ud=10;function h0(t){return t>32767&&t<=65535}function ho(t,e=!1){return ft.normalizeRect(t.map((n,s)=>(!e||s<2)&&h0(n)?n-65536:n))}const u0=[".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"],Vr=391,Qo=.039625,dh=7,mh=1,ph=.06,ti=[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},{id:"return",min: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},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],Gd=[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(t,e){t[e-2]=t[e-2]+t[e-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(t,e){t[e-2]=t[e-2]-t[e-1]}},{id:"div",min:2,stackDelta:-1,stackFn(t,e){t[e-2]=t[e-2]/t[e-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(t,e){t[e-1]=-t[e-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(t,e){t[e-2]=t[e-2]*t[e-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}];class Af{constructor(e,n,s){this.bytes=e.getBytes(),this.properties=n,this.seacAnalysisEnabled=!!s}parse(){const e=this.properties,n=new gh(this.bytes.length);this.cff=n;const s=this.parseHeader(),a=this.parseIndex(s.endPos),i=this.parseIndex(a.endPos),r=this.parseIndex(i.endPos),o=this.parseIndex(r.endPos),f=this.parseDict(i.obj.get(0)),l=this.createDict(br,f,n.strings);n.header=s.obj,n.names=this.parseNameIndex(a.obj),n.strings=this.parseStringIndex(r.obj),n.topDict=l,n.globalSubrIndex=o.obj,this.parsePrivateDict(n.topDict),n.isCIDFont=l.hasName("ROS");const c=l.getByName("CharStrings"),h=this.parseIndex(c).obj;n.charStringCount=h.count;const u=l.getByName("FontMatrix");u&&(e.fontMatrix=u);let d=l.getByName("FontBBox");const p=e.bbox?.some(k=>k!==0)?ho(e.bbox):null,m=d?.slice(0,2).some(h0),b=d?.some(h0);if(d?.every(k=>k===0)&&p)d=p,l.setByName("FontBBox",d);else if(b){const k=ho(d),y=p&&e.bbox.some(q=>q<0)&&!e.bbox.some(h0)&&za(k,p);(y||m)&&(d=y?k:ho(d,!0),l.setByName("FontBBox",d))}d?.some(k=>k!==0)&&(e.ascent=Math.max(d[3],d[1]),e.descent=Math.min(d[1],d[3]),e.ascentScaled=!0);let w,x;if(n.isCIDFont){const k=this.parseIndex(l.getByName("FDArray")).obj;for(let y=0,q=k.count;y=n)throw new Y("Invalid CFF header");s!==0&&(ut("cff data is shifted"),e=e.subarray(s),this.bytes=e);const a=e[0],i=e[1],r=e[2],o=e[3];return{obj:new bh(a,i,r,o),endPos:r}}parseDict(e){const n=new DataView(e.buffer,e.byteOffset,e.bytesLength);let s=0;function a(){let l=e[s++];return l===30?i():l===28?(l=n.getInt16(s),s+=2,l):l===29?(l=n.getInt32(s),s+=4,l):l>=32&&l<=246?l-139:l>=247&&l<=250?(l-247)*256+e[s++]+108:l>=251&&l<=254?-((l-251)*256)-e[s++]-108:(H(`CFFParser.parseDict: "${l}" is a reserved command.`),NaN)}function i(){let l="";const h=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],u=e.length;for(;s>4,m=d&15;if(p===15||(l+=h[p],m===15))break;l+=h[m]}return parseFloat(l)}let r=[];const o=[];s=0;const f=e.length;for(;sUd)return!1;const i=new DataView(n.buffer,n.byteOffset,n.bytesLength);let r=e.stackSize;const o=e.stack;let f=n.length;for(let l=0;l=4&&(r-=4,this.seacAnalysisEnabled))return e.seac=o.slice(r,r+4),!1;h=ti[c]}else if(c>=32&&c<=246)o[r]=c-139,r++;else if(c>=247&&c<=254)o[r]=c<251?(c-247<<8)+n[l]+108:-(c-251<<8)-n[l]-108,l++,r++;else if(c===255)o[r]=i.getInt32(l)/65536,l+=4,r++;else if(c===19||c===20){if(e.hints+=r>>1,e.hints===0){n.copyWithin(l-1,l,-1),l-=1,f-=1;continue}l+=e.hints+7>>3,r%=2,h=ti[c]}else if(c===10||c===29){const u=c===10?s:a;if(!u)return h=ti[c],H("Missing subrsIndex for "+h.id),!1;let d=32768;u.count<1240?d=107:u.count<33900&&(d=1131);const p=o[--r]+d;if(p<0||p>=u.count||isNaN(p))return h=ti[c],H("Out of bounds subrIndex for "+h.id),!1;if(e.stackSize=r,e.callDepth++,!this.parseCharString(e,u.get(p),s,a))return!1;e.callDepth--,r=e.stackSize;continue}else{if(c===11)return e.stackSize=r,!0;if(c===0&&l===n.length)n[l-1]=14,h=ti[14];else if(c===9){n.copyWithin(l-1,l,-1),l-=1,f-=1;continue}else h=ti[c]}if(h){if(h.stem&&(e.hints+=r>>1,c===3||c===23?e.hasVStems=!0:e.hasVStems&&(c===1||c===18)&&(H("CFF stem hints are in wrong order"),n[l-1]=c===1?3:23)),r=2&&h.stem?r%=2:r>1&&H("Found too many parameters for stack-clearing command"),r>0&&(e.width=o[r-1])),"stackDelta"in h?("stackFn"in h&&h.stackFn(o,r),r+=h.stackDelta):(h.stackClearing||h.resetStack)&&(r=0)}}return f=i.length&&(H("Invalid fd index for glyph index."),d=!1),d&&(m=i[b].privateDict,p=m.subrsIndex)}else n&&(p=n);if(d&&=this.parseCharString(u,h,p,s),u.width!==null){const b=m.getByName("nominalWidthX");f[c]=b+u.width}else{const b=m.getByName("defaultWidthX");f[c]=b}u.seac!==null&&(o[c]=u.seac),d||e.set(c,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:f}}emptyPrivateDictionary(e){const n=this.createDict(wr,[],e.strings);e.setByKey(18,[0,0]),e.privateDict=n}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const n=e.getByName("Private");if(!Array.isArray(n)||n.length!==2){e.removeByName("Private");return}const s=n[0],a=n[1];if(s===0||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}if(a+s>this.bytes.length)throw new Y("CFF Private DICT extends past end of font");const i=a+s,r=this.bytes.subarray(a,i),o=this.parseDict(r),f=this.createDict(wr,o,e.strings);e.privateDict=f;const l=f.getByName("BlueScale"),c=f.getByName("BlueShift"),h=f.getByName("BlueFuzz"),u=f.getByName("ExpansionFactor");if(l===0&&c===0&&h===0&&u===0&&(f.setByName("BlueScale",Qo),f.setByName("BlueShift",dh),f.setByName("BlueFuzz",mh)),u===0&&f.setByName("ExpansionFactor",ph),l>0){let b=0;for(const w of[f.getByName("BlueValues"),f.getByName("OtherBlues")])if(w)for(let x=1;xb&&(b=w[x]);if(b>0){const x=.5/b,j=x<=Qo?Math.ceil(x*1e5)/1e5:-1/0,k=Math.floor(1e5/b)/1e5,y=Tt(l,j,k);y!==l&&f.setByName("BlueScale",y)}}if(!f.getByName("Subrs"))return;const d=f.getByName("Subrs"),p=a+d;if(d===0||p>=this.bytes.length){this.emptyPrivateDictionary(e);return}const m=this.parseIndex(p);f.subrsIndex=m.obj}parseCharsets(e,n,s,a){if(e===0)return new Qi(!0,uo.ISO_ADOBE,Od);if(e===1)return new Qi(!0,uo.EXPERT,Ld);if(e===2)return new Qi(!0,uo.EXPERT_SUBSET,zd);const{bytes:i}=this,r=i[e++],o=[a?0:".notdef"];let f,l,c;switch(n-=1,r){case 0:for(c=0;c=65535){H("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){return e<0||e>=this.charStrings.count?!1:this.charStrings.get(e).length>0}}class bh{constructor(e,n,s,a){this.major=e,this.minor=n,this.hdrSize=s,this.offSize=a}}class If{strings=[];get(e){return e>=0&&e<=Vr-1?u0[e]:e-Vr<=this.strings.length?this.strings[e-Vr]:u0[0]}getSID(e){let n=u0.indexOf(e);return n!==-1?n:(n=this.strings.indexOf(e),n!==-1?n+Vr:-1)}add(e){this.strings.push(e)}get count(){return this.strings.length}}class ia{objects=[];length=0;add(e){this.length+=e.length,this.objects.push(e)}set(e,n){this.length+=n.length-this.objects[e].length,this.objects[e]=n}get(e){return this.objects[e]}get count(){return this.objects.length}}class wh{constructor(e,n){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=n,this.values=Object.create(null)}setByKey(e,n){if(!(e in this.keyToNameMap))return!1;if(n.length===0)return!0;for(const a of n)if(isNaN(a))return H(`Invalid CFFDict value: "${n}" for key "${e}".`),!0;const s=this.types[e];return(s==="num"||s==="sid"||s==="offset")&&(n=n[0]),this.values[e]=n,!0}setByName(e,n){if(!(e in this.nameToKeyMap))throw new Y(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=n}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new Y(`Invalid dictionary name ${e}"`);const n=this.nameToKeyMap[e];return n in this.values?this.values[n]:this.defaults[n]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const n={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const s of e){const a=Array.isArray(s[0])?(s[0][0]<<8)+s[0][1]:s[0];n.keyToNameMap[a]=s[1],n.nameToKeyMap[s[1]]=a,n.types[a]=s[2],n.defaults[a]=s[3],n.opcodes[a]=Array.isArray(s[0])?s[0]:[s[0]],n.order.push(a)}return n}}const Wd=[[[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 br extends wh{static get tables(){return ue(this,"tables",this.createTables(Wd))}constructor(e){super(br.tables,e),this.privateDict=null}}const Kd=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",Qo],[[12,10],"BlueShift","num",dh],[[12,11],"BlueFuzz","num",mh],[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",ph],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class wr extends wh{static get tables(){return ue(this,"tables",this.createTables(Kd))}constructor(e){super(wr.tables,e),this.subrsIndex=null}}const uo={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class Qi{constructor(e,n,s){this.predefined=e,this.format=n,this.charset=s}}class Vd{constructor(e,n,s,a){this.predefined=e,this.format=n,this.encoding=s,this.raw=a}}class $d{constructor(e,n){this.format=e,this.fdSelect=n}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class Tl{offsets=Object.create(null);isTracking(e){return e in this.offsets}track(e,n){if(e in this.offsets)throw new Y(`Already tracking location of ${e}`);this.offsets[e]=n}offset(e){for(const n in this.offsets)this.offsets[n]+=e}setEntryLocation(e,n,s){if(!(e in this.offsets))throw new Y(`Not tracking location of ${e}`);const a=s.data,i=this.offsets[e],r=5;for(let o=0,f=n.length;o>24&255,a[h]=p>>16&255,a[u]=p>>8&255,a[d]=p&255}}}class Fr{constructor(e){this.cff=e}compile(){const e=this.cff,n=new Vt({minLength:e.rawFileLength}),s=this.compileHeader(e.header);n.setArray(s);const a=this.compileNameIndex(e.names);if(n.setArray(a),e.isCIDFont&&e.topDict.hasName("FontMatrix")){const u=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const d of e.fdArray){let p=u.slice(0);d.hasName("FontMatrix")&&(p=ft.transform(p,d.getByName("FontMatrix"))),d.setByName("FontMatrix",p)}}e.topDict.getByName("XUID")?.length>16&&e.topDict.removeByName("XUID"),e.topDict.setByName("charset",0);let r=this.compileTopDicts([e.topDict],n.length,e.isCIDFont);n.setArray(r.output);const o=r.trackers[0],f=this.compileStringIndex(e.strings.strings);n.setArray(f);const l=this.compileIndex(e.globalSubrIndex);if(n.setArray(l),e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],n);else{const u=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[n.length],n),n.setArray(u)}const c=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[n.length],n),n.setArray(c);const h=this.compileCharStrings(e.charStrings);if(o.setEntryLocation("CharStrings",[n.length],n),n.setArray(h),e.isCIDFont){o.setEntryLocation("FDSelect",[n.length],n);const u=this.compileFDSelect(e.fdSelect);n.setArray(u),r=this.compileTopDicts(e.fdArray,n.length,!0),o.setEntryLocation("FDArray",[n.length],n),n.setArray(r.output);const d=r.trackers;this.compilePrivateDicts(e.fdArray,d,n)}return this.compilePrivateDicts([e.topDict],[o],n),n.setArray([0]),n.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return ue(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let n=e.toString();const s=Fr.EncodeFloatRegExp.exec(n);if(s){const f=parseFloat("1e"+((s[2]?+s[2]:0)+s[1].length));n=(Math.round(e*f)/f).toString()}let a="",i,r;for(i=0,r=n.length;i=-107&&e<=107?n=[e+139]:e>=108&&e<=1131?(e-=108,n=[(e>>8)+247,e&255]):e>=-1131&&e<=-108?(e=-e-108,n=[(e>>8)+251,e&255]):e>=-32768&&e<=32767?n=[28,e>>8&255,e&255]:n=[29,e>>24&255,e>>16&255,e>>8&255,e&255],n}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const n=new ia;for(const s of e){const a=Math.min(s.length,127);let i=new Array(a);for(let r=0;r"~"||o==="["||o==="]"||o==="("||o===")"||o==="{"||o==="}"||o==="<"||o===">"||o==="/"||o==="%")&&(o="_"),i[r]=o}i=i.join(""),i===""&&(i="Bad_Font_Name"),n.add(Bt(i))}return this.compileIndex(n)}compileTopDicts(e,n,s){const a=[];let i=new ia;for(const r of e){s&&(r.removeByName("CIDFontVersion"),r.removeByName("CIDFontRevision"),r.removeByName("CIDFontType"),r.removeByName("CIDCount"),r.removeByName("UIDBase"));const o=new Tl,f=this.compileDict(r,o);a.push(o),i.add(f),o.offset(n)}return i=this.compileIndex(i,a),{trackers:a,output:i}}compilePrivateDicts(e,n,s){for(let a=0,i=e.length;a>8&255,o&255])}else{const o=1+r*2;i=new Uint8Array(o);let f=0;const l=e.charset.length;let c=!1;for(let h=1;h>8&255,i[h+1]=u&255}}return i}compileEncoding(e){return e.raw}compileFDSelect(e){const n=e.format;let s,a;switch(n){case 0:s=new Uint8Array(1+e.fdSelect.length),s[0]=n,s.set(e.fdSelect,1);break;case 3:const i=0;let r=e.fdSelect[0];const o=[n,0,0,i>>8&255,i&255,r];for(a=1;a>8&255,a&255,l),r=l)}const f=(o.length-3)/3;o[1]=f>>8&255,o[2]=f&255,o.push(a>>8&255,a&255),s=new Uint8Array(o);break}return s}compileIndex(e,n=[]){const s=e.objects,a=s.length;if(a===0)return new Uint8Array(2);let i=1,r;for(r=0;r>8&255,f[l++]=a&255,f[l++]=o;let c=1;for(r=0;r>8&255,f[l++]=c&255):o===3?(f[l++]=c>>16&255,f[l++]=c>>8&255,f[l++]=c&255):(f[l++]=c>>>24&255,f[l++]=c>>16&255,f[l++]=c>>8&255,f[l++]=c&255),s[r]&&(c+=s[r].length);for(r=0;re.getSize()+3&-4))}write(){const e=this.getSize(),n=new DataView(new ArrayBuffer(e)),s=e>131070,a=s?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));s?i.setUint32(0,0):i.setUint16(0,0);let r=0,o=0;for(const f of this.glyphs)r+=f.write(r,n),r=r+3&-4,o+=a,s?i.setUint32(o,r):i.setUint16(o,r>>1);return{isLocationLong:s,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(n.buffer)}}scale(e){for(let n=0,s=this.glyphs.length;nn.getSize()));return this.header.getSize()+e}write(e,n){if(!this.header)return 0;const s=e;if(e+=this.header.write(e,n),this.simple)e+=this.simple.write(e,n);else for(const a of this.composites)e+=a.write(e,n);return e-s}scale(e){if(!this.header)return;const n=(this.header.xMin+this.header.xMax)/2;if(this.header.scale(n,e),this.simple)this.simple.scale(n,e);else for(const s of this.composites)s.scale(n,e)}}class Tf{constructor({numberOfContours:e,xMin:n,yMin:s,xMax:a,yMax:i}){this.numberOfContours=e,this.xMin=n,this.yMin=s,this.xMax=a,this.yMax=i}static parse(e,n){return[gi,new Tf({numberOfContours:n.getInt16(e),xMin:n.getInt16(e+2),yMin:n.getInt16(e+4),xMax:n.getInt16(e+6),yMax:n.getInt16(e+8)})]}getSize(){return gi}write(e,n){return n.setInt16(e,this.numberOfContours),n.setInt16(e+2,this.xMin),n.setInt16(e+4,this.yMin),n.setInt16(e+6,this.xMax),n.setInt16(e+8,this.yMax),gi}scale(e,n){this.xMin=Math.round(e+(this.xMin-e)*n),this.xMax=Math.round(e+(this.xMax-e)*n)}}class sm{constructor({flags:e,xCoordinates:n,yCoordinates:s}){this.xCoordinates=n,this.yCoordinates=s,this.flags=e}}class Bf{constructor({contours:e,instructions:n}){this.contours=e,this.instructions=n}static parse(e,n,s){const a=[];for(let b=0;b255?e+=2:l>0&&(e+=1),n=o,l=Math.abs(f-s),l>255?e+=2:l>0&&(e+=1),s=f}}return e}write(e,n){const s=e,a=[],i=[],r=[];let o=0,f=0;for(const l of this.contours){for(let c=0,h=l.xCoordinates.length;c=0?$r|Ei:$r,a.push(b)):a.push(p)}o=d;const m=l.yCoordinates[c];if(p=m-f,p===0)u|=Mi,i.push(0);else{const b=Math.abs(p);b<=255?(u|=p>=0?Xr|Mi:Xr,i.push(b)):i.push(p)}f=m,r.push(u)}n.setUint16(e,a.length-1),e+=2}n.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(n.buffer,0,n.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length);for(const l of r)n.setUint8(e++,l);for(let l=0,c=a.length;l=-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),e}write(e,n){const s=e;return this.flags&Yr?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=oi):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=oi),n.setUint16(e,this.flags),n.setUint16(e+2,this.glyphIndex),e+=4,this.flags&oi?(this.flags&Yr?(n.setInt16(e,this.argument1),n.setInt16(e+2,this.argument2)):(n.setUint16(e,this.argument1),n.setUint16(e+2,this.argument2)),e+=4):(n.setUint8(e,this.argument1),n.setUint8(e+1,this.argument2),e+=2),this.flags&m0&&(n.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(n.buffer,0,n.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length)),e-s}scale(e,n){}}function am(t,e,n){const s=new DataView(t.buffer,t.byteOffset,t.byteLength),a=new Array(n);for(let h=0;h=0)continue;const p=[];let m=u+gi;for(;m+4<=d;){const b=s.getUint16(m),w=s.getUint16(m+2);let x=4+(b&oi?4:2);if(b&xh?x+=2:b&jh?x+=4:b&kh&&(x+=8),p.push({gid:w,offset:m,size:x,flags:b}),m+=x,!(b&d0))break}p.length&&(a[h]=p)}const i=0,r=1,o=2,f=new Uint8Array(n),l=new Map;for(let h=0;h0;){const d=u.at(-1),p=a[d.node];if(!p||d.idx>=p.length){f[d.node]=o,u.pop();continue}const m=d.idx++,b=p[m].gid;if(!(b>=n||f[b]===o)){if(f[b]===i){f[b]=r,u.push({node:b,idx:0});continue}l.getOrInsertComputed(d.node,Nc).add(m)}}}const c=new Set;for(const[h,u]of l){const d=a[h],p=[];for(let x=0;x=this.firstChar&&e<=this.lastChar?e:-1}amend(e){st("Should not call amend()")}}class po{constructor(e,n){this.properties=n;const s=new Af(e,n,!0);this.cff=s.parse(),this.cff.duplicateFirstGlyph();const a=new Fr(this.cff);this.seacs=this.cff.seacs;try{this.data=a.compile()}catch(i){H(`Failed to compile font "${n.loadedName}": "${i}".`),e.reset(),this.data=e.getBytes()}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,n=this.properties,{cidToGidMap:s,cMap:a}=n,i=e.charset.charset;let r,o;if(n.composite){let l;if(s?.length>0){l=Object.create(null);for(let h=0,u=s.length;h=0){const f=s[o];f&&(i[r]=f)}}i.length>0&&(this.properties.builtInEncoding=i)}}class Hl{static strings=["fontFamily","fontWeight","italicAngle"]}class El{static strings=["css","loadedName","baseFontName","src"]}class En{static bools=["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"];static numbers=["ascent","defaultWidth","descent"];static strings=["fallbackName","loadedName","mimetype","name"];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6}class Xs{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16}class Rf{static get decoder(){return ue(this,"decoder",new TextDecoder)}static get encoder(){return ue(this,"encoder",new TextEncoder)}}function im(t){const{encoder:e}=Rf,n={};let s=0;for(const f of Hl.strings){const l=e.encode(t[f]);n[f]=l,s+=4+l.length}const a=new ArrayBuffer(s),i=new Uint8Array(a),r=new DataView(a);let o=0;for(const f of Hl.strings){const l=n[f],c=l.length;r.setUint32(o,c),i.set(l,o+4),o+=4+c}return Ct(o===a.byteLength,"compileCssFontInfo: Buffer overflow"),a}function rm(t){const{encoder:e}=Rf,n={};let s=0;for(const h of El.strings){const u=e.encode(t[h]);n[h]=u,s+=4+u.length}s+=4;let a,i,r=1+s;t.style&&(a=e.encode(t.style.style),i=e.encode(t.style.weight),r+=4+a.length+4+i.length);const o=new ArrayBuffer(r),f=new Uint8Array(o),l=new DataView(o);let c=0;l.setUint8(c++,t.guessFallback?1:0),l.setUint32(c,0),c+=4,s=0;for(const h of El.strings){const u=n[h],d=u.length;s+=4+d,l.setUint32(c,d),f.set(u,c+4),c+=4+d}return l.setUint32(c-s-4,s),t.style&&(l.setUint32(c,a.length),f.set(a,c+4),c+=4+a.length,l.setUint32(c,i.length),f.set(i,c+4),c+=4+i.length),Ct(c<=o.byteLength,"compileSystemFontInfo: Buffer overflow"),o.transferToFixedLength(c)}function om(t){const e=t.systemFontInfo?rm(t.systemFontInfo):null,n=t.cssFontInfo?im(t.cssFontInfo):null,{encoder:s}=Rf,a={};let i=0;for(const p of En.strings)a[p]=s.encode(t[p]),i+=4+a[p].length;const r=En.OFFSET_STRINGS+4+i+4+(e?.byteLength??0)+4+(n?.byteLength??0)+4+(t.data?.length??0),o=new ArrayBuffer(r),f=new Uint8Array(o),l=new DataView(o);let c=0;const h=En.bools.length;let u=0,d=0;for(let p=0;p=33900?32768:e<1240?107:1131}function cm(t,e,n){const s=new DataView(t.buffer,t.byteOffset,t.byteLength),a=s.getUint16(e+2)===1?s.getUint32(e+8):s.getUint32(e+16),i=s.getUint16(e+a);let r,o,f;if(i===4){const l=s.getUint16(e+a+6)>>1;for(o=e+a+14,r=[],f=0;ff.getUint32(l)):(a=2,i=(f,l)=>2*f.getUint16(l));const r=[];let o=i(s,0);for(let f=a;f>1;n0;)j.push({flags:c})}for(m=0;m>1,b=!0;break;case 3:c+=o.length>>1,b=!0;break;case 4:l+=o.pop(),a(f,l),b=!0;break;case 5:for(;o.length>0;)f+=o.shift(),l+=o.shift(),i(f,l);break;case 6:for(;o.length>0&&(f+=o.shift(),i(f,l),o.length!==0);)l+=o.shift(),i(f,l);break;case 7:for(;o.length>0&&(l+=o.shift(),i(f,l),o.length!==0);)f+=o.shift(),i(f,l);break;case 8:for(;o.length>0;)x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);break;case 10:if(S=o.pop(),F=null,n.isCFFCIDFont){const M=n.fdSelect.getFDIndex(s);if(M>=0&&MMath.abs(l-N)?f+=o.shift():l+=o.shift(),r(x,k,j,y,f,l);break;default:throw new Y(`unknown operator: 12 ${w}`)}break;case 14:if(o.length>=4){const M=o.pop(),N=o.pop();l=o.pop(),f=o.pop(),e.save(),e.translate(f,l);let D=nf(n.cmap,String.fromCharCode(n.glyphNameMap[zs[M]]));sf(n.glyphs[D.glyphId],e,n,D.glyphId),e.restore(),D=nf(n.cmap,String.fromCharCode(n.glyphNameMap[zs[N]])),sf(n.glyphs[D.glyphId],e,n,D.glyphId)}return;case 18:c+=o.length>>1,b=!0;break;case 19:c+=o.length>>1,m+=c+7>>3,b=!0;break;case 20:c+=o.length>>1,m+=c+7>>3,b=!0;break;case 21:l+=o.pop(),f+=o.pop(),a(f,l),b=!0;break;case 22:f+=o.pop(),a(f,l),b=!0;break;case 23:c+=o.length>>1,b=!0;break;case 24:for(;o.length>2;)x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);f+=o.shift(),l+=o.shift(),i(f,l);break;case 25:for(;o.length>6;)f+=o.shift(),l+=o.shift(),i(f,l);x=f+o.shift(),k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+o.shift(),r(x,k,j,y,f,l);break;case 26:for(o.length%2&&(f+=o.shift());o.length>0;)x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j,l=y+o.shift(),r(x,k,j,y,f,l);break;case 27:for(o.length%2&&(l+=o.shift());o.length>0;)x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y,r(x,k,j,y,f,l);break;case 28:o.push(p.getInt16(m)),m+=2;break;case 29:S=o.pop()+n.gsubrsBias,F=n.gsubrs[S],F&&u(F);break;case 30:for(;o.length>0&&(x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+(o.length===1?o.shift():0),r(x,k,j,y,f,l),o.length!==0);)x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),l=y+o.shift(),f=j+(o.length===1?o.shift():0),r(x,k,j,y,f,l);break;case 31:for(;o.length>0&&(x=f+o.shift(),k=l,j=x+o.shift(),y=k+o.shift(),l=y+o.shift(),f=j+(o.length===1?o.shift():0),r(x,k,j,y,f,l),o.length!==0);)x=f,k=l+o.shift(),j=x+o.shift(),y=k+o.shift(),f=j+o.shift(),l=y+(o.length===1?o.shift():0),r(x,k,j,y,f,l);break;default:if(w<32)throw new Y(`unknown operator: ${w}`);w<247?o.push(w-139):w<251?o.push((w-247)*256+d[m++]+108):w<255?o.push(-(w-251)*256-d[m++]-108):(o.push(p.getInt32(m)/65536),m+=4);break}b&&(o.length=0)}}u(t)}class dm{cmds=[];transformStack=[];currentTransform=[1,0,0,1,0,0];add(e,n){if(n){const{currentTransform:s}=this;for(let a=0,i=n.length;a{try{return this.compileGlyph(this.glyphs[s],s)}catch(i){return i}});if(this.#e.add(n),a instanceof Error)throw a;return lm(a)}compileGlyph(e,n){if(!e?.length||e[0]===14)return G0.NOOP;let s=this.fontMatrix;if(this.isCFFCIDFont){const i=this.fdSelect.getFDIndex(n);i>=0&&is;)s<<=1,a++;const i=s*n;return{range:i,entry:a,rangeShift:n*e-i}}toArray(){let e=this.sfnt;const n=this.#e,s=[...n.keys()].sort(),a=s.length;let i=Ml+a*Dl;const r=[i];for(let c=0;c>>0;i+=u,r.push(i)}const o=new Uint8Array(i),f=new DataView(o.buffer);for(let c=0;c>>0}f.setInt32(i+4,u),f.setInt32(i+8,r[c]),f.setInt32(i+12,n.get(h).length),i+=Dl}return this.#e.clear(),o}addTable(e,n){if(this.#e.has(e))throw new Error(`Table ${e} already exists`);this.#e.set(e,n)}}const yn={vmoveto:[4],rlineto:[5],hlineto:[6],vlineto:[7],rrcurveto:[8],flex:[12,35],endchar:[14],rmoveto:[21],hmoveto:[22],vhcurveto:[30],hvcurveto:[31]};class _l{width=0;lsb=0;flexing=!1;output=[];stack=[];convert(e,n,s){const a=e.length;let i=!1,r,o,f;for(let l=0;la)return!0;const i=a-e;for(let r=i;r>8&255,o&255):(o=65536*o|0,this.output.push(255,o>>24&255,o>>16&255,o>>8&255,o&255))}return this.output.push(...n),s?this.stack.splice(i,e):this.stack.length=0,!1}}const Pl=55665,xm=4330;function rs(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function Nl(t,e,n){if(n>=t.length)return new Uint8Array(0);const s=52845,a=22719;let i=e|0,r,o;for(r=0;r>8,i=(c+i)*s+a&65535}return l}function jm(t,e,n){let i=e|0;const r=t.length,o=r>>>1,f=new Uint8Array(o);let l,c;for(l=0,c=0;l>8,i=(d+i)*52845+22719&65535}}return f.slice(n,c)}function Ol(t){return t===47||t===91||t===93||t===123||t===125||t===40||t===41}class go{constructor(e,n,s){if(n){const a=e.getBytes(),i=!((rs(a[0])||es(a[0]))&&rs(a[1])&&rs(a[2])&&rs(a[3])&&rs(a[4])&&rs(a[5])&&rs(a[6])&&rs(a[7]));e=new yt(i?Nl(a,Pl,4):jm(a,Pl,4))}this.seacAnalysisEnabled=!!s,this.stream=e,this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const n=this.getToken();if(n===null||n==="]"||n==="}")break;e.push(parseFloat(n||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return parseInt(e||0,10)|0}readBoolean(){return this.getToken()==="true"?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){return this.stream.skip(-2),this.currentChar=this.stream.getByte()}getToken(){let e=!1,n=this.currentChar;for(;;){if(n===-1)return null;if(e)(n===10||n===13)&&(e=!1);else if(n===37)e=!0;else if(!es(n))break;n=this.nextChar()}if(Ol(n))return this.nextChar(),String.fromCharCode(n);let s="";do s+=String.fromCharCode(n),n=this.nextChar();while(n>=0&&!es(n)&&!Ol(n));return s}readCharStrings(e,n){return n===-1?e:Nl(e,xm,n)}extractFontProgram(e){const n=this.stream,s=[],a=[],i=new Map([["lenIV",4]]),r={subrs:[],charstrings:[],properties:{privateData:i}};let o,f,l,c=!1,h=!1;for(;(o=this.getToken())!==null;)if(o==="/")switch(o=this.getToken(),o){case"CharStrings":if(h)break;for(h=!0,this.getToken(),this.getToken(),this.getToken(),this.getToken();o=this.getToken(),!(o===null||o==="end");){if(o!=="/")continue;const u=this.getToken();f=this.readInt(),this.getToken(),l=f>0?n.getBytes(f):new Uint8Array(0);const d=this.readCharStrings(l,i.get("lenIV"));this.nextChar(),o=this.getToken(),o==="noaccess"?this.getToken():o==="/"&&this.prevChar(),a.push({glyph:u,encoded:d})}break;case"Subrs":if(c)break;for(c=!0,this.readInt(),this.getToken();this.getToken()==="dup";){const u=this.readInt();f=this.readInt(),this.getToken(),l=f>0?n.getBytes(f):new Uint8Array(0);const d=this.readCharStrings(l,i.get("lenIV"));this.nextChar(),o=this.getToken(),o==="noaccess"&&this.getToken(),s[u]=d}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();break;case"StemSnapH":case"StemSnapV":i.set(o,this.readNumberArray());break;case"StdHW":case"StdVW":i.set(o,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.set(o,this.readNumber());break;case"ExpansionFactor":i.set(o,this.readNumber()||.06);break;case"ForceBold":i.set(o,this.readBoolean());break}for(const{encoded:u,glyph:d}of a){const p=new _l,b=p.convert(u,s,this.seacAnalysisEnabled)?[14]:p.output,w={glyphName:d,charstring:b,width:p.width,lsb:p.lsb,seac:p.seac};if(d===".notdef"?r.charstrings.unshift(w):r.charstrings.push(w),e.builtInEncoding){const x=e.builtInEncoding.indexOf(d);x>-1&&e.widths[x]===void 0&&x>=e.firstChar&&x<=e.lastChar&&(e.widths[x]=p.width)}}return r}extractCidKeyedFontProgram(e){const n=this.stream,s=new Map([["lenIV",4]]),a={subrs:[],charstrings:[],properties:{privateData:s}};let i=0,r=-1,o=1,f=0,l=-1,c=0,h=0,u=0,d=!1,p=!1;const m=[];function b(F){m.push(F),m.length>4&&m.shift()}let w;for(;(w=this.getToken())!==null;){if(w==="StartData"){const F=m.at(-3),M=m.at(-1);if(m.at(-4)!=="("||m.at(-2)!==")"||F!=="Binary"&&F!=="Hex"||!/^\d+$/.test(M)||(u=parseInt(M,10),u<=0))return null;d=F==="Hex",p=!0;break}if(b(w),w==="/")switch(w=this.getToken(),b(w),w){case"FontMatrix":e.fontMatrix=this.readNumberArray();break;case"FontBBox":const F=this.readNumberArray();e.ascent=Math.max(F[3],F[1]),e.descent=Math.min(F[1],F[3]),e.ascentScaled=!0;break;case"CIDCount":i=this.readInt();break;case"CIDMapOffset":r=this.readInt();break;case"FDBytes":o=this.readInt();break;case"GDBytes":f=this.readInt();break;case"SubrMapOffset":l=this.readInt();break;case"SDBytes":c=this.readInt();break;case"SubrCount":h=this.readInt();break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();break;case"StemSnapH":case"StemSnapV":s.set(w,this.readNumberArray());break;case"StdHW":case"StdVW":s.set(w,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":s.set(w,this.readNumber());break;case"ExpansionFactor":s.set(w,this.readNumber()||.06);break;case"ForceBold":s.set(w,this.readBoolean());break}}if(!p||i<=0||r<0||o<0||o>4||f<1||f>4)return null;const x=n.end-n.pos;if(u>x){if(!d)u=x;else if(u>2*x)return null}let j=n.getBytes(d?void 0:u);if(d){const F=new Uint8Array(u);let M=-1,N=0;for(let D=0,$=j.length;D<$&&N>>0}if(r+(i+1)*y>j.length||h>0&&(l<0||c<1||c>4||l+(h+1)*c>j.length))return null;if(o>0){for(let F=0;F0){const F=new Array(h+1);for(let M=0;M<=h;M++)F[M]=v(l+M*c,c);for(let M=0;Mj.length||DS&&M<=j.length){const D=this.readCharStrings(j.subarray(S,M),k),$=new _l,K=$.convert(D,q,this.seacAnalysisEnabled);A.push({glyphName:N,charstring:K?[14]:$.output,width:$.width,lsb:$.lsb,seac:$.seac})}else{const D=A[0];A.push({glyphName:N,charstring:D?.charstring.slice()||[139,14],width:D?.width||0,lsb:D?.lsb||0})}S=M}return a.subrs=q,a.charstrings=A,a}extractFontHeader(e){let n;for(;(n=this.getToken())!==null;)if(n==="/")switch(n=this.getToken(),n){case"FontMatrix":const s=this.readNumberArray();e.fontMatrix=s;break;case"Encoding":const a=this.getToken();let i;if(!/^\d+$/.test(a))i=gr(a);else{i=[];const o=parseInt(a,10)|0;this.getToken();for(let f=0;f=a){for(r+=f;r=0&&(a[o]=i)}return uh(e,a,s)}hasGlyphId(e){return e<0||e>=this.numGlyphs?!1:e===0?!0:this.charstrings[e-1].charstring.length>0}getSeacs(e){const n=[];for(let s=0,a=e.length;s0;x--)w[x]-=w[x-1];u.setByName(b,w)}r.topDict.privateDict=u;const p=new ia;for(const b of a)p.add(b);return u.subrsIndex=p,new Fr(r).compile()}}const Hs=[[57344,63743],[1048576,1114109]],Ca=1e3,Sm=["ascent","bbox","black","bold","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","disableFontFace","fallbackName","fontExtraProperties","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","systemFontInfo","vertical"],Am=["cMap","composite","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","subtype","toFontChar","toUnicode","type","vmetrics","widths"];function zl(t){if(!t.fontMatrix||t.fontMatrix[0]===Ea[0])return;const e=.001/t.fontMatrix[0],n=t.widths;for(const s in n)n[s]*=e;t.defaultWidth*=e}function Im(t,e,n){if(t.isInternalFont||t.hasIncludedToUnicodeMap||t.hasEncoding||t.toUnicode instanceof Jn||!e||n.length===0||t.defaultEncoding===pr)return;for(const r of n)if(!vh(r))return;const s=pr,a=[],i=us();for(const r in s){const o=s[r];if(o==="")continue;const f=i[o];f!==void 0&&(a[r]=String.fromCharCode(f))}a.length>0&&t.toUnicode.amend(a)}function Cm(t,e){if(t.isInternalFont||t.hasIncludedToUnicodeMap||e===t.defaultEncoding||t.toUnicode instanceof Jn)return;const n=[],s=us();for(const a in e){if(t.hasEncoding&&(t.baseEncodingName||t.differences[a]!==void 0))continue;const i=e[a],r=ki(i,s);r!==-1&&(n[a]=String.fromCharCode(r))}n.length>0&&t.toUnicode.amend(n)}function Ul(t){if(!t.fallbackToUnicode||t.toUnicode instanceof Jn)return;const e=[];for(const n in t.fallbackToUnicode)t.toUnicode.has(n)||(e[n]=t.fallbackToUnicode[n]);e.length>0&&t.toUnicode.amend(e)}class Tm{constructor(e,n,s,a,i,r,o,f,l){this.originalCharCode=e,this.fontChar=n,this.unicode=s,this.accent=a,this.width=i,this.vmetric=r,this.operatorListId=o,this.isSpace=f,this.isInFont=l}get category(){return ue(this,"category",Dd(this.unicode),!0)}}function Di(t,e){return(t<<8)+e}function _i(t,e,n){t[e+1]=n,t[e]=n>>>8}function qn(t,e){const n=(t<<8)+e;return n&32768?n-65536:n}function Gl(t,e,n){t[e+3]=n&255,t[e+2]=n>>>8,t[e+1]=n>>>16,t[e]=n>>>24}function Bm(t){const e=t.peekBytes(4),n=An(e);return n==="\0\0\0"||n==="true"}function qh(t){const e=t.peekBytes(4);return An(e)==="ttcf"}function Fm(t){const e=t.peekBytes(4);return An(e)==="OTTO"}function Rm(t){const e=t.peekBytes(2);return e[0]===37&&e[1]===33||e[0]===128&&e[1]===1}function Hm(t){const e=t.peekBytes(4);return e[0]>=1&&e[3]>=1&&e[3]<=4}function Em(t,{type:e,subtype:n,composite:s}){let a,i;return Bm(t)||qh(t)?a=s?"CIDFontType2":"TrueType":Fm(t)?a=s?"CIDFontType2":"OpenType":Rm(t)?s?a="CIDFontType0":a=e==="MMType1"?"MMType1":"Type1":Hm(t)?s?(a="CIDFontType0",i="CIDFontType0C"):(a=e==="MMType1"?"MMType1":"Type1",i="Type1C"):(H("getFontFileType: Unable to detect correct font file Type/Subtype."),a=e,i=n),[a,i]}function ni(t,e){for(const n in e)t[+n]=e[n]}const Mm=It(t=>{let e=3;for(const[n,s]of[[32,126],[161,254]])for(let a=n;a<=s;a++)t[e++]=U0[a]},!0);function bo(t,e,n){const s=[];let a;for(let i=0,r=t.length;iHs[0][0]<=p&&p<=Hs[0][1]||Hs[1][0]<=p&&p<=Hs[1][1];let d=null;for(const p in t){let m=t[p];if(!e(m))continue;if(c>h){if(f++,f>=Hs.length){H("Ran out of space in font private use area.");break}c=Hs[f][0],h=Hs[f][1]}const b=c++;m===0&&(m=n);let w=s.get(p);if(typeof w=="string")if(w.length===1)w=w.codePointAt(0);else{if(!d){d=new Map;for(let x=64256;x<=64335;x++){const j=String.fromCharCode(x).normalize("NFKD");j.length>1&&d.set(j,x)}}w=d.get(w)||w.codePointAt(0)}w&&!u(w)&&!o.has(m)&&(i.set(w,m),o.add(m)),a[b]=m,r[p]=b}return{toFontChar:r,charCodeToGlyphId:a,toUnicodeExtraMap:i,nextAvailableFontCharCode:c}}function _m(t,e,n){const s=[];for(const r in t)t[r]>=n||s.push({fontCharCode:r|0,glyphId:t[r]});if(e)for(const[r,o]of e)o>=n||s.push({fontCharCode:r,glyphId:o});s.length===0&&s.push({fontCharCode:0,glyphId:0}),s.sort((r,o)=>r.fontCharCode-o.fontCharCode);const a=[],i=s.length;for(let r=0;r65535;let i,r,o,f;for(i=s.length-1;i>=0&&!(s[i][0]<=65535);--i);const l=i+1;s[i][0]<65535&&s[i][1]===65535&&(s[i][1]=65534);const c=s[i][1]<65535?1:0,h=l+c,u=kr.getSearchParams(h,2),d=l*2+c*2,p=new Vt({exactLength:d}),m=new Vt({exactLength:d}),b=new Vt({exactLength:d}),w=new Vt({exactLength:d}),x=new Vt({});let j=0,k=!1;for(i=0,r=l;i65535?(k=!0,w.skip(2)):w.setInt16(ye),o=0,f=X.length;o0&&(m.setArray([255,255]),p.setArray([255,255]),b.setArray([0,1]),w.skip(2));const y=new Vt({exactLength:12+p.length+m.length+b.length+w.length+x.length});y.skip(2),y.setInt16(2*h),y.setInt16(u.range),y.setInt16(u.entry),y.setInt16(u.rangeShift),y.setArray(m.data),y.skip(2),y.setArray(p.data),y.setArray(b.data),y.setArray(w.data),y.setArray(x.data);const q=!k&&y.length+4<=65535,v=a||!q,A=(q?1:0)+(v?1:0);let S=null,F=null;if(v){S=new Vt({});for(const oe of s){let me=oe[0];const X=oe[2];let ee=X[0];for(o=1,f=X.length;or||(e.skip(6),e.getUint16()===0)?!1:(t.data[8]=t.data[9]=0,!0)}function Vl(t,e,n){n||={unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};let s=0,a=0,i=0,r=0,o=null,f=0,l=-1;if(e){for(let x in e)if(x|=0,(o>x||!o)&&(o=x),f 123 are reserved for internal usage");f>65535&&(f=65535)}else o=0,f=255;const c=t.bbox||[0,0,0,0],h=n.unitsPerEm||(t.fontMatrix?1/Math.max(...t.fontMatrix.slice(0,4).map(Math.abs)):1e3),u=t.ascentScaled?1:h/Ca,d=n.ascent||Math.round(u*(t.ascent||c[3]));let p=n.descent||Math.round(u*(t.descent||c[1]));p>0&&t.descent>0&&c[1]<0&&(p=-p);const m=n.yMax||d,b=-n.yMin||-p,w=new Vt({exactLength:96});return w.setArray([0,3]),w.setArray([2,36]),w.setArray([1,244]),w.setArray([0,5]),w.skip(2),w.setArray([2,138]),w.setArray([2,187]),w.skip(2),w.setArray([0,140]),w.setArray([2,138]),w.setArray([2,187]),w.skip(2),w.setArray([1,223]),w.setArray([0,49]),w.setArray([1,2]),w.skip(2),w.setArray([0,0,6,t.fixedPitch?9:0,0,0,0,0,0,0]),w.setInt32(s),w.setInt32(a),w.setInt32(i),w.setInt32(r),w.setArray([42,50,49,42]),w.setInt16(t.italicAngle?1:0),w.setInt16(o||t.firstChar),w.setInt16(f||t.lastChar),w.setInt16(d),w.setInt16(p),w.setArray([0,100]),w.setInt16(m),w.setInt16(b),w.skip(8),w.setInt16(t.xHeight),w.setInt16(t.capHeight),w.skip(2),w.setInt16(o||t.firstChar),w.setArray([0,3]),w.data}function $l(t){const e=new Vt({exactLength:32});return e.setArray([0,3,0,0]),e.setInt32(Math.floor(t.italicAngle*2**16)),e.skip(4),e.setInt32(t.fixedPitch?1:0),e.skip(16),e.data}function Nm(t){return t.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function xo(t,e){e||=[[],[]];const n=[e[0][0]||"Original licence",e[0][1]||t,e[0][2]||"Unknown",e[0][3]||"uniqueID",e[0][4]||t,e[0][5]||"Version 0.11",e[0][6]||Nm(t),e[0][7]||"Unknown",e[0][8]||"Unknown",e[0][9]||"Unknown"],s=n.map(Bt),a=new Array(n.length);let i,r,o,f,l;for(i=0,r=n.length;ix.length))+Math.sumPrecise(s.map(x=>x.length))+Math.sumPrecise(a.map(x=>x.length))});w.skip(2),w.setInt16(b),w.setInt16(b*12+6);for(const x of p)w.setArray(x);for(const x of s)w.setArray(x);for(const x of a)w.setArray(x);return w.data}class Xl{#e=new Map;#t=new Map;charProcOperatorList;constructor(e,n,s,a){this.name=e,this.psName=null,this.mimetype=null,this.disableFontFace=a.disableFontFace,this.fontExtraProperties=a.fontExtraProperties,this.loadedName=s.loadedName,this.isType3Font=s.isType3Font,this.missingFile=!1,this.cssFontInfo=s.cssFontInfo;let i=!!(s.flags&os.Serif);if(!i&&!s.isSimulatedFlags){const c=xr(),h=Zo(),u=Cf();for(const d of e.split("+")){let p=ma(d);if(p=c[p]||h[p]||p,p=p.split("-",1)[0],u[p]){i=!0;break}}}this.isSerifFont=i,this.isSymbolicFont=!!(s.flags&os.Symbolic),this.isMonospace=!!(s.flags&os.FixedPitch);let{type:r,subtype:o}=s;this.type=r,this.subtype=o,this.systemFontInfo=s.systemFontInfo;const f=e.match(/^InvalidPDFjsFont_(.*)_\d+$/);if(this.isInvalidPDFjsFont=!!f,this.isInvalidPDFjsFont?this.fallbackName=f[1]:this.isMonospace?this.fallbackName="monospace":this.isSerifFont?this.fallbackName="serif":this.fallbackName="sans-serif",this.systemFontInfo?.guessFallback&&(this.systemFontInfo.guessFallback=!1,this.systemFontInfo.css+=`,${this.fallbackName}`),this.differences=s.differences,this.widths=s.widths,this.defaultWidth=s.defaultWidth,this.composite=s.composite,this.cMap=s.cMap,this.capHeight=s.capHeight/Ca,this.ascent=s.ascent/Ca,this.descent=s.descent/Ca,this.lineHeight=this.ascent-this.descent,this.fontMatrix=s.fontMatrix,this.bbox=s.bbox,this.defaultEncoding=s.defaultEncoding,this.toUnicode=s.toUnicode,this.toFontChar=[],s.type==="Type3"){for(let c=0;c<256;c++)this.toFontChar[c]=this.differences[c]||s.defaultEncoding[c];return}if(this.cidEncoding=s.cidEncoding||"",this.vertical=!!s.vertical,this.vertical&&(this.vmetrics=s.vmetrics,this.defaultVMetrics=s.defaultVMetrics),!n||n.isEmpty){n&&H('Font file is empty in "'+e+'" ('+this.loadedName+")"),this.fallbackToSystemFont(s);return}[r,o]=Em(n,s),(r!==this.type||o!==this.subtype)&&ut(`Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${r}/${o}.`);let l;try{switch(r){case"MMType1":ut("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const c=o==="Type1C"||o==="CIDFontType0C"?new po(n,s):new vm(e,n,s);zl(s),l=this.convert(e,c,s);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",l=this.checkAndRepair(e,n,s),zl(s),this.isOpenType&&(r="OpenType");break;default:throw new Y(`Font ${r} is not supported`)}}catch(c){H(c),this.fallbackToSystemFont(s);return}Ul(s),this.data=l,this.type=r,this.subtype=o,this.fontMatrix=s.fontMatrix,this.widths=s.widths,this.defaultWidth=s.defaultWidth,this.toUnicode=s.toUnicode,this.seacMap=s.seacMap}get renderer(){const e=gm.create(this,!0);return ue(this,"renderer",e)}#s(e){const n=Object.create(null);for(const s of e){const a=this[s];a!==void 0&&(n[s]=a)}return n}exportData(){return{buffer:om(this.#s(Sm)),charProcOperatorList:this.charProcOperatorList,extra:this.fontExtraProperties?this.#s(Am):void 0}}fallbackToSystemFont(e){this.missingFile=!0;const{name:n,type:s}=this;let a=ma(n);const i=xr(),r=Zo(),o=!!i[a],f=!!(r[a]&&i[r[a]]);a=i[a]||r[a]||a;const c=wm()[a];c&&(isNaN(this.ascent)&&(this.ascent=c.ascent/Ca),isNaN(this.descent)&&(this.descent=c.descent/Ca),isNaN(this.capHeight)&&(this.capHeight=c.capHeight/Ca)),this.bold=/bold/i.test(a),this.italic=/oblique|italic/i.test(a),this.black=/Black/.test(n);const h=/Narrow/.test(n);if(this.remeasure=(!o||h)&&Object.keys(this.widths).length>0,(o||f)&&s==="CIDFontType2"&&this.cidEncoding.startsWith("Identity-")){const u=e.cidToGidMap,d=[];if(/Trebuchet/i.test(n)?(ni(d,Yd()),ni(d,Jd())):(ni(d,Bl()),/Arial-?Black/i.test(n)?ni(d,Qd()):/Calibri/i.test(n)&&ni(d,Zd())),u){for(const p in d){const m=d[p];u[m]!==void 0&&(d[+p]=u[m])}u.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof Jn&&this.toUnicode.forEach(function(p,m){const b=d[p];u[b]===void 0&&(d[+p]=m)})}this.toUnicode instanceof Jn||this.toUnicode.forEach(function(p,m){d[+p]=m}),this.toFontChar=d,this.toUnicode=new Zi(d)}else if(/Symbol/i.test(a)){const u=this.composite&&this.cidEncoding.startsWith("Identity-");this.toFontChar=bo(u?Mm():U0,us(),this.differences)}else if(/Dingbats/i.test(a))this.toFontChar=bo(Sf,Fd(),this.differences);else if(o||f){const u=bo(this.defaultEncoding,us(),this.differences);s==="CIDFontType2"&&!this.cidEncoding.startsWith("Identity-")&&!(this.toUnicode instanceof Jn)&&this.toUnicode.forEach(function(d,p){u[+d]=p}),this.toFontChar=u}else{const u=us(),d=[];this.toUnicode.forEach((p,m)=>{if(!this.composite){const b=this.differences[p]||this.defaultEncoding[p],w=ki(b,u);w!==-1&&(m=w)}d[+p]=m}),this.composite&&this.toUnicode instanceof Jn&&/Tahoma|Verdana/i.test(n)&&ni(d,Bl()),this.toFontChar=d}Ul(e),this.loadedName=a.split("-",1)[0]}checkAndRepair(e,n,s){const a=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function i(G,_){const L=Object.create(null);L["OS/2"]=null,L.cmap=null,L.head=null,L.hhea=null,L.hmtx=null,L.maxp=null,L.name=null,L.post=null;for(let z=0;z<_;z++){const te=r(G);a.includes(te.tag)&&te.length!==0&&(L[te.tag]=te)}return L}function r(G){const _=G.getString(4),L=G.getInt32()>>>0,z=G.getInt32()>>>0,te=G.getInt32()>>>0,je=G.pos;G.pos=G.start||0,G.skip(z);const he=G.getBytes(te);G.pos=je,_==="head"&&(he[8]=he[9]=he[10]=he[11]=0,he[17]|=32);const ie=_==="CFF "?null:new DataView(he.buffer,he.byteOffset,he.byteLength);return{tag:_,checksum:L,length:te,offset:z,data:he,view:ie}}function o(G){return{version:G.getString(4),numTables:G.getUint16(),searchRange:G.getUint16(),entrySelector:G.getUint16(),rangeShift:G.getUint16()}}function f(G){const _=G.getString(4);Ct(_==="ttcf","Must be a TrueType Collection font.");const L=G.getUint16(),z=G.getUint16(),te=G.getInt32()>>>0,je=[];for(let ie=0;ie>>0);const he={ttcTag:_,majorVersion:L,minorVersion:z,numFonts:te,offsetTable:je};switch(L){case 1:return he;case 2:return he.dsigTag=G.getInt32()>>>0,he.dsigLength=G.getInt32()>>>0,he.dsigOffset=G.getInt32()>>>0,he}throw new Y(`Invalid TrueType Collection majorVersion: ${L}.`)}function l(G,_){const{numFonts:L,offsetTable:z}=f(G),te=_.split("+");let je;for(let he=0;he>>0;let qe=!1;if(!(ie?.platformId===we&&ie?.encodingId===ce)){if(we===0&&(ce===0||ce===1||ce===3))qe=!0;else if(we===1&&ce===0)qe=!0;else if(we===3&&ce===1&&(z||!ie))qe=!0,L||(Fe=!0);else if(L&&we===3&&ce===0){qe=!0;let Le=!0;if(Z>3;Z.push(qe),we=Math.max(qe,we)}const ce=[];for(let Me=0;Me<=we;Me++)ce.push({firstCode:_.getUint16(),entryCount:_.getUint16(),idDelta:qn(_.getByte(),_.getByte()),idRangePos:_.pos+_.getUint16()});for(let Me=0;Me<256;Me++)if(Z[Me]===0)_.pos=ce[0].idRangePos+2*Me,He=_.getUint16(),Ue.push({charCode:Me,glyphId:He});else{const qe=ce[Z[Me]];for(Ne=0;Ne>1;_.skip(6);const we=[];let ce;for(ce=0;ce>1)-(Z-ce),te.offsetIndex=qe,Me=Math.max(Me,qe+te.end-te.start+1)}const Le=[];for(Ne=0;Ne>>0;for(Ne=0;Ne>>0,ce=_.getInt32()>>>0;let Me=_.getInt32()>>>0;for(let qe=we;qe<=ce;qe++)Ue.push({charCode:qe,glyphId:Me++})}}else return H("cmap table has unsupported format: "+Ee),{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1};const W=[],de=new Set;for(const Z of Ue){const{charCode:we}=Z;de.has(we)||(de.add(we),W.push(Z))}return{platformId:ie.platformId,encodingId:ie.encodingId,mappings:W.sort((Z,we)=>Z.charCode-we.charCode),hasShortCmap:_e}}function h(G,_,L,z,te,je){if(!_){L&&(L.data=null);return}G.pos=(G.start||0)+_.offset,G.pos+=4,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2,G.pos+=2;const he=G.getUint16();G.pos+=8,G.pos+=2;let ie=G.getUint16();he!==0&&(Di(z.data[44],z.data[45])&2||(_.data[22]=0,_.data[23]=0)),ie>te&&(ut(`The numOfMetrics (${ie}) should not be greater than the numGlyphs (${te}).`),ie=te,_.data[34]=(ie&65280)>>8,_.data[35]=ie&255);const Ee=te-ie-(L.length-ie*4>>1);if(Ee>0){const _e=new Uint8Array(L.length+Ee*2);_e.set(L.data),je&&(_e[L.length]=L.data[2],_e[L.length+1]=L.data[3]),L.data=_e}}function u(G,_,L,z,te,je){const he={length:0,sizeOfInstructions:0};if(_<0||_>=G.length||L>G.length||L-_<=12)return he;const ie=G.subarray(_,L),Fe=qn(ie[2],ie[3]),Ee=qn(ie[4],ie[5]),_e=qn(ie[6],ie[7]),Ue=qn(ie[8],ie[9]);Fe>_e&&(_i(ie,2,_e),_i(ie,6,Fe)),Ee>Ue&&(_i(ie,4,Ue),_i(ie,8,Ee));const Ne=qn(ie[0],ie[1]);if(Ne<0)return Ne<-1||(z.set(ie,te),he.length=ie.length),he;let He,W=10,de=0;for(He=0;Heie.length?he:!je&&we>0?(z.set(ie.subarray(0,Z),te),z.set([0,0],te+Z),z.set(ie.subarray(ce,qe),te+Z+2),qe-=we,ie.length-qe>3&&(qe=qe+3&-4),he.length=qe,he):ie.length-qe>3?(qe=qe+3&-4,z.set(ie.subarray(0,qe),te),he.length=qe,he):(z.set(ie,te),he.length=ie.length,he)}function d(G,_,L){const{data:z,view:te}=G,je=te.getInt32(0);je>>16!==1&&(ut("Attempting to fix invalid version in head table: "+je),te.setInt32(0,65536));const he=qn(z[50],z[51]);if(he<0||he>1){ut("Attempting to fix invalid indexToLocFormat in head table: "+he);const ie=_+1;if(L===ie<<1)z[50]=0,z[51]=0;else if(L===ie<<2)z[50]=0,z[51]=1;else throw new Y("Could not fix indexToLocFormat: "+he)}}function p(G,_,L,z,te,je,he){let ie,Fe,Ee;z?(ie=4,Fe=function(ot,lt){return ot[lt]<<24|ot[lt+1]<<16|ot[lt+2]<<8|ot[lt+3]},Ee=function(ot,lt,Ft){ot[lt]=Ft>>>24&255,ot[lt+1]=Ft>>16&255,ot[lt+2]=Ft>>8&255,ot[lt+3]=Ft&255}):(ie=2,Fe=function(ot,lt){return ot[lt]<<9|ot[lt+1]<<1},Ee=function(ot,lt,Ft){ot[lt]=Ft>>9&255,ot[lt+1]=Ft>>1&255});const _e=je?L+1:L,Ue=ie*(1+_e),Ne=new Uint8Array(Ue);Ne.set(G.data.subarray(0,Ue)),G.data=Ne;const He=_.data,W=He.length,de=new Uint8Array(W);let Z,we;const ce=[];for(Z=0,we=0;ZW&&(Je=W),ce.push({index:Z,offset:Je,endOffset:0})}for(ce.sort((Je,ot)=>Je.offset-ot.offset),Z=0;ZJe.index-ot.index),Z=0;Zhe&&(he=Je.sizeOfInstructions),Ce+=ot,Ee(Ne,we,Ce)}if(Ce===0){const Je=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(Z=0,we=ie;Z<_e;Z++,we+=ie)Ee(Ne,we,Je.length);_.data=Je}else if(je){const Je=Fe(Ne,ie);de.length>Je+Ce?_.data=de.subarray(0,Je+Ce):(_.data=new Uint8Array(Je+Ce),_.data.set(de.subarray(0,Ce))),_.data.set(de.subarray(0,Je),Ce),Ee(G.data,Ne.length-ie,Ce+Je)}else _.data=de.subarray(0,Ce);return{missingGlyphs:Le,maxSizeOfInstructions:he}}function m(G,_,L){const z=(n.start||0)+G.offset;n.pos=z;const te=G.length,je=z+te,he=n.getInt32();n.skip(28);let ie,Fe=!0,Ee;switch(he){case 65536:ie=v0;break;case 131072:const _e=n.getUint16();if(_e!==L){Fe=!1;break}const Ue=[];for(Ee=0;Ee<_e;++Ee){const He=n.getUint16();if(He>=32768){Fe=!1;break}Ue.push(He)}if(!Fe)break;const Ne=[];for(;n.posje)continue;n.pos=W;const de=He.name;if(He.encoding){let Z="";for(let we=0,ce=He.length;we0&&(z+=Le-1)}if(!de&&!we){let Le=0;for(qe<=142?Le=w[qe]:qe>=192&&qe<=223?Le=-1:qe>=224&&(Le=-2),qe>=113&&qe<=117&&(je=Ue.pop(),isNaN(je)||(Le=-je*2));Le<0&&Ue.length>0;)Ue.pop(),Le++;for(;Le>0;)Ue.push(NaN),Le--}}_.tooComplexToFollowFunctions=W;const ce=[L];z>L.length&&ce.push(new Uint8Array(z-L.length)),_e>Ee&&(H("TT: complementing a missing function tail"),ce.push(new Uint8Array([34,45]))),k(G,ce)}function j(G,_){if(!G.tooComplexToFollowFunctions){if(G.functionsDefined.length>_){H("TT: more functions defined than expected"),G.hintsValid=!1;return}for(let L=0,z=G.functionsUsed.length;L_){H("TT: invalid function id: "+L),G.hintsValid=!1;return}if(G.functionsUsed[L]&&!G.functionsDefined[L]){H("TT: undefined function: "+L),G.hintsValid=!1;return}}}}function k(G,_){if(_.length>1){let L=0,z,te;for(z=0,te=_.length;z=32)M=65536;else throw new Y('"maxp" table has a wrong version number');Gl(v.maxp.data,0,M)}let D=Di(v.head.data[50],v.head.data[51]);if(v.loca){const G=D?(N+1)*4:(N+1)*2;if(v.loca.length!==G){H("Incorrect 'loca' table length -- attempting to fix it.");const _=Object.values(v).filter(Boolean).sort((te,je)=>te.offset-je.offset),L=_.indexOf(v.loca),z=_[L+1]||null;if(z&&v.loca.offset+G>8&255,je[ie+1]=Fe&255;const Ee=Math.round(G[he]*qn(je[ie+2],je[ie+3]));_i(je,ie+2,Ee)}}let $=N+1,K=!0;$>65535&&(K=!1,$=N,H("Not enough space in glyfs to duplicate first glyph."));let oe=0,me=0;if(M>=65536&&v.maxp.length>=32)n.pos+=8,n.getUint16()>2&&(v.maxp.data[14]=0,v.maxp.data[15]=2),n.pos+=4,oe=n.getUint16(),n.pos+=4,me=n.getUint16();else if(A&&M===20480){const G=new Uint8Array(32);Gl(G,0,65536),G[4]=N>>8&255,G[5]=N&255,G.fill(255,6,14),G[15]=2,G[28]=255,G[29]=255,G[31]=16,v.maxp.data=G,v.maxp.length=32,M=65536}v.maxp.data[4]=$>>8,v.maxp.data[5]=$&255;const X=y(v.fpgm,v.prep,v["cvt "],oe);if(X||(delete v.fpgm,delete v.prep,delete v["cvt "]),h(n,v.hhea,v.hmtx,v.head,$,K),!v.head)throw new Y('Required "head" table is not found');d(v.head,N,A?v.loca.length:0);let ee=Object.create(null);if(A){const G=p(v.loca,v.glyf,N,D,X,K,me);ee=G.missingGlyphs,M>=65536&&v.maxp.length>=32&&(v.maxp.data[26]=G.maxSizeOfInstructions>>8,v.maxp.data[27]=G.maxSizeOfInstructions&255)}if(!v.hhea)throw new Y('Required "hhea" table is not found');v.hhea.data[10]===0&&v.hhea.data[11]===0&&(v.hhea.data[10]=255,v.hhea.data[11]=255);const ye={unitsPerEm:Di(v.head.data[18],v.head.data[19]),yMax:qn(v.head.data[42],v.head.data[43]),yMin:qn(v.head.data[38],v.head.data[39]),ascent:qn(v.hhea.data[4],v.hhea.data[5]),descent:qn(v.hhea.data[6],v.hhea.data[7]),lineGap:qn(v.hhea.data[8],v.hhea.data[9])};this.ascent=ye.ascent/ye.unitsPerEm,this.descent=ye.descent/ye.unitsPerEm,this.lineGap=ye.lineGap/ye.unitsPerEm,this.cssFontInfo?.lineHeight?(this.lineHeight=this.cssFontInfo.metrics.lineHeight,this.lineGap=this.cssFontInfo.metrics.lineGap):this.lineHeight=this.ascent-this.descent+this.lineGap,v.post&&m(v.post,s,N),v.post={tag:"post",data:$l(s)};const Be=Object.create(null);function ae(G){return!ee[G]}if(s.composite){const G=s.cidToGidMap||[],_=G.length===0;s.cMap.forEach(function(L,z){if(typeof z=="string"&&(z=wo(L,z,!0)),z>65535)throw new Y("Max size of CID is 65,535");let te=-1;_?te=z:G[z]!==void 0&&(te=G[z]),te>=0&&te=61440&&ie<=61695&&(ie&=255),Be[ie]=he.glyphId}else for(const he of z)Be[he.charCode]=he.glyphId;if(s.glyphNames&&(te.length||this.differences.length))for(let he=0;he<256;++he){if(!je&&Be[he]!==void 0)continue;const ie=this.differences[he]||te[he];if(!ie)continue;const Fe=s.glyphNames.indexOf(ie);Fe>0&&ae(Fe)&&(Be[he]=Fe)}!s.isInternalFont&&Be[0]===void 0&&ae(0)&&(Be[0]=0)}Be.length===0&&(Be[0]=0);const $e=K?$-1:0;if(!s.cssFontInfo){const G=Wl(Be,ae,$e,this.toUnicode);this.toFontChar=G.toFontChar,v.cmap={tag:"cmap",data:Kl(G.charCodeToGlyphId,G.toUnicodeExtraMap,$)},(!v["OS/2"]||!Pm(v["OS/2"],n))&&(v["OS/2"]={tag:"OS/2",data:Vl(s,G.charCodeToGlyphId,ye)})}if(!v.name)v.name={tag:"name",data:xo(this.name)};else{const[G,_]=b(v.name);v.name.data=xo(e,G),this.psName=G[0][6]||null,s.composite||Im(s,this.isSymbolicFont,_)}const tt=new kr(q.version);for(const G in v)tt.addTable(G,v[G].data);return tt.toArray()}convert(e,n,s){s.fixedPitch=!1,s.builtInEncoding&&Cm(s,s.builtInEncoding);const a=n instanceof po?n.numGlyphs-1:1,i=n.getGlyphMapping(s);let r=null,o=i,f=null;s.cssFontInfo||(r=Wl(i,n.hasGlyphId.bind(n),a,this.toUnicode),this.toFontChar=r.toFontChar,o=r.charCodeToGlyphId,f=r.toUnicodeExtraMap);const l=n.numGlyphs;function c(m,b){let w=null;for(const x in m)b===m[x]&&(w||=[]).push(x|0);return w}function h(m,b){for(const w in m)if(b===m[w])return w|0;return r.charCodeToGlyphId[r.nextAvailableFontCharCode]=b,r.nextAvailableFontCharCode++}const u=n.seacs;if(r&&u?.length){const m=s.fontMatrix||Ea,b=n.getCharset(),w=Object.create(null);for(let x in u){x|=0;const j=u[x],k=zs[j[2]],y=zs[j[3]],q=b.indexOf(k),v=b.indexOf(y);if(q<0||v<0)continue;const A={x:j[0]*m[0]+j[1]*m[2]+m[4],y:j[0]*m[1]+j[1]*m[3]+m[5]},S=c(i,x);if(S)for(const F of S){const M=r.charCodeToGlyphId,N=h(M,q),D=h(M,v);w[F]={baseFontCharCode:N,accentFontCharCode:D,accentOffset:A}}}s.seacMap=w}const d=s.fontMatrix?1/Math.max(...s.fontMatrix.slice(0,4).map(Math.abs)):1e3,p=new kr("OTTO");return p.addTable("CFF ",n.data),p.addTable("OS/2",Vl(s,o)),p.addTable("cmap",Kl(o,f,l)),p.addTable("head",(function(){const b=[0,0,0,0,158,11,126,39],w=new Vt({exactLength:54});return w.setArray([0,1,0,0]),w.setArray([0,0,16,0]),w.skip(4),w.setArray([95,15,60,245]),w.skip(2),w.setSafeInt16(d),w.setArray(b),w.setArray(b),w.skip(2),w.setSafeInt16(s.descent),w.setArray([15,255]),w.setSafeInt16(s.ascent),w.setInt16(s.italicAngle?2:0),w.setArray([0,17]),w.skip(6),w.data})()),p.addTable("hhea",(function(){const b=new Vt({exactLength:36});return b.setArray([0,1,0,0]),b.setSafeInt16(s.ascent),b.setSafeInt16(s.descent),b.skip(2),b.setArray([255,255]),b.skip(6),b.setSafeInt16(s.capHeight),b.setSafeInt16(Math.tan(s.italicAngle)*s.xHeight),b.skip(12),b.setInt16(l),b.data})()),p.addTable("hmtx",(function(){const b=n.charstrings,w=n.cff?.widths??null,x=new Vt({exactLength:l*4});x.skip(4);for(let j=1,k=l;jn.length%2===1,i=this.toUnicode instanceof Jn?r=>this.toUnicode.charCodeOf(r):r=>this.toUnicode.charCodeOf(String.fromCodePoint(r));for(let r=0,o=e.length;r65535&&r++,this.toUnicode){const l=i(f);if(l!==-1){a()&&(n.push(s.join("")),s.length=0);const c=this.cMap?this.cMap.getCharCodeLength(l):1;for(let h=c-1;h>=0;h--)s.push(String.fromCharCode(l>>8*h&255));continue}}a()||(n.push(s.join("")),s.length=0),s.push(String.fromCodePoint(f))}return n.push(s.join("")),n}}class Yl{constructor(e){this.error=e,this.loadedName="g_font_error",this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(){return{error:this.error}}}const Om=[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],Lm={lineHeight:1.2207,lineGap:.2207},zm=[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],Um={lineHeight:1.2207,lineGap:.2207},Gm=[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],Wm={lineHeight:1.2207,lineGap:.2207},Km=[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],Vm={lineHeight:1.2207,lineGap:.2207},$m=[.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],Xm={lineHeight:1.2,lineGap:.2},Ym=[.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],Jm={lineHeight:1.35,lineGap:.2},Qm=[.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],Zm={lineHeight:1.35,lineGap:.2},ep=[.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],tp={lineHeight:1.2,lineGap:.2},Pi=[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],Ni=[-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],Oi=[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],Li=[-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],zi=[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],Ui=[-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],Gi=[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],Wi=[-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],np=[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],sp={lineHeight:1.2,lineGap:.2},ap=[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],ip={lineHeight:1.2,lineGap:.2},rp=[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],op={lineHeight:1.2,lineGap:.2},fp=[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],lp={lineHeight:1.2,lineGap:.2},cp=[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],hp={lineHeight:1.33008,lineGap:0},up=[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],dp={lineHeight:1.33008,lineGap:0},mp=[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],pp={lineHeight:1.33008,lineGap:0},gp=[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],bp={lineHeight:1.33008,lineGap:0},wp=It(function(t){t["MyriadPro-Regular"]=t["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:fp,baseWidths:Gi,baseMapping:Wi,metrics:lp},t["MyriadPro-Bold"]=t["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:np,baseWidths:Pi,baseMapping:Ni,metrics:sp},t["MyriadPro-It"]=t["MyriadPro-Italic"]=t["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:rp,baseWidths:zi,baseMapping:Ui,metrics:op},t["MyriadPro-BoldIt"]=t["MyriadPro-BoldItalic"]=t["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:ap,baseWidths:Oi,baseMapping:Li,metrics:ip},t.ArialMT=t.Arial=t["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:Gi,baseMapping:Wi},t["Arial-BoldMT"]=t["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:Pi,baseMapping:Ni},t["Arial-ItalicMT"]=t["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:zi,baseMapping:Ui},t["Arial-BoldItalicMT"]=t["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:Oi,baseMapping:Li},t["Calibri-Regular"]={name:"LiberationSans-Regular",factors:Km,baseWidths:Gi,baseMapping:Wi,metrics:Vm},t["Calibri-Bold"]={name:"LiberationSans-Bold",factors:Om,baseWidths:Pi,baseMapping:Ni,metrics:Lm},t["Calibri-Italic"]={name:"LiberationSans-Italic",factors:Gm,baseWidths:zi,baseMapping:Ui,metrics:Wm},t["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:zm,baseWidths:Oi,baseMapping:Li,metrics:Um},t["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:gp,baseWidths:Gi,baseMapping:Wi,metrics:bp},t["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:cp,baseWidths:Pi,baseMapping:Ni,metrics:hp},t["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:mp,baseWidths:zi,baseMapping:Ui,metrics:pp},t["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:up,baseWidths:Oi,baseMapping:Li,metrics:dp},t["Helvetica-Regular"]=t.Helvetica={name:"LiberationSans-Regular",factors:ep,baseWidths:Gi,baseMapping:Wi,metrics:tp},t["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:$m,baseWidths:Pi,baseMapping:Ni,metrics:Xm},t["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:Qm,baseWidths:zi,baseMapping:Ui,metrics:Zm},t["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Ym,baseWidths:Oi,baseMapping:Li,metrics:Jm}});function Hf(t){const e=ma(t);return wp()[e]}function xp(t){const e=Hf(t);if(!e)return null;const{baseWidths:n,baseMapping:s,factors:a}=e,i=a?n.map((l,c)=>l*a[c]):n;let r=-2,o;const f=[];for(const[l,c]of s.map((h,u)=>[h,u]).sort(([h],[u])=>h-u))l!==-1&&(l===r+1?(o.push(i[c]),r+=1):(r=l,o=[i[c]],f.push(l,o)));return f}function Sh(t){const e=xp(t),n=new B(null);n.set("BaseFont",J.get(t)),n.set("Type",J.get("Font")),n.set("Subtype",J.get("CIDFontType2")),n.set("Encoding",J.get("Identity-H")),n.set("CIDToGIDMap",J.get("Identity")),n.set("W",e),n.set("FirstChar",e[0]),n.set("LastChar",e.at(-2)+e.at(-1).length-1);const s=new B(null);n.set("FontDescriptor",s);const a=new B(null);return a.set("Ordering","Identity"),a.set("Registry","Adobe"),a.set("Supplement",0),n.set("CIDSystemInfo",a),n}const I={number:0,lbrace:1,rbrace:2,true:3,false:4,add:5,sub:6,mul:7,div:8,idiv:9,mod:10,exp:11,eq:12,ne:13,gt:14,ge:15,lt:16,le:17,and:18,or:19,xor:20,bitshift:21,abs:22,neg:23,ceiling:24,floor:25,round:26,truncate:27,not:28,sqrt:29,sin:30,cos:31,ln:32,log:33,atan:34,cvi:35,cvr:36,dup:37,exch:38,pop:39,copy:40,index:41,roll:42,if:43,ifelse:44,eof:45,min:46,max:47};class va{constructor(e,n=null){this.id=e,this.value=n}}class ea{static#e=null;static#t=null;static#s(){const e=Object.create(null),n=Object.create(null);for(const[s,a]of Object.entries(I)){if(s==="number")continue;const i=a>=I.true&&a<=I.ifelse,r=new va(a,i?s:null);e[s]=r,i&&(n[s]=r)}this.#e=e,this.#t=n}constructor(e){ea.#e||ea.#s(),this.data=e,this.pos=0,this.len=e.length,this._numberPattern=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/iy,this._identifierPattern=/[a-z]+/y}_skipComment(){const e=this.data.indexOf(` +`,this.pos),n=this.data.indexOf("\r",this.pos),s=Math.min(e<0?this.len:e,n<0?this.len:n);this.pos=Math.min(s+1,this.len)}_getNumber(){this._numberPattern.lastIndex=this.pos;const e=this._numberPattern.exec(this.data);if(!e)return new va(I.number,0);const n=parseFloat(e[0]);return Number.isFinite(n)?(this.pos=this._numberPattern.lastIndex,new va(I.number,n)):new va(I.number,0)}_getOperator(){this._identifierPattern.lastIndex=this.pos;const e=this._identifierPattern.exec(this.data);if(!e)return new va(I.number,0);this.pos=this._identifierPattern.lastIndex;const n=e[0],s=ea.#t[n];return s||new va(I.number,0)}next(){for(;this.pos=48&&e<=57?(this.pos--,this._getNumber()):e>=97&&e<=122?(this.pos--,this._getOperator()):new va(I.number,0)}}return ea.#e.eof}}const Pt={numeric:0,boolean:1,unknown:2},De={program:0,block:1,number:2,operator:3,if:4,ifelse:5,arg:6,const:7,unary:8,binary:9,ternary:10};class gs{constructor(e){this.type=e}}class jp extends gs{constructor(e){super(De.program),this.body=e}}class kp extends gs{constructor(e){super(De.block),this.instructions=e}}class yp extends gs{constructor(e){super(De.number),this.value=e}}class qp extends gs{constructor(e){super(De.operator),this.op=e}}class vp extends gs{constructor(e){super(De.if),this.then=e}}class Sp extends gs{constructor(e,n){super(De.ifelse),this.then=e,this.otherwise=n}}class Ap extends gs{constructor(e){super(De.arg),this.index=e,this.valueType=Pt.numeric}}class Mn extends gs{constructor(e){super(De.const),this.value=e,this.valueType=typeof e=="boolean"?Pt.boolean:Pt.numeric}}class Ip extends gs{constructor(e,n,s=Pt.unknown){super(De.unary),this.op=e,this.operand=n,this.valueType=s}}class Jl extends gs{constructor(e,n,s,a=Pt.unknown){super(De.binary),this.op=e,this.first=n,this.second=s,this.valueType=a}}class Cp extends gs{constructor(e,n,s,a=Pt.unknown){super(De.ternary),this.cond=e,this.then=n,this.otherwise=s,this.valueType=a}}class Ef{constructor(e){this.lexer=e,this._token=null}static _isRegularOperator(e){return e>=I.true&&en;case I.ge:return e>=n;case I.lt:return e=0?e<>-n|0;case I.min:return Math.min(e,n);case I.max:return Math.max(e,n);default:return}}function Bp(t,e){switch(t){case I.abs:return Math.abs(e);case I.neg:return-e;case I.ceiling:return Math.ceil(e);case I.floor:return Math.floor(e);case I.round:return Math.round(e);case I.truncate:return Math.trunc(e);case I.sqrt:{const n=Math.sqrt(e);return Number.isFinite(n)?n:void 0}case I.sin:return Math.sin(e%360*Math.PI/180);case I.cos:return Math.cos(e%360*Math.PI/180);case I.ln:{const n=Math.log(e);return Number.isFinite(n)?n:void 0}case I.log:{const n=Math.log10(e);return Number.isFinite(n)?n:void 0}case I.cvi:return Math.trunc(e);case I.cvr:return e;case I.not:return typeof e=="boolean"?!e:~e;default:return}}const si=100;function Fp(t,e){return t===I.not?e:Pt.numeric}function Rp(t,e,n){switch(t){case I.eq:case I.ne:case I.gt:case I.ge:case I.lt:case I.le:return Pt.boolean;case I.and:case I.or:case I.xor:return e===n&&e!==Pt.unknown?e:Pt.unknown;default:return Pt.numeric}}class ys{static#e=null;static#t=null;static#s=null;static#a=null;static#n(){this.#e=new Set([I.add,I.sub,I.mul,I.div,I.idiv,I.mod,I.exp,I.atan,I.eq,I.ne,I.gt,I.ge,I.lt,I.le,I.and,I.or,I.xor,I.bitshift]),this.#t=new Set([I.abs,I.neg,I.ceiling,I.floor,I.round,I.truncate,I.sqrt,I.sin,I.cos,I.ln,I.log,I.cvi,I.cvr,I.not]),this.#s=new Set([I.abs,I.ceiling,I.cvi,I.cvr,I.floor,I.round,I.truncate]),this.#a=new Map([[I.eq,I.ne],[I.ne,I.eq],[I.lt,I.ge],[I.le,I.gt],[I.gt,I.le],[I.ge,I.lt]])}evaluate(e,n){if(ys.#e||ys.#n(),this._failed=!1,n>si)return null;const s=[];for(let a=0;a{if(!a||a.type===De.arg||a.type===De.const)return;const i=n.get(a)??0;if(n.set(a,i+1),!(i>0))switch(a.type){case De.unary:s(a.operand);break;case De.binary:s(a.first),s(a.second);break;case De.ternary:s(a.cond),s(a.then),s(a.otherwise);break}};for(const a of e)s(a);for(const[a,i]of n)i>1&&(a.shared=!0,a.sharedCount=i)}_evalBlock(e,n){this._evalBlockFrom(e.instructions,0,n)}_evalBlockFrom(e,n,s){for(let a=n;asi&&(this._failed=!0);break;case De.operator:this._evalOp(i.op,s);break;case De.if:{if(s.length<1){this._failed=!0;break}const r=s.pop(),o=s.slice();if(this._evalBlock(i.then,s),this._failed)break;if(s.length===o.length)for(let f=0;fo.length){if(r.type===De.const){r.value||(s.length=0,s.push(...o));break}const f=s.slice();if(this._evalBlockFrom(e,a+1,f),this._failed)break;const l=o;if(this._evalBlockFrom(e,a+1,l),this._failed)break;if(f.length!==l.length){const c=new Mn(0);for(;f.lengthsi&&(this._failed=!0);break;case I.false:n.push(new Mn(!1)),n.length>si&&(this._failed=!0);break;case I.dup:if(n.length<1){this._failed=!0;break}n.push(n.at(-1)),n.length>si&&(this._failed=!0);break;case I.exch:{if(n.length<2){this._failed=!0;break}const s=n.pop(),a=n.pop();n.push(s,a);break}case I.pop:if(n.length<1){this._failed=!0;break}n.pop();break;case I.copy:{if(n.length<1){this._failed=!0;break}const s=n.pop();if(s.type===De.const){const a=s.value|0;a===0||(a<0||a>n.length?this._failed=!0:(n.push(...n.slice(-a)),n.length>si&&(this._failed=!0)))}else this._failed=!0;break}case I.index:{if(n.length<1){this._failed=!0;break}const s=n.pop();if(s.type===De.const){const a=s.value|0;a<0||a>=n.length?this._failed=!0:n.push(n.at(-a-1))}else this._failed=!0;break}case I.roll:{if(n.length<2){this._failed=!0;break}const s=n.pop(),a=n.pop();if(a.type===De.const&&s.type===De.const){const i=a.value|0;if(i!==0)if(i<0||i>n.length)this._failed=!0;else{const r=((s.value|0)%i+i)%i;if(r>0){const o=n.splice(-i,i);n.push(...o.slice(i-r),...o.slice(0,i-r))}}}else this._failed=!0;break}default:this._failed=!0;break}}_makeBinary(e,n,s){if(n.type===De.const&&s.type===De.const){const a=Tp(e,s.value,n.value);if(a!==void 0)return new Mn(a)}if(bn(n,s))switch(e){case I.sub:return new Mn(0);case I.xor:return new Mn(n.valueType===Pt.boolean?!1:0);case I.and:case I.or:return n;case I.min:case I.max:return n;case I.eq:case I.ge:case I.le:return new Mn(!0);case I.ne:case I.gt:case I.lt:return new Mn(!1)}if(n.type===De.const){const a=n.value;switch(e){case I.add:if(a===0)return s;break;case I.sub:if(a===0)return s;break;case I.mul:if(a===1)return s;if(a===0)return n;if(a===-1)return this._makeUnary(I.neg,s);break;case I.div:if(a!==0)return this._makeBinary(I.mul,new Mn(1/a),s);break;case I.idiv:if(a===1)return s;break;case I.exp:if(a===1)return s;if(a===-1)return this._makeBinary(I.div,s,new Mn(1));if(a===.5)return this._makeUnary(I.sqrt,s);if(a===.25){const i=this._makeUnary(I.sqrt,s);return this._makeUnary(I.sqrt,i)}if(a===2)return this._makeBinary(I.mul,s,s);if(a===3)return this._makeBinary(I.mul,this._makeBinary(I.mul,s,s),s);if(a===4){const i=this._makeBinary(I.mul,s,s);return this._makeBinary(I.mul,i,i)}if(a===0)return new Mn(1);break;case I.and:if(a===!0)return s;if(a===!1)return n;break;case I.or:if(a===!1)return s;if(a===!0)return n;break;case I.min:if(s.type===De.binary&&s.op===I.max&&s.first.type===De.const&&s.first.value>=a)return n;break;case I.max:if(s.type===De.binary&&s.op===I.min&&s.first.type===De.const&&s.first.value<=a)return n;break}}if(s.type===De.const){const a=s.value;switch(e){case I.add:if(a===0)return n;break;case I.sub:if(a===0)return this._makeUnary(I.neg,n);break;case I.mul:if(a===1)return n;if(a===0)return s;if(a===-1)return this._makeUnary(I.neg,n);break;case I.and:if(a===!0)return n;if(a===!1)return s;break;case I.or:if(a===!1)return n;if(a===!0)return s;break}}return new Jl(e,n,s,Rp(e,n.valueType,s.valueType))}_makeUnary(e,n){if(n.type===De.const){const s=Bp(e,n.value);if(s!==void 0)return new Mn(s)}if(e===I.not&&n.type===De.binary){const s=ys.#a.get(n.op);if(s!==void 0)return new Jl(s,n.first,n.second,Pt.boolean)}if(e===I.neg&&n.type===De.binary&&n.op===I.sub)return this._makeBinary(I.sub,n.second,n.first);if(n.type===De.unary){if(e===I.neg&&n.op===I.neg||e===I.not&&n.op===I.not)return n.operand;if(e===I.abs&&n.op===I.neg)return this._makeUnary(I.abs,n.operand);if(ys.#s.has(e)&&e===n.op)return n}return new Ip(e,n,Fp(e,n.valueType))}_makeTernary(e,n,s){if(e.type===De.const)return e.value?n:s;if(bn(n,s))return n;if(n.type===De.const&&s.type===De.const){if(n.value===!0&&s.value===!1)return e;if(n.value===!1&&s.value===!0)return this._makeUnary(I.not,e)}if(e.type===De.binary){const{op:a,first:i,second:r}=e;if(a===I.gt||a===I.ge){if(bn(n,i)&&bn(s,r))return this._makeBinary(I.min,i,r);if(bn(n,r)&&bn(s,i))return this._makeBinary(I.max,i,r)}else if(a===I.lt||a===I.le){if(bn(n,i)&&bn(s,r))return this._makeBinary(I.max,i,r);if(bn(n,r)&&bn(s,i))return this._makeBinary(I.min,i,r)}}return new Cp(e,n,s,n.valueType===s.valueType?n.valueType:Pt.unknown)}}const Te={ARG:0,CONST:1,STORE:2,IF:3,JUMP:4,ABS:5,NEG:6,CEIL:7,FLOOR:8,ROUND:9,TRUNC:10,NOT_B:11,NOT_N:12,SQRT:13,SIN:14,COS:15,LN:16,LOG10:17,CVI:18,SHIFT:19,ADD:20,SUB:21,MUL:22,DIV:23,IDIV:24,MOD:25,POW:26,EQ:27,NE:28,GT:29,GE:30,LT:31,LE:32,AND:33,OR:34,XOR:35,ATAN:36,MIN:37,MAX:38,TEE_TMP:39,LOAD_TMP:40},S0=Math.PI/180,Ih=180/Math.PI;class Ql{static#e=new Float64Array(64);static#t=new Float64Array(64);constructor(e,n){this.nIn=e.length>>1,this.nOut=n.length>>1,this.range=n,this.ir=[],this._tmpMap=new Map,this._nextTmp=0}_compileNode(e){if(e.shared){const n=this._tmpMap.get(e);if(n!==void 0)return this.ir.push(Te.LOAD_TMP,n),!0;if(!this._compileNodeImpl(e))return!1;const s=this._nextTmp++;return this._tmpMap.set(e,s),this.ir.push(Te.TEE_TMP,s),!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case De.arg:return this.ir.push(Te.ARG,e.index),!0;case De.const:{const n=e.value;return this.ir.push(Te.CONST,typeof n=="boolean"?Number(n):n),!0}case De.unary:return this._compileUnary(e);case De.binary:return this._compileBinary(e);case De.ternary:return this._compileTernary(e);default:return!1}}_compileUnary(e){const{op:n,operand:s,valueType:a}=e;if(n===I.cvr)return this._compileNode(s);if(!this._compileNode(s))return!1;switch(n){case I.abs:this.ir.push(Te.ABS);break;case I.neg:this.ir.push(Te.NEG);break;case I.ceiling:this.ir.push(Te.CEIL);break;case I.floor:this.ir.push(Te.FLOOR);break;case I.round:this.ir.push(Te.ROUND);break;case I.truncate:this.ir.push(Te.TRUNC);break;case I.sqrt:this.ir.push(Te.SQRT);break;case I.sin:this.ir.push(Te.SIN);break;case I.cos:this.ir.push(Te.COS);break;case I.ln:this.ir.push(Te.LN);break;case I.log:this.ir.push(Te.LOG10);break;case I.cvi:this.ir.push(Te.CVI);break;case I.not:if(a===Pt.boolean)this.ir.push(Te.NOT_B);else if(a===Pt.numeric)this.ir.push(Te.NOT_N);else return!1;break;default:return!1}return!0}_compileBinary(e){const{op:n,first:s,second:a}=e;if(n===I.bitshift)return s.type!==De.const||!Number.isInteger(s.value)||!this._compileNode(a)?!1:(this.ir.push(Te.SHIFT,s.value),!0);if(!this._compileNode(a)||!this._compileNode(s))return!1;switch(n){case I.add:this.ir.push(Te.ADD);break;case I.sub:this.ir.push(Te.SUB);break;case I.mul:this.ir.push(Te.MUL);break;case I.div:this.ir.push(Te.DIV);break;case I.idiv:this.ir.push(Te.IDIV);break;case I.mod:this.ir.push(Te.MOD);break;case I.exp:this.ir.push(Te.POW);break;case I.eq:this.ir.push(Te.EQ);break;case I.ne:this.ir.push(Te.NE);break;case I.gt:this.ir.push(Te.GT);break;case I.ge:this.ir.push(Te.GE);break;case I.lt:this.ir.push(Te.LT);break;case I.le:this.ir.push(Te.LE);break;case I.and:this.ir.push(Te.AND);break;case I.or:this.ir.push(Te.OR);break;case I.xor:this.ir.push(Te.XOR);break;case I.atan:this.ir.push(Te.ATAN);break;case I.min:this.ir.push(Te.MIN);break;case I.max:this.ir.push(Te.MAX);break;default:return!1}return!0}_compileTernary(e){if(!this._compileNode(e.cond))return!1;this.ir.push(Te.IF,0);const n=this.ir.length-1;if(!this._compileNode(e.then))return!1;this.ir.push(Te.JUMP,0);const s=this.ir.length-1;return this.ir[n]=this.ir.length,this._compileNode(e.otherwise)?(this.ir[s]=this.ir.length,!0):!1}compile(e){const n=new ys().evaluate(e,this.nIn);if(!n||n.length0?l[o-1]=u<>-h:l[o-1]=u;break}case Te.ADD:{const h=l[--o];l[o-1]+=h;break}case Te.SUB:{const h=l[--o];l[o-1]-=h;break}case Te.MUL:{const h=l[--o];l[o-1]*=h;break}case Te.DIV:{const h=l[--o];l[o-1]=h!==0?l[o-1]/h:0;break}case Te.IDIV:{const h=l[--o];l[o-1]=h!==0?Math.trunc(l[o-1]/h):0;break}case Te.MOD:{const h=l[--o];l[o-1]=h!==0?l[o-1]%h:0;break}case Te.POW:{const h=l[--o];l[o-1]**=h;break}case Te.EQ:{const h=l[--o];l[o-1]=l[o-1]===h?1:0;break}case Te.NE:{const h=l[--o];l[o-1]=l[o-1]!==h?1:0;break}case Te.GT:{const h=l[--o];l[o-1]=l[o-1]>h?1:0;break}case Te.GE:{const h=l[--o];l[o-1]=l[o-1]>=h?1:0;break}case Te.LT:{const h=l[--o];l[o-1]=l[o-1]s?1:0;break}case I.ge:{const s=n[--this.#t];n[this.#t-1]=n[this.#t-1]>=s?1:0;break}case I.lt:{const s=n[--this.#t];n[this.#t-1]=n[this.#t-1]0?a<>-s;break}case I.min:{const s=n[--this.#t];n[this.#t-1]=Math.min(n[this.#t-1],s);break}case I.max:{const s=n[--this.#t];n[this.#t-1]=Math.max(n[this.#t-1],s);break}case I.dup:this.#s(n[this.#t-1]);break;case I.exch:{const s=n[--this.#t],a=n[--this.#t];this.#s(s),this.#s(a);break}case I.pop:this.#t--;break;case I.copy:{const s=Math.trunc(n[--this.#t]),a=this.#t-s;for(let i=0;i1&&s!==0){const i=(s%a+a)%a;if(i!==0){const r=this.#t-a,o=n.slice(r,this.#t);for(let f=0;f>1,i=s.length>>1,{instructions:r}=e.body;return(o,f,l,c)=>{this.#t=0;for(let u=0;u=0?this.#e[h+u]:0;l[c+u]=Tt(d,s[u*2],s[u*2+1])}}}}function Ep(t,e,n,s=!1){const a=Ah(t),i=!s&&new Ql(e,n).compile(a);return i?(r,o,f,l)=>{Ql.execute(i,r,o,f,l)}:Hp.build(a,e,n)}const ke={if:4,else:5,end:11,select:27,call:16,local_get:32,local_set:33,local_tee:34,i32_const:65,i32_eqz:69,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_trunc_f64_s:170,f64_const:68,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_convert_i32_s:183,f64_store:57},Zl=96,nn=124,ai={type:1,import:2,function:3,memory:5,export:7,code:10},ec=0,Mp=2;function Ra(t){const e=[];do{let n=t&127;t>>>=7,t!==0&&(n|=128),e.push(n)}while(t!==0);return e}function Jr(t){return[...Ra(t.length),...Bt(t)]}function ii(t,e){return[t,...Ra(e.length),...e]}function Kn(t){const e=Ra(t.length);for(const n of t){if(typeof n=="number"){e.push(n);continue}for(const s of n)e.push(s)}return e}const fi=[["sin","Math","sin",[nn],[nn]],["cos","Math","cos",[nn],[nn]],["atan2","Math","atan2",[nn,nn],[nn]],["log","Math","log",[nn],[nn]],["log10","Math","log10",[nn],[nn]],["pow","Math","pow",[nn,nn],[nn]]],Dp={Math:Object.fromEntries(fi.map(([t])=>[t,Math[t]]))};class Wt{static#e=!1;static#t=null;static#s=null;static#a=0;static#n=0;static#i=null;static#r=null;static#f=null;static#o=null;static#l=null;static#u=null;static#c=null;static#h=null;static#d(){this.#t=new Map([[I.eq,ke.f64_eq],[I.ne,ke.f64_ne],[I.lt,ke.f64_lt],[I.le,ke.f64_le],[I.gt,ke.f64_gt],[I.ge,ke.f64_ge]]),this.#s=Object.create(null);for(let n=0;n[Zl,...Kn(n),...Kn(s)]),this.#r=new Uint8Array(ii(ai.import,Kn(fi.map(([,n,s],a)=>[...Jr(n),...Jr(s),ec,...Ra(a+1)])))),this.#f=new Uint8Array(ii(ai.function,Kn([[0]]))),this.#o=new Uint8Array(ii(ai.memory,Kn([[0,1]]))),this.#l=new Uint8Array(ii(ai.export,Kn([[...Jr("fn"),ec,...Ra(fi.length)],[...Jr("mem"),Mp,0]]))),this.#u=new Uint8Array([0,97,115,109,1,0,0,0]);const e=new ArrayBuffer(8);this.#c=new DataView(e),this.#h=new Uint8Array(e),this.#e=!0}constructor(e,n){Wt.#e||Wt.#d(),this._nIn=e.length>>1,this._nOut=n.length>>1,this._range=n,this._code=[],this._nextLocal=this._nIn,this._freeLocals=[],this._sharedLocals=new Map}_allocLocal(){return this._freeLocals.pop()??this._nextLocal++}_releaseLocal(e){this._freeLocals.push(e)}_emitULEB128(e){do{let n=e&127;e>>>=7,e!==0&&(n|=128),this._code.push(n)}while(e!==0)}_emitSLEB128(e){for(;;){const n=e&127;if(e>>=7,e===0&&(n&64)===0||e===-1&&(n&64)!==0){this._code.push(n);return}this._code.push(n|128)}}_emitF64Const(e){this._code.push(ke.f64_const),Wt.#c.setFloat64(0,e,!0);for(let n=0;n<8;n++)this._code.push(Wt.#h[n])}_emitLocalGet(e){this._code.push(ke.local_get),this._emitULEB128(e)}_emitLocalSet(e){this._code.push(ke.local_set),this._emitULEB128(e)}_emitLocalTee(e){this._code.push(ke.local_tee),this._emitULEB128(e)}_compileNode(e){if(e.shared){const n=this._sharedLocals.get(e);if(n!==void 0)return this._emitLocalGet(n.local),--n.remaining===0&&this._releaseLocal(n.local),!0;if(!this._compileNodeImpl(e))return!1;const s=this._allocLocal();return this._sharedLocals.set(e,{local:s,remaining:e.sharedCount-1}),this._emitLocalTee(s),!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case De.arg:return this._emitLocalGet(e.index),!0;case De.const:{let n=e.value;return typeof n=="boolean"&&(n=n?1:0),this._emitF64Const(n),!0}case De.unary:return this._compileUnaryNode(e);case De.binary:return this._compileBinaryNode(e);case De.ternary:return this._compileTernaryNode(e);default:return!1}}_compileSinCosNode(e){const n=this._allocLocal();try{if(!this._compileNode(e.operand))return!1;const s=this._code;return this._emitLocalSet(n),this._emitLocalGet(n),this._emitLocalGet(n),this._emitF64Const(360),s.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(360),s.push(ke.f64_mul,ke.f64_sub),this._emitF64Const(Wt.#a),s.push(ke.f64_mul,ke.call),this._emitULEB128(Wt.#s[e.op===I.sin?"sin":"cos"]),!0}finally{this._releaseLocal(n)}}_compileUnaryNode(e){const n=this._code;if(e.op===I.sin||e.op===I.cos)return this._compileSinCosNode(e);if(e.op===I.not)return e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e.operand)?(n.push(ke.i32_eqz,ke.f64_convert_i32_s),!0):!1:e.valueType===Pt.numeric&&this._compileNode(e.operand)?(n.push(ke.i32_trunc_f64_s,ke.i32_const,127,ke.i32_xor,ke.f64_convert_i32_s),!0):!1;if(!this._compileNode(e.operand))return!1;switch(e.op){case I.abs:n.push(ke.f64_abs);break;case I.neg:n.push(ke.f64_neg);break;case I.sqrt:n.push(ke.f64_sqrt);break;case I.floor:n.push(ke.f64_floor);break;case I.ceiling:n.push(ke.f64_ceil);break;case I.round:this._emitF64Const(.5),n.push(ke.f64_add,ke.f64_floor);break;case I.truncate:n.push(ke.f64_trunc);break;case I.cvi:n.push(ke.i32_trunc_f64_s,ke.f64_convert_i32_s);break;case I.cvr:break;case I.ln:n.push(ke.call),this._emitULEB128(Wt.#s.log);break;case I.log:n.push(ke.call),this._emitULEB128(Wt.#s.log10);break;default:return!1}return!0}_compileSafeDivNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return this._emitLocalTee(s),a.push(ke.f64_div),this._emitF64Const(0),this._emitLocalGet(s),this._emitF64Const(0),a.push(ke.f64_ne,ke.select),!0}finally{this._releaseLocal(s)}}_compileSafeIdivNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return this._emitLocalTee(s),a.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(0),this._emitLocalGet(s),this._emitF64Const(0),a.push(ke.f64_ne,ke.select),!0}finally{this._releaseLocal(s)}}_compileBitshiftNode(e,n){if(e.type!==De.const||!Number.isInteger(e.value)||!this._compileNode(n))return!1;const s=this._code;s.push(ke.i32_trunc_f64_s);const a=e.value;return a>0?(s.push(ke.i32_const),this._emitSLEB128(a),s.push(ke.i32_shl)):a<0&&(s.push(ke.i32_const),this._emitSLEB128(-a),s.push(ke.i32_shr_s)),s.push(ke.f64_convert_i32_s),!0}_compileModNode(e,n){if(e.type===De.const&&e.value===0)return this._compileNode(n)?(this._code.push(ke.drop),this._emitF64Const(0),!0):!1;const s=this._allocLocal();try{if(!this._compileNode(n))return!1;this._emitLocalTee(s);const a=this._code;if(e.type===De.const)this._emitLocalGet(s),this._emitF64Const(e.value),a.push(ke.f64_div,ke.f64_trunc),this._emitF64Const(e.value),a.push(ke.f64_mul,ke.f64_sub);else{const i=this._allocLocal();try{if(!this._compileNode(e))return!1;this._emitLocalSet(i),this._emitLocalGet(s),this._emitLocalGet(i),a.push(ke.f64_div,ke.f64_trunc),this._emitLocalGet(i),a.push(ke.f64_mul,ke.f64_sub),this._emitF64Const(0),this._emitLocalGet(i),this._emitF64Const(0),a.push(ke.f64_ne,ke.select)}finally{this._releaseLocal(i)}}return!0}finally{this._releaseLocal(s)}}_compileAtanNode(e,n){const s=this._allocLocal();try{if(!this._compileNode(n)||!this._compileNode(e))return!1;const a=this._code;return a.push(ke.call),this._emitULEB128(Wt.#s.atan2),this._emitF64Const(Wt.#n),a.push(ke.f64_mul),this._emitLocalTee(s),this._emitF64Const(0),a.push(ke.f64_lt,ke.if,nn),this._emitLocalGet(s),this._emitF64Const(360),a.push(ke.f64_add,ke.else),this._emitLocalGet(s),a.push(ke.end),!0}finally{this._releaseLocal(s)}}_compileBitwiseNode(e,n,s){if(!this._compileBitwiseOperandI32(s)||!this._compileBitwiseOperandI32(n))return!1;const a=this._code;switch(e){case I.and:a.push(ke.i32_and);break;case I.or:a.push(ke.i32_or);break;case I.xor:a.push(ke.i32_xor);break;default:return!1}return a.push(ke.f64_convert_i32_s),!0}_compileBitwiseOperandI32(e){return e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e):this._compileNode(e)?(this._code.push(ke.i32_trunc_f64_s),!0):!1}_compileStandardBinaryNode(e,n,s){if(n===s&&n.type!==De.arg&&n.type!==De.const&&!n.shared){const i=this._allocLocal();try{if(!this._compileNode(n))return!1;this._emitLocalTee(i),this._emitLocalGet(i)}finally{this._releaseLocal(i)}}else if(!this._compileNode(s)||!this._compileNode(n))return!1;const a=this._code;switch(e){case I.add:a.push(ke.f64_add);break;case I.sub:a.push(ke.f64_sub);break;case I.mul:a.push(ke.f64_mul);break;case I.exp:a.push(ke.call),this._emitULEB128(Wt.#s.pow);break;case I.eq:a.push(ke.f64_eq,ke.f64_convert_i32_s);break;case I.ne:a.push(ke.f64_ne,ke.f64_convert_i32_s);break;case I.lt:a.push(ke.f64_lt,ke.f64_convert_i32_s);break;case I.le:a.push(ke.f64_le,ke.f64_convert_i32_s);break;case I.gt:a.push(ke.f64_gt,ke.f64_convert_i32_s);break;case I.ge:a.push(ke.f64_ge,ke.f64_convert_i32_s);break;case I.min:a.push(ke.f64_min);break;case I.max:a.push(ke.f64_max);break;default:return!1}return!0}_compileBinaryNode(e){const{op:n,first:s,second:a}=e;return n===I.bitshift?this._compileBitshiftNode(s,a):n===I.div?this._compileSafeDivNode(s,a):n===I.idiv?this._compileSafeIdivNode(s,a):n===I.mod?this._compileModNode(s,a):n===I.atan?this._compileAtanNode(s,a):n===I.and||n===I.or||n===I.xor?this._compileBitwiseNode(n,s,a):this._compileStandardBinaryNode(n,s,a)}_compileNodeAsBoolI32(e){if(e.type===De.binary){const n=Wt.#t.get(e.op);if(n!==void 0)return!this._compileNode(e.second)||!this._compileNode(e.first)?!1:(this._code.push(n),!0);if(e.valueType===Pt.boolean&&(e.op===I.and||e.op===I.or||e.op===I.xor)){if(!this._compileNodeAsBoolI32(e.second)||!this._compileNodeAsBoolI32(e.first))return!1;switch(e.op){case I.and:this._code.push(ke.i32_and);break;case I.or:this._code.push(ke.i32_or);break;case I.xor:this._code.push(ke.i32_xor);break}return!0}}return e.type===De.unary&&e.op===I.not&&e.valueType===Pt.boolean?this._compileNodeAsBoolI32(e.operand)?(this._code.push(ke.i32_eqz),!0):!1:this._compileNode(e)?(e.valueType===Pt.boolean?this._code.push(ke.i32_trunc_f64_s):(this._emitF64Const(0),this._code.push(ke.f64_ne)),!0):!1}_compileTernaryNode(e){return!this._compileNodeAsBoolI32(e.cond)||(this._code.push(ke.if,nn),!this._compileNode(e.then))||(this._code.push(ke.else),!this._compileNode(e.otherwise))?!1:(this._code.push(ke.end),!0)}compile(e){const n=new ys().evaluate(e,this._nIn);if(!n||n.length0?Kn([[...Ra(i),nn]]):Kn([]),h=c.length+s.length,u=new Uint8Array(ii(ai.code,Kn([[...Ra(h),...c,...s]]))),d=Wt.#u,p=Wt.#r,m=Wt.#f,b=Wt.#o,w=Wt.#l,x=d.length+l.length+p.length+m.length+b.length+w.length+u.length,j=new Uint8Array(x);let k=0;return j.set(d,k),k+=d.length,j.set(l,k),k+=l.length,j.set(p,k),k+=p.length,j.set(m,k),k+=m.length,j.set(b,k),k+=b.length,j.set(w,k),k+=w.length,j.set(u,k),j}}function _p(t,e,n){return new Wt(e,n).compile(Ah(t))}function Pp(t,e,n){const{fn:s,mem:a}=t,i=new Float64Array(a.buffer,0,n);let r;switch(n){case 1:r=(o,f)=>{o[f]=i[0]};break;case 2:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1]};break;case 3:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1],o[f+2]=i[2]};break;case 4:r=(o,f)=>{o[f]=i[0],o[f+1]=i[1],o[f+2]=i[2],o[f+3]=i[3]};break;default:r=(o,f)=>{for(let l=0;l{s(o[f]),r(l,c)};case 2:return(o,f,l,c)=>{s(o[f],o[f+1]),r(l,c)};case 3:return(o,f,l,c)=>{s(o[f],o[f+1],o[f+2]),r(l,c)};case 4:return(o,f,l,c)=>{s(o[f],o[f+1],o[f+2],o[f+3]),r(l,c)};default:{const o=new Float64Array(e);return(f,l,c,h)=>{for(let u=0;u>1,n.length>>1)}catch{return null}}class Ka{constructor(e){this._onlyRefs=e?.onlyRefs===!0,this._onlyRefs||(this._nameRefMap=new Map,this._imageMap=new Map),this._imageCache=new $t}getByName(e){this._onlyRefs&&st("Should not call `getByName` method.");const n=this._nameRefMap.get(e);return n?this.getByRef(n):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,n,s){st("Abstract method `set` called.")}}class tc extends Ka{set(e,n=null,s){if(typeof e!="string")throw new Error('LocalImageCache.set - expected "name" argument.');if(n){if(this._imageCache.has(n))return;this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Ch extends Ka{set(e=null,n=null,s){if(typeof e!="string"&&!n)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(n){if(this._imageCache.has(n))return;e!==null&&this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Op extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class nc extends Ka{set(e,n=null,s){if(typeof e!="string")throw new Error('LocalGStateCache.set - expected "name" argument.');if(n){if(this._imageCache.has(n))return;this._nameRefMap.set(e,n),this._imageCache.put(n,s);return}this._imageMap.has(e)||this._imageMap.set(e,s)}}class Lp extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class zp extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}}class Up extends Ka{constructor(e){super({onlyRefs:!0})}set(e=null,n,s){if(!n)throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.');this._imageCache.has(n)||this._imageCache.put(n,s)}clear(){this._imageCache.clear()}}class hi{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#e=new bt;constructor(){this._refCache=new $t,this._imageCache=new $t}get#t(){let e=0;for(const n of this._imageCache)e+=n.byteSize;return e}get#s(){return!(this._imageCache.size+e):null}class sc{static getSampleArray(e,n,s,a){let i=n;for(const u of e)i*=u;const r=new Array(i);let o=0,f=0;const l=1/(2**s-1),c=a.getBytes((i*s+7)/8);let h=0;for(let u=0;u>o)*l,f&=(1<0?o[w-1]:s[0],j=w10){H("Visibility expression is too deeply nested");return}const i=e.length,r=t.fetchIfRef(e[0]);if(i<2||!(r instanceof J)){H("Invalid visibility expression");return}switch(r.name){case"And":case"Or":case"Not":s.push(r.name);break;default:H(`Invalid operator ${r.name} in visibility expression`);return}for(let o=1;o0)return{type:"OCMD",expression:o}}const r=s.get("OCGs");if(Array.isArray(r)||r instanceof B){const o=[];if(Array.isArray(r))for(const l of r)o.push(l.toString());else o.push(r.objId);const f=s.get("P");return{type:a,ids:o,policy:f instanceof J?f.name:null,expression:null}}else if(r instanceof Q)return{type:a,id:r.toString()}}return null}const Gp=["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"],Wp=["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 ic(t){return(t&1)!==0}function Kp(t){return(t&1)===0}function Vp(t,e,n){let s,a;for(s=e,a=t.length;s4?(s=!0,e=0):(s=!1,e=1));const f=[];for(r=0;r=0&&pt[w]==="ET";--w)pt[w]="EN";for(let w=r+1;w=0;k--){const y=pt[k];if(y==="L"){x="L";break}if(y==="R"||y==="EN"||y==="AN"){x="R";break}}let j=h;for(let k=w;kb&&ic(b)&&(m=b);for(b=p;b>=m;--b){let w=-1;for(r=0,o=f.length;r=0&&(rc(Ys,w,r),w=-1):w<0&&(w=r);w>=0&&rc(Ys,w,f.length)}for(r=0,o=Ys.length;r")&&(Ys[r]="")}return ko(Ys.join(""),s)}const mn={style:"normal",weight:"normal"},Zr={style:"normal",weight:"500"},Ds={style:"normal",weight:"bold"},Ta={style:"italic",weight:"normal"},Ba={style:"italic",weight:"bold"},ar=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","Linux Libertine O","Libertinus Serif","PT Astra Serif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:mn,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:Ds,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:Ta,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:Ba,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:mn,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:Ds,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:Ta,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:Ba,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono","Linux Libertine Mono O","Libertinus Mono"],style:mn,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:Ds,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:Ta,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:Ba,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:mn,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:Ds,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:Ta,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:Ba,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:mn,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:Ds,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:Ta,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:Ba,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:mn}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}],["ËÎÌå",{local:["SimSun","SimSun Regular","NSimSun"],style:mn,ultimate:"serif"}],["ºÚÌå",{local:["SimHei","SimHei Regular"],style:mn,ultimate:"sans-serif"}],["¿¬Ìå",{local:["KaiTi","SimKai","SimKai Regular"],style:mn,ultimate:"sans-serif"}],["·ÂËÎ",{local:["FangSong","SimFang","SimFang Regular"],style:mn,ultimate:"serif"}],["¿¬Ìå_GB2312",{alias:"¿¬Ìå"}],["·ÂËÎ_GB2312",{alias:"·ÂËÎ"}],["Á¥Êé",{local:["SimLi","SimLi Regular"],style:mn,ultimate:"serif"}],["ÐÂËÎ",{alias:"ËÎÌå"}],["HeiseiMin-W3",{local:["Hiragino Mincho ProN","Hiragino Mincho Pro","Yu Mincho","YuMincho","Source Han Serif JP","Noto Serif JP","Noto Serif CJK JP","IPAexMincho","IPAMincho","Takao Mincho","MS Mincho","MS PMincho"],style:mn,ultimate:"serif"}],["HeiseiKakuGo-W5",{local:["Hiragino Kaku Gothic ProN","Hiragino Kaku Gothic Pro","Hiragino Sans","Yu Gothic","YuGothic","Source Han Sans JP","Noto Sans JP","Noto Sans CJK JP","IPAexGothic","IPAGothic","Takao Gothic","Meiryo","MS Gothic","MS PGothic"],style:Zr,ultimate:"sans-serif"}],["HeiseiMin-W3-Acro",{alias:"HeiseiMin-W3"}],["HeiseiKakuGo-W5-Acro",{alias:"HeiseiKakuGo-W5"}],["KozMinPro-Regular",{alias:"HeiseiMin-W3"}],["KozMinProVI-Regular",{alias:"HeiseiMin-W3"}],["KozMinPr6N-Regular",{alias:"HeiseiMin-W3"}],["KozGoPro-Regular",{alias:"HeiseiKakuGo-W5"}],["KozGoProVI-Regular",{alias:"HeiseiKakuGo-W5"}],["KozGoPr6N-Regular",{alias:"HeiseiKakuGo-W5"}],["STSong-Light",{local:["STSong","Songti SC","Source Han Serif SC","Source Han Serif CN","Noto Serif SC","Noto Serif CJK SC","AR PL UMing CN","SimSun","NSimSun"],style:mn,ultimate:"serif"}],["STHeiti-Regular",{local:["STHeiti","Heiti SC","PingFang SC","Source Han Sans SC","Source Han Sans CN","Noto Sans SC","Noto Sans CJK SC","Microsoft YaHei","SimHei","WenQuanYi Zen Hei"],style:mn,ultimate:"sans-serif"}],["STSongStd-Light",{alias:"STSong-Light"}],["AdobeSongStd-Light",{alias:"STSong-Light"}],["AdobeHeitiStd-Regular",{alias:"STHeiti-Regular"}],["AdobeKaitiStd-Regular",{alias:"¿¬Ìå"}],["AdobeFangsongStd-Regular",{alias:"·ÂËÎ"}],["MSung-Light",{local:["Songti TC","LiSong Pro","Source Han Serif TC","Source Han Serif TW","Noto Serif TC","Noto Serif CJK TC","AR PL UMing TW","PMingLiU","MingLiU","MingLiU_HKSCS"],style:mn,ultimate:"serif"}],["MHei-Medium",{local:["Heiti TC","STHeiti","Source Han Sans TC","Source Han Sans TW","Noto Sans TC","Noto Sans CJK TC","PingFang TC","Microsoft JhengHei"],style:Zr,ultimate:"sans-serif"}],["MSungStd-Light",{alias:"MSung-Light"}],["AdobeMingStd-Light",{alias:"MSung-Light"}],["HYSMyeongJo-Medium",{local:["AppleMyungjo","Source Han Serif KR","Noto Serif KR","Noto Serif CJK KR","Nanum Myeongjo","Batang"],style:Zr,ultimate:"serif"}],["HYGoThic-Medium",{local:["Apple SD Gothic Neo","AppleGothic","Source Han Sans KR","Noto Sans KR","Noto Sans CJK KR","Nanum Gothic","Malgun Gothic","Dotum","Gulim"],style:Zr,ultimate:"sans-serif"}],["HYSMyeongJoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["AdobeMyungjoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["HYGoThic-Bold",{alias:"HYGoThic-Medium",style:Ds}],["AdobeGothicStd-Bold",{alias:"HYGoThic-Medium",style:Ds}]]),$p=new Map([["Arial-Black","ArialBlack"]]);function Xp(t){switch(t){case Ds:return"Bold";case Ta:return"Italic";case Ba:return"Bold Italic";default:if(t?.weight==="bold")return"Bold";if(t?.style==="italic")return"Italic"}return""}function oc(t){const e=new Set(["thin","extralight","ultralight","demilight","semilight","light","book","regular","normal","medium","demibold","semibold","bold","extrabold","ultrabold","black","heavy","extrablack","ultrablack","roman","italic","oblique","ultracondensed","extracondensed","condensed","semicondensed","normal","semiexpanded","expanded","extraexpanded","ultraexpanded","bolditalic"]);return t.split(/[- ,+]+/g).filter(n=>!e.has(n.toLowerCase())).join(" ")}function af({alias:t,local:e,path:n,fallback:s,style:a,ultimate:i},r,o,f=!0,l=!0,c=""){const h={style:null,ultimate:null};if(e){const u=c?` ${c}`:"";for(const d of e)r.push(`local(${d}${u})`)}if(t){const u=ar.get(t),d=c||Xp(a);Object.assign(h,af(u,r,o,f&&!s,l&&!n,d))}if(a&&(h.style=a),i&&(h.ultimate=i),f&&s){const u=ar.get(s),{ultimate:d}=af(u,r,o,f,l&&!n,c);h.ultimate||=d}return l&&n&&o&&r.push(`url(${o}${n})`),h}function yo(t,e,n,s,a,i){if(s.startsWith("InvalidPDFjsFont_"))return null;(i==="TrueType"||i==="Type1")&&/^[A-Z]{6}\+/.test(s)&&(s=s.slice(7)),s=ma(s);const r=s;let o=t.get(r);if(o)return o;let f=ar.get(s);if(!f){for(const[b,w]of $p)if(s.startsWith(b)){s=`${w}${s.substring(b.length)}`,f=ar.get(s);break}}let l=!1;f||(f=ar.get(a),l=!0);const c=`${e.getDocId()}_s${e.createFontId()}`;if(!f){if(!Wo(s))return H(`Cannot substitute the font because of its name: ${s}`),t.set(r,null),null;const b=/bold/i.test(s),w=/oblique|italic/i.test(s),x=b&&w&&Ba||b&&Ds||w&&Ta||mn;return o={css:`"${oc(s)}",${c}`,guessFallback:!0,loadedName:c,baseFontName:s,src:`local(${s})`,style:x},t.set(r,o),o}const h=[];l&&Wo(s)&&h.push(`local(${s})`);const{style:u,ultimate:d}=af(f,h,n),p=d===null,m=p?"":`,${d}`;return o={css:`"${oc(s)}",${c}${m}`,guessFallback:p,loadedName:c,baseFontName:s,src:h.join(","),style:u},t.set(r,o),o}const fc=3285377520,$n=4294901760,ks=65535;class Fh{constructor(e){this.h1=e?e&4294967295:fc,this.h2=e?e&4294967295:fc}update(e){let n,s;if(typeof e=="string"){n=new Uint8Array(e.length*2),s=0;for(let m=0,b=e.length;m>>8,n[s++]=w&255)}}else if(ArrayBuffer.isView(e))n=e.slice(),s=n.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const a=s>>2,i=s-a*4,r=new Uint32Array(n.buffer,0,a);let o=0,f=0,l=this.h1,c=this.h2;const h=3432918353,u=461845907,d=h&ks,p=u&ks;for(let m=0;m>>17,o=o*u&$n|o*p&ks,l^=o,l=l<<13|l>>>19,l=l*5+3864292196):(f=r[m],f=f*h&$n|f*d&ks,f=f<<15|f>>>17,f=f*u&$n|f*p&ks,c^=f,c=c<<13|c>>>19,c=c*5+3864292196);switch(o=0,i){case 3:o^=n[a*4+2]<<16;case 2:o^=n[a*4+1]<<8;case 1:o^=n[a*4],o=o*h&$n|o*d&ks,o=o<<15|o>>>17,o=o*u&$n|o*p&ks,a&1?l^=o:c^=o}this.h1=l,this.h2=c}hexdigest(){let e=this.h1,n=this.h2;return e^=n>>>1,e=e*3981806797&$n|e*36045&ks,n=n*4283543511&$n|((n<<16|e>>>16)*2950163797&$n)>>>16,e^=n>>>1,e=e*444984403&$n|e*60499&ks,n=n*3301882366&$n|((n<<16|e>>>16)*3120437893&$n)>>>16,e^=n>>>1,(e>>>0).toString(16).padStart(8,"0")+(n>>>0).toString(16).padStart(8,"0")}}class qs{constructor({xref:e,res:n,image:s,isInline:a=!1,smask:i=null,mask:r=null,isMask:o=!1,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c}){this.image=s;const h=s.dict,u=h.get("F","Filter");let d;if(u instanceof J)d=u.name;else if(Array.isArray(u)){const w=e.fetchIfRef(u[0]);w instanceof J&&(d=w.name)}switch(d){case"JPXDecode":({width:s.width,height:s.height,componentsCount:s.numComps,bitsPerComponent:s.bitsPerComponent}=z0.parseImageProperties(s.stream)),s.stream.reset();const w=vn.getReducePowerForJPX(s.width,s.height,s.numComps);if(this.jpxDecoderOptions={numComponents:0,isIndexedColormap:!1,smaskInData:h.get("SMaskInData")>=1,reducePower:w},w){const x=2**w;s.width=Math.ceil(s.width/x),s.height=Math.ceil(s.height/x)}break;case"JBIG2Decode":s.bitsPerComponent=1,s.numComps=1;break}let p=h.get("W","Width"),m=h.get("H","Height");if(Number.isInteger(s.width)&&s.width>0&&Number.isInteger(s.height)&&s.height>0&&(s.width!==p||s.height!==m))H("PDFImage - using the Width/Height of the image data, rather than the image dictionary."),p=s.width,m=s.height;else{const w=typeof p=="number"&&p>0,x=typeof m=="number"&&m>0;if(!w||!x){if(!s.fallbackDims)throw new Y(`Invalid image width: ${p} or height: ${m}`);H("PDFImage - using the Width/Height of the parent image, for SMask/Mask data."),w||(p=s.fallbackDims.width),x||(m=s.fallbackDims.height)}}this.width=p,this.height=m,this.interpolate=h.get("I","Interpolate"),this.imageMask=h.get("IM","ImageMask")||!1,this.matte=h.get("Matte")||!1;let b=s.bitsPerComponent;if(!b&&(b=h.get("BPC","BitsPerComponent"),!b))if(this.imageMask)b=1;else throw new Y(`Bits per component missing in image: ${this.imageMask}`);if(this.bpc=b,this.imageMask)this.numComps=1;else{let w=h.getRaw("CS")||h.getRaw("ColorSpace");const x=!!w;if(this.jpxDecoderOptions?.smaskInData&&h.get("SMaskInData")===2&&(this.jpxPremultiplied=!0,this.matte)){const j=ht.parse({cs:x?w:J.get("DeviceRGB"),xref:e,resources:a?n:null,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c});this.preblendMatte=j.getRgb(this.matte,0)}if(x)this.jpxDecoderOptions?.smaskInData&&(w=J.get("DeviceRGBA"));else if(this.jpxDecoderOptions)w=J.get("DeviceRGBA");else switch(s.numComps){case 1:w=J.get("DeviceGray");break;case 3:w=J.get("DeviceRGB");break;case 4:w=J.get("DeviceCMYK");break;default:throw new Error(`Images with ${s.numComps} color components not supported.`)}this.colorSpace=ht.parse({cs:w,xref:e,resources:a?n:null,pdfFunctionFactory:f,globalColorSpaceCache:l,localColorSpaceCache:c}),this.numComps=this.colorSpace.numComps,this.jpxDecoderOptions&&(this.jpxDecoderOptions.numComponents=x?this.numComps:0,this.jpxDecoderOptions.isIndexedColormap=this.colorSpace.name==="Indexed")}if(this.decode=h.getArray("D","Decode"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,b)||o&&!on.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const w=(1<0,l=(a+7>>3)*i,c=await e.getImageData(l),h=a===1&&i===1&&f===(c.length===0||!!(c[0]&128));if(h)return{isSingleOpaquePixel:h};if(n){if(vn.needsToBeResized(a,i)){const j=new Uint8ClampedArray(a*i*4);return Vo({src:c,dest:j,width:a,height:i,nonBlackColor:0,inverseDecode:f}),vn.createImage({kind:sn.RGBA_32BPP,data:j,width:a,height:i,interpolate:r})}const m=new OffscreenCanvas(a,i),b=m.getContext("2d"),w=b.createImageData(a,i);Vo({src:c,dest:w.data,width:a,height:i,nonBlackColor:0,inverseDecode:f}),b.putImageData(w,0,0);const x=m.transferToImageBitmap();return{data:null,width:a,height:i,interpolate:r,bitmap:x}}const u=c.byteLength,d=l===u;let p;if(e instanceof jn&&(!f||d)?p=c:f?(p=new Uint8Array(l),p.set(c),p.fill(255,u)):p=new Uint8Array(c),f)for(let m=0;m>7&1,f[h+1]=d>>6&1,f[h+2]=d>>5&1,f[h+3]=d>>4&1,f[h+4]=d>>3&1,f[h+5]=d>>2&1,f[h+6]=d>>1&1,f[h+7]=d&1,h+=8;if(h>=1}}else{let p=0;for(d=0,h=0,u=r;h>m,0,c),d&=(1<this.smask.fillGrayBuffer(o,{...f,destWidth:n,destHeight:s});else if(this.mask)if(this.mask instanceof qs)r=(o,f)=>this.mask.fillGrayBuffer(o,{...f,invertOutput:!0,destWidth:n,destHeight:s});else if(Array.isArray(this.mask))r=(o,{maxRows:f,offset:l,stride:c})=>{for(let h=0,u=n*f;hthis.mask[w+1]){d=255;break}}o[h*c+l]=d}};else throw new Y("Unknown mask format.");else r=(o,{maxRows:f,offset:l,stride:c})=>{for(let h=0,u=n*f;h>3,h=n&&vn.needsToBeResized(s,a);if(!this.smask&&!this.mask&&this.colorSpace.name==="DeviceRGBA"){i.kind=sn.RGBA_32BPP;const y=i.data=await this.getImageBytes(f*o*4,{internal:n&&h});if(this.jpxPremultiplied){const q=this.preblendMatte;qs.#e(y,y.length,q?.[0]??0,q?.[1]??0,q?.[2]??0)}return n?h?vn.createImage(i,!1):this.createBitmap(sn.RGBA_32BPP,s,a,y):i}if(!e&&!this.smask&&!this.mask){let y;if(this.colorSpace.name==="DeviceGray"&&l===1?y=sn.GRAYSCALE_1BPP:this.colorSpace.name==="DeviceRGB"&&l===8&&!this.needsDecode&&(y=sn.RGB_24BPP),y&&s===o&&a===f){const q=await this.#t(o,f);if(q)return q;const v=await this.getImageBytes(f*c,{internal:n&&h});if(n)return h?vn.createImage({data:v,kind:y,width:s,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(y,o,f,v);if(i.kind=y,i.data=v,this.needsDecode){Ct(y===sn.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const A=i.data;for(let S=0,F=A.length;S>3,d=await this.getImageBytes(c*u,{internal:!0}),p=this.getComponents(d),m=n??l,b=s??c,w=m!==l||b!==c,x=i===void 0?b:Math.min(b,i);let j=l,k=0,y=null;if(w){j=m,k=c/b;const A=l/m;y=new Uint32Array(m);for(let S=0;S0&&s[0].count++}class yr{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){return++this.checked!isFinite(k))&&(u=null);let d,p;l.has("OC")&&(d=await this.parseMarkedContentProps(l.get("OC"),e)),d!==void 0&&a.addOp(C.beginMarkedContentProps,["OC",d]);const m=l.get("Group");let b;const x=[c&&new Float32Array(c),!m&&u||null],j=l.get("Resources");if(m){p={matrix:c,bbox:u,smask:s,isolated:!1,knockout:!1,needsIsolation:!1,hasSoftMask:!1,isGray:!1};const k=m.get("S");let y=null;if(ze(k,"Transparency")&&(p.isolated=m.get("I")||!1,p.knockout=m.get("K")||!1,m.has("CS"))){const q=this._getColorSpace(m.getRaw("CS"),e,o);y=q instanceof on?q:await this._handleColorSpace(q)}p.isGray=y?.numComps===1,s?.backdrop?(y||=ht.rgb,s.backdrop=y.getRgbHex(s.backdrop,0)):s?.subtype==="Luminosity"&&(s.backdrop="#000000"),b=new jl}else b=a,a.addOp(C.paintFormXObjectBegin,x);await this.getOperatorList({stream:n,task:i,resources:j instanceof B?j:e,operatorList:b,initialState:r,prevRefs:f}),m?(p.needsIsolation=b.needsIsolation||!!s,p.hasSoftMask=b.hasSoftMask||!!s,a.addOp(C.beginGroup,[p]),a.addOp(C.paintFormXObjectBegin,x),a.addOpList(b),a.addOp(C.paintFormXObjectEnd,[]),a.addOp(C.endGroup,[p])):a.addOp(C.paintFormXObjectEnd,[]),d!==void 0&&a.addOp(C.endMarkedContent,[])}_sendImgData(e,n,s=!1){const a=n?[n.bitmap||n.data.buffer]:null;return this.parsingType3Font||s?this.handler.send("commonobj",[e,"Image",n],a):this.handler.send("obj",[e,this.pageIndex,"Image",n],a)}async buildPaintImageXObject({resources:e,image:n,isInline:s=!1,operatorList:a,cacheKey:i,localImageCache:r,localColorSpaceCache:o}){const{maxImageSize:f,ignoreErrors:l,isOffscreenCanvasSupported:c}=this.options,{dict:h}=n,u=h.objId,d=h.get("W","Width"),p=h.get("H","Height");if(!(d&&typeof d=="number")||!(p&&typeof p=="number")){H("Image dimensions are missing, or not numbers.");return}if(f!==-1&&d*p>f){const S="Image exceeded maximum allowed size and was removed.";if(!l)throw new Error(S);H(S);return}let m;h.has("OC")&&(m=await this.parseMarkedContentProps(h.get("OC"),e));const b=h.get("IM","ImageMask")||!1;let w,x,j;if(b){if(w=await qs.createMask({image:n,isOffscreenCanvasSupported:c&&!this.parsingType3Font}),w.isSingleOpaquePixel){if(x=C.paintSolidColorImageMask,j=[],a.addImageOps(x,j,m),i){const F={fn:x,args:j,optionalContent:m};r.set(i,u,F),u&&this._regionalImageCache.set(null,u,F)}return}if(this.parsingType3Font){if(j=Nd(w),j){a.addImageOps(C.constructPath,j,m);return}H("Cannot compile Type3 glyph."),a.addImageOps(C.paintImageMaskXObject,[w],m);return}const S=`mask_${this.idFactory.createObjId()}`;if(a.addDependency(S),w.dataLen=w.bitmap?w.width*w.height*4:w.data.length,this._sendImgData(S,w),x=C.paintImageMaskXObject,j=[{data:S,width:w.width,height:w.height,interpolate:w.interpolate,count:1}],a.addImageOps(x,j,m),i){const F={objId:S,fn:x,args:j,optionalContent:m};r.set(i,u,F),u&&this._regionalImageCache.set(null,u,F)}return}const k=200,y=h.has("SMask")||h.has("Mask");if(s&&d+p25e4||y){const S=await this.handler.sendWithPromise("commonobj",[q,"CopyLocalImage",{imageRef:u}]);if(S){this.globalImageCache.setData(u,A),this.globalImageCache.addByteSize(u,S);return}}}if(qs.buildImage({xref:this.xref,res:e,image:n,isInline:s,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:o}).then(async S=>(w=await S.createImageData(!1,c),w.dataLen=w.bitmap?w.width*w.height*4:w.data.length,w.ref=u,v&&this.globalImageCache.addByteSize(u,w.dataLen),this._sendImgData(q,w,v))).catch(S=>(H(`Unable to decode image "${q}": "${S}".`),u&&this.globalImageCache.addDecodeFailed(u),this._sendImgData(q,null,v))),i){const S={objId:q,fn:x,args:j,optionalContent:m,hasMask:y};r.set(i,u,S),u&&(this._regionalImageCache.set(null,u,S),v&&(Ct(A,"The global cache-data must be available."),this.globalImageCache.setData(u,A)))}}#e(e){const n=this._pdfFunctionFactory.create(e),s=new Float32Array(1);return Uint8Array.from({length:256},(a,i)=>(s[0]=i/255,n(s,0,s,0),s[0]*255|0))}handleSMask(e,n,s,a,i,r,o){const f=e.get("G"),l={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");return jo(c)&&(l.transferMap=this.#e(c)),this.buildFormXObject(n,f,l,s,a,i.state.clone({newPath:!0}),r,o)}handleTransferFunction(e){let n;if(Array.isArray(e))n=e.length>1&&e.every(r=>r===e[0])?[e[0]]:e;else if(jo(e))n=[e];else return null;const s=[];let a=0,i=0;for(const r of n){const o=this.xref.fetchIfRef(r);if(a++,ze(o,"Identity")){s.push(null);continue}else if(!jo(o))return null;s.push(this.#e(o)),i++}return!(a===1||a===4)||i===0?null:s}handleTilingType(e,n,s,a,i,r,o,f,l){const c=new jl,h=B.merge({xref:this.xref,dictArray:[i.get("Resources"),s]});return this.getOperatorList({stream:a,task:o,resources:h,operatorList:c,prevRefs:l}).then(function(){const u=c.getIR(),{needsIsolation:d}=c,p=yl(u,i,n,d);r.addDependencies(c.dependencies),r.addOp(e,p),i.objId&&f.set(null,i.objId,{operatorListIR:u,needsIsolation:d,dict:i})}).catch(u=>{if(!(u instanceof fn)){if(this.options.ignoreErrors){H(`handleTilingType - ignoring pattern: "${u}".`);return}throw u}})}async handleSetFont(e,n,s,a,i,r,o=null,f=null,l=null){const c=n?.[0]instanceof J?n[0].name:null,h=await this.loadFont(c,s,e,i,o,f,l);return h.font.isType3Font&&a.addDependencies(h.type3Dependencies),r.font=h.font,h.send(this.handler),h.loadedName}handleText(e,n){const s=n.font,a=s.charsToGlyphs(e);return s.data&&(n.textRenderingMode&Dc.ADD_TO_PATH_FLAG||n.fillColorSpace.name==="Pattern"||n.strokeColorSpace.name==="Pattern"||s.disableFontFace)&&yi.buildFontPaths(s,a,this.handler,this.options),a}ensureStateFont(e){if(e.font)return;const n=new Y("Missing setFont (Tf) operator before text rendering operator.");if(this.options.ignoreErrors){H(`ensureStateFont: "${n}".`);return}throw n}async setGState({resources:e,gState:n,operatorList:s,cacheKey:a,task:i,stateManager:r,localGStateCache:o,localColorSpaceCache:f,seenRefs:l}){const c=n.objId;let h=!0;const u=[];let d=Promise.resolve();for(const[p,m]of n)switch(p){case"Type":break;case"LW":if(typeof m!="number"){H(`Invalid LW (line width): ${m}`);break}u.push([p,Math.abs(m)]);break;case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":u.push([p,m]);break;case"Font":h=!1,d=d.then(()=>this.handleSetFont(e,null,m[0],s,i,r.state,null,null,l).then(function(b){s.addDependency(b),u.push([p,[b,m[1]]])}));break;case"BM":u.push([p,Rh(m)]);break;case"SMask":if(ze(m,"None")){u.push([p,!1]);break}m instanceof B?(h=!1,d=d.then(()=>this.handleSMask(m,e,s,i,r,f,l)),u.push([p,!0])):H("Unsupported SMask type");break;case"TR":if(n.has("TR2"))break;case"TR2":{const b=this.handleTransferFunction(m);u.push(["TR",b]);break}case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"HT":case"SM":case"SA":case"AIS":case"TK":ut("graphic state operator "+p);break;default:ut("Unknown graphic state operator "+p);break}await d,u.length>0&&s.addOp(C.setGState,[u]),h&&o.set(a,c,u)}loadFont(e,n,s,a,i=null,r=null,o=null){const f=async()=>new vo({loadedName:"g_font_error",font:new Yl(`Font "${e}" is not available.`),dict:n});let l;if(n)n instanceof Q&&(l=n);else{const w=s.get("Font");w&&(l=w.getRaw(e))}if(l){if(this.type3FontRefs?.has(l))return f();if(this.fontCache.has(l))return this.fontCache.get(l);try{n=this.xref.fetchIfRef(l)}catch(w){H(`loadFont - lookup failed: "${w}".`)}}if(!(n instanceof B)){if(!this.options.ignoreErrors&&!this.parsingType3Font)return H(`Font "${e}" is not available.`),f();H(`Font "${e}" is not available -- attempting to fallback to a default font.`),n=i||yi.fallbackFontDict}if(n.cacheKey&&this.fontCache.has(n.cacheKey))return this.fontCache.get(n.cacheKey);const{promise:c,resolve:h}=Promise.withResolvers();let u;try{u=this.preEvaluateFont(n),u.cssFontInfo=r}catch(w){return H(`loadFont - preEvaluateFont failed: "${w}".`),f()}const{descriptor:d,hash:p}=u,m=l instanceof Q;let b;if(p&&d instanceof B){const w=d.fontAliases||=Object.create(null);if(w[p]){const x=w[p].aliasRef;if(m&&x&&this.fontCache.has(x))return this.fontCache.putAlias(l,x),this.fontCache.get(l)}else w[p]={fontID:this.idFactory.createFontId()};m&&(w[p].aliasRef=l),b=w[p].fontID}else b=this.idFactory.createFontId();return Ct(b?.startsWith("f"),'The "fontID" must be (correctly) defined.'),m?this.fontCache.put(l,c):(n.cacheKey=`cacheKey_${b}`,this.fontCache.put(n.cacheKey,c)),n.loadedName=`${this.idFactory.getDocId()}_${b}`,this.translateFont(u).then(async w=>{const x=new vo({loadedName:n.loadedName,font:w,dict:n});if(w.isType3Font)try{await x.loadType3Data(this,s,a,o)}catch(j){throw new Error(`Type3 font load error: ${j}`)}h(x)}).catch(w=>{H(`loadFont - translateFont failed: "${w}".`),h(new vo({loadedName:n.loadedName,font:new Yl(w?.message),dict:n}))}),c}buildPath(e,n,s){const{pathMinMax:a,pathBuffer:i}=s;switch(e|0){case C.rectangle:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1],f=n[2],l=n[3],c=r+f,h=o+l;f===0||l===0?i.push(At.moveTo,r,o,At.lineTo,c,h,At.closePath):i.push(At.moveTo,r,o,At.lineTo,c,o,At.lineTo,c,h,At.lineTo,r,h,At.closePath),ft.rectBoundingBox(r,o,c,h,a);break}case C.moveTo:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1];i.push(At.moveTo,r,o),ft.pointBoundingBox(r,o,a);break}case C.lineTo:{const r=s.currentPointX=n[0],o=s.currentPointY=n[1];i.push(At.lineTo,r,o),ft.pointBoundingBox(r,o,a);break}case C.curveTo:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h,u,d]=n;s.currentPointX=u,s.currentPointY=d,i.push(At.curveTo,f,l,c,h,u,d),ft.bezierBoundingBox(r,o,f,l,c,h,u,d,a);break}case C.curveTo2:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h]=n;s.currentPointX=c,s.currentPointY=h,i.push(At.curveTo,r,o,f,l,c,h),ft.bezierBoundingBox(r,o,r,o,f,l,c,h,a);break}case C.curveTo3:{const r=s.currentPointX,o=s.currentPointY,[f,l,c,h]=n;s.currentPointX=c,s.currentPointY=h,i.push(At.curveTo,f,l,c,h,c,h),ft.bezierBoundingBox(r,o,f,l,c,h,c,h,a);break}case C.closePath:i.push(At.closePath);break}}_getColorSpace(e,n,s){return ht.parse({cs:e,xref:this.xref,resources:n,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:s,asyncIfNotCached:!0})}async _handleColorSpace(e){try{return await e}catch(n){if(n instanceof fn)return null;if(this.options.ignoreErrors)return H(`_handleColorSpace - ignoring ColorSpace: "${n}".`),null;throw n}}parseShading({shading:e,resources:n,localColorSpaceCache:s,localShadingPatternCache:a}){let i=a.get(e);if(i)return i;let r;try{r=ah.parseShading(e,this.xref,n,this._pdfFunctionFactory,this.globalColorSpaceCache,s).getIR()}catch(o){if(o instanceof fn)return null;if(this.options.ignoreErrors)return H(`parseShading - ignoring shading: "${o}".`),a.set(e,null),null;throw o}if(i=`pattern_${this.idFactory.createObjId()}`,this.parsingType3Font&&(i=`${this.idFactory.getDocId()}_type3_${i}`),a.set(e,i),this.parsingType3Font){const o=fm(r);this.handler.send("commonobj",[i,"Pattern",o],[o])}else this.handler.send("obj",[i,this.pageIndex,"Pattern",r]);return i}handleColorN(e,n,s,a,i,r,o,f,l,c,h){const u=s.pop();if(u instanceof J){const d=i.getRaw(u.name),p=d instanceof Q&&l.getByRef(d);if(p)try{const b=a.base?a.base.getRgbHex(s,0):null,w=yl(p.operatorListIR,p.dict,b,p.needsIsolation);e.addOp(n,w);return}catch{}const m=this.xref.fetchIfRef(d);if(m){const b=m instanceof Pe?m.dict:m,w=b.get("PatternType");if(w===lc.TILING){const x=a.base?a.base.getRgbHex(s,0):null;return this.handleTilingType(n,x,r,m,b,e,o,l,h)}else if(w===lc.SHADING){const x=b.get("Shading"),j=this.parseShading({shading:x,resources:r,localColorSpaceCache:f,localShadingPatternCache:c});if(j){const k=Ps(b.getArray("Matrix"),null);e.addOp(n,["Shading",j,k])}return}throw new Y(`Unknown PatternType: ${w}`)}}throw new Y(`Unknown PatternName: ${u}`)}async parseMarkedContentProps(e,n){return Bh(this.xref,e,n)}async getOperatorList({stream:e,task:n,resources:s,operatorList:a,initialState:i=null,fallbackFontDict:r=null,prevRefs:o=null}){if(e.isAsync){const S=await e.asyncGetBytes();S&&(e=new yt(S,0,S.length,e.dict))}const f=e.dict?.objId,l=new bt(o);if(f){if(o?.has(f))throw new Error(`getOperatorList - ignoring circular reference: ${f}`);l.put(f)}if(s||=B.empty,i||=new Hh,!a)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,h=this.xref,u=new tc,d=new Ch,p=new nc,m=new Lp,b=new Map,w=s.get("XObject")||B.empty,x=s.get("Pattern")||B.empty,j=new p0(i),k=new la(e,h,j),y=new yr;let q=0;function v(S){for(let F=0,M=k.savedStatesDepth;F0;q--)a.addOp(C.endMarkedContent,[])}return new Promise(function S(F,M){const N=function(X){Promise.all([X,a.ready]).then(function(){try{S(F,M)}catch(ee){M(ee)}},M)};n.ensureNotTerminated(),y.reset();const D={};let $,K,oe,me;for(;!($=y.check())&&(D.args=null,!!k.read(D));){let X=D.args,ee=D.fn;switch(ee|0){case C.paintXObject:if(me=X[0]instanceof J,oe=X[0].name,me){const _=u.getByName(oe);if(_){qo(a,_),X=null;continue}}N(new Promise(function(_,L){if(!me)throw new Y("XObject must be referred to by name.");let z=w.getRaw(oe);if(z instanceof Q){const je=u.getByRef(z)||c._regionalImageCache.getByRef(z)||c.globalImageCache.getData(z,c.pageIndex);if(je){qo(a,je),_();return}z=h.fetch(z)}if(!(z instanceof Pe))throw new Y("XObject should be a stream");const te=z.dict.get("Subtype");if(!(te instanceof J))throw new Y("XObject should have a Name subtype");if(te.name==="Form"){j.save(),c.buildFormXObject(s,z,null,a,n,j.state.clone({newPath:!0}),d,l).then(function(){j.restore(),_()},L);return}else if(te.name==="Image"){c.buildPaintImageXObject({resources:s,image:z,operatorList:a,cacheKey:oe,localImageCache:u,localColorSpaceCache:d}).then(_,L);return}else if(te.name==="PS")ut("Ignored XObject subtype PS");else throw new Y(`Unhandled XObject subtype ${te.name}`);_()}).catch(function(_){if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring XObject: "${_}".`);return}throw _}}));return;case C.setFont:const ye=X[1];N(c.handleSetFont(s,X,null,a,n,j.state,r,null,l).then(function(_){a.addDependency(_),a.addOp(C.setFont,[_,ye])}));return;case C.endInlineImage:const Be=X[0].cacheKey;if(Be){const _=u.getByName(Be);if(_){qo(a,_),X=null;continue}}N(c.buildPaintImageXObject({resources:s,image:X[0],isInline:!0,operatorList:a,cacheKey:Be,localImageCache:u,localColorSpaceCache:d}));return;case C.showText:if(!j.state.font){c.ensureStateFont(j.state);continue}X[0]=c.handleText(X[0],j.state);break;case C.showSpacedText:if(!j.state.font){c.ensureStateFont(j.state);continue}const ae=[],$e=j.state;for(const _ of X[0])typeof _=="string"?ae.push(...c.handleText(_,$e)):typeof _=="number"&&ae.push(_);X[0]=ae,ee=C.showText;break;case C.nextLineShowText:if(!j.state.font){c.ensureStateFont(j.state);continue}a.addOp(C.nextLine),X[0]=c.handleText(X[0],j.state),ee=C.showText;break;case C.nextLineSetSpacingShowText:if(!j.state.font){c.ensureStateFont(j.state);continue}a.addOp(C.nextLine),a.addOp(C.setWordSpacing,[X.shift()]),a.addOp(C.setCharSpacing,[X.shift()]),X[0]=c.handleText(X[0],j.state),ee=C.showText;break;case C.setTextRenderingMode:j.state.textRenderingMode=X[0];break;case C.setFillColorSpace:{const _=c._getColorSpace(X[0],s,d);if(_ instanceof on){j.state.fillColorSpace=_;continue}N(c._handleColorSpace(_).then(L=>{j.state.fillColorSpace=L||ht.gray}));return}case C.setStrokeColorSpace:{const _=c._getColorSpace(X[0],s,d);if(_ instanceof on){j.state.strokeColorSpace=_;continue}N(c._handleColorSpace(_).then(L=>{j.state.strokeColorSpace=L||ht.gray}));return}case C.setFillColor:if(!Rt(X,null))continue;K=j.state.fillColorSpace,X=[K.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeColor:if(!Rt(X,null))continue;K=j.state.strokeColorSpace,X=[K.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillGray:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.gray,X=[ht.gray.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeGray:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.gray,X=[ht.gray.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillCMYKColor:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.cmyk,X=[ht.cmyk.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeCMYKColor:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.cmyk,X=[ht.cmyk.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.setFillRGBColor:if(!Rt(X,null))continue;j.state.fillColorSpace=ht.rgb,X=[ht.rgb.getRgbHex(X,0)];break;case C.setStrokeRGBColor:if(!Rt(X,null))continue;j.state.strokeColorSpace=ht.rgb,X=[ht.rgb.getRgbHex(X,0)];break;case C.setFillColorN:if(K=j.state.patternFillColorSpace,!K){if(Rt(X,null)){X=[ht.gray.getRgbHex(X,0)],ee=C.setFillRGBColor;break}X=[],ee=C.setFillTransparent;break}if(K.name==="Pattern"){if(!Array.isArray(X))continue;N(c.handleColorN(a,C.setFillColorN,X,K,x,s,n,d,m,b,l));return}if(!Rt(X,null))continue;X=[K.getRgbHex(X,0)],ee=C.setFillRGBColor;break;case C.setStrokeColorN:if(K=j.state.patternStrokeColorSpace,!K){if(Rt(X,null)){X=[ht.gray.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break}X=[],ee=C.setStrokeTransparent;break}if(K.name==="Pattern"){if(!Array.isArray(X))continue;N(c.handleColorN(a,C.setStrokeColorN,X,K,x,s,n,d,m,b,l));return}if(!Rt(X,null))continue;X=[K.getRgbHex(X,0)],ee=C.setStrokeRGBColor;break;case C.shadingFill:let tt;try{const _=s.get("Shading");if(!_)throw new Y("No shading resource found");if(tt=_.get(X[0].name),!tt)throw new Y("No shading object found")}catch(_){if(_ instanceof fn)continue;if(c.options.ignoreErrors){H(`getOperatorList - ignoring Shading: "${_}".`);continue}throw _}const G=c.parseShading({shading:tt,resources:s,localColorSpaceCache:d,localShadingPatternCache:b});if(!G)continue;X=[G],ee=C.shadingFill;break;case C.setGState:if(me=X[0]instanceof J,oe=X[0].name,me){const _=p.getByName(oe);if(_){_.length>0&&a.addOp(C.setGState,[_]),X=null;continue}}N(new Promise(function(_,L){if(!me)throw new Y("GState must be referred to by name.");const z=s.get("ExtGState");if(!(z instanceof B))throw new Y("ExtGState should be a dictionary.");const te=z.get(oe);if(!(te instanceof B))throw new Y("GState should be a dictionary.");c.setGState({resources:s,gState:te,operatorList:a,cacheKey:oe,task:n,stateManager:j,localGStateCache:p,localColorSpaceCache:d,seenRefs:l}).then(_,L)}).catch(function(_){if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring ExtGState: "${_}".`);return}throw _}}));return;case C.setLineWidth:{const[_]=X;if(typeof _!="number"){H(`Invalid setLineWidth: ${_}`);continue}X[0]=Math.abs(_);break}case C.setDash:{const _=X[1];if(typeof _!="number"){H(`Invalid setDash: ${_}`);continue}const L=X[0];if(!Array.isArray(L)){H(`Invalid setDash: ${L}`);continue}L.some(z=>typeof z!="number")&&(X[0]=L.filter(z=>typeof z=="number"));break}case C.moveTo:case C.lineTo:case C.curveTo:case C.curveTo2:case C.curveTo3:case C.closePath:case C.rectangle:c.buildPath(ee,X,j.state);continue;case C.stroke:case C.closeStroke:case C.fill:case C.eoFill:case C.fillStroke:case C.eoFillStroke:case C.closeFillStroke:case C.closeEOFillStroke:case C.endPath:{const{state:{pathBuffer:_,pathMinMax:L}}=j;(ee===C.closeStroke||ee===C.closeFillStroke||ee===C.closeEOFillStroke)&&_.push(At.closePath),_.length===0?a.addOp(C.constructPath,[ee,[null],null]):(a.addOp(C.constructPath,[ee,[new Float32Array(_)],L.slice()]),_.length=0,L.set(ca,0));continue}case C.setTextMatrix:a.addOp(ee,[new Float32Array(X)]);continue;case C.markPoint:case C.markPointProps:case C.beginCompat:case C.endCompat:continue;case C.beginMarkedContentProps:if(q++,!(X[0]instanceof J)){H(`Expected name for beginMarkedContentProps arg0=${X[0]}`),a.addOp(C.beginMarkedContentProps,["OC",null]);continue}if(X[0].name==="OC"){N(c.parseMarkedContentProps(X[1],s).then(_=>{a.addOp(C.beginMarkedContentProps,["OC",_])}).catch(_=>{if(!(_ instanceof fn)){if(c.options.ignoreErrors){H(`getOperatorList - ignoring beginMarkedContentProps: "${_}".`),a.addOp(C.beginMarkedContentProps,["OC",null]);return}throw _}}));return}X=[X[0].name,X[1]instanceof B?X[1].get("MCID"):null];break;case C.beginMarkedContent:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}q++;break;case C.endMarkedContent:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}if(q===0)continue;q--;break;default:if(X?.some(_=>_ instanceof B)){H(`getOperatorList - ignoring operator: ${ee}`);continue}}a.addOp(ee,X)}if($){N(cc);return}A(),v(),F()}).catch(S=>{if(!(S instanceof fn)){if(this.options.ignoreErrors){H(`getOperatorList - ignoring errors during "${n.name}" task: "${S}".`),A(),v();return}throw S}})}async getTextContent({stream:e,task:n,resources:s,stateManager:a=null,includeMarkedContent:i=!1,sink:r,seenStyles:o=new Set,viewBox:f,lang:l=null,disableNormalization:c=!1,keepWhiteSpace:h=!1,prevRefs:u=null,intersector:d=null}){if(e.isAsync){const W=await e.asyncGetBytes();W&&(e=new yt(W,0,W.length,e.dict))}r??=ac(null);const p=e.dict?.objId,m=new bt(u);if(p){if(u?.has(p))throw new Error(`getTextContent - ignoring circular reference: ${p}`);m.put(p)}s||=B.empty,a||=new p0(new Qp);let b=0,w=null;const x={items:[],styles:Object.create(null),lang:l},j={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,prevTextRise:0,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},k=[" "," "];let y=0;function q(W){const de=(y+1)%2,Z=k[y]!==" "&&k[de]===" ";return k[y]=W,y=de,!h&&Z}function v(){return!h&&k[y]!==" "&&k[(y+1)%2]===" "}function A(){k[0]=k[1]=" ",y=0}const S=.102,F=.03,M=-.2,N=.102,D=.6,$=.25,K=this,oe=this.xref,me=[];let X=null;const ee=new tc,ye=new nc,Be=new la(e,oe,a);let ae,$e;function tt({width:W=0,height:de=0,transform:Z=j.prevTransform,fontName:we=j.fontName}){d?.addExtraChar(" "),x.items.push({str:" ",dir:"ltr",width:W,height:de,transform:Z,fontName:we,hasEOL:!1})}function G(){const W=ae.font,de=[ae.fontSize*ae.textHScale,0,0,ae.fontSize,0,ae.textRise];if(W.isType3Font&&(ae.fontSize<=1||W.isCharBBox)&&!za(ae.fontMatrix,Ea)){const Z=W.bbox[3]-W.bbox[1];Z>0&&(de[3]*=Z*ae.fontMatrix[3])}return ft.transform(ae.ctm,ft.transform(ae.textMatrix,de))}function _(){if(j.initialized)return j;const{font:W,loadedName:de}=ae;if(!o.has(de)&&(o.add(de),x.styles[de]={fontFamily:W.fallbackName,ascent:W.ascent,descent:W.descent,vertical:W.vertical},K.options.fontExtraProperties&&W.systemFontInfo)){const qe=x.styles[de];qe.fontSubstitution=W.systemFontInfo.css,qe.fontSubstitutionLoadedName=W.systemFontInfo.loadedName}j.fontName=de;const Z=j.transform=G();W.vertical?(j.width=j.totalWidth=Math.hypot(Z[0],Z[1]),j.height=j.totalHeight=0,j.vertical=!0):(j.width=j.totalWidth=0,j.height=j.totalHeight=Math.hypot(Z[2],Z[3]),j.vertical=!1);const we=Math.hypot(ae.textLineMatrix[0],ae.textLineMatrix[1]),ce=Math.hypot(ae.ctm[0],ae.ctm[1]);j.textAdvanceScale=ce*we;const{fontSize:Me}=ae;return j.trackingSpaceMin=Me*S,j.notASpace=Me*F,j.negativeSpaceMax=Me*M,j.spaceInFlowMin=Me*N,j.spaceInFlowMax=Me*D,j.hasEOL=!1,j.initialized=!0,j}function L(){if(!j.initialized)return;const W=Math.hypot(ae.textLineMatrix[0],ae.textLineMatrix[1]),Z=Math.hypot(ae.ctm[0],ae.ctm[1])*W;Z!==j.textAdvanceScale&&(j.vertical?(j.totalHeight+=j.height*j.textAdvanceScale,j.height=0):(j.totalWidth+=j.width*j.textAdvanceScale,j.width=0),j.textAdvanceScale=Z)}function z(W){let de=W.str.join("");c||(de=Wu(de));const Z=Mf(de,-1,W.vertical);return{str:Z.str,dir:Z.dir,width:Math.abs(W.totalWidth),height:Math.abs(W.totalHeight),transform:W.transform,fontName:W.fontName,hasEOL:W.hasEOL}}async function te(W,de){const Z=await K.loadFont(W,de,s,n,null,null,m);ae.loadedName=Z.loadedName,ae.font=Z.font,ae.fontMatrix=Z.font.fontMatrix||Ea}function je(W,de,Z){const we=Math.hypot(Z[0],Z[1]);return[(Z[0]*W+Z[1]*de)/we,(Z[2]*W+Z[3]*de)/we]}function he(W){const de=G();let Z=de[4],we=de[5];if(ae.font?.vertical){if(Zf[2]||we+Wf[3])return!1}else if(Z+Wf[2]||wef[3])return!1;if(!ae.font||!j.prevTransform)return!0;let ce=j.prevTransform[4],Me=j.prevTransform[5];if(ce===Z&&Me===we)return!0;let qe=-1;switch(de[0]&&de[1]===0&&de[2]===0?qe=de[0]>0?0:180:de[1]&&de[0]===0&&de[3]===0&&(qe=de[1]>0?90:270),qe){case 0:break;case 90:[Z,we]=[we,Z],[ce,Me]=[Me,ce];break;case 180:[Z,we,ce,Me]=[-Z,-we,-ce,-Me];break;case 270:[Z,we]=[-we,-Z],[ce,Me]=[-Me,-ce];break;default:[Z,we]=je(Z,we,de),[ce,Me]=je(ce,Me,j.prevTransform)}if(ae.font.vertical){const Ft=(Me-we)/j.textAdvanceScale,Qe=Z-ce,Lt=Math.sign(j.height||j.totalHeight);return Ft.5*j.width?(Fe(),!0):(A(),_e(),!0):Math.abs(Qe)>j.width?(Fe(),!0):(Ft<=Lt*j.notASpace&&A(),Ft<=Lt*j.trackingSpaceMin?v()?(A(),_e(),tt({height:Math.abs(Ft)})):j.height+=Ft:Ee(Ft,j.prevTransform,Lt)||(j.str.length===0?(A(),tt({height:Math.abs(Ft)})):j.height+=Ft),Math.abs(Qe)>j.width*$&&_e(),!0)}const Le=(Z-ce)/j.textAdvanceScale,Ce=we-Me,Je=Math.sign(j.width||j.totalWidth);if(Le.5*j.height?(Fe(),!0):(A(),_e(),!0);const ot=ae.textRise-j.prevTextRise,lt=ot===0?Ce:Ce-de[3]/ae.fontSize*ot;return Math.abs(lt)>j.height?(Fe(),!0):(Le<=Je*j.notASpace&&A(),Le<=Je*j.trackingSpaceMin?v()?(A(),_e(),tt({width:Math.abs(Le)})):j.width+=Le:Ee(Le,j.prevTransform,Je)||(j.str.length===0?(A(),tt({width:Math.abs(Le)})):j.width+=Le),Math.abs(Ce)>j.height*$&&_e(),!0)}function ie({chars:W,extraSpacing:de}){$e!==ae&&($e.fontSize!==ae.fontSize||$e.fontName!==ae.fontName&&($e.font.name!==ae.font.name||$e.font.vertical!==ae.font.vertical))&&(_e(),$e=ae.clone());const Z=ae.font,we=Z.vertical?-ae.charSpacing:ae.charSpacing;if(!W){const qe=we+de;qe&&(Z.vertical?ae.translateTextMatrix(0,-qe):ae.translateTextMatrix(qe*ae.textHScale,0)),h&&he(0);return}const ce=Z.charsToGlyphs(W),Me=ae.fontMatrix[0]*ae.fontSize;for(let qe=0,Le=ce.length;qeW;b--)x.items.push({type:"endMarkedContent"})}function Ne(W=!1){const de=x.items.length;de!==0&&(W&&de0){const Qe=me.join("");me.length=0,ie({chars:Qe,extraSpacing:0})}break;case C.showText:if(!a.state.font){K.ensureStateFont(a.state);continue}ie({chars:Ce[0],extraSpacing:0});break;case C.nextLineShowText:if(!a.state.font){K.ensureStateFont(a.state);continue}ae.carriageReturn(),ie({chars:Ce[0],extraSpacing:0});break;case C.nextLineSetSpacingShowText:if(!a.state.font){K.ensureStateFont(a.state);continue}ae.wordSpacing=Ce[0],ae.charSpacing=Ce[1],ae.carriageReturn(),ie({chars:Ce[2],extraSpacing:0});break;case C.paintXObject:if(_e(),X??=s.get("XObject")||B.empty,Le=Ce[0]instanceof J,qe=Ce[0].name,Le&&ee.getByName(qe))break;we(new Promise(function(Qe,Lt){if(!Le)throw new Y("XObject must be referred to by name.");let en=X.getRaw(qe);if(en instanceof Q){if(ee.getByRef(en)){Qe();return}if(K.globalImageCache.getData(en,K.pageIndex)){Qe();return}en=oe.fetch(en)}if(!(en instanceof Pe))throw new Y("XObject should be a stream");const{dict:Rn}=en,ss=Rn.get("Subtype");if(!(ss instanceof J))throw new Y("XObject should have a Name subtype");if(ss.name!=="Form"){ee.set(qe,Rn.objId,!0),Qe();return}const $a=a.state.clone(),wa=new p0($a),Fs=Ps(Rn.getArray("Matrix"),null);Fs&&wa.transform(Fs);const xa=Rn.get("Resources");Ne();const ja=ac(r);K.getTextContent({stream:en,task:n,resources:xa instanceof B?xa:s,stateManager:wa,includeMarkedContent:i,sink:ja,seenStyles:o,viewBox:f,lang:l,disableNormalization:c,keepWhiteSpace:h,prevRefs:m}).then(function(){ja.enqueueInvoked||ee.set(qe,Rn.objId,!0),Qe()},Lt)}).catch(function(Qe){if(!(Qe instanceof fn)){if(K.options.ignoreErrors){H(`getTextContent - ignoring XObject: "${Qe}".`);return}throw Qe}}));return;case C.setGState:if(Le=Ce[0]instanceof J,qe=Ce[0].name,Le&&ye.getByName(qe))break;we(new Promise(function(Qe,Lt){if(!Le)throw new Y("GState must be referred to by name.");const en=s.get("ExtGState");if(!(en instanceof B))throw new Y("ExtGState should be a dictionary.");const Rn=en.get(qe);if(!(Rn instanceof B))throw new Y("GState should be a dictionary.");const ss=Rn.get("Font");if(!ss){ye.set(qe,Rn.objId,!0),Qe();return}_e(),ae.fontName=null,ae.fontSize=ss[1],te(null,ss[0]).then(Qe,Lt)}).catch(function(Qe){if(!(Qe instanceof fn)){if(K.options.ignoreErrors){H(`getTextContent - ignoring ExtGState: "${Qe}".`);return}throw Qe}}));return;case C.beginMarkedContent:_e(),i&&(b++,x.items.push({type:"beginMarkedContent",tag:Ce[0]instanceof J?Ce[0].name:null}));break;case C.beginMarkedContentProps:if(_e(),i){b++;const Qe=Ce[1]instanceof B?Ce[1].get("MCID"):null;x.items.push({type:"beginMarkedContentProps",id:Number.isInteger(Qe)?`${K.idFactory.getPageObjId()}_mc${Qe}`:null,tag:Ce[0]instanceof J?Ce[0].name:null})}break;case C.endMarkedContent:if(_e(),i){if(b===0)break;b--,x.items.push({type:"endMarkedContent"})}break}if(x.items.length>=r.desiredSize){Me=!0;break}}if(Me){we(cc);return}_e(),Ue(),Ne(),de()}).catch(W=>{if(!(W instanceof fn)){if(this.options.ignoreErrors){H(`getTextContent - ignoring errors during "${n.name}" task: "${W}".`),_e(),Ue(),Ne();return}throw W}})}async extractDataStructures(e,n){const s=this.xref;let a;const i=this.readToUnicode(n.toUnicode);if(n.composite){const u=e.get("CIDSystemInfo");u instanceof B&&!n.cidSystemInfo&&(n.cidSystemInfo={registry:Xe(u.get("Registry")),ordering:Xe(u.get("Ordering")),supplement:u.get("Supplement")});try{const d=e.get("CIDToGIDMap");d instanceof Pe&&(a=d.getBytes())}catch(d){if(!this.options.ignoreErrors)throw d;H(`extractDataStructures - ignoring CIDToGIDMap data: "${d}".`)}}const r=[];let o=null,f;if(e.has("Encoding")){if(f=e.get("Encoding"),f instanceof B){if(o=f.get("BaseEncoding"),o=o instanceof J?o.name:null,f.has("Differences")){const u=f.get("Differences");let d=0;for(const p of u){const m=s.fetchIfRef(p);if(typeof m=="number")d=m;else if(m instanceof J)r[d++]=m.name;else throw new Y(`Invalid entry in 'Differences' array: ${m}`)}}}else if(f instanceof J)o=f.name;else{const u="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new Y(u);H(u)}o!=="MacRomanEncoding"&&o!=="MacExpertEncoding"&&o!=="WinAnsiEncoding"&&(o=null)}const l=!n.file||n.isInternalFont,c=ef()[n.name];if(o&&l&&c&&(o=null),o==="WinAnsiEncoding"&&l&&n.name?.charCodeAt(0)>=183){const u=n.name;if(["ËÎÌå","ºÚÌå","¿¬Ìå","·ÂËÎ","¿¬Ìå_GB2312","·ÂËÎ_GB2312","Á¥Êé","ÐÂËÎ","·ÂËÎÌå","С±êËÎ"].includes(u)){o=null,n.defaultEncoding="Adobe-GB1-UCS2",n.composite=!0,n.cidEncoding=J.get("GBK-EUC-H");const p=await Hi.create({encoding:n.cidEncoding,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});n.cMap=p,n.vertical=n.cMap.vertical,n.cidSystemInfo={registry:"Adobe",ordering:"GB1",supplement:0}}}if(o)n.defaultEncoding=gr(o);else{let u=!!(n.flags&os.Symbolic);const d=!!(n.flags&os.Nonsymbolic);n.type==="TrueType"&&u&&d&&r.length!==0&&(n.flags&=-5,u=!1),f=zs,n.type==="TrueType"&&!d&&(f=pr),(u||c)&&(f=vf,l&&(/Symbol/i.test(n.name)?f=U0:/Dingbats/i.test(n.name)?f=Sf:/Wingdings/i.test(n.name)&&(f=pr))),n.defaultEncoding=f}n.differences=r,n.baseEncodingName=o,n.hasEncoding=!!o||r.length>0,n.dict=e,n.toUnicode=await i;const h=await this.buildToUnicode(n);return n.toUnicode=h,a&&(n.cidToGidMap=this.readCidToGidMap(a,h)),n}_simpleFontToUnicode(e,n=!1){Ct(!e.composite,"Must be a simple font.");const s=[],a=e.defaultEncoding.slice(),i=e.baseEncodingName,r=e.differences;for(const f in r){const l=r[f];l!==".notdef"&&(a[f]=l)}const o=us();for(const f in a){let l=a[f];if(l==="")continue;let c=o[l];if(c!==void 0){s[f]=String.fromCharCode(c);continue}let h=0;switch(l[0]){case"G":l.length===3&&(h=parseInt(l.substring(1),16));break;case"g":l.length===5&&(h=parseInt(l.substring(1),16));break;case"C":case"c":if(l.length>=3&&l.length<=4){const u=l.substring(1);if(n){h=parseInt(u,16);break}if(h=+u,Number.isNaN(h)&&Number.isInteger(parseInt(u,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":c=ki(l,o),c!==-1&&(h=c);break;default:switch(l){case"f_h":case"f_t":case"T_h":s[f]=l.replaceAll("_","");continue}break}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+f){const u=gr(i);if(u&&(l=u[f])){s[f]=String.fromCharCode(o[l]);continue}}s[f]=String.fromCodePoint(h)}}return s}async buildToUnicode(e){if(e.hasIncludedToUnicodeMap=e.toUnicode?.length>0,e.hasIncludedToUnicodeMap)return!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e)),e.toUnicode;if(!e.composite)return new Zi(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof sr)||e.cidSystemInfo?.registry==="Adobe"&&(e.cidSystemInfo.ordering==="GB1"||e.cidSystemInfo.ordering==="CNS1"||e.cidSystemInfo.ordering==="Japan1"||e.cidSystemInfo.ordering==="Korea1"))){const{registry:n,ordering:s}=e.cidSystemInfo,a=J.get(`${n}-${s}-UCS2`),i=await Hi.create({encoding:a,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),r=[],o=[];return e.cMap.forEach(function(f,l){if(l>65535)throw new Y("Max size of CID is 65,535");const c=i.lookup(l);if(c){o.length=0;for(let h=0,u=c.length;h>1;r===0&&!n.has(o)||(s[o]=r)}return s}extractWidths(e,n,s){const a=this.xref;let i=[],r=0;const o=[];let f;if(s.composite){const h=e.get("DW");r=typeof h=="number"?Math.ceil(h):1e3;const u=e.get("W");if(Array.isArray(u))for(let d=0,p=u.length;d=10)&&(this._bbox??=ca.slice(),ft.rectBoundingBox(...s,this._bbox));let o=0,f=e.length;for(;o=C.moveTo&&r<=C.endPath,i.variableArgs)f>o&&ut(`Command ${a}: expected [0, ${o}] args, but received ${f} args.`);else{if(f!==o){const l=this.nonProcessedArgs;for(;f>o;)l.push(n.shift()),f--;for(;fla.MAX_INVALID_PATH_OPS)throw new Y(`Invalid ${l}`);H(`Skipping ${l}`),n!==null&&(n.length=0);continue}}return this.preprocessCommand(r,n),e.fn=r,e.args=n,!0}if(s===ln)return!1;if(s!==null&&(n===null&&(n=[]),n.push(s),n.length>33))throw new Y("Too many arguments")}}preprocessCommand(e,n){switch(e|0){case C.save:this.stateManager.save();break;case C.restore:this.stateManager.restore();break;case C.transform:this.stateManager.transform(n);break}}}class Zp extends la{constructor(e){super(new hn(e))}parse(){const e={fn:0,args:[]},n={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;e.args.length=0,!!this.read(e);){if(this.savedStatesDepth!==0)continue;const{fn:s,args:a}=e;switch(s|0){case C.setFont:const[i,r]=a;i instanceof J&&(n.fontName=i.name),typeof r=="number"&&r>0&&(n.fontSize=r);break;case C.setFillRGBColor:ht.rgb.getRgbItem(a,0,n.fontColor,0);break;case C.setFillGray:ht.gray.getRgbItem(a,0,n.fontColor,0);break;case C.setFillCMYKColor:ht.cmyk.getRgbItem(a,0,n.fontColor,0);break}}}catch(s){H(`parseDefaultAppearance - ignoring errors: "${s}".`)}return n}}function Df(t){return new Zp(t).parse()}class eg extends la{constructor(e,n,s){super(e),this.stream=e,this.xref=n,this.globalColorSpaceCache=s,this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let n={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ht.gray},s=!1;const a=[];try{for(;e.args.length=0,!(s||!this.read(e));){const{fn:i,args:r}=e;switch(i|0){case C.save:a.push({scaleFactor:n.scaleFactor,fontSize:n.fontSize,fontName:n.fontName,fontColor:n.fontColor.slice(),fillColorSpace:n.fillColorSpace});break;case C.restore:n=a.pop()||n;break;case C.setTextMatrix:const o=ft.transform(this.stateManager.state.ctm,r);n.scaleFactor*=Math.hypot(o[0],o[1]);break;case C.setFont:const[f,l]=r;f instanceof J&&(n.fontName=f.name),typeof l=="number"&&l>0&&(n.fontSize=l);break;case C.setFillColorSpace:n.fillColorSpace=ht.parse({cs:r[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:this._localColorSpaceCache});break;case C.setFillColor:n.fillColorSpace.getRgbItem(r,0,n.fontColor,0);break;case C.setFillRGBColor:ht.rgb.getRgbItem(r,0,n.fontColor,0);break;case C.setFillGray:ht.gray.getRgbItem(r,0,n.fontColor,0);break;case C.setFillCMYKColor:ht.cmyk.getRgbItem(r,0,n.fontColor,0);break;case C.showText:case C.showSpacedText:case C.nextLineShowText:case C.nextLineSetSpacingShowText:n.fontSize*=n.scaleFactor,s=!0;break}}}catch(i){H(`parseAppearanceStream - ignoring errors: "${i}".`)}return this.stream.reset(),delete n.scaleFactor,delete n.fillColorSpace,n}get _localColorSpaceCache(){return ue(this,"_localColorSpaceCache",new Ch)}get _pdfFunctionFactory(){return ue(this,"_pdfFunctionFactory",new Rr({xref:this.xref}))}}function tg(t,e,n){return new eg(t,e,n).parse()}function Ts(t,e){if(t[0]===t[1]&&t[1]===t[2]){const n=t[0]/255;return`${jt(n)} ${e?"g":"G"}`}return Array.from(t,n=>jt(n/255)).join(" ")+` ${e?"rg":"RG"}`}function ng({fontSize:t,fontName:e,fontColor:n}){return`/${jf(e)} ${t} Tf ${Ts(n,!0)}`}class ra{static#e=1;constructor(e,n){this.xref=e,this.widths=null,this.firstChar=1/0,this.lastChar=-1/0,this.fontFamily=n;const s=new OffscreenCanvas(1,1);this.ctxMeasure=s.getContext("2d",{willReadFrequently:!0}),this.fontName=J.get(`InvalidPDFjsFont_${n}_${ra.#e++}`)}get fontDescriptorRef(){if(!ra._fontDescriptorRef){const e=new B(this.xref);e.setIfName("Type","FontDescriptor"),e.set("FontName",this.fontName),e.set("FontFamily","MyriadPro Regular"),e.set("FontBBox",[0,0,0,0]),e.setIfName("FontStretch","Normal"),e.set("FontWeight",400),e.set("ItalicAngle",0),ra._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return ra._fontDescriptorRef}get descendantFontRef(){const e=new B(this.xref);e.set("BaseFont",this.fontName),e.setIfName("Type","Font"),e.setIfName("Subtype","CIDFontType0"),e.setIfName("CIDToGIDMap","Identity"),e.set("FirstChar",this.firstChar),e.set("LastChar",this.lastChar),e.set("FontDescriptor",this.fontDescriptorRef),e.set("DW",1e3);const n=[],s=[...this.widths].sort();let a=null,i=null;for(const[o,f]of s){if(!a){a=o,i=[f];continue}o===a+i.length?i.push(f):(n.push(a,i),a=o,i=[f])}a&&n.push(a,i),e.set("W",n);const r=new B(this.xref);return r.set("Ordering","Identity"),r.set("Registry","Adobe"),r.set("Supplement",0),e.set("CIDSystemInfo",r),this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new B(this.xref);return e.set("BaseFont",this.fontName),e.setIfName("Type","Font"),e.setIfName("Subtype","Type0"),e.setIfName("Encoding","Identity-H"),e.set("DescendantFonts",[this.descendantFontRef]),e.setIfName("ToUnicode","Identity-H"),this.xref.getNewPersistentRef(e)}get resources(){const e=new B(this.xref),n=new B(this.xref);return n.set(this.fontName.name,this.baseFontRef),e.set("Font",n),e}_createContext(){return this.widths=new Map,this.ctxMeasure.font=`1000px ${this.fontFamily}`,this.ctxMeasure}createFontResources(e){const n=this._createContext();for(const s of e.split(/\r\n?|\n/))for(const a of s.split("")){const i=a.charCodeAt(0);if(this.widths.has(i))continue;const r=n.measureText(a),o=Math.ceil(r.width);this.widths.set(i,o),this.firstChar=Math.min(i,this.firstChar),this.lastChar=Math.max(i,this.lastChar)}return this.resources}static getFirstPositionInfo(e,n,s){const[a,i,r,o]=e;let f=r-a,l=o-i;n%180!==0&&([f,l]=[l,f]);const c=1.35*s,h=.35*s;return{coords:[0,l+h-c],bbox:[0,0,f,l],matrix:n!==0?k0(n,l,c):void 0}}createAppearance(e,n,s,a,i,r){const o=this._createContext(),f=[];let l=-1/0;for(const N of e.split(/\r\n?|\n/)){f.push(N);const D=o.measureText(N).width;l=Math.max(l,D);for(const $ of r1(N)){const K=String.fromCodePoint($);let oe=this.widths.get($);if(oe===void 0){const me=o.measureText(K);oe=Math.ceil(me.width),this.widths.set($,oe),this.firstChar=Math.min($,this.firstChar),this.lastChar=Math.max($,this.lastChar)}}}l*=a/1e3;const[c,h,u,d]=n;let p=u-c,m=d-h;s%180!==0&&([p,m]=[m,p]);const b=l>p?p/l:1;let w=1;const x=1.35*a,j=.35*a,k=x*f.length;k>m&&(w=m/k);const y=Math.min(b,w),q=a*y,v=["q",`0 0 ${jt(p)} ${jt(m)} re W n`,"BT",`1 0 0 1 0 ${jt(m+j)} Tm 0 Tc ${Ts(i,!0)}`,`/${this.fontName.name} ${jt(q)} Tf`],{resources:A}=this;if(r=typeof r=="number"&&r>=0&&r<=1?r:1,r!==1){v.push("/R0 gs");const N=new B(this.xref),D=new B(this.xref);D.set("ca",r),D.set("CA",r),D.setIfName("Type","ExtGState"),N.set("R0",D),A.set("ExtGState",N)}const S=jt(x);for(const N of f)v.push(`0 -${S} Td <${Zu(N)}> Tj`);v.push("ET","Q");const F=v.join(` +`),M=new B(this.xref);if(M.setIfName("Subtype","Form"),M.setIfName("Type","XObject"),M.set("BBox",[0,0,p,m]),M.set("Length",F.length),M.set("Resources",A),s){const N=k0(s,p,m);M.set("Matrix",N)}return new hn(F,M)}}const sg=["m/d","m/d/yy","mm/dd/yy","mm/yy","d-mmm","d-mmm-yy","dd-mmm-yy","yy-mm-dd","mmm-yy","mmmm-yy","mmm d, yyyy","mmmm d, yyyy","m/d/yy h:MM tt","m/d/yy HH:MM"],ag=["HH:MM","h:MM tt","HH:MM:ss","h:MM:ss tt"];class Eh{constructor(e,n,s){this.root=e,this.xref=n,this._type=s}getAll(e=!1){const n=new Map;if(!this.root)return n;const s=this.xref,a=new bt;this.root instanceof Q&&a.put(this.root);const i=[this.root];for(const r of i){const o=s.fetchIfRef(r);if(!(o instanceof B))continue;if(o.has("Kids")){const l=o.get("Kids");if(!Array.isArray(l))continue;for(const c of l){if(c instanceof Q){if(a.has(c))throw new Y(`Duplicate entry in "${this._type}" tree.`);a.put(c)}i.push(c)}continue}const f=o.get(this._type);if(Array.isArray(f))for(let l=0,c=f.length;li)return H(`Search depth limit reached for "${this._type}" tree.`),null;const o=s.get("Kids");if(!Array.isArray(o))return null;let f=0,l=o.length-1;for(;f<=l;){const c=f+l>>1,h=n.fetchIfRef(o[c]),u=h.get("Limits");if(en.fetchIfRef(u[1]))f=c+1;else{s=h;break}}if(f>l)return null}const r=s.get(this._type);if(Array.isArray(r)){let o=0,f=r.length-2;for(;o<=f;){const l=o+f>>1,c=l+(l&1),h=n.fetchIfRef(r[c]);if(eh)o=c+2;else return r[c+1]}}return null}get(e){return this.xref.fetchIfRef(this.getRaw(e))}}class Ms extends Eh{constructor(e,n){super(e,n,"Names")}}class qr extends Eh{constructor(e,n){super(e,n,"Nums")}}function _f(){Q1(),Yu(),_d(),gn.cleanup()}class Sn{constructor(e){e instanceof B&&(this.root=e,e.has("RF")&&H("Related file specifications are not supported"))}get filename(){const e=Sn.pickPlatformItem(this.root);return e&&typeof e=="string"?Xe(e,!0).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"):""}get description(){const e=this.root?.get("Desc");return e&&typeof e=="string"?Xe(e):""}get serializable(){const{filename:e,description:n}=this;return{rawFilename:e,filename:Gu(e)||"unnamed",description:n}}static pickPlatformItem(e,n=!1){if(e instanceof B){for(const s of["UF","F","Unix","Mac","DOS"])if(e.has(s))return n?e.getRaw(s):e.get(s)}return null}static hasEmbeddedFile(e){return this.pickPlatformItem(e.get("EF"))instanceof Pe}static readContent(e){if(!(e instanceof B))return null;const n=this.pickPlatformItem(e.get("EF"));return n instanceof Pe?this.readStreamContent(n):(H("Embedded file specification points to non-existing/invalid content"),null)}static readStreamContent(e){if(e.dict?.xref?.encrypt?.encryptionKey===null)throw new Os("No password given",f0.NEED_PASSWORD);return e.getBytes()}}const Dn={NoError:0,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,UnterminatedElement:-9};function li(t,e){const n=t[e];return n===" "||n===` +`||n==="\r"||n===" "}function ig(t){for(let e=0,n=t.length;e{if(s||a){const r=s?parseInt(s,16):parseInt(a,10);return r>=0&&r<=1114111?String.fromCodePoint(r):n}switch(i){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(i)})}_parseContent(e,n){const s=[];let a=n;function i(){for(;a"&&e[a]!=="/";)++a;const r=e.substring(n,a);for(i();a"&&e[a]!=="/"&&e[a]!=="?";){i();let o="",f="";for(;a"&&e[s]!=="?"&&e[s]!=="/";)++s;const i=e.substring(n,s);a();const r=s;for(;s");)++s;const o=e.substring(r,s);return{name:i,value:o,parsed:s-n}}parseXml(e){let n=0;for(;n",a),r<0){this.onError(Dn.UnterminatedElement);return}this.onEndElement(e.substring(a,r)),a=r+1;break;case"?":++a;const o=this._parseProcessingInstruction(e,a);if(e.substring(a+o.parsed,a+o.parsed+2)!=="?>"){this.onError(Dn.UnterminatedXmlDeclaration);return}this.onPi(o.name,o.value),a+=o.parsed+2;break;case"!":if(e.substring(a+1,a+3)==="--"){if(r=e.indexOf("-->",a+3),r<0){this.onError(Dn.UnterminatedComment);return}this.onComment(e.substring(a+3,r)),a=r+3}else if(e.substring(a+1,a+8)==="[CDATA["){if(r=e.indexOf("]]>",a+8),r<0){this.onError(Dn.UnterminatedCdat);return}this.onCdata(e.substring(a+8,r)),a=r+3}else if(e.substring(a+1,a+8)==="DOCTYPE"){const c=e.indexOf("[",a+8);let h=!1;if(r=e.indexOf(">",a+8),r<0){this.onError(Dn.UnterminatedDoctypeDeclaration);return}if(c>0&&r>c){if(r=e.indexOf("]>",a+8),r<0){this.onError(Dn.UnterminatedDoctypeDeclaration);return}h=!0}const u=e.substring(a+8,r+(h?1:0));this.onDoctype(u),a=r+(h?2:1)}else{this.onError(Dn.MalformedElement);return}break;default:const f=this._parseContent(e,a);if(f===null){this.onError(Dn.MalformedElement);return}let l=!1;if(e.substring(a+f.parsed,a+f.parsed+2)==="/>")l=!0;else if(e.substring(a+f.parsed,a+f.parsed+1)!==">"){this.onError(Dn.UnterminatedElement);return}this.onBeginElement(f.name,f.attributes,l),a+=f.parsed+(l?2:1);break}}else{for(;ae.textContent).join(""):this.nodeValue||""}get children(){return this.childNodes||[]}hasChildNodes(){return this.childNodes?.length>0}searchNode(e,n){if(n>=e.length)return this;const s=e[n];if(s.name.startsWith("#")&&n0)a.push([i,0]),i=i.childNodes[0];else{if(a.length===0)return null;for(;a.length!==0;){const[r,o]=a.pop(),f=o+1;if(f");for(const n of this.childNodes)n.dump(e);e.push(``)}else this.nodeValue?e.push(`>${mi(this.nodeValue)}`):e.push("/>")}}class K0 extends W0{constructor({hasAttributes:e=!1,lowerCaseName:n=!1}){super(),this._currentFragment=null,this._stack=null,this._errorCode=Dn.NoError,this._hasAttributes=e,this._lowerCaseName=n}parseFromString(e){if(this._currentFragment=[],this._stack=[],this._errorCode=Dn.NoError,this.parseXml(e),this._errorCode!==Dn.NoError)return;const[n]=this._currentFragment;if(n)return{documentElement:n}}onText(e){if(ig(e))return;const n=new ir("#text",e);this._currentFragment.push(n)}onCdata(e){const n=new ir("#text",e);this._currentFragment.push(n)}onBeginElement(e,n,s){this._lowerCaseName&&(e=e.toLowerCase());const a=new ir(e);a.childNodes=[],this._hasAttributes&&(a.attributes=n),this._currentFragment.push(a),!s&&(this._stack.push(this._currentFragment),this._currentFragment=a.childNodes)}onEndElement(e){this._currentFragment=this._stack.pop()||[];const n=this._currentFragment.at(-1);if(!n)return null;for(const s of n.childNodes)s.parentNode=n;return n}onError(e){this._errorCode=e}}class rg{constructor(e){e=this._repair(e);const s=new K0({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map,this._data=e,s&&this._parse(s)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\376\\377([^<]+)/g,function(n,s){const a=s.replaceAll(/\\([0-3])([0-7])([0-7])/g,function(r,o,f,l){return String.fromCharCode(o*64+f*8+l*1)}).replaceAll(/&(amp|apos|gt|lt|quot);/g,function(r,o){switch(o){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${o} isn't defined.`)}),i=[">"];for(let r=0,o=a.length;r=32&&f<127&&f!==60&&f!==62&&f!==38?i.push(String.fromCharCode(f)):i.push("&#x"+(65536+f).toString(16).substring(1)+";")}return i.join("")})}_getSequence(e){const n=e.nodeName;return n!=="rdf:bag"&&n!=="rdf:seq"&&n!=="rdf:alt"?null:e.childNodes.filter(s=>s.nodeName==="rdf:li")}_parseArray(e){if(!e.hasChildNodes())return;const[n]=e.childNodes,s=this._getSequence(n)||[];this._metadataMap.set(e.nodeName,s.map(a=>a.textContent.trim()))}_parse(e){let n=e.documentElement;if(n.nodeName!=="rdf:rdf")for(n=n.firstChild;n&&n.nodeName!=="rdf:rdf";)n=n.nextSibling;if(!(!n||n.nodeName!=="rdf:rdf"||!n.hasChildNodes())){for(const s of n.childNodes)if(s.nodeName==="rdf:description")for(const a of s.childNodes){const i=a.nodeName;switch(i){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(a);continue}this._metadataMap.set(i,a.textContent.trim())}}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}const Ki=44;function Mh(t){if(!t||t.has("CO"))return null;const e=t.get("R");if(!Number.isInteger(e)||e<=0)return null;const n=t.get("C")??1;if(!Number.isInteger(n)||n<1||n>2)return null;const s=t.get("B")??8;if(s!==8&&s!==16)return null;const a=t.get("E");let i="Raw";return a!==void 0&&(i=a instanceof J?a.name:null),i!=="Raw"&&i!=="Signed"?null:{channels:n,sampleRate:e,bitsPerSample:s,encoding:i}}function og(t,e){const n=Mh(t.dict);if(!n)return null;const{channels:s,sampleRate:a,bitsPerSample:i,encoding:r}=n,o=s*(i>>3),f=e.length-e.length%o;if(f===0)return null;const l=new Uint8Array(Ki+f),c=new DataView(l.buffer);if(l.set(Bt("RIFF"),0),c.setUint32(4,Ki-8+f,!0),l.set(Bt("WAVE"),8),l.set(Bt("fmt "),12),c.setUint32(16,16,!0),c.setUint16(20,1,!0),c.setUint16(22,s,!0),c.setUint32(24,a,!0),c.setUint32(28,a*o,!0),c.setUint16(32,o,!0),c.setUint16(34,i,!0),l.set(Bt("data"),36),c.setUint32(40,f,!0),i===16){const h=r==="Signed";for(let u=0;u=32768&&(d-=65536):d-=32768,c.setInt16(Ki+u,d,!0)}}else if(r==="Signed")for(let h=0;h=0||(h.parentTreeId=s++),o=!1)}if(o){for(const f of n.values())for(const l of f)delete l.parentTreeId,delete l.structTreeParent;return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:n,changes:s}){const{ref:a,xref:i}=this,r=this.dict.clone(),o=new $t;o.put(a,r);let f=r.getRaw("ParentTree"),l;f instanceof Q?l=i.fetch(f):(l=f,f=i.getNewTemporaryRef(),r.set("ParentTree",f)),l=l.clone(),o.put(f,l);let c=l.getRaw("Nums"),h=null;c instanceof Q&&(h=c,c=i.fetch(h)),c=c.slice(),h||l.set("Nums",c);const u=await oa.#t({newAnnotationsByPage:e,structTreeRootRef:a,structTreeRoot:this,kids:null,nums:c,xref:i,pdfManager:n,changes:s,cache:o});if(u!==-1){r.set("ParentTreeNextKey",u),h&&o.put(h,c);for(const[d,p]of o.items())s.put(d,{data:p})}}static async#t({newAnnotationsByPage:e,structTreeRootRef:n,structTreeRoot:s,kids:a,nums:i,xref:r,pdfManager:o,changes:f,cache:l}){const c=J.get("OBJR");let h=-1,u;for(const[d,p]of e){const m=await o.getPage(d),{ref:b}=m,w=b instanceof Q;for(const{accessibilityData:x,ref:j,parentTreeId:k,structTreeParent:y}of p){if(!x?.type)continue;const{structParent:q}=x;if(s&&Number.isInteger(q)&&q>=0){let F=(u||=new Map).get(d);F===void 0&&(F=new Dh(s,m.pageDict).collectObjects(b),u.set(d,F));const M=F?.get(q);if(M){const N=r.fetch(M).clone();oa.#s(N,x),f.put(M,{data:N});continue}}h=Math.max(h,k);const v=r.getNewTemporaryRef(),A=new B(r);oa.#s(A,x),await this.#n({structTreeParent:y,tagDict:A,newTagRef:v,structTreeRootRef:n,fallbackKids:a,xref:r,cache:l});const S=new B(r);A.set("K",S),S.set("Type",c),w&&S.set("Pg",b),S.set("Obj",j),l.put(v,A),i.push(k,v)}}return h+1}static#s(e,{type:n,title:s,lang:a,alt:i,expanded:r,actualText:o}){e.set("S",J.get(n)),s&&e.set("T",Zt(s)),a&&e.set("Lang",Zt(a)),i&&e.set("Alt",Zt(i)),r&&e.set("E",Zt(r)),o&&e.set("ActualText",Zt(o))}static#a({elements:e,xref:n,pageDict:s,numberTree:a}){const i=new Map;for(const l of e)if(l.structTreeParentId){const c=parseInt(l.structTreeParentId.split("_mc")[1],10);i.getOrInsertComputed(c,ha).push(l)}const r=s.get("StructParents");if(!Number.isInteger(r))return;const o=a.get(r),f=(l,c,h)=>{const u=i.get(l);if(u){const d=c.getRaw("P"),p=n.fetchIfRef(d);if(d instanceof Q&&p instanceof B){const m={ref:h,dict:c};for(const b of u)b.structTreeParent=m}return!0}return!1};for(const l of o){if(!(l instanceof Q))continue;const c=n.fetch(l),h=c.get("K");if(Number.isInteger(h)){f(h,c,l);continue}if(Array.isArray(h))for(let u of h){if(u=n.fetchIfRef(u),Number.isInteger(u)&&f(u,c,l))break;if(!(u instanceof B))continue;if(!ze(u.get("Type"),"MCR"))break;const d=u.get("MCID");if(Number.isInteger(d)&&f(d,c,l))break}}}static async#n({structTreeParent:e,tagDict:n,newTagRef:s,structTreeRootRef:a,fallbackKids:i,xref:r,cache:o}){let f=null,l;e?({ref:f}=e,l=e.dict.getRaw("P")||a):l=a,n.set("P",l);const c=r.fetchIfRef(l);if(!c){i.push(s);return}const h=o.getOrPutComputed(l,()=>c.clone()),u=h.getRaw("K");let d=u instanceof Q?o.get(u):null;if(!d){d=r.fetchIfRef(u),d=Array.isArray(d)?d.slice():[u];const m=r.getNewTemporaryRef();h.set("K",m),o.put(m,d)}const p=d.indexOf(f);d.splice(p>=0?p+1:d.length,0,s)}}class lg{constructor(e,n){this.tree=e,this.xref=e.xref,this.dict=n,this.kids=[],this.parseKids()}get role(){const e=this.dict.get("S"),n=e instanceof J?e.name:"",{root:s}=this.tree;return s.roleMap.get(n)??n}get mathML(){let e=this.dict.get("AF")||[];Array.isArray(e)||(e=[e]);for(let n of e){if(n=this.xref.fetchIfRef(n),!wi(n,"Filespec")||!ze(n.get("AFRelationship"),"Supplement"))continue;const s=Sn.pickPlatformItem(n.get("EF"));if(!(!(s instanceof Pe)||!wi(s.dict,"EmbeddedFile")||!ze(s.dict.get("Subtype"),"application/mathml+xml")))return bi(s.getString())}for(const n of this.attributes)if(ze(n.get("O"),"MSFT_Office")){const s=n.get("MSFT_MathML");return s?Xe(s):null}return null}#e(e,n){const s=[e],a=new bt;for(;s.length>0;){if(e=s.pop(),e instanceof Q){if(a.has(e))continue;a.put(e),e=this.xref.fetch(e)}if(e instanceof Pe&&(e=e.dict),e instanceof B){n.push(e);continue}if(Array.isArray(e))for(let i=e.length-1;i>=0;i--)Number.isInteger(e[i])||s.push(e[i])}}get attributes(){const e=[],n=this.dict.getArray("C");if(n!==void 0){const s=this.tree.rootDict?.get("ClassMap");if(s instanceof B)for(const a of Array.isArray(n)?n:[n])a instanceof J&&this.#e(s.getRaw(a.name),e)}return this.#e(this.dict.getRaw("A"),e),ue(this,"attributes",e)}get tableAttributes(){const{role:e}=this;if(e!=="Table"&&e!=="TH"&&e!=="TD")return null;const n=new Map;for(const s of this.attributes)if(ze(s.get("O"),"Table")){if(e==="Table"){if(s.has("Summary")){const a=s.get("Summary");typeof a=="string"&&a?n.set("summary",Xe(a)):n.delete("summary")}continue}for(const[a,i]of fg){if(!s.has(a))continue;const r=s.get(a);Number.isInteger(r)&&r>1?n.set(i,r):n.delete(i)}if(s.has("Headers")){n.delete("headers");const a=s.getArray("Headers");if(Array.isArray(a)){const i=a.filter(r=>typeof r=="string").map(Xe);i.length>0&&n.set("headers",i)}}if(e==="TH"&&s.has("Scope")){n.delete("scope");const a=s.get("Scope");a instanceof J&&["Row","Column","Both"].includes(a.name)&&n.set("scope",a.name)}if(e==="TH"&&s.has("Short")){n.delete("short");const a=s.get("Short");typeof a=="string"&&a&&n.set("short",Xe(a))}}return n.size?n:null}parseKids(){let e=null;const n=this.dict.getRaw("Pg");n instanceof Q&&(e=n.toString());const s=this.dict.get("K");if(Array.isArray(s))for(const a of s){const i=this.parseKid(e,this.xref.fetchIfRef(a));i&&this.kids.push(i)}else{const a=this.parseKid(e,s);a&&this.kids.push(a)}}parseKid(e,n){if(Number.isInteger(n))return this.tree.pageDict.objId!==e?null:new e0({type:Un.PAGE_CONTENT,mcid:n,pageObjId:e});if(!(n instanceof B))return null;const s=n.getRaw("Pg");s instanceof Q&&(e=s.toString());const a=n.get("Type")instanceof J?n.get("Type").name:null;if(a==="MCR"){if(this.tree.pageDict.objId!==e)return null;const i=n.getRaw("Stm");return new e0({type:Un.STREAM_CONTENT,refObjId:i instanceof Q?i.toString():null,pageObjId:e,mcid:n.get("MCID")})}if(a==="OBJR"){if(this.tree.pageDict.objId!==e)return null;const i=n.getRaw("Obj");return new e0({type:Un.OBJECT,refObjId:i instanceof Q?i.toString():null,pageObjId:e})}return new e0({type:Un.ELEMENT,dict:n})}}class e0{constructor({type:e,dict:n=null,mcid:s=null,pageObjId:a=null,refObjId:i=null}){this.type=e,this.dict=n,this.mcid=s,this.pageObjId=a,this.refObjId=i,this.parentNode=null}}class Dh{constructor(e,n){this.root=e,this.xref=e?.xref??null,this.rootDict=e?.dict??null,this.pageDict=n,this.nodes=[]}collectObjects(e){if(!this.root||!this.rootDict||!(e instanceof Q))return null;const n=this.rootDict.get("ParentTree");if(!n)return null;const s=this.root.structParentIds?.get(e);if(!s)return null;const a=new Map,i=new qr(n,this.xref);for(const[r]of s){const o=i.getRaw(r);o instanceof Q&&a.set(r,o)}return a}parse(e){if(!this.root||!this.rootDict||!(e instanceof Q))return;const{parentTree:n}=this.root;if(!n)return;const s=this.pageDict.get("StructParents"),a=this.root.structParentIds?.get(e);if(!Number.isInteger(s)&&!a)return;const i=new Map;if(Number.isInteger(s)){const r=n.get(s);if(Array.isArray(r))for(const o of r)o instanceof Q&&this.addNode(this.xref.fetch(o),i)}if(a)for(const[r,o,f]of a){const l=n.get(r);if(!l)continue;const c=this.addNode(this.xref.fetchIfRef(l),i);if(!(!c||!f))for(const h of c.kids)h.type===Un.OBJECT&&h.refObjId===f&&(h.type=o)}}addNode(e,n,s=0){if(s>hc)return H("StructTree MAX_DEPTH reached."),null;if(!(e instanceof B))return null;if(n.has(e))return n.get(e);const a=new lg(this,e);switch(n.set(e,a),a.role){case"L":case"LBody":case"LI":case"Table":case"THead":case"TBody":case"TFoot":case"TR":for(const f of a.kids)f.type===Un.ELEMENT&&this.addNode(f.dict,n,s-1)}const i=e.get("P");if(!(i instanceof B)||ze(i.get("Type"),"StructTreeRoot"))return this.addTopLevelNode(e,a)||n.delete(e),a;const r=this.addNode(i,n,s+1);if(!r)return a;let o=!1;for(const f of r.kids)f.type===Un.ELEMENT&&f.dict===e&&(f.parentNode=a,o=!0);return o||n.delete(e),a}addTopLevelNode(e,n){const s=this.root.getKidPosition(e.objId);return isNaN(s)?!1:(s!==-1&&(this.nodes[s]=n),!0)}get serializable(){function e(s,a,i=0){if(i>hc){H("StructTree too deep to be fully serialized.");return}const r=Object.create(null);r.role=s.role,r.children=[],a.children.push(r);let o=s.dict.get("Alt");typeof o!="string"&&(o=s.dict.get("ActualText")),typeof o=="string"&&(r.alt=Xe(o));const f=s.dict.get("ID");if(r.role==="TH"&&typeof f=="string"&&f&&(r.structId=Xe(f)),s.tableAttributes?.forEach((u,d)=>{r[d]=u}),r.role==="Formula")try{const{mathML:u}=s;u&&(r.mathML=u)}catch(u){if(u instanceof kt)throw u;H(`Ignoring mathML: "${u}".`)}let l=null,c=null;for(const u of s.attributes){l=Cs(u.getArray("BBox"),l);const d=u.get("Width"),p=u.get("Height");typeof d=="number"&&d>0&&typeof p=="number"&&p>0&&(c=[0,0,d,p])}(l||c)&&(r.bbox=l??c);const h=s.dict.get("Lang");typeof h=="string"&&(r.lang=Xe(h));for(const u of s.kids){const d=u.type===Un.ELEMENT?u.parentNode:null;if(d){e(d,r,i+1);continue}else u.type===Un.PAGE_CONTENT||u.type===Un.STREAM_CONTENT?r.children.push({type:"content",id:`p${u.pageObjId}_mc${u.mcid}`}):u.type===Un.OBJECT?r.children.push({type:"object",id:u.refObjId}):u.type===Un.ANNOTATION&&r.children.push({type:"annotation",id:`${_u}${u.refObjId}`})}}const n=Object.create(null);n.children=[],n.role="Root";for(const s of this.nodes)s&&e(s,n);return n}}const cg=t=>t instanceof Q,A0=Ku.bind(null,cg,ze);function So(t){return t instanceof B&&(t=t.get("D")),A0(t)?t:null}function uc(t){let e=t.get("D");if(e){if(e instanceof J&&(e=e.name),typeof e=="string")return Xe(e,!0);if(A0(e))return JSON.stringify(e)}return null}class _a{#e=null;#t=new $t;#s=new Map;#a=new Set;#n=null;builtInCMapCache=new Map;fontCache=new $t;globalColorSpaceCache=new Up;globalImageCache=new hi;nonBlendModesSet=new bt;pageDictCache=new $t;pageIndexCache=new $t;pageKidsCountCache=new $t;standardFontDataCache=new Map;systemFontCache=new Map;constructor(e,n){if(this.pdfManager=e,this.xref=n,this.#n=n.getCatalogObj(),!(this.#n instanceof B))throw new Y("Catalog object is not a dictionary.");this.toplevelPagesDict}cloneDict(){return this.#n.clone()}getAttachmentIdForAnnotation(e,n=!1){let s=this.#t.get(e);if(!s){const a=`attachmentRef:${e.toString()}`;s=a;let i=1;for(;this.#s.has(s)||this.attachments?.has(s);)s=`${a}-${i++}`;this.#t.put(e,s),this.#s.set(s,e)}return n&&this.#a.add(s),s}get version(){const e=this.#n.get("Version");if(e instanceof J){if(Gc.test(e.name))return ue(this,"version",e.name);H(`Invalid PDF catalog version: ${e.name}`)}return ue(this,"version",null)}get lang(){const e=this.#n.get("Lang");return ue(this,"lang",e&&typeof e=="string"?Xe(e):null)}get needsRendering(){const e=this.#n.get("NeedsRendering");return ue(this,"needsRendering",typeof e=="boolean"?e:!1)}get collection(){let e=null;try{const n=this.#n.get("Collection");n instanceof B&&n.size>0&&(e=n)}catch(n){if(n instanceof kt)throw n;ut("Cannot fetch Collection entry; assuming no collection is present.")}return ue(this,"collection",e)}get acroForm(){let e=null;try{const n=this.#n.get("AcroForm");n instanceof B&&n.size>0&&(e=n)}catch(n){if(n instanceof kt)throw n;ut("Cannot fetch AcroForm entry; assuming no forms are present.")}return ue(this,"acroForm",e)}get acroFormRef(){const e=this.#n.getRaw("AcroForm");return ue(this,"acroFormRef",e instanceof Q?e:null)}get metadata(){const e=this.#n.getRaw("Metadata");if(!(e instanceof Q))return ue(this,"metadata",null);let n=null;try{const s=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(s instanceof Pe&&wi(s.dict,"Metadata")&&ze(s.dict.get("Subtype"),"XML")){const a=bi(s.getString());a&&(n=new rg(a).serializable)}}catch(s){if(s instanceof kt)throw s;ut(`Skipping invalid Metadata: "${s}".`)}return ue(this,"metadata",n)}get markInfo(){let e=null;try{e=this.#i()}catch(n){if(n instanceof kt)throw n;H("Unable to read mark info.")}return ue(this,"markInfo",e)}#i(){const e=this.#n.get("MarkInfo");if(!(e instanceof B))return null;const n=new Map;for(const s of["Marked","UserProperties","Suspects"]){const a=e.get(s);n.set(s,typeof a=="boolean"?a:!1)}return n}get hasStructTree(){return this.#n.has("StructTreeRoot")}get structTreeRoot(){let e=null;try{e=this.#r()}catch(n){if(n instanceof kt)throw n;H("Unable read to structTreeRoot info.")}return ue(this,"structTreeRoot",e)}#r(){const e=this.#n.getRaw("StructTreeRoot"),n=this.xref.fetchIfRef(e);return n instanceof B?new oa(this.xref,n,e):null}get toplevelPagesDict(){const e=this.#n.get("Pages");if(!(e instanceof B))throw new Y("Invalid top-level pages dictionary.");return ue(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this.#f()}catch(n){if(n instanceof kt)throw n;H("Unable to read document outline.")}return ue(this,"documentOutline",e)}#f(e={}){let n=this.#n.get("Outlines");if(!(n instanceof B)||(n=n.getRaw("First"),!(n instanceof Q)))return null;const s={items:[]},a=[{obj:n,parent:s}],i=new bt;i.put(n);const r=this.xref,o=new Uint8ClampedArray(3);for(;a.length>0;){const f=a.shift(),l=r.fetchIfRef(f.obj);if(l===null)continue;l.has("Title")||H("Invalid outline item encountered.");const c={url:null,dest:null,action:null};_a.parseDestDictionary({destDict:l,resultObj:c,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const h=l.get("Title"),u=l.get("F")||0,d=l.getArray("C"),p=l.get("Count");let m=o;Rt(d,3)&&(d[0]!==0||d[1]!==0||d[2]!==0)&&(m=ht.rgb.getRgb(d,0));const b={action:c.action,attachmentId:c.attachmentId,attachment:c.attachment,dest:c.dest,url:c.url,unsafeUrl:c.unsafeUrl,newWindow:c.newWindow,setOCGState:c.setOCGState,title:typeof h=="string"?Xe(h):"",color:m,count:Number.isInteger(p)?p:void 0,bold:!!(u&2),italic:!!(u&1),items:[]};e.keepRawDict&&(b.rawDict=l),f.parent.items.push(b),n=l.getRaw("First"),n instanceof Q&&!i.has(n)&&(a.push({obj:n,parent:b}),i.put(n)),n=l.getRaw("Next"),n instanceof Q&&!i.has(n)&&(a.push({obj:n,parent:f.parent}),i.put(n))}return s.items.length>0?s.items:null}get documentOutlineForEditor(){let e=null;try{e=this.#f({keepRawDict:!0})}catch(n){if(n instanceof kt)throw n;H("Unable to read document outline.")}return ue(this,"documentOutlineForEditor",e)}get permissions(){let e=null;try{e=this.#o()}catch(n){if(n instanceof kt)throw n;H("Unable to read permissions.")}return ue(this,"permissions",e)}#o(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof B))return null;let n=e.get("P");if(typeof n!="number")return null;n+=2**32;const s=new Set;for(const a of Object.values(Pu))n&a&&s.add(a);return s}get optionalContentConfig(){let e=null;try{const n=this.#n.get("OCProperties");if(!n)return ue(this,"optionalContentConfig",null);const s=n.get("D");if(!s)return ue(this,"optionalContentConfig",null);const a=n.get("OCGs");if(!Array.isArray(a))return ue(this,"optionalContentConfig",null);const i=new $t;for(const r of a)!(r instanceof Q)||i.has(r)||i.put(r,this.#l(r));e=this.#u(s,i)}catch(n){if(n instanceof kt)throw n;H(`Unable to read optional content config: ${n}`)}return ue(this,"optionalContentConfig",e)}#l(e){const n=this.xref.fetch(e),s={id:e.toString(),name:null,intent:null,usage:{print:null,view:null},rbGroups:[]},a=n.get("Name");typeof a=="string"&&(s.name=Xe(a));let i=n.getArray("Intent");Array.isArray(i)||(i=[i]),i.every(c=>c instanceof J)&&(s.intent=i.map(c=>c.name));const r=n.get("Usage");if(!(r instanceof B))return s;const o=s.usage,f=r.get("Print");if(f instanceof B){const c=f.get("PrintState");if(c instanceof J)switch(c.name){case"ON":case"OFF":o.print={printState:c.name}}}const l=r.get("View");if(l instanceof B){const c=l.get("ViewState");if(c instanceof J)switch(c.name){case"ON":case"OFF":o.view={viewState:c.name}}}return s}#u(e,n){function s(c){const h=[];if(Array.isArray(c))for(const u of c)u instanceof Q&&n.has(u)&&h.push(u.toString());return h}function a(c,h=0){if(!Array.isArray(c))return null;const u=[];for(const p of c){if(p instanceof Q&&n.has(p)){f.put(p),u.push(p.toString());continue}const m=i(p,h);m&&u.push(m)}if(h>0)return u;const d=[];for(const[p]of n.items())f.has(p)||d.push(p.toString());return d.length&&u.push({name:null,order:d}),u}function i(c,h){if(++h>l)return H("parseNestedOrder - reached MAX_NESTED_LEVELS."),null;const u=o.fetchIfRef(c);if(!Array.isArray(u))return null;const d=o.fetchIfRef(u[0]);if(typeof d!="string")return null;const p=a(u.slice(1),h);return p?.length?{name:Xe(d),order:p}:null}function r(c){if(Array.isArray(c))for(const h of c){const u=o.fetchIfRef(h);if(!Array.isArray(u)||!u.length)continue;const d=new Set;for(const p of u)p instanceof Q&&n.has(p)&&!d.has(p.toString())&&(d.add(p.toString()),n.get(p).rbGroups.push(d))}}const o=this.xref,f=new bt,l=10;return r(e.get("RBGroups")),{name:typeof e.get("Name")=="string"?Xe(e.get("Name")):null,creator:typeof e.get("Creator")=="string"?Xe(e.get("Creator")):null,baseState:e.get("BaseState")instanceof J?e.get("BaseState").name:null,on:s(e.get("ON")),off:s(e.get("OFF")),order:a(e.get("Order")),groups:[...n]}}setActualNumPages(e=null){this.#e=e}get hasActualNumPages(){return this.#e!==null}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new Y("Page count in top-level pages dictionary is not an integer.");return ue(this,"_pagesCount",e)}get numPages(){return this.#e??this._pagesCount}get destinations(){const e=new Map;for(const n of this.#c())if(n instanceof Ms)for(const[s,a]of n.getAll()){const i=So(a);i&&e.set(Xe(s,!0),i)}else if(n instanceof B)for(const[s,a]of n){const i=So(a);i&&e.getOrInsert(Xe(s,!0),i)}return ue(this,"destinations",e)}getDestination(e){if(Object.hasOwn(this,"destinations"))return this.destinations.get(e)??null;for(const n of this.#c())if(n instanceof Ms||n instanceof B){const s=So(n.get(e));if(s)return s}return this.destinations.get(e)??null}#c(){const e=this.#n.get("Names"),n=[];return e?.has("Dests")&&n.push(new Ms(e.getRaw("Dests"),this.xref)),this.#n.has("Dests")&&n.push(this.#n.get("Dests")),n}get rawPageLabels(){const e=this.#n.getRaw("PageLabels");return e?new qr(e,this.xref).getAll():null}get pageLabels(){let e=null;try{e=this.#h()}catch(n){if(n instanceof kt)throw n;H("Unable to read page labels.")}return ue(this,"pageLabels",e)}#h(){const e=this.rawPageLabels;if(!e)return null;const n=new Array(this.numPages);let s=null,a="",i="",r=1;for(let o=0,f=this.numPages;o=1))throw new Y("Invalid start in PageLabel dictionary.");r=c}else r=1}switch(s){case"D":i=r;break;case"R":case"r":i=s1(r,s==="r");break;case"A":case"a":const c=26,h=r-1;i=String.fromCharCode(s.charCodeAt(0)+h%c).repeat(Math.floor(h/c)+1);break;default:if(s)throw new Y(`Invalid style "${s}" in PageLabel dictionary.`);i=""}n[o]=a+i,r++}return n}get pageLayout(){const e=this.#n.get("PageLayout");let n="";if(e instanceof J)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":n=e.name}return ue(this,"pageLayout",n)}get pageMode(){const e=this.#n.get("PageMode");let n="UseNone";if(e instanceof J)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":n=e.name}return ue(this,"pageMode",n)}get viewerPreferences(){const e=this.#n.get("ViewerPreferences");if(!(e instanceof B))return ue(this,"viewerPreferences",null);let n=null;for(const[s,a]of e){let i;switch(s){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":typeof a=="boolean"&&(i=a);break;case"NonFullScreenPageMode":if(a instanceof J)switch(a.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":i=a.name;break;default:i="UseNone"}break;case"Direction":if(a instanceof J)switch(a.name){case"L2R":case"R2L":i=a.name;break;default:i="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(a instanceof J)switch(a.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":i=a.name;break;default:i="CropBox"}break;case"PrintScaling":if(a instanceof J)switch(a.name){case"None":case"AppDefault":i=a.name;break;default:i="AppDefault"}break;case"Duplex":if(a instanceof J)switch(a.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":i=a.name;break;default:i="None"}break;case"PrintPageRange":Array.isArray(a)&&a.length%2===0&&a.every((r,o,f)=>Number.isInteger(r)&&r>0&&(o===0||r>=f[o-1])&&r<=this.numPages)&&(i=a);break;case"NumCopies":Number.isInteger(a)&&a>0&&(i=a);break;default:H(`Ignoring non-standard key in ViewerPreferences: ${s}.`);continue}if(i===void 0){H(`Bad value, for key "${s}", in ViewerPreferences: ${a}.`);continue}(n??=new Map).set(s,i)}return ue(this,"viewerPreferences",n)}get openAction(){const e=this.#n.get("OpenAction"),n=new Map;if(e instanceof B){const s=new B(this.xref);s.set("A",e);const a={url:null,dest:null,action:null};_a.parseDestDictionary({destDict:s,resultObj:a}),Array.isArray(a.dest)?n.set("dest",a.dest):a.action&&n.set("action",a.action)}else A0(e)&&n.set("dest",e);return ue(this,"openAction",n.size?n:null)}get attachments(){const e=this.#n.get("Names");let n=null;if(e instanceof B&&e.has("EmbeddedFiles")){const s=new Ms(e.getRaw("EmbeddedFiles"),this.xref);for(const[a,i]of s.getAll())(n??=new Map).set(Xe(a,!0),new Sn(i).serializable)}return ue(this,"attachments",n)}#d(e){const n=this.#n.get("Names");if(n instanceof B&&n.has("EmbeddedFiles")){const s=new Ms(n.getRaw("EmbeddedFiles"),this.xref);for(const[a,i]of s.getAll())if(Xe(a,!0)===e)return Sn.readContent(i)}}attachmentContent(e){const n=this.#d(e);if(n!==void 0)return n;const s=this.#s.get(e);if(s){const a=this.xref.fetch(s);if(a instanceof Pe){const i=Sn.readStreamContent(a);return this.#a.has(e)?og(a,i)??i:i}return a instanceof B?Sn.readContent(a):null}return null}get rawEmbeddedFiles(){const e=this.#n.get("Names");return!(e instanceof B)||!e.has("EmbeddedFiles")?null:new Ms(e.getRaw("EmbeddedFiles"),this.xref).getAll(!0)}get xfaImages(){const e=this.#n.get("Names");let n=null;if(e instanceof B&&e.has("XFAImages")){const s=new Ms(e.getRaw("XFAImages"),this.xref);for(const[a,i]of s.getAll())i instanceof Pe&&(n??=new Map,n.set(Xe(a,!0),i.getBytes()))}return ue(this,"xfaImages",n)}#m(){const e=this.#n.get("Names");let n=null;function s(i,r){if(!(r instanceof B)||!ze(r.get("S"),"JavaScript"))return;let o=r.get("JS");if(o instanceof Pe)o=o.getString();else if(typeof o!="string")return;o=Xe(o,!0).replaceAll("\0",""),o&&(n??=new Map).set(i,o)}if(e instanceof B&&e.has("JavaScript")){const i=new Ms(e.getRaw("JavaScript"),this.xref);for(const[r,o]of i.getAll())s(Xe(r,!0),o)}const a=this.#n.get("OpenAction");return a&&s("OpenAction",a),n}get jsActions(){const e=this.#m();let n=N0(this.xref,this.#n,Nu);if(e){n??=new Map;for(const[s,a]of e)n.getOrInsertComputed(s,ha).push(a)}return ue(this,"jsActions",n)}async cleanup(e=!1){_f(),this.globalColorSpaceCache.clear(),this.globalImageCache.clear(e),this.pageKidsCountCache.clear(),this.pageIndexCache.clear(),this.pageDictCache.clear(),this.nonBlendModesSet.clear();for(const{dict:n}of await Promise.all(this.fontCache))delete n.cacheKey;this.fontCache.clear(),this.builtInCMapCache.clear(),this.standardFontDataCache.clear(),this.systemFontCache.clear()}async getPageDict(e){const n=[this.toplevelPagesDict],s=new bt,a=this.#n.getRaw("Pages");a instanceof Q&&s.put(a);const i=this.xref,r=this.pageKidsCountCache,o=this.pageIndexCache,f=this.pageDictCache;let l=0;for(;n.length;){const c=n.pop();if(c instanceof Q){const p=r.get(c);if(p>=0&&l+p<=e){l+=p;continue}if(s.has(c))throw new Y("Pages tree contains circular reference.");s.put(c);const m=await(f.get(c)||i.fetchAsync(c));if(m instanceof B){let b=m.getRaw("Type");if(b instanceof Q&&(b=await i.fetchAsync(b)),ze(b,"Page")||!m.has("Kids")){if(r.has(c)||r.put(c,1),o.has(c)||o.put(c,l),l===e)return[m,c];l++;continue}}n.push(m);continue}if(!(c instanceof B))throw new Y("Page dictionary kid reference points to wrong type of object.");const{objId:h}=c;let u=c.getRaw("Count");if(u instanceof Q&&(u=await i.fetchAsync(u)),Number.isInteger(u)&&u>=0&&(h&&!r.has(h)&&r.put(h,u),l+u<=e)){l+=u;continue}let d=c.getRaw("Kids");if(d instanceof Q&&(d=await i.fetchAsync(d)),!Array.isArray(d)){let p=c.getRaw("Type");if(p instanceof Q&&(p=await i.fetchAsync(p)),ze(p,"Page")||!c.has("Kids")){if(l===e)return[c,null];l++;continue}throw new Y("Page dictionary kids object is not an array.")}for(let p=d.length-1;p>=0;p--){const m=d[p];n.push(m),c===this.toplevelPagesDict&&m instanceof Q&&!f.has(m)&&f.put(m,i.fetchAsync(m))}}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:n}=this.pdfManager.evaluatorOptions,s=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new bt,i=this.#n.getRaw("Pages");i instanceof Q&&a.put(i);const r=new Map,o=this.xref,f=this.pageIndexCache;let l=0;function c(u,d){d&&!f.has(d)&&f.put(d,l),r.set(l++,[u,d])}function h(u){if(u instanceof aa&&!e)throw u;e&&n&&l===0&&(H(`getAllPageDicts - Skipping invalid first page: "${u}".`),u=B.empty),r.set(l++,[u,null])}for(;s.length>0;){const u=s.at(-1),{currentNode:d,posInKids:p}=u;let m=d.getRaw("Kids");if(m instanceof Q)try{m=await o.fetchAsync(m)}catch(j){h(j);break}if(!Array.isArray(m)){let j=d.getRaw("Type");if(j instanceof Q)try{j=await o.fetchAsync(j)}catch(k){h(k);break}if(ze(j,"Page")||!d.has("Kids")){c(d,null);break}h(new Y("Page dictionary kids object is not an array."));break}if(p>=m.length){s.pop();continue}const b=m[p];let w;if(b instanceof Q){if(a.has(b)){h(new Y("Pages tree contains circular reference."));break}a.put(b);try{w=await o.fetchAsync(b)}catch(j){h(j);break}}else w=b;if(!(w instanceof B)){h(new Y("Page dictionary kid reference points to wrong type of object."));break}let x=w.getRaw("Type");if(x instanceof Q)try{x=await o.fetchAsync(x)}catch(j){h(j);break}ze(x,"Page")||!w.has("Kids")?c(w,b instanceof Q?b:null):s.push({currentNode:w,posInKids:0}),u.posInKids++}return r}async getPageIndex(e){const n=this.pageIndexCache.get(e);if(n!==void 0)return n;const s=this.xref;let a=0,i=e;const r=new bt;for(r.put(e);;){const o=await s.fetchAsync(i);if(xi(i,e)&&!wi(o,"Page")&&!(o instanceof B&&!o.has("Type")&&o.has("Contents")))throw new Y("The reference does not point to a /Page dictionary.");if(!o)break;if(!(o instanceof B))throw new Y("Node must be a dictionary.");const f=o.getRaw("Parent");if(f instanceof Q){if(r.has(f))throw new Y("Pages tree contains circular reference.");r.put(f)}const l=await o.getAsync("Parent");if(!l)break;if(!(l instanceof B))throw new Y("Parent must be a dictionary.");const c=await l.getAsync("Kids");if(!c)break;if(!Array.isArray(c))throw new Y("Kids must be an array.");const h=[];let u=!1;for(const d of c){if(!(d instanceof Q))throw new Y("Kid must be a reference.");if(xi(d,i)){u=!0;break}h.push(s.fetchAsync(d).then(p=>{if(!(p instanceof B))throw new Y("Kid node must be a dictionary.");if(p.has("Count")){const m=p.get("Count");if(Number.isInteger(m)&&m>=0){a+=m;return}throw new Y("Count must be a (positive) integer.")}a++}))}if(!u)throw new Y("Kid reference not found in parent's kids.");await Promise.all(h),i=f}return this.pageIndexCache.put(e,a),a}get baseUrl(){const e=this.#n.get("URI");if(e instanceof B){const n=e.get("Base");if(typeof n=="string"){const s=x0(n,null,{tryConvertEncoding:!0});if(s)return ue(this,"baseUrl",s.href)}}return ue(this,"baseUrl",this.pdfManager.docBaseUrl)}static#p(e,n){const s=e.fetchIfRef(n);if(!(s instanceof B))return null;let a=null;const i=s.getRaw("Pg");if(i instanceof Q&&(a=i),!a){const l=[s],c=new bt;for(c.put(n);l.length>0&&!a;){let u=l.shift().getRaw("K");if(u instanceof Q){if(c.has(u))continue;c.put(u),u=e.fetch(u)}let d;if(Array.isArray(u))d=u;else if(u)d=[u];else continue;for(const p of d){if(p instanceof Q){if(c.has(p))continue;c.put(p)}const m=e.fetchIfRef(p);if(!(m instanceof B))continue;const b=m.getRaw("Pg");if(b instanceof Q){a=b;break}l.push(m)}}}if(!a){let c=s;for(let h=0;h<40;h++){const u=c.getRaw("P");if(!(u instanceof Q))break;const d=e.fetch(u);if(!(d instanceof B)||ze(d.get("Type"),"StructTreeRoot"))break;const p=d.getRaw("Pg");if(p instanceof Q){a=p;break}c=d}}if(!a)return null;let r=null,o=null;const f=s.get("A");if(f instanceof B){const l=dr(f.getArray("BBox"),null);l&&(r=l[0],o=l[3])}return[a,{name:"XYZ"},r,o,null]}static parseDestDictionary({destDict:e,resultObj:n,docBaseUrl:s=null,docAttachments:a=null}){if(!(e instanceof B)){H("parseDestDictionary: `destDict` must be a dictionary.");return}let i=e.get("A"),r,o;if(i instanceof B||(e.has("Dest")?i=e.get("Dest"):(i=e.get("AA"),i instanceof B&&(i.has("D")?i=i.get("D"):i.has("U")&&(i=i.get("U"))))),i instanceof B){const f=i.get("S");if(!(f instanceof J)){H("parseDestDictionary: Invalid type in Action dictionary.");return}const l=f.name;switch(l){case"ResetForm":const c=i.get("Flags"),h=((typeof c=="number"?c:0)&1)===0,u=[],d=[];for(const F of i.get("Fields")||[])F instanceof Q?d.push(F.toString()):typeof F=="string"&&u.push(Xe(F));n.resetForm={fields:u,refs:d,include:h};break;case"URI":r=i.get("URI"),r instanceof J&&(r="/"+r.name);break;case"GoTo":o=i.get("D");break;case"Launch":case"GoToR":const p=i.get("F");if(p instanceof B)r=new Sn(p).filename;else if(typeof p=="string")r=p;else break;const m=uc(i);m&&(r=r.split("#",1)[0]+"#"+m);const b=i.get("NewWindow");typeof b=="boolean"&&(n.newWindow=b);break;case"GoToE":const w=i.get("T");let x=null;if(w instanceof B){const F=w.get("R"),M=w.get("N");ze(F,"C")&&typeof M=="string"&&(x=Xe(M,!0))}if(a&&x){n.attachmentId=x,n.attachment=a.get(x);const F=uc(i);F&&(n.attachmentDest=F)}else H('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const j=i.get("N");j instanceof J&&(n.action=j.name);break;case"SetOCGState":const k=i.get("State"),y=i.get("PreserveRB");if(!Array.isArray(k)||k.length===0)break;const q=[];for(const F of k)if(F instanceof J)switch(F.name){case"ON":case"OFF":case"Toggle":q.push(F.name);break}else F instanceof Q&&q.push(F.toString());if(q.length!==k.length)break;n.setOCGState={state:q,preserveRB:typeof y=="boolean"?y:!0};break;case"JavaScript":const v=i.get("JS");let A;v instanceof Pe?A=v.getString():typeof v=="string"&&(A=v);const S=A&&Vc(Xe(A,!0));if(S){r=S.url,n.newWindow=S.newWindow;break}default:if(l==="JavaScript"||l==="SubmitForm")break;H(`parseDestDictionary - unsupported action: "${l}".`);break}}else e.has("Dest")&&(o=e.get("Dest"));if(typeof r=="string"){const f=x0(r,s,{addDefaultProtocol:!0,tryConvertEncoding:!0});f&&(n.url=f.href),n.unsafeUrl=r}if(o&&(o instanceof J&&(o=o.name),typeof o=="string"?n.dest=Xe(o,!0):A0(o)&&(n.dest=o)),!n.dest&&!n.url&&!n.action&&!n.attachment&&!n.setOCGState&&!n.resetForm){const f=e.getRaw("SE");if(f instanceof Q)try{const l=_a.#p(e.xref,f);l&&(n.dest=l)}catch(l){if(l instanceof kt)throw l;ut("SE parsing failed.")}}}}const hg=16384;function t0(t,e,n,s){const a=new B(t);return a.set("Type",J.get("XObject")),a.set("Subtype",J.get("Image")),a.set("BitsPerComponent",8),a.setIfName("ColorSpace",s),a.set("Width",e),a.set("Height",n),a}function rr(t,e){return new yt(t,0,t.length,e)}function ug(t,e,n){const s=t+e-n,a=Math.abs(s-t),i=Math.abs(s-e),r=Math.abs(s-n);return a<=i&&a<=r?t:i<=r?e:n}function dg(t,e,n,s){const a=e*s,i=new Uint8Array(n*(a+1)),r=[new Uint8Array(a),new Uint8Array(a),new Uint8Array(a),new Uint8Array(a),new Uint8Array(a)];for(let o=0;o=s?t[p-s]:0,w=o>0?t[l+d]:0,x=o>0&&d>=s?t[l+d-s]:0;r[0][d]=m,r[1][d]=m-b&255,r[2][d]=m-w&255,r[3][d]=m-(b+w>>1)&255,r[4][d]=m-ug(b,w,x)&255;for(let j=0;j<5;j++){const k=r[j][d];c[j]+=k<128?k:256-k}}let h=0;for(let d=1;d<5;d++)c[d]{try{await n.ready,await n.write(t),await n.ready,await n.close()}catch(i){throw await n.abort(i).catch(()=>{}),i}})(),[a]=await Promise.all([new Response(e.readable).bytes(),s.then(()=>null)]);return a}async function dc(t,e,n,s){const a=t.length/(e*n);let i;if(typeof CompressionStream=="function")try{const o=dg(t,e,n,a);i=await mg(o)}catch{}if(!i)return rr(t,s);s.setIfName("Filter","FlateDecode");const r=new B(s.xref);return r.set("Predictor",15),r.set("Columns",e),r.set("Colors",a),r.set("BitsPerComponent",8),s.set("DecodeParms",r),rr(i,s)}async function _h(t,e,{closeBitmap:n=!1}={}){const{width:s,height:a}=t;if(!Number.isInteger(s)||!Number.isInteger(a)||s<=0||a<=0)throw n&&t.close?.(),new Error(`createImage: invalid bitmap dimensions ${s}x${a}`);const i=new OffscreenCanvas(s,a),r=i.getContext("2d",{alpha:!0,willReadFrequently:!0});let o;try{r.drawImage(t,0,0),o=r.getImageData(0,0,s,a).data}finally{n&&t.close?.()}const f=new Uint32Array(o.buffer,o.byteOffset,o.byteLength>>2),l=Tn.isLittleEndian,c=l?16777215:4294967040,h=new Set;let u=!1,d=!0;for(const y of f){if((l?y>>>24:y&255)!==255){u=!0;break}d&&(h.add((y&c)>>>0),h.size>hg&&(d=!1,h.clear()))}u&&(d=!0);const p=t0(e,s,a,"DeviceRGB");let m,b=null;if(d){const y=new Uint8Array(s*a*3);for(let q=0,v=0,A=o.length;qy.bytes()).then(y=>rr(y,p));let w=Promise.resolve(null),x=null;if(u){const y=new Uint8Array(f.length);if(l)for(let A=0,S=f.length;A>>24;else for(let A=0,S=f.length;At.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:t=>t==="http://ns.adobe.com/xdp/pdf/"},signature:{id:6,check:t=>t==="http://www.w3.org/2000/09/xmldsig#"},sourceSet:{id:7,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:t=>t==="http://www.w3.org/1999/XSL/Transform"},template:{id:9,check:t=>t.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:t=>t.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:t=>t==="http://ns.adobe.com/xdp/"},xfdf:{id:12,check:t=>t==="http://ns.adobe.com/xfdf/"},xhtml:{id:13,check:t=>t==="http://www.w3.org/1999/xhtml"},xmpmeta:{id:14,check:t=>t==="http://ns.adobe.com/xmpmeta/"}},wg={pt:t=>t,cm:t=>t/2.54*72,mm:t=>t/(10*2.54)*72,in:t=>t*72,px:t=>t},xg=/([+-]?\d+\.?\d*)(.*)/;function X0(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}function Ve({data:t,defaultValue:e,validate:n}){if(!t)return e;t=t.trim();const s=parseInt(t,10);return!isNaN(s)&&n(s)?s:e}function I0({data:t,defaultValue:e,validate:n}){if(!t)return e;t=t.trim();const s=parseFloat(t);return!isNaN(s)&&n(s)?s:e}function Y0({data:t,defaultValue:e,validate:n}){return t?(t=t.trim(),n(t)?t:e):e}function re(t,e){return Y0({data:t,defaultValue:e[0],validate:n=>e.includes(n)})}function Se(t,e="0"){if(e||="0",!t)return Se(e);const n=t.trim().match(xg);if(!n)return Se(e);const[,s,a]=n,i=parseFloat(s);if(isNaN(i))return Se(e);if(i===0)return 0;const r=wg[a];return r?r(i):i}function mc(t){if(!t)return{num:1,den:1};const e=t.split(":",2).map(a=>parseFloat(a.trim())).filter(a=>!isNaN(a));if(e.length===1&&e.push(1),e.length===0)return{num:1,den:1};const[n,s]=e;return{num:n,den:s}}function ws(t){return t?t.trim().split(/\s+/).map(e=>({excluded:e[0]==="-",viewname:e.substring(1)})):[]}function jg(t,e=[0,0,0]){let[n,s,a]=e;if(!t)return{r:n,g:s,b:a};const i=t.split(",",3).map(r=>(r=parseInt(r.trim(),10),isNaN(r)?0:Tt(r,0,255)));return i.length<3?{r:n,g:s,b:a}:([n,s,a]=i,{r:n,g:s,b:a})}function kg(t){if(!t)return{x:-1,y:-1,width:-1,height:-1};const n=t.split(",",4).map(o=>Se(o.trim(),"-1"));if(n.length<4||n[2]<0||n[3]<0)return{x:-1,y:-1,width:-1,height:-1};const[s,a,i,r]=n;return{x:s,y:a,width:i,height:r}}class Re{static get FAILURE(){return ue(this,"FAILURE",new Re(!1,null,null,null))}static get EMPTY(){return ue(this,"EMPTY",new Re(!0,null,null,null))}constructor(e,n,s,a){this.success=e,this.html=n,this.bbox=s,this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new Re(!1,null,null,e)}static success(e,n=null){return new Re(!0,e,n,null)}}class yg{constructor(e){this.fonts=new Map,this.cache=new Map,this.warned=new Set,this.defaultFont=null,this.add(e)}add(e,n=null){for(const a of e)this.addPdfFont(a);for(const a of this.fonts.values())a.regular||=a.italic||a.bold||a.bolditalic;if(!n||n.size===0)return;const s=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const a of n)this.fonts.set(a,s)}addPdfFont(e){const n=e.cssFontInfo,s=n.fontFamily,a=this.fonts.getOrInsertComputed(s,$u);this.defaultFont??=a;let i="";const r=parseFloat(n.fontWeight);parseFloat(n.italicAngle)!==0?i=r>=700?"bolditalic":"italic":r>=700&&(i="bold"),i||((e.name.includes("Bold")||e.psName?.includes("Bold"))&&(i="bold"),(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(i+="italic")),i||="regular",a[i]=e}getDefault(){return this.defaultFont}find(e,n=!0){let s=this.fonts.get(e)||this.cache.get(e);if(s)return s;const a=/[,\-_ ]|bolditalic|bold|italic|regular|it/gi;let i=e.replaceAll(a,"");if(s=this.fonts.get(i),s)return this.cache.set(e,s),s;i=i.toLowerCase();const r=[];for(const[o,f]of this.fonts)o.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(f);if(r.length===0)for(const o of this.fonts.values())o.regular.name?.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(o);if(r.length===0){i=i.replaceAll(/psmt|mt/gi,"");for(const[o,f]of this.fonts)o.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(f)}if(r.length===0)for(const o of this.fonts.values())o.regular.name?.replaceAll(a,"").toLowerCase().startsWith(i)&&r.push(o);return r.length>=1?(r.length!==1&&n&&H(`XFA - Too many choices to guess the correct font: ${e}`),this.cache.set(e,r[0]),r[0]):(n&&!this.warned.has(e)&&(this.warned.add(e),H(`XFA - Cannot find the font: ${e}`)),null)}}function Of(t,e){return t.posture==="italic"?t.weight==="bold"?e.bolditalic:e.italic:t.weight==="bold"?e.bold:e.regular}function qg(t,e=!1){let n=null;if(t){const r=X0(t.typeface),o=t[qt].fontFinder.find(r);n=Of(t,o)}if(!n)return{lineHeight:12,lineGap:2,lineNoGap:10};const s=t.size||10,a=n.lineHeight?Math.max(e?0:1.2,n.lineHeight):1.2,i=n.lineGap===void 0?.2:n.lineGap;return{lineHeight:a*s,lineGap:i*s,lineNoGap:Math.max(1,a-i)*s}}const vg=1.02;class pc{constructor(e,n,s,a){if(this.lineHeight=s,this.paraMargin=n||{top:0,bottom:0,left:0,right:0},!e){[this.pdfFont,this.xfaFont]=this.defaultFont(a);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=a.find(e.typeface);if(!i){[this.pdfFont,this.xfaFont]=this.defaultFont(a);return}this.pdfFont=Of(e,i),this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))}defaultFont(e){const n=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(n?.regular){const a=n.regular,r={typeface:a.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0};return[a,r]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class Sg{constructor(e,n,s,a){this.fontFinder=a,this.stack=[new pc(e,n,s,a)]}pushData(e,n,s){const a=this.stack.at(-1);for(const r of["typeface","posture","weight","size","letterSpacing"])e[r]||=a.xfaFont[r];for(const r of["top","bottom","left","right"])isNaN(n[r])&&(n[r]=a.paraMargin[r]);const i=new pc(e,n,s||a.lineHeight,this.fontFinder);i.pdfFont||=a.pdfFont,this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class Ag{constructor(e,n,s,a){this.glyphs=[],this.fontSelector=new Sg(e,n,s,a),this.extraHeight=0}pushData(e,n,s){this.fontSelector.pushData(e,n,s)}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 n=this.fontSelector.topFont(),s=n.xfaFont.size;if(n.pdfFont){const a=n.xfaFont.letterSpacing,i=n.pdfFont,r=i.lineHeight||1.2,o=n.lineHeight||Math.max(1.2,r)*s,f=i.lineGap===void 0?.2:i.lineGap,l=r-f,c=Math.max(1,l)*s,h=s/1e3,u=i.defaultWidth||i.charsToGlyphs(" ")[0].width;for(const d of e.split(/[\u2029\n]/)){const p=i.encodeString(d).join(""),m=i.charsToGlyphs(p);for(const b of m){const w=b.width||u;this.glyphs.push([w*h+a,o,c,b.unicode,!1])}this.glyphs.push([0,0,0,` +`,!0])}this.glyphs.pop();return}for(const a of e.split(/[\u2029\n]/)){for(const i of a.split(""))this.glyphs.push([s,1.2*s,s,i,!1]);this.glyphs.push([0,0,0,` +`,!0])}this.glyphs.pop()}compute(e){let n=-1,s=0,a=0,i=0,r=0,o=0,f=!1,l=!0;for(let c=0,h=this.glyphs.length;ce?(a=Math.max(a,r),r=0,i+=o,o=x,n=-1,s=0,f=!0,l=!1):(o=Math.max(x,o),s=r,r+=u,n=c);continue}if(r+u>e){i+=o,o=x,n!==-1?(c=n,a=Math.max(a,s),r=0,n=-1,s=0):(a=Math.max(a,r),r=u),f=!0,l=!1;continue}r+=u,o=Math.max(x,o)}return a=Math.max(a,r),i+=o+this.extraHeight,{width:vg*a,height:i,isBroken:f}}}const gc=/^[^.[]+/,Ig=/^[^\]]+/,Gn={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},zh=new Map([["$data",(t,e)=>t.datasets?t.datasets.data:t],["$record",(t,e)=>(t.datasets?t.datasets.data:t)[xn]()[0]],["$template",(t,e)=>t.template],["$connectionSet",(t,e)=>t.connectionSet],["$form",(t,e)=>t.form],["$layout",(t,e)=>t.layout],["$host",(t,e)=>t.host],["$dataWindow",(t,e)=>t.dataWindow],["$event",(t,e)=>t.event],["!",(t,e)=>t.datasets],["$xfa",(t,e)=>t],["xfa",(t,e)=>t],["$",(t,e)=>e]]),Cg=new WeakMap;function Tg(t){return t=t.trim(),t==="*"?1/0:parseInt(t,10)||0}function Uh(t,e,n=!0){let s=t.match(gc);if(!s)return null;let[a]=s;const i=[{name:a,cacheName:"."+a,index:0,js:null,formCalc:null,operator:Gn.dot}];let r=a.length;for(;r0&&p.push(b)}if(p.length===0&&!f&&o===0){if(e=e[Ye](),!e)return null;o=-1,t=[e];continue}t=isFinite(d)?p.filter(m=>dm[d]):p.flat()}return t.length===0?null:t}function Bg(t,e,n){const s=Uh(n);if(!s||s.some(r=>r.operator===Gn.dotDot))return null;const a=zh.get(s[0].name);let i=0;a?(t=a(t,e),i=1):t=e||t;for(let r=s.length;ie[Xt]()).join("")}get[ri](){const e=Object.getPrototypeOf(this);if(!e._attributes){const n=e._attributes=new Set;for(const s of Object.getOwnPropertyNames(this)){if(this[s]===null||this[s]instanceof V||this[s]instanceof E)break;n.add(s)}}return ue(this,ri,e._attributes)}[sa](e){let n=this;for(;n;){if(n===e)return!0;n=n[Ye]()}return!1}[Ye](){return this[Yn]}[Ot](){return this[Ye]()}[vi](){const e=Object.create(null);this[se]&&(e.$content=this[se]);for(const n of Object.getOwnPropertyNames(this)){const s=this[n];s!==null&&(s instanceof V?e[n]=s[vi]():s instanceof E?s.isEmpty()||(e[n]=s.dump()):e[n]=s)}return e}[dt](){return null}[Oe](){return Re.EMPTY}*[Si](){for(const e of this[xn]())yield e}*[bc](e,n){for(const s of this[Si]())if(!e||n===e.has(s[gt])){const a=this[Na](),i=s[Oe](a);i.success||(this[U].failingNode=s),yield i}}[Hr](){return null}[Pa](e,n){this[U].children.push(e)}[Na](){}[pa]({filter:e=null,include:n=!0}){if(!this[U].generator)this[U].generator=this[bc](e,n);else{const s=this[Na](),a=this[U].failingNode[Oe](s);if(!a.success)return a;a.html&&this[Pa](a.html,a.bbox),delete this[U].failingNode}for(;;){const s=this[U].generator.next();if(s.done)break;const a=s.value;if(!a.success)return a;a.html&&this[Pa](a.html,a.bbox)}return this[U].generator=null,Re.EMPTY}[Oh](e){this[$i]=new Set(Object.keys(e))}[wc](e){const n=this[ri],s=this[$i];return e.keys().filter(a=>n.has(a)&&!s.has(a)).toArray()}[er](e,n=new Set){for(const s of this[rt])s[Vi](e,n)}[Vi](e,n){const s=this[Co](e,n);s?this[n0](s,e,n):this[er](e,n)}[Co](e,n){const{use:s,usehref:a}=this;if(!s&&!a)return null;let i=null,r=null,o=null,f=s;if(a?(f=a,a.startsWith("#som(")&&a.endsWith(")")?r=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?r=a.slice(6,-1):a.startsWith("#")?o=a.slice(1):a.startsWith(".#")&&(o=a.slice(2))):s.startsWith("#")?o=s.slice(1):r=s,this.use=this.usehref="",o?i=e.get(o):(i=ta(e.get(Nh),this,r,!0,!1),i&&=i[0]),!i)return H(`XFA - Invalid prototype reference: ${f}.`),null;if(i[gt]!==this[gt])return H(`XFA - Incompatible prototype: ${i[gt]} !== ${this[gt]}.`),null;if(n.has(i))return H("XFA - Cycle detected in prototypes use."),null;n.add(i);const l=i[Co](e,n);return l&&i[n0](l,e,n),i[er](e,n),n.delete(i),i}[n0](e,n,s){if(s.has(e)){H("XFA - Cycle detected in prototypes use.");return}!this[se]&&e[se]&&(this[se]=e[se]),new Set(s).add(e);for(const i of this[wc](e[$i]))this[i]=e[i],this[$i]&&this[$i].add(i);for(const i of Object.getOwnPropertyNames(this)){if(this[ri].has(i))continue;const r=this[i],o=e[i];if(r instanceof E){for(const f of r[rt])f[Vi](n,s);for(let f=r[rt].length,l=o[rt].length;fV[Ao](n)):typeof e=="object"&&e!==null?Object.assign({},e):e}[ds](){const e=Object.create(Object.getPrototypeOf(this));for(const n of Object.getOwnPropertySymbols(this))try{e[n]=this[n]}catch{ue(e,n,this[n])}e[wt]=`${e[gt]}${cf++}`,e[rt]=[];for(const n of Object.getOwnPropertyNames(this)){if(this[ri].has(n)){e[n]=V[Ao](this[n]);continue}const s=this[n];e[n]=s instanceof E?new E(s[tr]):null}for(const n of this[rt]){const s=n[gt],a=n[ds]();e[rt].push(a),a[Yn]=e,e[s]===null?e[s]=a:e[s][rt].push(a)}return e}[xn](e=null){return e?this[rt].filter(n=>n[gt]===e):this[rt]}[$0](e){return this[e]}[vr](e,n,s=!0){return Array.from(this[or](e,n,s))}*[or](e,n,s=!0){if(e==="parent"){yield this[Yn];return}for(const a of this[rt])a[gt]===e&&(yield a),a.name===e&&(yield a),(n||a[Ar]())&&(yield*a[or](e,n,!1));s&&this[ri].has(e)&&(yield new Lf(this,e,this[e]))}}class E{constructor(e=1/0){this[tr]=e,this[rt]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){return this[rt].length<=this[tr]?(this[rt].push(e),!0):(H(`XFA - node "${e[gt]}" accepts no more than ${this[tr]} children`),!1)}isEmpty(){return this[rt].length===0}dump(){return this[rt].length===1?this[rt][0][vi]():this[rt].map(e=>e[vi]())}[ds](){const e=new E(this[tr]);return e[rt]=this[rt].map(n=>n[ds]()),e}get children(){return this[rt]}clear(){this[rt].length=0}}class Lf{constructor(e,n,s){this[Yn]=e,this[gt]=n,this[se]=s,this[vs]=!1,this[wt]=`attribute${cf++}`}[Ye](){return this[Yn]}[di](){return!0}[Pf](){return this[se].trim()}[Pn](e){e=e.value||"",this[se]=e.toString()}[Xt](){return this[se]}[sa](e){return this[Yn]===e||this[Yn][sa](e)}}class As extends V{constructor(e,n,s={}){if(super(e,n),this[se]="",this[Js]=null,n!=="#text"){const a=new Map;this[Sa]=a;for(const[i,r]of Object.entries(s))a.set(i,new Lf(this,i,r));if(Object.hasOwn(s,Ha)){const i=s[Ha].xfa.dataNode;i!==void 0&&(i==="dataGroup"?this[Js]=!1:i==="dataValue"&&(this[Js]=!0))}}this[vs]=!1}[cr](e){const n=this[gt];if(n==="#text"){e.push(mi(this[se]));return}const s=Po(n),a=this[Nt]===Gh?"xfa:":"";e.push(`<${a}${s}`);for(const[i,r]of this[Sa]){const o=Po(i);e.push(` ${o}="${mi(r[se])}"`)}if(this[Js]!==null&&(this[Js]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"')),!this[se]&&this[rt].length===0){e.push("/>");return}if(e.push(">"),this[se])typeof this[se]=="string"?e.push(mi(this[se])):this[se][cr](e);else for(const i of this[rt])i[cr](e);e.push(``)}[Ss](e){if(this[se]){const n=new As(this[Nt],"#text");this[Ht](n),n[se]=this[se],this[se]=""}return this[Ht](e),!0}[Gs](e){this[se]+=e}[vt](){if(this[se]&&this[rt].length>0){const e=new As(this[Nt],"#text");this[Ht](e),e[se]=this[se],delete this[se]}}[Oe](){return this[gt]==="#text"?Re.success({name:"#text",value:this[se]}):Re.EMPTY}[Ph](){return this[Sa]}[$0](e){const n=this[Sa].get(e);return n!==void 0?n:this[xn](e)}*[or](e,n){const s=this[Sa].get(e);s&&(yield s);for(const a of this[rt])a[gt]===e&&(yield a),n&&(yield*a[or](e,n))}*[rf](e,n){const s=this[Sa].get(e);s&&(!n||!s[vs])&&(yield s);for(const a of this[rt])yield*a[rf](e,n)}*[fr](e,n,s){for(const a of this[rt])a[gt]===e&&(!s||!a[vs])&&(yield a),n&&(yield*a[fr](e,n,s))}[di](){return this[Js]===null?this[rt].length===0||this[rt][0][Nt]===Yt.xhtml.id:this[Js]}[Pf](){return this[Js]===null?this[rt].length===0?this[se].trim():this[rt][0][Nt]===Yt.xhtml.id?this[rt][0][Xt]().trim():null:this[se].trim()}[Pn](e){e=e.value||"",this[se]=e.toString()}[vi](e=!1){const n=Object.create(null);e&&(n.$ns=this[Nt]),this[se]&&(n.$content=this[se]),n.$name=this[gt],n.children=[];for(const s of this[rt])n.children.push(s[vi](e));n.attributes=Object.create(null);for(const[s,a]of this[Sa])n.attributes[s]=a[se];return n}}class Et extends V{constructor(e,n){super(e,n),this[se]=""}[Gs](e){this[se]+=e}[vt](){}}class xt extends Et{constructor(e,n,s){super(e,n),this[s0]=s}[vt](){this[se]=Y0({data:this[se],defaultValue:this[s0][0],validate:e=>this[s0].includes(e)})}[ts](e){super[ts](e),delete this[s0]}}class it extends Et{[vt](){this[se]=this[se].trim()}}class xs extends Et{constructor(e,n,s,a){super(e,n),this[Io]=s,this[Bo]=a}[vt](){this[se]=Ve({data:this[se],defaultValue:this[Io],validate:this[Bo]})}[ts](e){super[ts](e),delete this[Io],delete this[Bo]}}class Jt extends xs{constructor(e,n){super(e,n,0,s=>s===1)}}class Wh extends xs{constructor(e,n){super(e,n,1,s=>s===0)}}function Ke(t){return typeof t=="string"?"0px":Number.isInteger(t)?`${t}px`:`${t.toFixed(2)}px`}const xc={anchorType(t,e){const n=t[Ot]();if(!(!n||n.layout&&n.layout!=="position"))switch("transform"in e||(e.transform=""),t.anchorType){case"bottomCenter":e.transform+="translate(-50%, -100%)";break;case"bottomLeft":e.transform+="translate(0,-100%)";break;case"bottomRight":e.transform+="translate(-100%,-100%)";break;case"middleCenter":e.transform+="translate(-50%,-50%)";break;case"middleLeft":e.transform+="translate(0,-50%)";break;case"middleRight":e.transform+="translate(-100%,-50%)";break;case"topCenter":e.transform+="translate(-50%,0)";break;case"topRight":e.transform+="translate(-100%,0)";break}},dimensions(t,e){const n=t[Ot]();let s=t.w;const a=t.h;if(n.layout?.includes("row")){const i=n[U],r=t.colSpan;let o;r===-1?(o=Math.sumPrecise(i.columnWidths.slice(i.currentColumn)),i.currentColumn=0):(o=Math.sumPrecise(i.columnWidths.slice(i.currentColumn,i.currentColumn+r)),i.currentColumn=(i.currentColumn+t.colSpan)%i.columnWidths.length),isNaN(o)||(s=t.w=o)}e.width=s!==""?Ke(s):"auto",e.height=a!==""?Ke(a):"auto"},position(t,e){const n=t[Ot]();n?.layout&&n.layout!=="position"||(e.position="absolute",e.left=Ke(t.x),e.top=Ke(t.y))},rotate(t,e){t.rotate&&("transform"in e||(e.transform=""),e.transform+=`rotate(-${t.rotate}deg)`,e.transformOrigin="top left")},presence(t,e){switch(t.presence){case"invisible":e.visibility="hidden";break;case"hidden":case"inactive":e.display="none";break}},hAlign(t,e){if(t[gt]==="para")switch(t.hAlign){case"justifyAll":e.textAlign="justify-all";break;case"radix":e.textAlign="left";break;default:e.textAlign=t.hAlign}else switch(t.hAlign){case"left":e.alignSelf="start";break;case"center":e.alignSelf="center";break;case"right":e.alignSelf="end";break}},margin(t,e){t.margin&&(e.margin=t.margin[dt]().margin)}};function Kh(t,e){t[Ot]().layout==="position"&&(t.minW>0&&(e.minWidth=Ke(t.minW)),t.maxW>0&&(e.maxWidth=Ke(t.maxW)),t.minH>0&&(e.minHeight=Ke(t.minH)),t.maxH>0&&(e.maxHeight=Ke(t.maxH)))}function jc(t,e,n,s,a,i){const r=new Ag(e,n,s,a);return typeof t=="string"?r.addString(t):t[Bs](r),r.compute(i)}function zf(t,e){let n=null,s=null,a=!1;if((!t.w||!t.h)&&t.value){let i=0,r=0;t.margin&&(i=t.margin.leftInset+t.margin.rightInset,r=t.margin.topInset+t.margin.bottomInset);let o=null,f=null;t.para&&(f=Object.create(null),o=t.para.lineHeight===""?null:t.para.lineHeight,f.top=t.para.spaceAbove===""?0:t.para.spaceAbove,f.bottom=t.para.spaceBelow===""?0:t.para.spaceBelow,f.left=t.para.marginLeft===""?0:t.para.marginLeft,f.right=t.para.marginRight===""?0:t.para.marginRight);let l=t.font;if(!l){const u=t[_t]();let d=t[Ye]();for(;d&&d!==u;){if(d.font){l=d.font;break}d=d[Ye]()}}const c=(t.w||e.width)-i,h=t[qt].fontFinder;if(t.value.exData&&t.value.exData[se]&&t.value.exData.contentType==="text/html"){const u=jc(t.value.exData[se],l,f,o,h,c);s=u.width,n=u.height,a=u.isBroken}else{const u=t.value[Xt]();if(u){const d=jc(u,l,f,o,h,c);s=d.width,n=d.height,a=d.isBroken}}s!==null&&!t.w&&(s+=i),n!==null&&!t.h&&(n+=r)}return{w:s,h:n,isBroken:a}}function Vh(t,e,n){let s;if(t.w!==""&&t.h!=="")s=[t.x,t.y,t.w,t.h];else{if(!n)return null;let a=t.w;if(a===""){if(t.maxW===0){const r=t[Ot]();a=r.layout==="position"&&r.w!==""?0:t.minW}else a=Math.min(t.maxW,n.width);e.attributes.style.width=Ke(a)}let i=t.h;if(i===""){if(t.maxH===0){const r=t[Ot]();i=r.layout==="position"&&r.h!==""?0:t.minH}else i=Math.min(t.maxH,n.height);e.attributes.style.height=Ke(i)}s=[t.x,t.y,a,i]}return s}function J0(t){const e=t[Ot]();if(e.layout?.includes("row")){const n=e[U],s=t.colSpan;let a;s===-1?a=Math.sumPrecise(n.columnWidths.slice(n.currentColumn)):a=Math.sumPrecise(n.columnWidths.slice(n.currentColumn,n.currentColumn+s)),isNaN(a)||(t.w=a)}e.layout&&e.layout!=="position"&&(t.x=t.y=0),t.layout==="table"&&t.w===""&&Array.isArray(t.columnWidths)&&(t.w=Math.sumPrecise(t.columnWidths))}function $h(t){switch(t.layout){case"position":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";default:return"xfaPosition"}}function Fn(t,...e){const n=Object.create(null);for(const s of e){const a=t[s];if(a!==null){if(Object.hasOwn(xc,s)){xc[s](t,n);continue}if(a instanceof V){const i=a[dt]();i?Object.assign(n,i):H(`(DEBUG) - XFA - style for ${s} not implemented yet`)}}}return n}function Oa(t,e){const{attributes:n}=e,{style:s}=n,a={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};if(n.class.push("xfaWrapped"),t.border){const{widths:i,insets:r}=t.border[U];let o,f,l=r[0],c=r[3];const h=r[0]+r[2],u=r[1]+r[3];switch(t.border.hand){case"even":l-=i[0]/2,c-=i[3]/2,o=`calc(100% + ${(i[1]+i[3])/2-u}px)`,f=`calc(100% + ${(i[0]+i[2])/2-h}px)`;break;case"left":l-=i[0],c-=i[3],o=`calc(100% + ${i[1]+i[3]-u}px)`,f=`calc(100% + ${i[0]+i[2]-h}px)`;break;case"right":o=u?`calc(100% - ${u}px)`:"100%",f=h?`calc(100% - ${h}px)`:"100%";break}const d=["xfaBorder"];Bi(t.border)&&d.push("xfaPrintOnly");const p={name:"div",attributes:{class:d,style:{top:`${l}px`,left:`${c}px`,width:o,height:f}},children:[]};for(const m of["border","borderWidth","borderColor","borderRadius","borderStyle"])s[m]!==void 0&&(p.attributes.style[m]=s[m],delete s[m]);a.children.push(p,e)}else a.children.push(e);for(const i of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])s[i]!==void 0&&(a.attributes.style[i]=s[i],delete s[i]);return a.attributes.style.position=s.position==="absolute"?"absolute":"relative",delete s.position,s.alignSelf&&(a.attributes.style.alignSelf=s.alignSelf,delete s.alignSelf),a}function Xh(t){const e=Se(t.textIndent,"0px");if(e>=0)return;const s="padding"+((t.textAlign==="right"?"right":"left")==="left"?"Left":"Right"),a=Se(t[s],"0px");t[s]=`${a-e}px`}function Uf(t,e){switch(t.access){case"nonInteractive":e.push("xfaNonInteractive");break;case"readOnly":e.push("xfaReadOnly");break;case"protected":e.push("xfaDisabled");break}}function Bi(t){return t.relevant.length>0&&!t.relevant[0].excluded&&t.relevant[0].viewname==="print"}function Yh(t){const e=t[_t]()[U].paraStack;return e.length?e.at(-1):null}function Jh(t,e,n){if(n.attributes.class?.includes("xfaRich")){e&&(t.h===""&&(e.height="auto"),t.w===""&&(e.width="auto"));const s=Yh(t);if(s){const a=n.attributes.style;switch(a.display="flex",a.flexDirection="column",s.vAlign){case"top":a.justifyContent="start";break;case"bottom":a.justifyContent="end";break;case"middle":a.justifyContent="center";break}const i=s[dt]();for(const[r,o]of Object.entries(i))r in a||(a[r]=o)}}}function Qh(t,e,n,s){if(!n){delete s.fontFamily;return}const a=X0(t.typeface);s.fontFamily=hl(a);const i=n.find(a);if(i){const{fontFamily:r}=i.regular.cssFontInfo;r!==a&&(s.fontFamily=hl(r));const o=Yh(e);if(o&&o.lineHeight!==""||s.lineHeight)return;const f=Of(t,i);f&&(s.lineHeight=Math.max(1.2,f.lineHeight))}}function Zh(t){const e=x0(t,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return e?e.href:null}function eu(t,e){return{name:"div",attributes:{class:[t.layout==="lr-tb"?"xfaLr":"xfaRl"]},children:e}}function tu(t){if(!t[U])return null;const n={name:"div",attributes:t[U].attributes,children:t[U].children};if(t[U].failingNode){const s=t[U].failingNode[Hr]();s&&(t.layout.endsWith("-tb")?n.children.push(eu(t,[s])):n.children.push(s))}return n.children.length===0?null:n}function nu(t,e,n){const s=t[U],a=s.availableSpace,[i,r,o,f]=n;switch(t.layout){case"position":{s.width=Math.max(s.width,i+o),s.height=Math.max(s.height,r+f),s.children.push(e);break}case"lr-tb":case"rl-tb":(!s.line||s.attempt===1)&&(s.line=eu(t,[]),s.children.push(s.line),s.numberInLine=0),s.numberInLine+=1,s.line.children.push(e),s.attempt===0?(s.currentWidth+=o,s.height=Math.max(s.height,s.prevHeight+f)):(s.currentWidth=o,s.prevHeight=s.height,s.height+=f,s.attempt=0),s.width=Math.max(s.width,s.currentWidth);break;case"rl-row":case"row":{s.children.push(e),s.width+=o,s.height=Math.max(s.height,f);const l=Ke(s.height);for(const c of s.children)c.attributes.style.height=l;break}case"table":{s.width=Tt(o,s.width,a.width),s.height+=f,s.children.push(e);break}case"tb":{s.width=Tt(o,s.width,a.width),s.height+=f,s.children.push(e);break}}}function su(t){const e=t[U].availableSpace,n=t.margin?t.margin.topInset+t.margin.bottomInset:0,s=t.margin?t.margin.leftInset+t.margin.rightInset:0;switch(t.layout){case"lr-tb":case"rl-tb":return t[U].attempt===0?{width:e.width-s-t[U].currentWidth,height:e.height-n-t[U].prevHeight}:{width:e.width-s,height:e.height-n-t[U].height};case"rl-row":case"row":return{width:Math.sumPrecise(t[U].columnWidths.slice(t[U].currentColumn)),height:e.height-s};case"table":case"tb":return{width:e.width-s,height:e.height-n-t[U].height};default:return e}}function Fg(t){let e=t.w===""?NaN:t.w,n=t.h===""?NaN:t.h,[s,a]=[0,0];switch(t.anchorType||""){case"bottomCenter":[s,a]=[e/2,n];break;case"bottomLeft":[s,a]=[0,n];break;case"bottomRight":[s,a]=[e,n];break;case"middleCenter":[s,a]=[e/2,n/2];break;case"middleLeft":[s,a]=[0,n/2];break;case"middleRight":[s,a]=[e,n/2];break;case"topCenter":[s,a]=[e/2,0];break;case"topRight":[s,a]=[e,0];break}let i,r;switch(t.rotate||0){case 0:[i,r]=[-s,-a];break;case 90:[i,r]=[-a,s],[e,n]=[n,-e];break;case 180:[i,r]=[s,a],[e,n]=[-e,-n];break;case 270:[i,r]=[a,-s],[e,n]=[-n,e];break}return[t.x+i+Math.min(0,e),t.y+r+Math.min(0,n),Math.abs(e),Math.abs(n)]}function Q0(t,e){if(t[_t]()[U].firstUnsplittable===null||t.w===0||t.h===0)return!0;const n=2,s=t[Ot](),a=s[U]?.attempt||0,[,i,r,o]=Fg(t);switch(s.layout){case"lr-tb":case"rl-tb":return a===0?t[_t]()[U].noLayoutFailure?t.w!==""?Math.round(r-e.width)<=n:e.width>n:t.h!==""&&Math.round(o-e.height)>n?!1:t.w!==""?Math.round(r-e.width)<=n?!0:s[U].numberInLine===0?e.height>n:!1:e.width>n:t[_t]()[U].noLayoutFailure?!0:t.h!==""&&Math.round(o-e.height)>n?!1:t.w===""||Math.round(r-e.width)<=n?e.height>n:s[Ws]()?!1:e.height>n;case"table":case"tb":return t[_t]()[U].noLayoutFailure?!0:t.h!==""&&!t[Us]()?Math.round(o-e.height)<=n:t.w===""||Math.round(r-e.width)<=n?e.height>n:s[Ws]()?!1:e.height>n;case"position":if(t[_t]()[U].noLayoutFailure||t.h===""||Math.round(o+i-e.height)<=n)return!0;const f=t[_t]()[U].currentContentArea;return o+i>f.h;case"rl-row":case"row":return t[_t]()[U].noLayoutFailure?!0:t.h!==""?Math.round(o-e.height)<=n:!0;default:return!0}}const pe=Yt.template.id,C0=2,Rg=3,Hg=5e3,Eg=/^H(\d+)$/,Mg=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"]),Dg=[[[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 kc(t){if(!t||!t.border)return{w:0,h:0};const e=t.border[cn]();return e?{w:e.widths[0]+e.widths[2]+e.insets[0]+e.insets[2],h:e.widths[1]+e.widths[3]+e.insets[1]+e.insets[3]}:{w:0,h:0}}function Gf(t){return t.margin&&(t.margin.topInset||t.margin.rightInset||t.margin.bottomInset||t.margin.leftInset)}function Wf(t,e){if(!t.value){const n=new Qf({});t[Ht](n),t.value=n}t.value[Pn](e)}function*Kf(t){for(const e of t[xn]()){if(e instanceof Xf){yield*e[Si]();continue}yield e}}function Er(t){return t.validate?.nullTest==="error"}function Z0(t){for(;t;){if(!t.traversal){t[fs]=t[Ye]()[fs];return}if(t[fs])return;let e=null;for(const a of t.traversal[xn]())if(a.operation==="next"){e=a;break}if(!e||!e.ref){t[fs]=t[Ye]()[fs];return}const n=t[_t]();t[fs]=++n[fs];const s=n[Ns](e.ref,t);if(!s)return;t=s[0]}}function eo(t,e){const n=t.assist;if(n){const s=n[Oe]();s&&(e.title=s);const i=n.role.match(Eg);if(i){const r="heading",o=i[1];e.role=r,e["aria-level"]=o}}if(t.layout==="table")e.role="table";else if(t.layout==="row")e.role="row";else{const s=t[Ye]();s.layout==="row"&&(e.role=s.assist?.role==="TH"?"columnheader":"cell")}}function Wa(t){if(!t.assist)return null;const e=t.assist;return e.speak&&e.speak[se]!==""?e.speak[se]:e.toolTip?e.toolTip[se]:null}function ba(t){return Re.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:t}]})}function to(t){const e=t[_t]();e[U].firstUnsplittable===null&&(e[U].firstUnsplittable=t,e[U].noLayoutFailure=!0)}function no(t){const e=t[_t]();e[U].firstUnsplittable===t&&(e[U].noLayoutFailure=!1)}function yc(t){if(t[U]||(t[U]=Object.create(null),t.targetType==="auto"))return!1;const e=t[_t]();let n=null;if(t.target){if(n=e[Ns](t.target,t[Ye]()),!n)return!1;n=n[0]}const{currentPageArea:s,currentContentArea:a}=e[U];if(t.targetType==="pageArea")return n instanceof Ai||(n=null),t.startNew?(t[U].target=n||s,!0):n&&n!==s?(t[U].target=n,!0):!1;n instanceof Vf||(n=null);const i=n&&n[Ye]();let r,o=i;if(t.startNew)if(n){const f=i.contentArea.children,l=f.indexOf(a),c=f.indexOf(n);l!==-1&&lt,s[U].noLayoutFailure=!0;const r=e[Oe](n);t[Pa](r.html,r.bbox),s[U].noLayoutFailure=a,e[Ot]=i}class _g extends it{constructor(e){super(pe,"appearanceFilter"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class au extends V{constructor(e){super(pe,"arc",!0),this.circular=Ve({data:e.circular,defaultValue:0,validate:n=>n===1}),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.startAngle=I0({data:e.startAngle,defaultValue:0,validate:n=>!0}),this.sweepAngle=I0({data:e.sweepAngle,defaultValue:360,validate:n=>!0}),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null,this.fill=null}[Oe](){const e=this.edge||new Mr({}),n=e[dt](),s=Object.create(null);this.fill?.presence==="visible"?Object.assign(s,this.fill[dt]()):s.fill="transparent",s.strokeWidth=Ke(e.presence==="visible"?e.thickness:0),s.stroke=n.color;let a;const i={xmlns:Ma,style:{width:"100%",height:"100%",overflow:"visible"}};if(this.sweepAngle===360)a={name:"ellipse",attributes:{xmlns:Ma,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:s}};else{const f=this.startAngle*Math.PI/180,l=this.sweepAngle*Math.PI/180,c=this.sweepAngle>180?1:0,[h,u,d,p]=[50*(1+Math.cos(f)),50*(1-Math.sin(f)),50*(1+Math.cos(f+l)),50*(1-Math.sin(f+l))];a={name:"path",attributes:{xmlns:Ma,d:`M ${h} ${u} A 50 50 0 ${c} 0 ${d} ${p}`,vectorEffect:"non-scaling-stroke",style:s}},Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const r={name:"svg",children:[a],attributes:i},o=this[Ye]()[Ye]();return Gf(o)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[r]}):(r.attributes.style.position="absolute",Re.success(r))}}class Pg extends V{constructor(e){super(pe,"area",!0),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.id=e.id||"",this.name=e.name||"",this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.x=Se(e.x,"0pt"),this.y=Se(e.y,"0pt"),this.desc=null,this.extras=null,this.area=new E,this.draw=new E,this.exObject=new E,this.exclGroup=new E,this.field=new E,this.subform=new E,this.subformSet=new E}*[Si](){yield*Kf(this)}[Ar](){return!0}[Va](){return!0}[Pa](e,n){const[s,a,i,r]=n;this[U].width=Math.max(this[U].width,s+i),this[U].height=Math.max(this[U].height,a+r),this[U].children.push(e)}[Na](){return this[U].availableSpace}[Oe](e){const n=Fn(this,"position"),s={style:n,id:this[wt],class:["xfaArea"]};Bi(this)&&s.class.push("xfaPrintOnly"),this.name&&(s.xfaName=this.name);const a=[];this[U]={children:a,width:0,height:0,availableSpace:e};const i=this[pa]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success)return i.isBreak()?i:(delete this[U],Re.FAILURE);n.width=Ke(this[U].width),n.height=Ke(this[U].height);const r={name:"div",attributes:s,children:a},o=[this.x,this.y,this[U].width,this[U].height];return delete this[U],Re.success(r,o)}}class Ng extends V{constructor(e){super(pe,"assist",!0),this.id=e.id||"",this.role=e.role||"",this.use=e.use||"",this.usehref=e.usehref||"",this.speak=null,this.toolTip=null}[Oe](){return this.toolTip?.[se]||null}}class Og extends V{constructor(e){super(pe,"barcode",!0),this.charEncoding=Y0({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:n=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(n)||n.match(/iso-8859-\d{2}/)}),this.checksum=re(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]),this.dataColumnCount=Ve({data:e.dataColumnCount,defaultValue:-1,validate:n=>n>=0}),this.dataLength=Ve({data:e.dataLength,defaultValue:-1,validate:n=>n>=0}),this.dataPrep=re(e.dataPrep,["none","flateCompress"]),this.dataRowCount=Ve({data:e.dataRowCount,defaultValue:-1,validate:n=>n>=0}),this.endChar=e.endChar||"",this.errorCorrectionLevel=Ve({data:e.errorCorrectionLevel,defaultValue:-1,validate:n=>n>=0&&n<=8}),this.id=e.id||"",this.moduleHeight=Se(e.moduleHeight,"5mm"),this.moduleWidth=Se(e.moduleWidth,"0.25mm"),this.printCheckDigit=Ve({data:e.printCheckDigit,defaultValue:0,validate:n=>n===1}),this.rowColumnRatio=mc(e.rowColumnRatio),this.startChar=e.startChar||"",this.textLocation=re(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]),this.truncate=Ve({data:e.truncate,defaultValue:0,validate:n=>n===1}),this.type=re(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=re(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]),this.use=e.use||"",this.usehref=e.usehref||"",this.wideNarrowRatio=mc(e.wideNarrowRatio),this.encrypt=null,this.extras=null}}class Lg extends V{constructor(e){super(pe,"bind",!0),this.match=re(e.match,["once","dataRef","global","none"]),this.ref=e.ref||"",this.picture=null}}class hf extends V{constructor(e){super(pe,"bindItems"),this.connection=e.connection||"",this.labelRef=e.labelRef||"",this.ref=e.ref||"",this.valueRef=e.valueRef||""}}class zg extends V{constructor(e){super(pe,"bookend"),this.id=e.id||"",this.leader=e.leader||"",this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Ug extends Jt{constructor(e){super(pe,"boolean"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[Oe](e){return ba(this[se]===1?"1":"0")}}class iu extends V{constructor(e){super(pe,"border",!0),this.break=re(e.break,["close","open"]),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new E(4),this.edge=new E(4),this.extras=null,this.fill=null,this.margin=null}[cn](){if(!this[U]){const e=this.edge.children.slice();if(e.length<4){const a=e.at(-1)||new Mr({});for(let i=e.length;i<4;i++)e.push(a)}const n=e.map(a=>a.thickness),s=[0,0,0,0];this.margin&&(s[0]=this.margin.topInset,s[1]=this.margin.rightInset,s[2]=this.margin.bottomInset,s[3]=this.margin.leftInset),this[U]={widths:n,insets:s,edges:e}}return this[U]}[dt](){const{edges:e}=this[cn](),n=e.map(a=>{const i=a[dt]();return i.color||="#000000",i}),s=Object.create(null);if(this.margin&&Object.assign(s,this.margin[dt]()),this.fill?.presence==="visible"&&Object.assign(s,this.fill[dt]()),this.corner.children.some(a=>a.radius!==0)){const a=this.corner.children.map(i=>i[dt]());if(a.length===2||a.length===3){const i=a.at(-1);for(let r=a.length;r<4;r++)a.push(i)}s.borderRadius=a.map(i=>i.radius).join(" ")}switch(this.presence){case"invisible":case"hidden":s.borderStyle="";break;case"inactive":s.borderStyle="none";break;default:s.borderStyle=n.map(a=>a.style).join(" ");break}return s.borderWidth=n.map(a=>a.width).join(" "),s.borderColor=n.map(a=>a.color).join(" "),s}}class Gg extends V{constructor(e){super(pe,"break",!0),this.after=re(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.afterTarget=e.afterTarget||"",this.before=re(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=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class ru extends V{constructor(e){super(pe,"breakAfter",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.target=e.target||"",this.targetType=re(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}}class ou extends V{constructor(e){super(pe,"breakBefore",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=Ve({data:e.startNew,defaultValue:0,validate:n=>n===1}),this.target=e.target||"",this.targetType=re(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}[Oe](e){return this[U]={},Re.FAILURE}}class Wg extends V{constructor(e){super(pe,"button",!0),this.highlight=re(e.highlight,["inverted","none","outline","push"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[Oe](e){const s=this[Ye]()[Ye](),a={name:"button",attributes:{id:this[wt],class:["xfaButton"],style:{}},children:[]};for(const i of s.event.children){if(i.activity!=="click"||!i.script)continue;const r=Vc(i.script[se]);if(!r)continue;const o=Zh(r.url);o&&a.children.push({name:"a",attributes:{id:"link"+this[wt],href:o,newWindow:r.newWindow,class:["xfaLink"],style:{}},children:[]})}return Re.success(a)}}class Kg extends V{constructor(e){super(pe,"calculate",!0),this.id=e.id||"",this.override=re(e.override,["disabled","error","ignore","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.script=null}}class Vg extends V{constructor(e){super(pe,"caption",!0),this.id=e.id||"",this.placement=re(e.placement,["left","bottom","inline","right","top"]),this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.reserve=Math.ceil(Se(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}[Pn](e){Wf(this,e)}[cn](e){if(!this[U]){let{width:n,height:s}=e;switch(this.placement){case"left":case"right":case"inline":n=this.reserve<=0?n:this.reserve;break;case"top":case"bottom":s=this.reserve<=0?s:this.reserve;break}this[U]=zf(this,{width:n})}return this[U]}[Oe](e){if(!this.value)return Re.EMPTY;this[Ti]();const n=this.value[Oe](e).html;if(!n)return this[_n](),Re.EMPTY;const s=this.reserve;if(this.reserve<=0){const{w:r,h:o}=this[cn](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=r;break;case"top":case"bottom":this.reserve=o;break}}const a=[];typeof n=="string"?a.push({name:"#text",value:n}):a.push(n);const i=Fn(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=Ke(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=Ke(this.reserve));break}return Jh(this,null,n),this[_n](),this.reserve=s,Re.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:a})}}class $g extends it{constructor(e){super(pe,"certificate"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Xg extends V{constructor(e){super(pe,"certificates",!0),this.credentialServerPolicy=re(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 fu extends V{constructor(e){super(pe,"checkButton",!0),this.id=e.id||"",this.mark=re(e.mark,["default","check","circle","cross","diamond","square","star"]),this.shape=re(e.shape,["square","round"]),this.size=Se(e.size,"10pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"margin"),s=Ke(this.size);n.width=n.height=s;let a,i,r;const o=this[Ye]()[Ye](),f=o.items.children.length&&o.items.children[0][Oe]().html||[],l={on:(f[0]!==void 0?f[0]:"on").toString(),off:(f[1]!==void 0?f[1]:"off").toString()},h=(o.value?.[Xt]()||"off")===l.on||void 0,u=o[Ot](),d=o[wt];let p;u instanceof uu?(r=u[wt],a="radio",i="xfaRadio",p=u[Qn]?.[wt]||u[wt]):(a="checkbox",i="xfaCheckbox",p=o[Qn]?.[wt]||o[wt]);const m={name:"input",attributes:{class:[i],style:n,fieldId:d,dataId:p,type:a,checked:h,xfaOn:l.on,xfaOff:l.off,"aria-label":Wa(o),"aria-required":!1}};return r&&(m.attributes.name=r),Er(o)&&(m.attributes["aria-required"]=!0,m.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class lu extends V{constructor(e){super(pe,"choiceList",!0),this.commitOn=re(e.commitOn,["select","exit"]),this.id=e.id||"",this.open=re(e.open,["userControl","always","multiSelect","onEntry"]),this.textEntry=Ve({data:e.textEntry,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","margin"),a=this[Ye]()[Ye](),r={fontSize:`calc(${a.font?.size||10}px * var(--total-scale-factor))`},o=[];if(a.items.children.length>0){const l=a.items;let c=0,h=0;l.children.length===2&&(c=l.children[0].save,h=1-c);const u=l.children[c][Oe]().html,d=l.children[h][Oe]().html;let p=!1;const m=a.value?.[Xt]()||"";for(let b=0,w=u.length;bn>=0}),this.use=e.use||"",this.usehref=e.usehref||""}}class Qg extends V{constructor(e){super(pe,"connect",!0),this.connection=e.connection||"",this.id=e.id||"",this.ref=e.ref||"",this.usage=re(e.usage,["exportAndImport","exportOnly","importOnly"]),this.use=e.use||"",this.usehref=e.usehref||"",this.picture=null}}class Vf extends V{constructor(e){super(pe,"contentArea",!0),this.h=Se(e.h),this.id=e.id||"",this.name=e.name||"",this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=Se(e.w),this.x=Se(e.x,"0pt"),this.y=Se(e.y,"0pt"),this.desc=null,this.extras=null}[Oe](e){const n=Ke(this.x),s=Ke(this.y),a={left:n,top:s,width:Ke(this.w),height:Ke(this.h)},i=["xfaContentarea"];return Bi(this)&&i.push("xfaPrintOnly"),Re.success({name:"div",children:[],attributes:{style:a,class:i,id:this[wt]}})}}class cu extends V{constructor(e){super(pe,"corner",!0),this.id=e.id||"",this.inverted=Ve({data:e.inverted,defaultValue:0,validate:n=>n===1}),this.join=re(e.join,["square","round"]),this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.radius=Se(e.radius),this.stroke=re(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=Se(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](){const e=Fn(this,"visibility");return e.radius=Ke(this.join==="square"?0:this.radius),e}}class Zg extends Et{constructor(e){super(pe,"date"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class eb extends Et{constructor(e){super(pe,"dateTime"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class tb extends V{constructor(e){super(pe,"dateTimeEdit",!0),this.hScrollPolicy=re(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.picker=re(e.picker,["host","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","font","margin"),s=this[Ye]()[Ye](),a={name:"input",attributes:{type:"text",fieldId:s[wt],dataId:s[Qn]?.[wt]||s[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(s),"aria-required":!1}};return Er(s)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class nb extends Et{constructor(e){super(pe,"decimal"),this.fracDigits=Ve({data:e.fracDigits,defaultValue:2,validate:n=>!0}),this.id=e.id||"",this.leadDigits=Ve({data:e.leadDigits,defaultValue:-1,validate:n=>!0}),this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseFloat(this[se].trim());this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class sb extends V{constructor(e){super(pe,"defaultUi",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class ab extends V{constructor(e){super(pe,"desc",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}}class ib extends xt{constructor(e){super(pe,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class rb extends V{constructor(e){super(pe,"digestMethods",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.digestMethod=new E}}class hu extends V{constructor(e){super(pe,"draw",!0),this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.rotate=Ve({data:e.rotate,defaultValue:0,validate:n=>n%90===0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E}[Pn](e){Wf(this,e)}[Oe](e){if(Z0(this),this.presence==="hidden"||this.presence==="inactive")return Re.EMPTY;J0(this),this[Ti]();const n=this.w,s=this.h,{w:a,h:i,isBroken:r}=zf(this,e);if(a&&this.w===""){if(r&&this[Ot]()[Ws]())return this[_n](),Re.FAILURE;this.w=a}if(i&&this.h===""&&(this.h=i),to(this),!Q0(this,e))return this.w=n,this.h=s,this[_n](),Re.FAILURE;no(this);const o=Fn(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");Kh(this,o),o.margin&&(o.padding=o.margin,delete o.margin);const f=["xfaDraw"];this.font&&f.push("xfaFont"),Bi(this)&&f.push("xfaPrintOnly");const l={style:o,id:this[wt],class:f};this.name&&(l.xfaName=this.name);const c={name:"div",attributes:l,children:[]};eo(this,l);const h=Vh(this,c,e),u=this.value?this.value[Oe](e).html:null;return u===null?(this.w=n,this.h=s,this[_n](),Re.success(Oa(this,c),h)):(c.children.push(u),Jh(this,o,u),this.w=n,this.h=s,this[_n](),Re.success(Oa(this,c),h))}}class Mr extends V{constructor(e){super(pe,"edge",!0),this.cap=re(e.cap,["square","butt","round"]),this.id=e.id||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.stroke=re(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=Se(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](){const e=Fn(this,"visibility");if(Object.assign(e,{linecap:this.cap,width:Ke(this.thickness),color:this.color?this.color[dt]():"#000000",style:""}),this.presence!=="visible")e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":e.style="dashed";break;case"dashDotDot":e.style="dashed";break;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";break}return e}}class ob extends xt{constructor(e){super(pe,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class fb extends V{constructor(e){super(pe,"encodings",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encoding=new E}}class lb extends V{constructor(e){super(pe,"encrypt",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=null}}class cb extends V{constructor(e){super(pe,"encryptData",!0),this.id=e.id||"",this.operation=re(e.operation,["encrypt","decrypt"]),this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class hb extends V{constructor(e){super(pe,"encryption",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class ub extends xt{constructor(e){super(pe,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class db extends V{constructor(e){super(pe,"encryptionMethods",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encryptionMethod=new E}}class mb extends V{constructor(e){super(pe,"event",!0),this.activity=re(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=re(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 pb extends Et{constructor(e){super(pe,"exData"),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.maxLength=Ve({data:e.maxLength,defaultValue:-1,validate:n=>n>=-1}),this.name=e.name||"",this.rid=e.rid||"",this.transferEncoding=re(e.transferEncoding,["none","base64","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[Nf](){return this.contentType==="text/html"}[Ss](e){return this.contentType==="text/html"&&e[Nt]===Yt.xhtml.id?(this[se]=e,!0):this.contentType==="text/xml"?(this[se]=e,!0):!1}[Oe](e){return this.contentType!=="text/html"||!this[se]?Re.EMPTY:this[se][Oe](e)}}class gb extends V{constructor(e){super(pe,"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 E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.exObject=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}}class uu extends V{constructor(e){super(pe,"exclGroup",!0),this.access=re(e.access,["open","nonInteractive","protected","readOnly"]),this.accessKey=e.accessKey||"",this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=re(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E,this.event=new E,this.field=new E,this.setProperty=new E}[Va](){return!0}[Sr](){return!0}[Pn](e){for(const n of this.field.children){if(!n.value){const s=new Qf({});n[Ht](s),n.value=s}n.value[Pn](e)}}[Ws](){return this.layout.endsWith("-tb")&&this[U].attempt===0&&this[U].numberInLine>0||this[Ye]()[Ws]()}[Us](){const e=this[Ot]();return e[Us]()?this[U]._isSplittable!==void 0?this[U]._isSplittable:this.layout==="position"||this.layout.includes("row")?(this[U]._isSplittable=!1,!1):e.layout?.endsWith("-tb")&&e[U].numberInLine!==0?!1:(this[U]._isSplittable=!0,!0):!1}[Hr](){return tu(this)}[Pa](e,n){nu(this,e,n)}[Na](){return su(this)}[Oe](e){if(Z0(this),this.presence==="hidden"||this.presence==="inactive"||this.h===0||this.w===0)return Re.EMPTY;J0(this);const n=[],s={id:this[wt],class:[]};Uf(this,s.class),this[U]||=Object.create(null),Object.assign(this[U],{children:n,attributes:s,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 a=this[Us]();if(a||to(this),!Q0(this,e))return Re.FAILURE;const i=new Set(["field"]);if(this.layout.includes("row")){const w=this[Ot]().columnWidths;Array.isArray(w)&&w.length>0&&(this[U].columnWidths=w,this[U].currentColumn=0)}const r=Fn(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),o=["xfaExclgroup"],f=$h(this);f&&o.push(f),Bi(this)&&o.push("xfaPrintOnly"),s.style=r,s.class=o,this.name&&(s.xfaName=this.name),this[Ti]();const l=this.layout==="lr-tb"||this.layout==="rl-tb",c=l?C0:1;for(;this[U].attemptn>=1||n===-1}),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.rotate=Ve({data:e.rotate,defaultValue:0,validate:n=>n%90===0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E(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 E,this.connect=new E,this.event=new E,this.setProperty=new E}[Va](){return!0}[Pn](e){Wf(this,e)}[Oe](e){if(Z0(this),!this.ui){this.ui=new Jf({}),this.ui[qt]=this[qt],this[Ht](this.ui);let w;switch(this.items.children.length){case 0:w=new wu({}),this.ui.textEdit=w;break;case 1:w=new fu({}),this.ui.checkButton=w;break;case 2:w=new lu({}),this.ui.choiceList=w;break}this.ui[Ht](w)}if(!this.ui||this.presence==="hidden"||this.presence==="inactive"||this.h===0||this.w===0)return Re.EMPTY;this.caption&&delete this.caption[U],this[Ti]();const n=this.caption?this.caption[Oe](e).html:null,s=this.w,a=this.h;let i=0,r=0;this.margin&&(i=this.margin.leftInset+this.margin.rightInset,r=this.margin.topInset+this.margin.bottomInset);let o=null;if(this.w===""||this.h===""){let w=null,x=null,j=0,k=0;if(this.ui.checkButton)j=k=this.ui.checkButton.size;else{const{w:y,h:q}=zf(this,e);y!==null?(j=y,k=q):k=qg(this.font,!0).lineNoGap}if(o=kc(this.ui[cn]()),j+=o.w,k+=o.h,this.caption){const{w:y,h:q,isBroken:v}=this.caption[cn](e);if(v&&this[Ot]()[Ws]())return this[_n](),Re.FAILURE;switch(w=y,x=q,this.caption.placement){case"left":case"right":case"inline":w+=j;break;case"top":case"bottom":x+=k;break}}else w=j,x=k;w&&this.w===""&&(w+=i,this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1n>=1&&n<=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 kb extends Et{constructor(e){super(pe,"float"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseFloat(this[se].trim());this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class yb extends V{constructor(e){super(pe,"font",!0),this.baselineShift=Se(e.baselineShift),this.fontHorizontalScale=I0({data:e.fontHorizontalScale,defaultValue:100,validate:n=>n>=0}),this.fontVerticalScale=I0({data:e.fontVerticalScale,defaultValue:100,validate:n=>n>=0}),this.id=e.id||"",this.kerningMode=re(e.kerningMode,["none","pair"]),this.letterSpacing=Se(e.letterSpacing,"0"),this.lineThrough=Ve({data:e.lineThrough,defaultValue:0,validate:n=>n===1||n===2}),this.lineThroughPeriod=re(e.lineThroughPeriod,["all","word"]),this.overline=Ve({data:e.overline,defaultValue:0,validate:n=>n===1||n===2}),this.overlinePeriod=re(e.overlinePeriod,["all","word"]),this.posture=re(e.posture,["normal","italic"]),this.size=Se(e.size,"10pt"),this.typeface=e.typeface||"Courier",this.underline=Ve({data:e.underline,defaultValue:0,validate:n=>n===1||n===2}),this.underlinePeriod=re(e.underlinePeriod,["all","word"]),this.use=e.use||"",this.usehref=e.usehref||"",this.weight=re(e.weight,["normal","bold"]),this.extras=null,this.fill=null}[ts](e){super[ts](e),this[qt].usedTypefaces.add(this.typeface)}[dt](){const e=Fn(this,"fill"),n=e.color;return n&&(n==="#000000"?delete e.color:n.startsWith("#")||(e.background=n,e.backgroundClip="text",e.color="transparent")),this.baselineShift&&(e.verticalAlign=Ke(this.baselineShift)),e.fontKerning=this.kerningMode==="none"?"none":"normal",e.letterSpacing=Ke(this.letterSpacing),this.lineThrough!==0&&(e.textDecoration="line-through",this.lineThrough===2&&(e.textDecorationStyle="double")),this.overline!==0&&(e.textDecoration="overline",this.overline===2&&(e.textDecorationStyle="double")),e.fontStyle=this.posture,e.fontSize=Ke(.99*this.size),Qh(this,this,this[qt].fontFinder,e),this.underline!==0&&(e.textDecoration="underline",this.underline===2&&(e.textDecorationStyle="double")),e.fontWeight=this.weight,e}}class qb extends V{constructor(e){super(pe,"format",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null}}class vb extends it{constructor(e){super(pe,"handler"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Sb extends V{constructor(e){super(pe,"hyphenation"),this.excludeAllCaps=Ve({data:e.excludeAllCaps,defaultValue:0,validate:n=>n===1}),this.excludeInitialCap=Ve({data:e.excludeInitialCap,defaultValue:0,validate:n=>n===1}),this.hyphenate=Ve({data:e.hyphenate,defaultValue:0,validate:n=>n===1}),this.id=e.id||"",this.pushCharacterCount=Ve({data:e.pushCharacterCount,defaultValue:3,validate:n=>n>=0}),this.remainCharacterCount=Ve({data:e.remainCharacterCount,defaultValue:3,validate:n=>n>=0}),this.use=e.use||"",this.usehref=e.usehref||"",this.wordCharacterCount=Ve({data:e.wordCharacterCount,defaultValue:7,validate:n=>n>=0})}}class du extends it{constructor(e){super(pe,"image"),this.aspect=re(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=re(e.transferEncoding,["base64","none","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[Oe](){if(this.contentType&&!Mg.has(this.contentType.toLowerCase()))return Re.EMPTY;let e=this[qt].images?.get(this.href);if(!e&&(this.href||!this[se])||(!e&&this.transferEncoding==="base64"&&(e=Uint8Array.fromBase64(this[se])),!e))return Re.EMPTY;if(!this.contentType){for(const[i,r]of Dg)if(e.length>i.length&&i.every((o,f)=>o===e[f])){this.contentType=r;break}if(!this.contentType)return Re.EMPTY}const n=new Blob([e],{type:this.contentType});let s;switch(this.aspect){case"fit":case"actual":break;case"height":s={height:"100%",objectFit:"fill"};break;case"none":s={width:"100%",height:"100%",objectFit:"fill"};break;case"width":s={width:"100%",objectFit:"fill"};break}const a=this[Ye]();return Re.success({name:"img",attributes:{class:["xfaImage"],style:s,src:URL.createObjectURL(n),alt:a?Wa(a[Ye]()):null}})}}class Ab extends V{constructor(e){super(pe,"imageEdit",!0),this.data=re(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}[Oe](e){return this.data==="embed"?Re.success({name:"div",children:[],attributes:{}}):Re.EMPTY}}class Ib extends Et{constructor(e){super(pe,"integer"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=parseInt(this[se].trim(),10);this[se]=isNaN(e)?null:e}[Oe](e){return ba(this[se]!==null?this[se].toString():"")}}class Cb extends V{constructor(e){super(pe,"issuers",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class uf extends V{constructor(e){super(pe,"items",!0),this.id=e.id||"",this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.ref=e.ref||"",this.save=Ve({data:e.save,defaultValue:0,validate:n=>n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.text=new E,this.time=new E}[Oe](){const e=[];for(const n of this[xn]())e.push(n[Xt]());return Re.success(e)}}class Tb extends V{constructor(e){super(pe,"keep",!0),this.id=e.id||"";const n=["none","contentArea","pageArea"];this.intact=re(e.intact,n),this.next=re(e.next,n),this.previous=re(e.previous,n),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class Bb extends V{constructor(e){super(pe,"keyUsage");const n=["","yes","no"];this.crlSign=re(e.crlSign,n),this.dataEncipherment=re(e.dataEncipherment,n),this.decipherOnly=re(e.decipherOnly,n),this.digitalSignature=re(e.digitalSignature,n),this.encipherOnly=re(e.encipherOnly,n),this.id=e.id||"",this.keyAgreement=re(e.keyAgreement,n),this.keyCertSign=re(e.keyCertSign,n),this.keyEncipherment=re(e.keyEncipherment,n),this.nonRepudiation=re(e.nonRepudiation,n),this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Fb extends V{constructor(e){super(pe,"line",!0),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.slope=re(e.slope,["\\","/"]),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null}[Oe](){const e=this[Ye]()[Ye](),n=this.edge||new Mr({}),s=n[dt](),a=Object.create(null),i=n.presence==="visible"?n.thickness:0;a.strokeWidth=Ke(i),a.stroke=s.color;let r,o,f,l,c="100%",h="100%";e.w<=i?([r,o,f,l]=["50%",0,"50%","100%"],c=a.strokeWidth):e.h<=i?([r,o,f,l]=[0,"50%","100%","50%"],h=a.strokeWidth):this.slope==="\\"?[r,o,f,l]=[0,0,"100%","100%"]:[r,o,f,l]=[0,"100%","100%",0];const d={name:"svg",children:[{name:"line",attributes:{xmlns:Ma,x1:r,y1:o,x2:f,y2:l,style:a}}],attributes:{xmlns:Ma,width:c,height:h,style:{overflow:"visible"}}};return Gf(e)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[d]}):(d.attributes.style.position="absolute",Re.success(d))}}class Rb extends V{constructor(e){super(pe,"linear",!0),this.id=e.id||"",this.type=re(e.type,["toRight","toBottom","toLeft","toTop"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.type.replace(/([RBLT])/," $1").toLowerCase(),s=this.color?this.color[dt]():"#000000";return`linear-gradient(${n}, ${e}, ${s})`}}class Hb extends Et{constructor(e){super(pe,"lockDocument"),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}[vt](){this[se]=re(this[se],["auto","0","1"])}}class Eb extends V{constructor(e){super(pe,"manifest",!0),this.action=re(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 E}}class Mb extends V{constructor(e){super(pe,"margin",!0),this.bottomInset=Se(e.bottomInset,"0"),this.id=e.id||"",this.leftInset=Se(e.leftInset,"0"),this.rightInset=Se(e.rightInset,"0"),this.topInset=Se(e.topInset,"0"),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[dt](){return{margin:Ke(this.topInset)+" "+Ke(this.rightInset)+" "+Ke(this.bottomInset)+" "+Ke(this.leftInset)}}}class Db extends V{constructor(e){super(pe,"mdp"),this.id=e.id||"",this.permissions=Ve({data:e.permissions,defaultValue:2,validate:n=>n===1||n===3}),this.signatureType=re(e.signatureType,["filler","author"]),this.use=e.use||"",this.usehref=e.usehref||""}}class _b extends V{constructor(e){super(pe,"medium"),this.id=e.id||"",this.imagingBBox=kg(e.imagingBBox),this.long=Se(e.long),this.orientation=re(e.orientation,["portrait","landscape"]),this.short=Se(e.short),this.stock=e.stock||"",this.trayIn=re(e.trayIn,["auto","delegate","pageFront"]),this.trayOut=re(e.trayOut,["auto","delegate"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Pb extends V{constructor(e){super(pe,"message",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.text=new E}}class Nb extends V{constructor(e){super(pe,"numericEdit",!0),this.hScrollPolicy=re(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}[Oe](e){const n=Fn(this,"border","font","margin"),s=this[Ye]()[Ye](),a={name:"input",attributes:{type:"text",fieldId:s[wt],dataId:s[Qn]?.[wt]||s[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(s),"aria-required":!1}};return Er(s)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Ob extends V{constructor(e){super(pe,"occur",!0),this.id=e.id||"",this.initial=e.initial!==""?Ve({data:e.initial,defaultValue:"",validate:n=>!0}):"",this.max=e.max!==""?Ve({data:e.max,defaultValue:-1,validate:n=>!0}):"",this.min=e.min!==""?Ve({data:e.min,defaultValue:1,validate:n=>!0}):"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[ts](){const e=this[Ye](),n=this.min;this.min===""&&(this.min=e instanceof Ai||e instanceof Cr?0:1),this.max===""&&(n===""?this.max=e instanceof Ai||e instanceof Cr?-1:1:this.max=this.min),this.max!==-1&&this.max!0}),this.name=e.name||"",this.numbered=Ve({data:e.numbered,defaultValue:1,validate:n=>!0}),this.oddOrEven=re(e.oddOrEven,["any","even","odd"]),this.pagePosition=re(e.pagePosition,["any","first","last","only","rest"]),this.relevant=ws(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 E,this.contentArea=new E,this.draw=new E,this.exclGroup=new E,this.field=new E,this.subform=new E}[Ir](){return this[U]?!this.occur||this.occur.max===-1||this[U].numberOfUsei.oddOrEven===n&&i.pagePosition===s);return a||(a=this.pageArea.children.find(i=>i.oddOrEven==="any"&&i.pagePosition===s),a)||(a=this.pageArea.children.find(i=>i.oddOrEven==="any"&&i.pagePosition==="any"),a)?a:this.pageArea.children[0]}}class Ub extends V{constructor(e){super(pe,"para",!0),this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.lineHeight=e.lineHeight?Se(e.lineHeight,"0pt"):"",this.marginLeft=e.marginLeft?Se(e.marginLeft,"0pt"):"",this.marginRight=e.marginRight?Se(e.marginRight,"0pt"):"",this.orphans=Ve({data:e.orphans,defaultValue:0,validate:n=>n>=0}),this.preserve=e.preserve||"",this.radixOffset=e.radixOffset?Se(e.radixOffset,"0pt"):"",this.spaceAbove=e.spaceAbove?Se(e.spaceAbove,"0pt"):"",this.spaceBelow=e.spaceBelow?Se(e.spaceBelow,"0pt"):"",this.tabDefault=e.tabDefault?Se(this.tabDefault):"",this.tabStops=(e.tabStops||"").trim().split(/\s+/).map((n,s)=>s%2===1?Se(n):n),this.textIndent=e.textIndent?Se(e.textIndent,"0pt"):"",this.use=e.use||"",this.usehref=e.usehref||"",this.vAlign=re(e.vAlign,["top","bottom","middle"]),this.widows=Ve({data:e.widows,defaultValue:0,validate:n=>n>=0}),this.hyphenation=null}[dt](){const e=Fn(this,"hAlign");return this.marginLeft!==""&&(e.paddingLeft=Ke(this.marginLeft)),this.marginRight!==""&&(e.paddingRight=Ke(this.marginRight)),this.spaceAbove!==""&&(e.paddingTop=Ke(this.spaceAbove)),this.spaceBelow!==""&&(e.paddingBottom=Ke(this.spaceBelow)),this.textIndent!==""&&(e.textIndent=Ke(this.textIndent),Xh(e)),this.lineHeight>0&&(e.lineHeight=Ke(this.lineHeight)),this.tabDefault!==""&&(e.tabSize=Ke(this.tabDefault)),this.tabStops.length>0,this.hyphenatation&&Object.assign(e,this.hyphenatation[dt]()),e}}class Gb extends V{constructor(e){super(pe,"passwordEdit",!0),this.hScrollPolicy=re(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 Wb extends V{constructor(e){super(pe,"pattern",!0),this.id=e.id||"",this.type=re(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.color?this.color[dt]():"#000000",s=5,a="repeating-linear-gradient",i=`${e},${e} ${s}px,${n} ${s}px,${n} ${2*s}px`;switch(this.type){case"crossHatch":return`${a}(to top,${i}) ${a}(to right,${i})`;case"crossDiagonal":return`${a}(45deg,${i}) ${a}(-45deg,${i})`;case"diagonalLeft":return`${a}(45deg,${i})`;case"diagonalRight":return`${a}(-45deg,${i})`;case"horizontal":return`${a}(to top,${i})`;case"vertical":return`${a}(to right,${i})`}return""}}class Kb extends it{constructor(e){super(pe,"picture"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Vb extends V{constructor(e){super(pe,"proto",!0),this.appearanceFilter=new E,this.arc=new E,this.area=new E,this.assist=new E,this.barcode=new E,this.bindItems=new E,this.bookend=new E,this.boolean=new E,this.border=new E,this.break=new E,this.breakAfter=new E,this.breakBefore=new E,this.button=new E,this.calculate=new E,this.caption=new E,this.certificate=new E,this.certificates=new E,this.checkButton=new E,this.choiceList=new E,this.color=new E,this.comb=new E,this.connect=new E,this.contentArea=new E,this.corner=new E,this.date=new E,this.dateTime=new E,this.dateTimeEdit=new E,this.decimal=new E,this.defaultUi=new E,this.desc=new E,this.digestMethod=new E,this.digestMethods=new E,this.draw=new E,this.edge=new E,this.encoding=new E,this.encodings=new E,this.encrypt=new E,this.encryptData=new E,this.encryption=new E,this.encryptionMethod=new E,this.encryptionMethods=new E,this.event=new E,this.exData=new E,this.exObject=new E,this.exclGroup=new E,this.execute=new E,this.extras=new E,this.field=new E,this.fill=new E,this.filter=new E,this.float=new E,this.font=new E,this.format=new E,this.handler=new E,this.hyphenation=new E,this.image=new E,this.imageEdit=new E,this.integer=new E,this.issuers=new E,this.items=new E,this.keep=new E,this.keyUsage=new E,this.line=new E,this.linear=new E,this.lockDocument=new E,this.manifest=new E,this.margin=new E,this.mdp=new E,this.medium=new E,this.message=new E,this.numericEdit=new E,this.occur=new E,this.oid=new E,this.oids=new E,this.overflow=new E,this.pageArea=new E,this.pageSet=new E,this.para=new E,this.passwordEdit=new E,this.pattern=new E,this.picture=new E,this.radial=new E,this.reason=new E,this.reasons=new E,this.rectangle=new E,this.ref=new E,this.script=new E,this.setProperty=new E,this.signData=new E,this.signature=new E,this.signing=new E,this.solid=new E,this.speak=new E,this.stipple=new E,this.subform=new E,this.subformSet=new E,this.subjectDN=new E,this.subjectDNs=new E,this.submit=new E,this.text=new E,this.textEdit=new E,this.time=new E,this.timeStamp=new E,this.toolTip=new E,this.traversal=new E,this.traverse=new E,this.ui=new E,this.validate=new E,this.value=new E,this.variables=new E}}class $b extends V{constructor(e){super(pe,"radial",!0),this.id=e.id||"",this.type=re(e.type,["toEdge","toCenter"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){e=e?e[dt]():"#FFFFFF";const n=this.color?this.color[dt]():"#000000";return`radial-gradient(circle at center, ${this.type==="toEdge"?`${e},${n}`:`${n},${e}`})`}}class Xb extends it{constructor(e){super(pe,"reason"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Yb extends V{constructor(e){super(pe,"reasons",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.reason=new E}}class pu extends V{constructor(e){super(pe,"rectangle",!0),this.hand=re(e.hand,["even","left","right"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new E(4),this.edge=new E(4),this.fill=null}[Oe](){const e=this.edge.children.length?this.edge.children[0]:new Mr({}),n=e[dt](),s=Object.create(null);this.fill?.presence==="visible"?Object.assign(s,this.fill[dt]()):s.fill="transparent",s.strokeWidth=Ke(e.presence==="visible"?e.thickness:0),s.stroke=n.color;const i=(this.corner.children.length?this.corner.children[0]:new cu({}))[dt](),o={name:"svg",children:[{name:"rect",attributes:{xmlns:Ma,width:"100%",height:"100%",x:0,y:0,rx:i.radius,ry:i.radius,style:s}}],attributes:{xmlns:Ma,style:{overflow:"visible"},width:"100%",height:"100%"}},f=this[Ye]()[Ye]();return Gf(f)?Re.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]}):(o.attributes.style.position="absolute",Re.success(o))}}class Jb extends it{constructor(e){super(pe,"ref"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Qb extends it{constructor(e){super(pe,"script"),this.binding=e.binding||"",this.contentType=e.contentType||"",this.id=e.id||"",this.name=e.name||"",this.runAt=re(e.runAt,["client","both","server"]),this.use=e.use||"",this.usehref=e.usehref||""}}class df extends V{constructor(e){super(pe,"setProperty"),this.connection=e.connection||"",this.ref=e.ref||"",this.target=e.target||""}}class Zb extends V{constructor(e){super(pe,"signData",!0),this.id=e.id||"",this.operation=re(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 ew extends V{constructor(e){super(pe,"signature",!0),this.id=e.id||"",this.type=re(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 tw extends V{constructor(e){super(pe,"signing",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new E}}class nw extends V{constructor(e){super(pe,"solid",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[dt](e){return e?e[dt]():"#FFFFFF"}}class sw extends it{constructor(e){super(pe,"speak"),this.disable=Ve({data:e.disable,defaultValue:0,validate:n=>n===1}),this.id=e.id||"",this.priority=re(e.priority,["custom","caption","name","toolTip"]),this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class aw extends V{constructor(e){super(pe,"stipple",!0),this.id=e.id||"",this.rate=Ve({data:e.rate,defaultValue:50,validate:n=>n>=0&&n<=100}),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[dt](e){const n=this.rate/100;return ft.makeHexColor(Math.round(e.value.r*(1-n)+this.value.r*n),Math.round(e.value.g*(1-n)+this.value.g*n),Math.round(e.value.b*(1-n)+this.value.b*n))}}class gu extends V{constructor(e){super(pe,"subform",!0),this.access=re(e.access,["open","nonInteractive","protected","readOnly"]),this.allowMacro=Ve({data:e.allowMacro,defaultValue:0,validate:n=>n===1}),this.anchorType=re(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=Ve({data:e.colSpan,defaultValue:1,validate:n=>n>=1||n===-1}),this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map(n=>n==="-1"?-1:Se(n)),this.h=e.h?Se(e.h):"",this.hAlign=re(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=re(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.locale=e.locale||"",this.maxH=Se(e.maxH,"0pt"),this.maxW=Se(e.maxW,"0pt"),this.mergeMode=re(e.mergeMode,["consumeData","matchTemplate"]),this.minH=Se(e.minH,"0pt"),this.minW=Se(e.minW,"0pt"),this.name=e.name||"",this.presence=re(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=ws(e.relevant),this.restoreState=re(e.restoreState,["manual","auto"]),this.scope=re(e.scope,["name","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?Se(e.w):"",this.x=Se(e.x,"0pt"),this.y=Se(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 E,this.breakAfter=new E,this.breakBefore=new E,this.connect=new E,this.draw=new E,this.event=new E,this.exObject=new E,this.exclGroup=new E,this.field=new E,this.proto=new E,this.setProperty=new E,this.subform=new E,this.subformSet=new E}[Ot](){const e=this[Ye]();return e instanceof Xf?e[Ot]():e}[Va](){return!0}[Ws](){return this.layout.endsWith("-tb")&&this[U].attempt===0&&this[U].numberInLine>0||this[Ye]()[Ws]()}*[Si](){yield*Kf(this)}[Hr](){return tu(this)}[Pa](e,n){nu(this,e,n)}[Na](){return su(this)}[Us](){const e=this[Ot]();return e[Us]()?this[U]._isSplittable!==void 0?this[U]._isSplittable:this.layout==="position"||this.layout.includes("row")?(this[U]._isSplittable=!1,!1):this.keep&&this.keep.intact!=="none"?(this[U]._isSplittable=!1,!1):e.layout?.endsWith("-tb")&&e[U].numberInLine!==0?!1:(this[U]._isSplittable=!0,!0):!1}[Oe](e){if(Z0(this),this.break){if(this.break.after!=="auto"||this.break.afterTarget!==""){const k=new ru({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});k[qt]=this[qt],this[Ht](k),this.breakAfter.push(k)}if(this.break.before!=="auto"||this.break.beforeTarget!==""){const k=new ou({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});k[qt]=this[qt],this[Ht](k),this.breakBefore.push(k)}if(this.break.overflowTarget!==""){const k=new mu({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});k[qt]=this[qt],this[Ht](k),this.overflow.push(k)}this[fa](this.break),this.break=null}if(this.presence==="hidden"||this.presence==="inactive")return Re.EMPTY;if((this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&H("XFA - Several breakBefore or breakAfter in subforms: please file a bug."),this.breakBefore.children.length>=1){const k=this.breakBefore.children[0];if(yc(k))return Re.breakNode(k)}if(this[U]?.afterBreakAfter)return Re.EMPTY;J0(this);const n=[],s={id:this[wt],class:[]};Uf(this,s.class),this[U]||=Object.create(null),Object.assign(this[U],{children:n,line:null,attributes:s,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 a=this[_t](),i=a[U].noLayoutFailure,r=this[Us]();if(r||to(this),!Q0(this,e))return Re.FAILURE;const o=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const k=this[Ot]().columnWidths;Array.isArray(k)&&k.length>0&&(this[U].columnWidths=k,this[U].currentColumn=0)}const f=Fn(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),l=["xfaSubform"],c=$h(this);if(c&&l.push(c),s.style=f,s.class=l,this.name&&(s.xfaName=this.name),this.overflow){const k=this.overflow[cn]();k.addLeader&&(k.addLeader=!1,qc(this,k.leader,e))}this[Ti]();const h=this.layout==="lr-tb"||this.layout==="rl-tb",u=h?C0:1;for(;this[U].attempt=1){const k=this.breakAfter.children[0];if(yc(k))return this[U].afterBreakAfter=j,Re.breakNode(k)}return delete this[U],j}}class Xf extends V{constructor(e){super(pe,"subformSet",!0),this.id=e.id||"",this.name=e.name||"",this.relation=re(e.relation,["ordered","choice","unordered"]),this.relevant=ws(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 E,this.breakBefore=new E,this.subform=new E,this.subformSet=new E}*[Si](){yield*Kf(this)}[Ot](){let e=this[Ye]();for(;!(e instanceof gu);)e=e[Ye]();return e}[Va](){return!0}}class iw extends Et{constructor(e){super(pe,"subjectDN"),this.delimiter=e.delimiter||",",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){this[se]=new Map(this[se].split(this.delimiter).map(e=>(e=e.split("=",2),e[0]=e[0].trim(),e)))}}class rw extends V{constructor(e){super(pe,"subjectDNs",!0),this.id=e.id||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.subjectDN=new E}}class ow extends V{constructor(e){super(pe,"submit",!0),this.embedPDF=Ve({data:e.embedPDF,defaultValue:0,validate:n=>n===1}),this.format=re(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]),this.id=e.id||"",this.target=e.target||"",this.textEncoding=Y0({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:n=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(n)||n.match(/iso-8859-\d{2}/)}),this.use=e.use||"",this.usehref=e.usehref||"",this.xdpContent=e.xdpContent||"",this.encrypt=null,this.encryptData=new E,this.signData=new E}}class Yf extends V{constructor(e){super(pe,"template",!0),this.baseProfile=re(e.baseProfile,["full","interactiveForms"]),this.extras=null,this.subform=new E}[vt](){this.subform.children.length===0&&H("XFA - No subforms in template node."),this.subform.children.length>=2&&H("XFA - Several subforms in template node: please file a bug."),this[fs]=Hg}[Us](){return!0}[Ns](e,n){return e.startsWith("#")?[this[ci].get(e.slice(1))]:ta(this,n,e,!0,!0)}*[Lh](){if(!this.subform.children.length)return Re.success({name:"div",children:[]});this[U]={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[ui]();const n=e.pageSet.pageArea.children,s={name:"div",children:[]};let a=null,i=null,r=null;if(e.breakBefore.children.length>=1?(i=e.breakBefore.children[0],r=i.target):e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1?(i=e.subform.children[0].breakBefore.children[0],r=i.target):e.break?.beforeTarget?(i=e.break,r=i.beforeTarget):e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget&&(i=e.subform.children[0].break,r=i.beforeTarget),i){const p=this[Ns](r,i[Ye]());p instanceof Ai&&(a=p,i[U]={})}a||=n[0],a[U]={numberOfUse:1};const o=a[Ye]();o[U]={numberOfUse:1,pageIndex:o.pageArea.children.indexOf(a),pageSetIndex:0};let f,l=null,c=null,h=!0,u=0,d=0;for(;;){if(h)u=0;else if(s.children.pop(),++u===Rg)return H("XFA - Something goes wrong: please file a bug."),s;f=null,this[U].currentPageArea=a;const p=a[Oe]().html;s.children.push(p),l&&(this[U].noLayoutFailure=!0,p.children.push(l[Oe](a[U].space).html),l=null),c&&(this[U].noLayoutFailure=!0,p.children.push(c[Oe](a[U].space).html),c=null);const m=a.contentArea.children,b=p.children.filter(x=>x.attributes.class.includes("xfaContentarea"));h=!1,this[U].firstUnsplittable=null,this[U].noLayoutFailure=!1;const w=x=>{const j=e[Hr]();j&&(h||=j.children?.length>0,b[x].children.push(j))};for(let x=d,j=m.length;x0,b[x].children.push(q.html)):!h&&s.children.length>1&&s.children.pop(),s;if(q.isBreak()){const v=q.breakNode;if(w(x),v.targetType==="auto")continue;v.leader&&(l=this[Ns](v.leader,v[Ye]()),l=l?l[0]:null),v.trailer&&(c=this[Ns](v.trailer,v[Ye]()),c=c?c[0]:null),v.targetType==="pageArea"?(f=v[U].target,x=1/0):v[U].target?(f=v[U].target,d=v[U].index+1,x=1/0):x=v[U].index;continue}if(this[U].overflowNode){const v=this[U].overflowNode;this[U].overflowNode=null;const A=v[cn](),S=A.target;A.addLeader=A.leader!==null,A.addTrailer=A.trailer!==null,w(x);const F=x;if(x=1/0,S instanceof Ai)f=S;else if(S instanceof Vf){const M=m.indexOf(S);M!==-1?M>F?x=M-1:d=M:(f=S[Ye](),d=f.contentArea.children.indexOf(S))}continue}w(x)}this[U].pageNumber+=1,f&&(f[Ir]()?f[U].numberOfUse+=1:f=null),a=f||a[_s](),yield null}}}class bu extends Et{constructor(e){super(pe,"text"),this.id=e.id||"",this.maxChars=Ve({data:e.maxChars,defaultValue:0,validate:n=>n>=0}),this.name=e.name||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}[V0](){return!0}[Ss](e){return e[Nt]===Yt.xhtml.id?(this[se]=e,!0):(H(`XFA - Invalid content in Text: ${e[gt]}.`),!1)}[Gs](e){this[se]instanceof V||super[Gs](e)}[vt](){typeof this[se]=="string"&&(this[se]=this[se].replaceAll(`\r +`,` +`))}[cn](){return typeof this[se]=="string"?this[se].split(/[\u2029\u2028\n]/).filter(Boolean).join(` +`):this[se][Xt]()}[Oe](e){if(typeof this[se]=="string"){const n=ba(this[se]).html;return this[se].includes("\u2029")?(n.name="div",n.children=[],this[se].split("\u2029").map(s=>s.split(/[\u2028\n]/).flatMap(a=>[{name:"span",value:a},{name:"br"}])).forEach(s=>{n.children.push({name:"p",children:s})})):/[\u2028\n]/.test(this[se])&&(n.name="div",n.children=[],this[se].split(/[\u2028\n]/).forEach(s=>{n.children.push({name:"span",value:s},{name:"br"})})),Re.success(n)}return this[se][Oe](e)}}class wu extends V{constructor(e){super(pe,"textEdit",!0),this.allowRichText=Ve({data:e.allowRichText,defaultValue:0,validate:n=>n===1}),this.hScrollPolicy=re(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.multiLine=Ve({data:e.multiLine,defaultValue:"",validate:n=>n===0||n===1}),this.use=e.use||"",this.usehref=e.usehref||"",this.vScrollPolicy=re(e.vScrollPolicy,["auto","off","on"]),this.border=null,this.comb=null,this.extras=null,this.margin=null}[Oe](e){const n=Fn(this,"border","font","margin");let s;const a=this[Ye]()[Ye]();return this.multiLine===""&&(this.multiLine=a instanceof hu?1:0),this.multiLine===1?s={name:"textarea",attributes:{dataId:a[Qn]?.[wt]||a[wt],fieldId:a[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(a),"aria-required":!1}}:s={name:"input",attributes:{type:"text",dataId:a[Qn]?.[wt]||a[wt],fieldId:a[wt],class:["xfaTextfield"],style:n,"aria-label":Wa(a),"aria-required":!1}},Er(a)&&(s.attributes["aria-required"]=!0,s.attributes.required=!0),Re.success({name:"label",attributes:{class:["xfaLabel"]},children:[s]})}}class fw extends it{constructor(e){super(pe,"time"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[vt](){const e=this[se].trim();this[se]=e?new Date(e):null}[Oe](e){return ba(this[se]?this[se].toString():"")}}class lw extends V{constructor(e){super(pe,"timeStamp"),this.id=e.id||"",this.server=e.server||"",this.type=re(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class cw extends it{constructor(e){super(pe,"toolTip"),this.id=e.id||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class hw extends V{constructor(e){super(pe,"traversal",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.traverse=new E}}class uw extends V{constructor(e){super(pe,"traverse",!0),this.id=e.id||"",this.operation=re(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}[Ar](){return!1}}class Jf extends V{constructor(e){super(pe,"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}[cn](){if(this[U]===void 0){for(const e of Object.getOwnPropertyNames(this)){if(e==="extras"||e==="picture")continue;const n=this[e];if(n instanceof V)return this[U]=n,n}this[U]=null}return this[U]}[Oe](e){const n=this[cn]();return n?n[Oe](e):Re.EMPTY}}class dw extends V{constructor(e){super(pe,"validate",!0),this.formatTest=re(e.formatTest,["warning","disabled","error"]),this.id=e.id||"",this.nullTest=re(e.nullTest,["disabled","error","warning"]),this.scriptTest=re(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 Qf extends V{constructor(e){super(pe,"value",!0),this.id=e.id||"",this.override=Ve({data:e.override,defaultValue:0,validate:n=>n===1}),this.relevant=ws(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}[Pn](e){const n=this[Ye]();if(n instanceof $f&&n.ui?.imageEdit){this.image||(this.image=new du({}),this[Ht](this.image)),this.image[se]=e[se];return}const s=e[gt];if(this[s]!==null){this[s][se]=e[se];return}for(const a of Object.getOwnPropertyNames(this)){const i=this[a];i instanceof V&&(this[a]=null,this[fa](i))}this[e[gt]]=e,this[Ht](e)}[Xt](){if(this.exData)return typeof this.exData[se]=="string"?this.exData[se].trim():this.exData[se][Xt]().trim();for(const e of Object.getOwnPropertyNames(this)){if(e==="image")continue;const n=this[e];if(n instanceof V)return(n[se]||"").toString().trim()}return null}[Oe](e){for(const n of Object.getOwnPropertyNames(this)){const s=this[n];if(s instanceof V)return s[Oe](e)}return Re.EMPTY}}class mw extends V{constructor(e){super(pe,"variables",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new E,this.date=new E,this.dateTime=new E,this.decimal=new E,this.exData=new E,this.float=new E,this.image=new E,this.integer=new E,this.manifest=new E,this.script=new E,this.text=new E,this.time=new E}[Ar](){return!0}}class T0{static[bs](e,n){if(Object.hasOwn(T0,e)){const s=T0[e](n);return s[Oh](n),s}}static appearanceFilter(e){return new _g(e)}static arc(e){return new au(e)}static area(e){return new Pg(e)}static assist(e){return new Ng(e)}static barcode(e){return new Og(e)}static bind(e){return new Lg(e)}static bindItems(e){return new hf(e)}static bookend(e){return new zg(e)}static boolean(e){return new Ug(e)}static border(e){return new iu(e)}static break(e){return new Gg(e)}static breakAfter(e){return new ru(e)}static breakBefore(e){return new ou(e)}static button(e){return new Wg(e)}static calculate(e){return new Kg(e)}static caption(e){return new Vg(e)}static certificate(e){return new $g(e)}static certificates(e){return new Xg(e)}static checkButton(e){return new fu(e)}static choiceList(e){return new lu(e)}static color(e){return new Yg(e)}static comb(e){return new Jg(e)}static connect(e){return new Qg(e)}static contentArea(e){return new Vf(e)}static corner(e){return new cu(e)}static date(e){return new Zg(e)}static dateTime(e){return new eb(e)}static dateTimeEdit(e){return new tb(e)}static decimal(e){return new nb(e)}static defaultUi(e){return new sb(e)}static desc(e){return new ab(e)}static digestMethod(e){return new ib(e)}static digestMethods(e){return new rb(e)}static draw(e){return new hu(e)}static edge(e){return new Mr(e)}static encoding(e){return new ob(e)}static encodings(e){return new fb(e)}static encrypt(e){return new lb(e)}static encryptData(e){return new cb(e)}static encryption(e){return new hb(e)}static encryptionMethod(e){return new ub(e)}static encryptionMethods(e){return new db(e)}static event(e){return new mb(e)}static exData(e){return new pb(e)}static exObject(e){return new gb(e)}static exclGroup(e){return new uu(e)}static execute(e){return new bb(e)}static extras(e){return new wb(e)}static field(e){return new $f(e)}static fill(e){return new xb(e)}static filter(e){return new jb(e)}static float(e){return new kb(e)}static font(e){return new yb(e)}static format(e){return new qb(e)}static handler(e){return new vb(e)}static hyphenation(e){return new Sb(e)}static image(e){return new du(e)}static imageEdit(e){return new Ab(e)}static integer(e){return new Ib(e)}static issuers(e){return new Cb(e)}static items(e){return new uf(e)}static keep(e){return new Tb(e)}static keyUsage(e){return new Bb(e)}static line(e){return new Fb(e)}static linear(e){return new Rb(e)}static lockDocument(e){return new Hb(e)}static manifest(e){return new Eb(e)}static margin(e){return new Mb(e)}static mdp(e){return new Db(e)}static medium(e){return new _b(e)}static message(e){return new Pb(e)}static numericEdit(e){return new Nb(e)}static occur(e){return new Ob(e)}static oid(e){return new Lb(e)}static oids(e){return new zb(e)}static overflow(e){return new mu(e)}static pageArea(e){return new Ai(e)}static pageSet(e){return new Cr(e)}static para(e){return new Ub(e)}static passwordEdit(e){return new Gb(e)}static pattern(e){return new Wb(e)}static picture(e){return new Kb(e)}static proto(e){return new Vb(e)}static radial(e){return new $b(e)}static reason(e){return new Xb(e)}static reasons(e){return new Yb(e)}static rectangle(e){return new pu(e)}static ref(e){return new Jb(e)}static script(e){return new Qb(e)}static setProperty(e){return new df(e)}static signData(e){return new Zb(e)}static signature(e){return new ew(e)}static signing(e){return new tw(e)}static solid(e){return new nw(e)}static speak(e){return new sw(e)}static stipple(e){return new aw(e)}static subform(e){return new gu(e)}static subformSet(e){return new Xf(e)}static subjectDN(e){return new iw(e)}static subjectDNs(e){return new rw(e)}static submit(e){return new ow(e)}static template(e){return new Yf(e)}static text(e){return new bu(e)}static textEdit(e){return new wu(e)}static time(e){return new fw(e)}static timeStamp(e){return new lw(e)}static toolTip(e){return new cw(e)}static traversal(e){return new hw(e)}static traverse(e){return new uw(e)}static ui(e){return new Jf(e)}static validate(e){return new dw(e)}static value(e){return new Qf(e)}static variables(e){return new mw(e)}}const a0=Yt.datasets.id;function i0(t){const e=new bu({});return e[se]=t,e}class pw{constructor(e){this.root=e,this.datasets=e.datasets,this.data=e.datasets?.data||new As(a0,"data"),this.emptyMerge=this.data[xn]().length===0,this.root.form=this.form=e.template[ds]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){return this._bindElement(this.form,this.data),this.form}getData(){return this.data}_bindValue(e,n,s){if(e[Qn]=n,e[Sr]())if(n[di]()){const a=n[Pf]();e[Pn](i0(a))}else if(e instanceof $f&&e.ui?.choiceList?.open==="multiSelect"){const a=n[xn]().map(i=>i[se].trim()).join(` +`);e[Pn](i0(a))}else this._isConsumeData()&&H("XFA - Nodes haven't the same type.");else!n[di]()||this._isMatchTemplate()?this._bindElement(e,n):H("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,n,s,a){if(!e)return null;let i,r;for(let o=0;o<3;o++){for(i=s[fr](e,!1,!0);r=i.next().value,!!r;)if(n===r[di]())return r;if(s[Nt]===a0&&s[gt]==="data")break;s=s[Ye]()}return a?(i=this.data[fr](e,!0,!1),r=i.next().value,r||(i=this.data[rf](e,!0),r=i.next().value,r?.[di]())?r:null):null}_setProperties(e,n){if(Object.hasOwn(e,"setProperty"))for(const{ref:s,target:a,connection:i}of e.setProperty.children){if(i||!s)continue;const r=ta(this.root,n,s,!1,!1);if(!r){H(`XFA - Invalid reference: ${s}.`);continue}const[o]=r;if(!o[sa](this.data)){H("XFA - Invalid node: must be a data node.");continue}const f=ta(this.root,e,a,!1,!1);if(!f){H(`XFA - Invalid target: ${a}.`);continue}const[l]=f;if(!l[sa](e)){H("XFA - Invalid target: must be a property or subproperty.");continue}const c=l[Ye]();if(l instanceof df||c instanceof df){H("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(l instanceof hf||c instanceof hf){H("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const h=o[Xt](),u=l[gt];if(l instanceof Lf){const d=Object.create(null);d[u]=h;const p=Reflect.construct(Object.getPrototypeOf(c).constructor,[d]);c[u]=p[u];continue}if(!Object.hasOwn(l,se)){H("XFA - Invalid node to use in setProperty");continue}l[Qn]=o,l[se]=h,l[vt]()}}_bindItems(e,n){if(!Object.hasOwn(e,"items")||!Object.hasOwn(e,"bindItems")||e.bindItems.isEmpty())return;for(const i of e.items.children)e[fa](i);e.items.clear();const s=new uf({}),a=new uf({});e[Ht](s),e.items.push(s),e[Ht](a),e.items.push(a);for(const{ref:i,labelRef:r,valueRef:o,connection:f}of e.bindItems.children){if(f||!i)continue;const l=ta(this.root,n,i,!1,!1);if(!l){H(`XFA - Invalid reference: ${i}.`);continue}for(const c of l){if(!c[sa](this.datasets)){H(`XFA - Invalid ref (${i}): must be a datasets child.`);continue}const h=ta(this.root,c,r,!0,!1);if(!h){H(`XFA - Invalid label: ${r}.`);continue}const[u]=h;if(!u[sa](this.datasets)){H("XFA - Invalid label: must be a datasets child.");continue}const d=ta(this.root,c,o,!0,!1);if(!d){H(`XFA - Invalid value: ${o}.`);continue}const[p]=d;if(!p[sa](this.datasets)){H("XFA - Invalid value: must be a datasets child.");continue}const m=i0(u[Xt]()),b=i0(p[Xt]());s[Ht](m),s.text.push(m),a[Ht](b),a.text.push(b)}}}_bindOccurrences(e,n,s){let a;if(n.length>1&&(a=e[ds](),a[fa](a.occur),a.occur=null),this._bindValue(e,n[0],s),this._setProperties(e,n[0]),this._bindItems(e,n[0]),n.length===1)return;const i=e[Ye](),r=e[gt],o=i[of](e);for(let f=1,l=n.length;ff.name===e.name).length:i=s[a].children.length;const r=s[of](e)+1,o=n.initial-i;if(o){const f=e[ds]();f[fa](f.occur),f.occur=null,s[a].push(f),s[b0](r,f);for(let l=1;l0)this._bindOccurrences(a,[h[0]],null);else if(this.emptyMerge){const u=n[Nt]===a0?-1:n[Nt],d=a[Qn]=new As(u,a.name||"root");n[Ht](d),this._bindElement(a,d)}continue}if(!a[Va]())continue;let i=!1,r=null,o=null,f=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,n);continue;case"global":i=!0;break;case"dataRef":if(!a.bind.ref){H(`XFA - ref is empty in node ${a[gt]}.`),this._setAndBind(a,n);continue}o=a.bind.ref;break}a.bind.picture&&(r=a.bind.picture[se])}const[l,c]=this._getOccurInfo(a);if(o)if(f=ta(this.root,n,o,!0,!1),f===null){if(f=Bg(this.data,n,o),!f)continue;this._isConsumeData()&&(f[vs]=!0),this._setAndBind(a,f);continue}else this._isConsumeData()&&(f=f.filter(h=>!h[vs])),f.length>c?f=f.slice(0,c):f.length===0&&(f=null),f&&this._isConsumeData()&&f.forEach(h=>{h[vs]=!0});else{if(!a.name){this._setAndBind(a,n);continue}if(this._isConsumeData()){const h=[];for(;h.length0?h:null}else{if(f=n[fr](a.name,!1,this.emptyMerge).next().value,!f){if(l===0){s.push(a);continue}const h=n[Nt]===a0?-1:n[Nt];f=a[Qn]=new As(h,a.name),this.emptyMerge&&(f[vs]=!0),n[Ht](f),this._setAndBind(a,f);continue}this.emptyMerge&&(f[vs]=!0),f=[f]}}f?this._bindOccurrences(a,f,r):l>0?this._setAndBind(a,n):s.push(a)}s.forEach(a=>a[Ye]()[fa](a))}}class gw{constructor(e,n){this.data=n,this.dataset=e.datasets||null}serialize(e){const n=[[-1,this.data[xn]()]];for(;n.length>0;){const a=n.at(-1),[i,r]=a;if(i+1===r.length){n.pop();continue}const o=r[++a[0]],f=e.get(o[wt]);if(f)o[Pn](f);else{const c=o[Ph]();for(const h of c.values()){const u=e.get(h[wt]);if(u){h[Pn](u);break}}}const l=o[xn]();l.length>0&&n.push([-1,l])}const s=[''];if(this.dataset)for(const a of this.dataset[xn]())a[gt]!=="data"&&a[cr](s);return this.data[cr](s),s.push(""),s.join("")}}const fe=Yt.config.id;class bw extends V{constructor(e){super(fe,"acrobat",!0),this.acrobat7=null,this.autoSave=null,this.common=null,this.validate=null,this.validateApprovalSignatures=null,this.submitUrl=new E}}class ww extends V{constructor(e){super(fe,"acrobat7",!0),this.dynamicRender=null}}class xw extends xt{constructor(e){super(fe,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class jw extends xt{constructor(e){super(fe,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class kw extends Jt{constructor(e){super(fe,"addSilentPrint")}}class yw extends Jt{constructor(e){super(fe,"addViewerPreferences")}}class qw extends Wh{constructor(e){super(fe,"adjustData")}}class vw extends xs{constructor(e){super(fe,"adobeExtensionLevel",0,n=>n>=1&&n<=8)}}class Sw extends V{constructor(e){super(fe,"agent",!0),this.name=e.name?e.name.trim():"",this.common=new E}}class Aw extends Et{constructor(e){super(fe,"alwaysEmbed")}}class Iw extends it{constructor(e){super(fe,"amd")}}class Cw extends V{constructor(e){super(fe,"area"),this.level=Ve({data:e.level,defaultValue:0,validate:n=>n>=1&&n<=3}),this.name=re(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Tw extends xt{constructor(e){super(fe,"attributes",["preserve","delegate","ignore"])}}class Bw extends xt{constructor(e){super(fe,"autoSave",["disabled","enabled"])}}class Fw extends it{constructor(e){super(fe,"base")}}class Rw extends V{constructor(e){super(fe,"batchOutput"),this.format=re(e.format,["none","concat","zip","zipCompress"])}}class Hw extends Et{constructor(e){super(fe,"behaviorOverride")}[vt](){this[se]=new Map(this[se].trim().split(/\s+/).filter(e=>e.includes(":")).map(e=>e.split(":",2)))}}class Ew extends V{constructor(e){super(fe,"cache",!0),this.templateCache=null}}class Mw extends Jt{constructor(e){super(fe,"change")}}class Dw extends V{constructor(e){super(fe,"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 E}}class _w extends V{constructor(e){super(fe,"compress"),this.scope=re(e.scope,["imageOnly","document"])}}class Pw extends Jt{constructor(e){super(fe,"compressLogicalStructure")}}class Nw extends Wh{constructor(e){super(fe,"compressObjectStream")}}class Ow extends V{constructor(e){super(fe,"compression",!0),this.compressLogicalStructure=null,this.compressObjectStream=null,this.level=null,this.type=null}}class Lw extends V{constructor(e){super(fe,"config",!0),this.acrobat=null,this.present=null,this.trace=null,this.agent=new E}}class zw extends xt{constructor(e){super(fe,"conformance",["A","B"])}}class Uw extends Jt{constructor(e){super(fe,"contentCopy")}}class Gw extends xs{constructor(e){super(fe,"copies",1,n=>n>=1)}}class Ww extends it{constructor(e){super(fe,"creator")}}class Kw extends xs{constructor(e){super(fe,"currentPage",0,n=>n>=0)}}class Vw extends V{constructor(e){super(fe,"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 E,this.transform=new E}}class $w extends V{constructor(e){super(fe,"debug",!0),this.uri=null}}class Xw extends Et{constructor(e){super(fe,"defaultTypeface"),this.writingScript=re(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Yw extends xt{constructor(e){super(fe,"destination",["pdf","pcl","ps","webClient","zpl"])}}class Jw extends Jt{constructor(e){super(fe,"documentAssembly")}}class Qw extends V{constructor(e){super(fe,"driver",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class Zw extends xt{constructor(e){super(fe,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class ex extends xt{constructor(e){super(fe,"dynamicRender",["forbidden","required"])}}class tx extends Jt{constructor(e){super(fe,"embed")}}class nx extends Jt{constructor(e){super(fe,"encrypt")}}class sx extends V{constructor(e){super(fe,"encryption",!0),this.encrypt=null,this.encryptionLevel=null,this.permissions=null}}class ax extends xt{constructor(e){super(fe,"encryptionLevel",["40bit","128bit"])}}class ix extends it{constructor(e){super(fe,"enforce")}}class rx extends V{constructor(e){super(fe,"equate"),this.force=Ve({data:e.force,defaultValue:1,validate:n=>n===0}),this.from=e.from||"",this.to=e.to||""}}class ox extends V{constructor(e){super(fe,"equateRange"),this.from=e.from||"",this.to=e.to||"",this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],n=/U\+([0-9a-fA-F]+)/,s=this._unicodeRange;for(let a of s.split(",").map(i=>i.trim()).filter(Boolean))a=a.split("-",2).map(i=>{const r=i.match(n);return r?parseInt(r[1],16):0}),a.length===1&&a.push(a[0]),e.push(a);return ue(this,"unicodeRange",e)}}class fx extends Et{constructor(e){super(fe,"exclude")}[vt](){this[se]=this[se].trim().split(/\s+/).filter(e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e))}}class lx extends it{constructor(e){super(fe,"excludeNS")}}class cx extends xt{constructor(e){super(fe,"flipLabel",["usePrinterSetting","on","off"])}}class hx extends V{constructor(e){super(fe,"fontInfo",!0),this.embed=null,this.map=null,this.subsetBelow=null,this.alwaysEmbed=new E,this.defaultTypeface=new E,this.neverEmbed=new E}}class ux extends Jt{constructor(e){super(fe,"formFieldFilling")}}class dx extends it{constructor(e){super(fe,"groupParent")}}class mx extends xt{constructor(e){super(fe,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class px extends it{constructor(e){super(fe,"includeXDPContent")}}class gx extends xt{constructor(e){super(fe,"incrementalLoad",["none","forwardOnly"])}}class bx extends Jt{constructor(e){super(fe,"incrementalMerge")}}class wx extends Jt{constructor(e){super(fe,"interactive")}}class xx extends xt{constructor(e){super(fe,"jog",["usePrinterSetting","none","pageSet"])}}class jx extends V{constructor(e){super(fe,"labelPrinter",!0),this.name=re(e.name,["zpl","dpl","ipl","tcpl"]),this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class kx extends xt{constructor(e){super(fe,"layout",["paginate","panel"])}}class yx extends xs{constructor(e){super(fe,"level",0,n=>n>0)}}class qx extends Jt{constructor(e){super(fe,"linearized")}}class vx extends it{constructor(e){super(fe,"locale")}}class Sx extends it{constructor(e){super(fe,"localeSet")}}class Ax extends V{constructor(e){super(fe,"log",!0),this.mode=null,this.threshold=null,this.to=null,this.uri=null}}class Ix extends V{constructor(e){super(fe,"map",!0),this.equate=new E,this.equateRange=new E}}class Cx extends V{constructor(e){super(fe,"mediumInfo",!0),this.map=null}}class Tx extends V{constructor(e){super(fe,"message",!0),this.msgId=null,this.severity=null}}class Bx extends V{constructor(e){super(fe,"messaging",!0),this.message=new E}}class Fx extends xt{constructor(e){super(fe,"mode",["append","overwrite"])}}class Rx extends Jt{constructor(e){super(fe,"modifyAnnots")}}class Hx extends xs{constructor(e){super(fe,"msgId",1,n=>n>=1)}}class Ex extends it{constructor(e){super(fe,"nameAttr")}}class Mx extends Et{constructor(e){super(fe,"neverEmbed")}}class Dx extends xs{constructor(e){super(fe,"numberOfCopies",null,n=>n>=2&&n<=5)}}class _x extends V{constructor(e){super(fe,"openAction",!0),this.destination=null}}class Px extends V{constructor(e){super(fe,"output",!0),this.to=null,this.type=null,this.uri=null}}class Nx extends it{constructor(e){super(fe,"outputBin")}}class Ox extends V{constructor(e){super(fe,"outputXSL",!0),this.uri=null}}class Lx extends xt{constructor(e){super(fe,"overprint",["none","both","draw","field"])}}class zx extends it{constructor(e){super(fe,"packets")}[vt](){this[se]!=="*"&&(this[se]=this[se].trim().split(/\s+/).filter(e=>["config","datasets","template","xfdf","xslt"].includes(e)))}}class Ux extends V{constructor(e){super(fe,"pageOffset"),this.x=Ve({data:e.x,defaultValue:"useXDCSetting",validate:n=>!0}),this.y=Ve({data:e.y,defaultValue:"useXDCSetting",validate:n=>!0})}}class Gx extends it{constructor(e){super(fe,"pageRange")}[vt](){const e=this[se].trim().split(/\s+/).map(s=>parseInt(s,10)),n=[];for(let s=0,a=e.length;s!1)}}class $x extends V{constructor(e){super(fe,"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 Xx extends V{constructor(e){super(fe,"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 Yx extends V{constructor(e){super(fe,"pdfa",!0),this.amd=null,this.conformance=null,this.includeXDPContent=null,this.part=null}}class Jx extends V{constructor(e){super(fe,"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 Qx extends Jt{constructor(e){super(fe,"pickTrayByPDFSize")}}class Zx extends it{constructor(e){super(fe,"picture")}}class e2 extends Jt{constructor(e){super(fe,"plaintextMetadata")}}class t2 extends xt{constructor(e){super(fe,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class n2 extends V{constructor(e){super(fe,"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 E,this.labelPrinter=new E,this.pcl=new E,this.pdf=new E,this.ps=new E,this.submitUrl=new E,this.webClient=new E,this.zpl=new E}}class s2 extends Jt{constructor(e){super(fe,"print")}}class a2 extends Jt{constructor(e){super(fe,"printHighQuality")}}class i2 extends xt{constructor(e){super(fe,"printScaling",["appdefault","noScaling"])}}class r2 extends it{constructor(e){super(fe,"printerName")}}class o2 extends it{constructor(e){super(fe,"producer")}}class f2 extends V{constructor(e){super(fe,"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 l2 extends Et{constructor(e){super(fe,"range")}[vt](){this[se]=this[se].split(",",2).map(e=>e.split("-").map(n=>parseInt(n.trim(),10))).filter(e=>e.every(n=>!isNaN(n))).map(e=>(e.length===1&&e.push(e[0]),e))}}class c2 extends Et{constructor(e){super(fe,"record")}[vt](){this[se]=this[se].trim();const e=parseInt(this[se],10);!isNaN(e)&&e>=0&&(this[se]=e)}}class h2 extends Et{constructor(e){super(fe,"relevant")}[vt](){this[se]=this[se].trim().split(/\s+/)}}class u2 extends Et{constructor(e){super(fe,"rename")}[vt](){this[se]=this[se].trim(),(this[se].toLowerCase().startsWith("xml")||/[\p{L}_][\p{L}\d._\p{M}-]*/u.test(this[se]))&&H("XFA - Rename: invalid XFA name")}}class d2 extends xt{constructor(e){super(fe,"renderPolicy",["server","client"])}}class m2 extends xt{constructor(e){super(fe,"runScripts",["both","client","none","server"])}}class p2 extends V{constructor(e){super(fe,"script",!0),this.currentPage=null,this.exclude=null,this.runScripts=null}}class g2 extends xt{constructor(e){super(fe,"scriptModel",["XFA","none"])}}class b2 extends xt{constructor(e){super(fe,"severity",["ignore","error","information","trace","warning"])}}class w2 extends V{constructor(e){super(fe,"silentPrint",!0),this.addSilentPrint=null,this.printerName=null}}class x2 extends V{constructor(e){super(fe,"staple"),this.mode=re(e.mode,["usePrinterSetting","on","off"])}}class j2 extends it{constructor(e){super(fe,"startNode")}}class k2 extends xs{constructor(e){super(fe,"startPage",0,n=>!0)}}class y2 extends xt{constructor(e){super(fe,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class q2 extends it{constructor(e){super(fe,"submitUrl")}}class v2 extends xs{constructor(e){super(fe,"subsetBelow",100,n=>n>=0&&n<=100)}}class S2 extends Jt{constructor(e){super(fe,"suppressBanner")}}class A2 extends Jt{constructor(e){super(fe,"tagged")}}class I2 extends V{constructor(e){super(fe,"template",!0),this.base=null,this.relevant=null,this.startPage=null,this.uri=null,this.xsl=null}}class C2 extends xt{constructor(e){super(fe,"threshold",["trace","error","information","warning"])}}class T2 extends xt{constructor(e){super(fe,"to",["null","memory","stderr","stdout","system","uri"])}}class B2 extends V{constructor(e){super(fe,"templateCache"),this.maxEntries=Ve({data:e.maxEntries,defaultValue:5,validate:n=>n>=0})}}class F2 extends V{constructor(e){super(fe,"trace",!0),this.area=new E}}class R2 extends V{constructor(e){super(fe,"transform",!0),this.groupParent=null,this.ifEmpty=null,this.nameAttr=null,this.picture=null,this.presence=null,this.rename=null,this.whitespace=null}}class H2 extends xt{constructor(e){super(fe,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class E2 extends it{constructor(e){super(fe,"uri")}}class M2 extends xt{constructor(e){super(fe,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class D2 extends Et{constructor(e){super(fe,"validateApprovalSignatures")}[vt](){this[se]=this[se].trim().split(/\s+/).filter(e=>["docReady","postSign"].includes(e))}}class _2 extends xt{constructor(e){super(fe,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class P2 extends xt{constructor(e){super(fe,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class N2 extends V{constructor(e){super(fe,"VersionControl"),this.outputBelow=re(e.outputBelow,["warn","error","update"]),this.sourceAbove=re(e.sourceAbove,["warn","error"]),this.sourceBelow=re(e.sourceBelow,["update","maintain"])}}class O2 extends V{constructor(e){super(fe,"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 L2 extends V{constructor(e){super(fe,"webClient",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class z2 extends xt{constructor(e){super(fe,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class U2 extends Et{constructor(e){super(fe,"window")}[vt](){const e=this[se].split(",",2).map(n=>parseInt(n.trim(),10));if(e.some(n=>isNaN(n))){this[se]=[0,0];return}e.length===1&&e.push(e[0]),this[se]=e}}class G2 extends V{constructor(e){super(fe,"xdc",!0),this.uri=new E,this.xsl=new E}}class W2 extends V{constructor(e){super(fe,"xdp",!0),this.packets=null}}class K2 extends V{constructor(e){super(fe,"xsl",!0),this.debug=null,this.uri=null}}class V2 extends V{constructor(e){super(fe,"zpl",!0),this.name=e.name?e.name.trim():"",this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class B0{static[bs](e,n){if(Object.hasOwn(B0,e))return B0[e](n)}static acrobat(e){return new bw(e)}static acrobat7(e){return new ww(e)}static ADBE_JSConsole(e){return new xw(e)}static ADBE_JSDebugger(e){return new jw(e)}static addSilentPrint(e){return new kw(e)}static addViewerPreferences(e){return new yw(e)}static adjustData(e){return new qw(e)}static adobeExtensionLevel(e){return new vw(e)}static agent(e){return new Sw(e)}static alwaysEmbed(e){return new Aw(e)}static amd(e){return new Iw(e)}static area(e){return new Cw(e)}static attributes(e){return new Tw(e)}static autoSave(e){return new Bw(e)}static base(e){return new Fw(e)}static batchOutput(e){return new Rw(e)}static behaviorOverride(e){return new Hw(e)}static cache(e){return new Ew(e)}static change(e){return new Mw(e)}static common(e){return new Dw(e)}static compress(e){return new _w(e)}static compressLogicalStructure(e){return new Pw(e)}static compressObjectStream(e){return new Nw(e)}static compression(e){return new Ow(e)}static config(e){return new Lw(e)}static conformance(e){return new zw(e)}static contentCopy(e){return new Uw(e)}static copies(e){return new Gw(e)}static creator(e){return new Ww(e)}static currentPage(e){return new Kw(e)}static data(e){return new Vw(e)}static debug(e){return new $w(e)}static defaultTypeface(e){return new Xw(e)}static destination(e){return new Yw(e)}static documentAssembly(e){return new Jw(e)}static driver(e){return new Qw(e)}static duplexOption(e){return new Zw(e)}static dynamicRender(e){return new ex(e)}static embed(e){return new tx(e)}static encrypt(e){return new nx(e)}static encryption(e){return new sx(e)}static encryptionLevel(e){return new ax(e)}static enforce(e){return new ix(e)}static equate(e){return new rx(e)}static equateRange(e){return new ox(e)}static exclude(e){return new fx(e)}static excludeNS(e){return new lx(e)}static flipLabel(e){return new cx(e)}static fontInfo(e){return new hx(e)}static formFieldFilling(e){return new ux(e)}static groupParent(e){return new dx(e)}static ifEmpty(e){return new mx(e)}static includeXDPContent(e){return new px(e)}static incrementalLoad(e){return new gx(e)}static incrementalMerge(e){return new bx(e)}static interactive(e){return new wx(e)}static jog(e){return new xx(e)}static labelPrinter(e){return new jx(e)}static layout(e){return new kx(e)}static level(e){return new yx(e)}static linearized(e){return new qx(e)}static locale(e){return new vx(e)}static localeSet(e){return new Sx(e)}static log(e){return new Ax(e)}static map(e){return new Ix(e)}static mediumInfo(e){return new Cx(e)}static message(e){return new Tx(e)}static messaging(e){return new Bx(e)}static mode(e){return new Fx(e)}static modifyAnnots(e){return new Rx(e)}static msgId(e){return new Hx(e)}static nameAttr(e){return new Ex(e)}static neverEmbed(e){return new Mx(e)}static numberOfCopies(e){return new Dx(e)}static openAction(e){return new _x(e)}static output(e){return new Px(e)}static outputBin(e){return new Nx(e)}static outputXSL(e){return new Ox(e)}static overprint(e){return new Lx(e)}static packets(e){return new zx(e)}static pageOffset(e){return new Ux(e)}static pageRange(e){return new Gx(e)}static pagination(e){return new Wx(e)}static paginationOverride(e){return new Kx(e)}static part(e){return new Vx(e)}static pcl(e){return new $x(e)}static pdf(e){return new Xx(e)}static pdfa(e){return new Yx(e)}static permissions(e){return new Jx(e)}static pickTrayByPDFSize(e){return new Qx(e)}static picture(e){return new Zx(e)}static plaintextMetadata(e){return new e2(e)}static presence(e){return new t2(e)}static present(e){return new n2(e)}static print(e){return new s2(e)}static printHighQuality(e){return new a2(e)}static printScaling(e){return new i2(e)}static printerName(e){return new r2(e)}static producer(e){return new o2(e)}static ps(e){return new f2(e)}static range(e){return new l2(e)}static record(e){return new c2(e)}static relevant(e){return new h2(e)}static rename(e){return new u2(e)}static renderPolicy(e){return new d2(e)}static runScripts(e){return new m2(e)}static script(e){return new p2(e)}static scriptModel(e){return new g2(e)}static severity(e){return new b2(e)}static silentPrint(e){return new w2(e)}static staple(e){return new x2(e)}static startNode(e){return new j2(e)}static startPage(e){return new k2(e)}static submitFormat(e){return new y2(e)}static submitUrl(e){return new q2(e)}static subsetBelow(e){return new v2(e)}static suppressBanner(e){return new S2(e)}static tagged(e){return new A2(e)}static template(e){return new I2(e)}static templateCache(e){return new B2(e)}static threshold(e){return new C2(e)}static to(e){return new T2(e)}static trace(e){return new F2(e)}static transform(e){return new R2(e)}static type(e){return new H2(e)}static uri(e){return new E2(e)}static validate(e){return new M2(e)}static validateApprovalSignatures(e){return new D2(e)}static validationMessaging(e){return new _2(e)}static version(e){return new P2(e)}static versionControl(e){return new N2(e)}static viewerPreferences(e){return new O2(e)}static webClient(e){return new L2(e)}static whitespace(e){return new z2(e)}static window(e){return new U2(e)}static xdc(e){return new G2(e)}static xdp(e){return new W2(e)}static xsl(e){return new K2(e)}static zpl(e){return new V2(e)}}const ns=Yt.connectionSet.id;class $2 extends V{constructor(e){super(ns,"connectionSet",!0),this.wsdlConnection=new E,this.xmlConnection=new E,this.xsdConnection=new E}}class X2 extends V{constructor(e){super(ns,"effectiveInputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Y2 extends V{constructor(e){super(ns,"effectiveOutputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class J2 extends it{constructor(e){super(ns,"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 Q2 extends it{constructor(e){super(ns,"rootElement"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Z2 extends it{constructor(e){super(ns,"soapAction"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class e9 extends it{constructor(e){super(ns,"soapAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class t9 extends it{constructor(e){super(ns,"uri"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class n9 extends it{constructor(e){super(ns,"wsdlAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class s9 extends V{constructor(e){super(ns,"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 a9 extends V{constructor(e){super(ns,"xmlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.uri=null}}class i9 extends V{constructor(e){super(ns,"xsdConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.rootElement=null,this.uri=null}}class F0{static[bs](e,n){if(Object.hasOwn(F0,e))return F0[e](n)}static connectionSet(e){return new $2(e)}static effectiveInputPolicy(e){return new X2(e)}static effectiveOutputPolicy(e){return new Y2(e)}static operation(e){return new J2(e)}static rootElement(e){return new Q2(e)}static soapAction(e){return new Z2(e)}static soapAddress(e){return new e9(e)}static uri(e){return new t9(e)}static wsdlAddress(e){return new n9(e)}static wsdlConnection(e){return new s9(e)}static xmlConnection(e){return new a9(e)}static xsdConnection(e){return new i9(e)}}const mf=Yt.datasets.id;class r9 extends As{constructor(e){super(mf,"data",e)}[lr](){return!0}}class o9 extends V{constructor(e){super(mf,"datasets",!0),this.data=null,this.Signature=null}[Ss](e){const n=e[gt];(n==="data"&&e[Nt]===mf||n==="Signature"&&e[Nt]===Yt.signature.id)&&(this[n]=e),this[Ht](e)}}class R0{static[bs](e,n){if(Object.hasOwn(R0,e))return R0[e](n)}static datasets(e){return new o9(e)}static data(e){return new r9(e)}}const Mt=Yt.localeSet.id;class f9 extends V{constructor(e){super(Mt,"calendarSymbols",!0),this.name="gregorian",this.dayNames=new E(2),this.eraNames=null,this.meridiemNames=null,this.monthNames=new E(2)}}class l9 extends it{constructor(e){super(Mt,"currencySymbol"),this.name=re(e.name,["symbol","isoname","decimal"])}}class c9 extends V{constructor(e){super(Mt,"currencySymbols",!0),this.currencySymbol=new E(3)}}class h9 extends it{constructor(e){super(Mt,"datePattern"),this.name=re(e.name,["full","long","med","short"])}}class u9 extends V{constructor(e){super(Mt,"datePatterns",!0),this.datePattern=new E(4)}}class d9 extends Et{constructor(e){super(Mt,"dateTimeSymbols")}}class m9 extends it{constructor(e){super(Mt,"day")}}class p9 extends V{constructor(e){super(Mt,"dayNames",!0),this.abbr=Ve({data:e.abbr,defaultValue:0,validate:n=>n===1}),this.day=new E(7)}}class g9 extends it{constructor(e){super(Mt,"era")}}class b9 extends V{constructor(e){super(Mt,"eraNames",!0),this.era=new E(2)}}class w9 extends V{constructor(e){super(Mt,"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 x9 extends V{constructor(e){super(Mt,"localeSet",!0),this.locale=new E}}class j9 extends it{constructor(e){super(Mt,"meridiem")}}class k9 extends V{constructor(e){super(Mt,"meridiemNames",!0),this.meridiem=new E(2)}}class y9 extends it{constructor(e){super(Mt,"month")}}class q9 extends V{constructor(e){super(Mt,"monthNames",!0),this.abbr=Ve({data:e.abbr,defaultValue:0,validate:n=>n===1}),this.month=new E(12)}}class v9 extends it{constructor(e){super(Mt,"numberPattern"),this.name=re(e.name,["full","long","med","short"])}}class S9 extends V{constructor(e){super(Mt,"numberPatterns",!0),this.numberPattern=new E(4)}}class A9 extends it{constructor(e){super(Mt,"numberSymbol"),this.name=re(e.name,["decimal","grouping","percent","minus","zero"])}}class I9 extends V{constructor(e){super(Mt,"numberSymbols",!0),this.numberSymbol=new E(5)}}class C9 extends it{constructor(e){super(Mt,"timePattern"),this.name=re(e.name,["full","long","med","short"])}}class T9 extends V{constructor(e){super(Mt,"timePatterns",!0),this.timePattern=new E(4)}}class B9 extends V{constructor(e){super(Mt,"typeFace",!0),this.name=e.name|""}}class F9 extends V{constructor(e){super(Mt,"typeFaces",!0),this.typeFace=new E}}class H0{static[bs](e,n){if(Object.hasOwn(H0,e))return H0[e](n)}static calendarSymbols(e){return new f9(e)}static currencySymbol(e){return new l9(e)}static currencySymbols(e){return new c9(e)}static datePattern(e){return new h9(e)}static datePatterns(e){return new u9(e)}static dateTimeSymbols(e){return new d9(e)}static day(e){return new m9(e)}static dayNames(e){return new p9(e)}static era(e){return new g9(e)}static eraNames(e){return new b9(e)}static locale(e){return new w9(e)}static localeSet(e){return new x9(e)}static meridiem(e){return new j9(e)}static meridiemNames(e){return new k9(e)}static month(e){return new y9(e)}static monthNames(e){return new q9(e)}static numberPattern(e){return new v9(e)}static numberPatterns(e){return new S9(e)}static numberSymbol(e){return new A9(e)}static numberSymbols(e){return new I9(e)}static timePattern(e){return new C9(e)}static timePatterns(e){return new T9(e)}static typeFace(e){return new B9(e)}static typeFaces(e){return new F9(e)}}const R9=Yt.signature.id;class H9 extends V{constructor(e){super(R9,"signature",!0)}}class E0{static[bs](e,n){if(Object.hasOwn(E0,e))return E0[e](n)}static signature(e){return new H9(e)}}const E9=Yt.stylesheet.id;class M9 extends V{constructor(e){super(E9,"stylesheet",!0)}}class M0{static[bs](e,n){if(Object.hasOwn(M0,e))return M0[e](n)}static stylesheet(e){return new M9(e)}}const D9=Yt.xdp.id;class _9 extends V{constructor(e){super(D9,"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 E,this.template=null}[ff](e){const n=Yt[e[gt]];return n&&e[Nt]===n.id}}class D0{static[bs](e,n){if(Object.hasOwn(D0,e))return D0[e](n)}static xdp(e){return new _9(e)}}const P9=Yt.xhtml.id,r0=Symbol(),N9=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"]),O9=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",t=>t==="none"?"none":"normal"],["xfa-font-horizontal-scale",t=>`scaleX(${Math.max(0,parseInt(t,10)/100).toFixed(2)})`],["xfa-font-vertical-scale",t=>`scaleY(${Math.max(0,parseInt(t,10)/100).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(t,e)=>(t=e.fontSize=Math.abs(Se(t)),Ke(.99*t))],["letter-spacing",t=>Ke(Se(t))],["line-height",t=>Ke(Se(t))],["margin",t=>Ke(Se(t))],["margin-bottom",t=>Ke(Se(t))],["margin-left",t=>Ke(Se(t))],["margin-right",t=>Ke(Se(t))],["margin-top",t=>Ke(Se(t))],["text-indent",t=>Ke(Se(t))],["font-family",t=>t],["vertical-align",t=>Ke(Se(t))]]),L9=/\s+/g,z9=/[\r\n]+/g,U9=/\r\n?/g;function G9(t,e,n){const s=Object.create(null);if(!t)return s;const a=Object.create(null);for(const[i,r]of t.split(";").map(o=>o.split(":",2))){const o=O9.get(i);if(o==="")continue;let f=r;o&&(f=typeof o=="string"?o:o(r,a)),i.endsWith("scale")?s.transform=s.transform?`${s[i]} ${f}`:f:s[i.replaceAll(/-([a-z])/gi,(l,c)=>c.toUpperCase())]=f}if(s.fontFamily&&Qh({typeface:s.fontFamily,weight:s.fontWeight||"normal",posture:s.fontStyle||"normal",size:a.fontSize||0},e,e[qt].fontFinder,s),n&&s.verticalAlign&&s.verticalAlign!=="0px"&&s.fontSize){const o=Se(s.fontSize);s.fontSize=Ke(o*.583),s.verticalAlign=Ke(Math.sign(Se(s.verticalAlign))*o*.333)}return n&&s.fontSize&&(s.fontSize=`calc(${s.fontSize} * var(--total-scale-factor))`),Xh(s),s}function W9(t){return t.style?t.style.split(";").filter(e=>!!e.trim()).map(e=>e.split(":",2).map(n=>n.trim())).filter(([e,n])=>(e==="font-family"&&t[qt].usedTypefaces.add(n),N9.has(e))).map(e=>e.join(":")).join(";"):""}const K9=new Set(["body","html"]);class Wn extends As{constructor(e,n){super(P9,n),this[r0]=!1,this.style=e.style||""}[ts](e){super[ts](e),this.style=W9(this)}[V0](){return!K9.has(this[gt])}[Gs](e,n=!1){n?this[r0]=!0:(e=e.replaceAll(z9,""),this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(L9," "))),e&&(this[se]+=e)}[Bs](e,n=!0){const s=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[r,o]of this.style.split(";").map(f=>f.split(":",2)))switch(r){case"font-family":s.typeface=X0(o);break;case"font-size":s.size=Se(o);break;case"font-weight":s.weight=o;break;case"font-style":s.posture=o;break;case"letter-spacing":s.letterSpacing=Se(o);break;case"margin":const f=o.split(/ \t/).map(Se);switch(f.length){case 1:a.top=a.bottom=a.left=a.right=f[0];break;case 2:a.top=a.bottom=f[0],a.left=a.right=f[1];break;case 3:a.top=f[0],a.bottom=f[2],a.left=a.right=f[1];break;case 4:a.top=f[0],a.left=f[1],a.bottom=f[2],a.right=f[3];break}break;case"margin-top":a.top=Se(o);break;case"margin-bottom":a.bottom=Se(o);break;case"margin-left":a.left=Se(o);break;case"margin-right":a.right=Se(o);break;case"line-height":i=Se(o);break}if(e.pushData(s,a,i),this[se])e.addString(this[se]);else for(const r of this[xn]()){if(r[gt]==="#text"){e.addString(r[se]);continue}r[Bs](e)}n&&e.popFont()}[Oe](e){const n=[];if(this[U]={children:n},this[pa]({}),n.length===0&&!this[se])return Re.EMPTY;let s;return this[r0]?s=this[se]?this[se].replaceAll(U9,` +`):void 0:s=this[se]||void 0,Re.success({name:this[gt],attributes:{href:this.href,style:G9(this.style,this,this[r0])},children:n,value:s})}}class V9 extends Wn{constructor(e){super(e,"a"),this.href=Zh(e.href)||""}}class $9 extends Wn{constructor(e){super(e,"b")}[Bs](e){e.pushFont({weight:"bold"}),super[Bs](e),e.popFont()}}class X9 extends Wn{constructor(e){super(e,"body")}[Oe](e){const n=super[Oe](e),{html:s}=n;return s?(s.name="div",s.attributes.class=["xfaRich"],n):Re.EMPTY}}class Y9 extends Wn{constructor(e){super(e,"br")}[Xt](){return` +`}[Bs](e){e.addString(` +`)}[Oe](e){return Re.success({name:"br"})}}class J9 extends Wn{constructor(e){super(e,"html")}[Oe](e){const n=[];if(this[U]={children:n},this[pa]({}),n.length===0)return Re.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[se]||""});if(n.length===1){const s=n[0];if(s.attributes?.class.includes("xfaRich"))return Re.success(s)}return Re.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:n})}}class Q9 extends Wn{constructor(e){super(e,"i")}[Bs](e){e.pushFont({posture:"italic"}),super[Bs](e),e.popFont()}}class Z9 extends Wn{constructor(e){super(e,"li")}}class e3 extends Wn{constructor(e){super(e,"ol")}}class t3 extends Wn{constructor(e){super(e,"p")}[Bs](e){super[Bs](e,!1),e.addString(` +`),e.addPara(),e.popFont()}[Xt](){return this[Ye]()[xn]().at(-1)===this?super[Xt]():super[Xt]()+` +`}}class n3 extends Wn{constructor(e){super(e,"span")}}class s3 extends Wn{constructor(e){super(e,"sub")}}class a3 extends Wn{constructor(e){super(e,"sup")}}class i3 extends Wn{constructor(e){super(e,"ul")}}class Ii{static[bs](e,n){if(Object.hasOwn(Ii,e))return Ii[e](n)}static a(e){return new V9(e)}static b(e){return new $9(e)}static body(e){return new X9(e)}static br(e){return new Y9(e)}static html(e){return new J9(e)}static i(e){return new Q9(e)}static li(e){return new Z9(e)}static ol(e){return new e3(e)}static p(e){return new t3(e)}static span(e){return new n3(e)}static sub(e){return new s3(e)}static sup(e){return new a3(e)}static ul(e){return new i3(e)}}const vc={config:B0,connection:F0,datasets:R0,localeSet:H0,signature:E0,stylesheet:M0,template:T0,xdp:D0,xhtml:Ii};class Sc{constructor(e){this.namespaceId=e}[bs](e,n){return new As(this.namespaceId,e,n)}}class r3 extends V{constructor(e){super(-1,"root",Object.create(null)),this.element=null,this[ci]=e}[Ss](e){return this.element=e,!0}[vt](){super[vt](),this.element.template instanceof Yf&&(this[ci].set(Nh,this.element),this.element.template[er](this[ci]),this.element.template[ci]=this[ci])}}class o3 extends V{constructor(){super(-1,"",Object.create(null))}[Ss](e){return!1}}class f3{constructor(e=null){this._namespaceStack=[],this._nsAgnosticLevel=0,this._namespacePrefixes=new Map,this._namespaces=new Map,this._nextNsId=Math.max(...Object.values(Yt).map(({id:n})=>n)),this._currentNamespace=e||new Sc(++this._nextNsId)}buildRoot(e){return new r3(e)}build({nsPrefix:e,name:n,attributes:s,namespace:a,prefixes:i}){const r=a!==null;if(r&&(this._namespaceStack.push(this._currentNamespace),this._currentNamespace=this._searchNamespace(a)),i&&this._addNamespacePrefix(i),Object.hasOwn(s,Ha)){const l=vc.datasets,c=s[Ha];let h=null;for(const[u,d]of Object.entries(c))if(this._getNamespaceToUse(u)===l){h={xfa:d};break}h?s[Ha]=h:delete s[Ha]}const f=this._getNamespaceToUse(e)?.[bs](n,s)||new o3;return f[lr]()&&this._nsAgnosticLevel++,(r||i||f[lr]())&&(f[g0]={hasNamespace:r,prefixes:i,nsAgnostic:f[lr]()}),f}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let n=this._namespaces.get(e);if(n)return n;for(const[s,{check:a}]of Object.entries(Yt))if(a(e)){if(n=vc[s],n)return this._namespaces.set(e,n),n;break}return n=new Sc(++this._nextNsId),this._namespaces.set(e,n),n}_addNamespacePrefix(e){for(const{prefix:n,value:s}of e){const a=this._searchNamespace(s);this._namespacePrefixes.getOrInsertComputed(n,ha).push(a)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const n=this._namespacePrefixes.get(e);return n?.length>0?n.at(-1):(H(`Unknown namespace prefix: ${e}.`),null)}clean(e){const{hasNamespace:n,prefixes:s,nsAgnostic:a}=e;n&&(this._currentNamespace=this._namespaceStack.pop()),s?.forEach(({prefix:i})=>{this._namespacePrefixes.get(i).pop()}),a&&this._nsAgnosticLevel--}}class _0 extends W0{constructor(e=null,n=!1){super(),this._builder=new f3(e),this._stack=[],this._globalData={usedTypefaces:new Set},this._ids=new Map,this._current=this._builder.buildRoot(this._ids),this._errorCode=Dn.NoError,this._whiteRegex=/^\s+$/,this._nbsps=/\xa0+/g,this._richText=n}parse(e){if(this.parseXml(e),this._errorCode===Dn.NoError)return this._current[vt](),this._current.element}onText(e){if(e=e.replace(this._nbsps,n=>n.slice(1)+" "),this._richText||this._current[V0]()){this._current[Gs](e,this._richText);return}this._whiteRegex.test(e)||this._current[Gs](e.trim())}onCdata(e){this._current[Gs](e)}_mkAttributes(e,n){let s=null,a=null;const i=Object.create({});for(const{name:r,value:o}of e)if(r==="xmlns")s?H(`XFA - multiple namespace definition in <${n}>`):s=o;else if(r.startsWith("xmlns:")){const f=r.substring(6);a??=[],a.push({prefix:f,value:o})}else{const f=r.indexOf(":");if(f===-1)i[r]=o;else{const l=i[Ha]??=Object.create(null),[c,h]=[r.slice(0,f),r.slice(f+1)],u=l[c]||=Object.create(null);u[h]=o}}return[s,a,i]}_getNameAndPrefix(e,n){const s=e.indexOf(":");return s===-1?[e,null]:[e.substring(s+1),n?"":e.substring(0,s)]}onBeginElement(e,n,s){const[a,i,r]=this._mkAttributes(n,e),[o,f]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:f,name:o,attributes:r,namespace:a,prefixes:i});if(l[qt]=this._globalData,s){l[vt](),this._current[Ss](l)&&l[lf](this._ids),l[ts](this._builder);return}this._stack.push(this._current),this._current=l}onEndElement(e){const n=this._current;if(n[Nf]()&&typeof n[se]=="string"){const s=new _0;s._globalData=this._globalData;const a=s.parse(n[se]);n[se]=null,n[Ss](a)}n[vt](),this._current=this._stack.pop(),this._current[Ss](n)&&n[lf](this._ids),n[ts](this._builder)}onError(e){this._errorCode=e}}class Dr{constructor(e){try{this.root=new _0().parse(Dr._createDocument(e));const n=new pw(this.root);this.form=n.bind(),this.dataHandler=new gw(this.root,n.getData()),this.form[qt].template=this.form}catch(n){H(`XFA - an error occurred during parsing and binding: ${n}`)}}isValid(){return!!(this.root&&this.form)}_createPagesHelper(){const e=this.form[Lh]();return new Promise((n,s)=>{const a=()=>{try{const i=e.next();i.done?n(i.value):setTimeout(a,0)}catch(i){s(i)}};setTimeout(a,0)})}async _createPages(){try{this.pages=await this._createPagesHelper(),this.dims=this.pages.children.map(e=>{const{width:n,height:s}=e.attributes.style;return[0,0,parseInt(n,10),parseInt(s,10)]})}catch(e){H(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){return this.pages||await this._createPages(),this.dims.length}setImages(e){this.form[qt].images=e}setFonts(e){this.form[qt].fontFinder=new yg(e);const n=[];for(let s of this.form[qt].usedTypefaces)s=X0(s),this.form[qt].fontFinder.find(s)||n.push(s);return n.length>0?n:null}appendFonts(e,n){this.form[qt].fontFinder.add(e,n)}async getPages(){this.pages||await this._createPages();const e=this.pages;return this.pages=null,e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e.get("/xdp:xdp")?e.values().join(""):e.get("xdp:xdp")}static getRichTextAsHtml(e){if(!e||typeof e!="string")return null;try{let n=new _0(Ii,!0).parse(e);if(!["body","xhtml"].includes(n[gt])){const r=Ii.body({});r[Ht](n),n=r}const s=n[Oe]();if(!s.success)return null;const{html:a}=s,{attributes:i}=a;return i&&(i.class&&=i.class.filter(r=>!r.startsWith("xfa")),i.dir="auto"),{html:a,str:n[Xt]()}}catch(n){H(`XFA - an error occurred during parsing of rich text: ${n}`)}return null}}class hs{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments"),e.ensureCatalog("globalColorSpaceCache")]).then(([n,s,a,i,r,o])=>({pdfManager:e,catalog:e.pdfDocument.catalog,acroForm:n instanceof B?n:B.empty,xfaDatasets:s,structTreeRoot:a,baseUrl:i,attachments:r,globalColorSpaceCache:o}),n=>(H(`createGlobals: "${n}".`),null))}static async create(e,n,s,a,i,r,o,f){const l=i?await this._getPageIndex(e,n,s.pdfManager):null;return s.pdfManager.ensure(this,"_create",[e,n,s,a,i,r,o,l,f])}static _create(e,n,s,a,i=!1,r=null,o=null,f=null,l=null){const c=e.fetchIfRef(n);if(!(c instanceof B))return;let h=c.get("Subtype");if(h=h instanceof J?h.name:null,o&&!o.has(_c[h?.toUpperCase()]))return null;const{acroForm:u,pdfManager:d}=s,p=n instanceof Q?n.toString():`annot_${a.createObjId()}`,m={xref:e,ref:n,dict:c,subtype:h,id:p,annotationGlobals:s,collectFields:i,orphanFields:r,needAppearances:!i&&u.get("NeedAppearances")===!0,pageIndex:f,evaluatorOptions:d.evaluatorOptions,pageRef:l};switch(h){case"Link":return new m3(m);case"Text":return new d3(m);case"Widget":let b=rn({dict:c,key:"FT"});switch(b=b instanceof J?b.name:null,b){case"Tx":return new c3(m);case"Btn":return new h3(m);case"Ch":return new u3(m);case"Sig":return new xu(m)}return H(`Unimplemented widget field type "${b}", falling back to base field type.`),new ps(m);case"Popup":return new Zf(m);case"FreeText":return new Fo(m);case"Line":return new p3(m);case"Square":return new g3(m);case"Circle":return new b3(m);case"PolyLine":return new ju(m);case"Polygon":return new ku(m);case"Caret":return new w3(m);case"Ink":return new Xi(m);case"Highlight":return new Ro(m);case"Underline":return new x3(m);case"Squiggly":return new j3(m);case"StrikeOut":return new k3(m);case"Stamp":return new Yi(m);case"FileAttachment":return new y3(m);case"RichMedia":return new el(m);case"Screen":return new tl(m);case"Sound":return new q3(m);default:return i||H(h?`Unimplemented annotation type "${h}", falling back to base annotation.`:"Annotation is missing the required /Subtype."),new Fi(m)}}static async _getPageIndex(e,n,s){try{const a=await e.fetchIfRefAsync(n);if(!(a instanceof B))return-1;const i=a.getRaw("P");if(i instanceof Q)try{return await s.ensureCatalog("getPageIndex",[i])}catch(o){ut(`_getPageIndex -- not a valid page reference: "${o}".`)}if(a.has("Kids"))return-1;const r=await s.ensureDoc("numPages");for(let o=0;on/255)||e}function _r(t,e){const n=t.getArray("QuadPoints");if(!Rt(n,null)||n.length===0||n.length%8>0)return null;const s=new Float32Array(n.length);for(let a=0,i=n.length;ae[2]||be[3]))return null;s.set([p,w,m,w,p,b,m,b],a)}return s}function pf(t,e,n){const s=w0.slice();ft.axialAlignedBoundingBox(e,n,s);const[a,i,r,o]=s;if(a===r||i===o)return[1,0,0,1,t[0],t[1]];const f=(t[2]-t[0])/(r-a),l=(t[3]-t[1])/(o-i);return[f,0,0,l,t[0]-a*f,t[1]-i*l]}function gf(t,e,n=!1){e.push(`${jt(t[4])} ${jt(t[5])} m`);for(let s=6,a=t.length;s=0?d:-1,n.structTreeRoot.addAnnotationIdToPage(e.pageRef,d,this.ref)}if(e.collectFields){const d=s.get("Kids");if(Array.isArray(d)){const p=[];for(const m of d)m instanceof Q&&p.push(m.toString());p.length!==0&&(this.data.kidIds=p)}this.data.actions=N0(o,s,Pc),this.data.fieldName=this._constructFieldName(s),this.data.pageIndex=e.pageIndex}const u=s.get("IT");u instanceof J&&(this.data.it=u.name),this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported,this._fallbackFontDict=null,this._needAppearances=!1}_getOperatorListNoAppearance(){return{opList:new Cn,separateForm:!1,separateCanvas:!1}}_hasFlag(e,n){return!!(e&n)}_buildFlags(e,n){let{flags:s}=this;return e===void 0?n===void 0?void 0:n?s&-5:s&-3|Kt.PRINT:e?(s|=Kt.PRINT,n?s&-33|Kt.HIDDEN:s&-3|Kt.NOVIEW):(s&=-35,n?s&-5:s|Kt.PRINT)}_isViewable(e){return!this._hasFlag(e,Kt.INVISIBLE)&&!this._hasFlag(e,Kt.NOVIEW)}_isPrintable(e){return this._hasFlag(e,Kt.PRINT)&&!this._hasFlag(e,Kt.HIDDEN)&&!this._hasFlag(e,Kt.INVISIBLE)}mustBeViewed(e,n){const s=e?.get(this.data.id)?.noView;return s!==void 0?!s:this.viewable&&!this._hasFlag(this.flags,Kt.HIDDEN)}mustBePrinted(e){const n=e?.get(this.data.id)?.noPrint;return n!==void 0?!n:this.printable}mustBeViewedWhenEditing(e,n=null){return e?!this.data.isEditable:!n?.has(this.data.id)}get viewable(){return this.data.quadPoints===null?!1:this.flags===0?!0:this._isViewable(this.flags)}get printable(){return this.data.quadPoints===null||this.flags===0?!1:this._isPrintable(this.flags)}_parseStringHelper(e){const n=typeof e=="string"?Xe(e):"",s=n&&Mf(n).dir==="rtl"?"rtl":"ltr";return{str:n,dir:s}}setDefaultAppearance(e){const{dict:n,annotationGlobals:s}=e,a=rn({dict:n,key:"DA"})||s.acroForm.get("DA");this._defaultAppearance=typeof a=="string"?a:"",this.data.defaultAppearanceData=Df(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate=typeof e=="string"?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0,this.flags&Kt.INVISIBLE&&this.constructor.name!=="Annotation"&&(this.flags^=Kt.INVISIBLE)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Cs(e,[0,0,0,0])}setColor(e){this.color=La(e)}setLineEndings(e){if(this.lineEndings=["None","None"],Array.isArray(e)&&e.length===2)for(let n=0;n<2;n++){const s=e[n];if(s instanceof J)switch(s.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[n]=s.name;continue}H(`Ignoring invalid lineEnding: ${s}`)}}setRotation(e,n){this.rotation=0;let s=e instanceof B?e.get("R")||0:n.get("Rotate")||0;Number.isInteger(s)&&s!==0&&(s%=360,s<0&&(s+=360),s%90===0&&(this.rotation=s))}setBorderAndBackgroundColors(e){e instanceof B?(this.borderColor=La(e.getArray("BC"),null),this.backgroundColor=La(e.getArray("BG"),null)):this.borderColor=this.backgroundColor=null}setBorderStyle(e){if(this.borderStyle=new l3,e instanceof B)if(e.has("BS")){const n=e.get("BS");if(n instanceof B){const s=n.get("Type");(!s||ze(s,"Border"))&&(this.borderStyle.setWidth(n.get("W"),this.rectangle),this.borderStyle.setStyle(n.get("S")),this.borderStyle.setDashArray(n.getArray("D")))}}else if(e.has("Border")){const n=e.getArray("Border");Array.isArray(n)&&(n.length>=3?(this.borderStyle.setHorizontalCornerRadius(n[0]),this.borderStyle.setVerticalCornerRadius(n[1]),this.borderStyle.setWidth(n[2],this.rectangle),n.length===4&&this.borderStyle.setDashArray(n[3],!0)):n.length===0&&this.borderStyle.setWidth(0))}else this.borderStyle.setWidth(0)}setAppearance(e){const n=e.get("AP");if(!(n instanceof B))return;const s=n.get("N");if(s instanceof Pe){this.appearance=s;return}if(!(s instanceof B))return;const a=e.get("AS");if(!(a instanceof J))return;const i=s.get(a.name);i instanceof Pe&&(this.appearance=i)}#e(e,n){if(n.has("OC"))try{this._oc=Bh(e,n.get("OC"),null)}catch(s){if(s instanceof kt)throw s;H(`#setOptionalContent: ${s}`)}}async loadResources(e,n){const s=await n.dict.getAsync("Resources");return s&&await qi.load(s,e,s.xref),s}get _ownCanvasRequiresForms(){return!1}async getOperatorList(e,n,s,a){const{hasOwnCanvas:i,id:r,rect:o}=this.data;let f=this.appearance;const l=!!(i&&s&an.DISPLAY&&(!this._ownCanvasRequiresForms||s&an.ANNOTATIONS_FORMS));if(l&&(this.width===0||this.height===0))return this.data.hasOwnCanvas=!1,this._getOperatorListNoAppearance();if(!f){if(!l)return this._getOperatorListNoAppearance();f=new hn("",new B)}const c=f.dict,h=await this.loadResources(Oo,f),u=dr(c.getArray("BBox"),[0,0,this.width,this.height]),d=Ps(c.getArray("Matrix"),Zn),p=pf(o,u,d),m=new Cn,b=this._oc;return b!==void 0&&m.addOp(C.beginMarkedContentProps,["OC",b]),m.addOp(C.beginAnnotation,[r,o,p,d,l]),await e.getOperatorList({stream:f,task:n,resources:h,operatorList:m,fallbackFontDict:this._fallbackFontDict}),m.addOp(C.endAnnotation,[]),b!==void 0&&m.addOp(C.endMarkedContent,[]),this.reset(),{opList:m,separateForm:!1,separateCanvas:l}}async save(e,n,s,a){return null}get overlaysTextContent(){return!1}get hasTextContent(){return!1}async extractTextContent(e,n,s){if(!this.appearance)return;const a=await this.loadResources(Lo,this.appearance),i=[],r=[];let o=1/0,f=1/0,l=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(h,u){for(const d of h.items)d.str!==void 0&&(o=Math.min(o,d.transform[4]),f=Math.min(f,d.transform[5]),r.push(d.str),d.hasEOL&&(i.push(r.join("").trimEnd()),r.length=0))}};if(await e.getTextContent({stream:this.appearance,task:n,resources:a,includeMarkedContent:!0,keepWhiteSpace:!0,sink:c,viewBox:s}),this.reset(),o!==1/0&&(l=[o,f]),r.length&&i.push(r.join("").trimEnd()),i.length>1||i[0]){const h=this.appearance.dict,u=dr(h.getArray("BBox"),null),d=Ps(h.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(l,u,d),this.data.textContent=i}}_transformPoint(e,n,s){const{rect:a}=this.data;n||=[0,0,1,1],s||=[1,0,0,1,0,0];const i=pf(a,n,s);i[4]-=a[0],i[5]-=a[1];const r=e.slice();return ft.applyTransform(r,i),ft.applyTransform(r,s),r}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"))return H("Unknown field name, falling back to empty field name."),"";if(!e.has("Parent"))return Xe(e.get("T"));const n=[];e.has("T")&&n.unshift(Xe(e.get("T")));let s=e;const a=new bt;for(e.objId&&a.put(e.objId);s.has("Parent")&&(s=s.get("Parent"),!(!(s instanceof B)||s.objId&&a.has(s.objId)));)s.objId&&a.put(s.objId),s.has("T")&&n.unshift(Xe(s.get("T")));return n.join(".")}_getAttachmentId(e,n,s,a=!1){if(e instanceof B)return n instanceof Q||(n=Sn.pickPlatformItem(e.get("EF"),!0)),n instanceof Q?s.catalog.getAttachmentIdForAnnotation(n,a):void 0}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}}class l3{width=1;rawWidth=1;style=Ja.SOLID;dashArray=[3];horizontalCornerRadius=0;verticalCornerRadius=0;setWidth(e,n=[0,0,0,0]){if(e instanceof J){this.width=0;return}if(typeof e=="number"){if(e>0){this.rawWidth=e;const s=(n[2]-n[0])/2,a=(n[3]-n[1])/2;s>0&&a>0&&(e>s||e>a)&&(H(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`),e=1)}this.width=e}}setStyle(e){if(e instanceof J)switch(e.name){case"S":this.style=Ja.SOLID;break;case"D":this.style=Ja.DASHED;break;case"B":this.style=Ja.BEVELED;break;case"I":this.style=Ja.INSET;break;case"U":this.style=Ja.UNDERLINE;break}}setDashArray(e,n=!1){if(Array.isArray(e)){let s=!0,a=!0;for(const i of e)if(+i>=0)i>0&&(a=!1);else{s=!1;break}e.length===0||s&&!a?(this.dashArray=e,n&&this.setStyle(J.get("D"))):this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}class Nn extends Fi{constructor(e){super(e);const{dict:n}=e;if(n.has("IRT")){const a=n.getRaw("IRT");this.data.inReplyTo=a instanceof Q?a.toString():null;const i=n.get("RT");this.data.replyType=i instanceof J?i.name:_o.REPLY}let s=null;if(this.data.replyType===_o.GROUP){const a=n.get("IRT");this.setTitle(a.get("T")),this.data.titleObj=this._title,this.setContents(a.get("Contents")),this.data.contentsObj=this._contents,a.has("CreationDate")?(this.setCreationDate(a.get("CreationDate")),this.data.creationDate=this.creationDate):this.data.creationDate=null,a.has("M")?(this.setModificationDate(a.get("M")),this.data.modificationDate=this.modificationDate):this.data.modificationDate=null,s=a.getRaw("Popup"),a.has("C")?(this.setColor(a.getArray("C")),this.data.color=this.color):this.data.color=null}else this.data.titleObj=this._title,this.setCreationDate(n.get("CreationDate")),this.data.creationDate=this.creationDate,s=n.getRaw("Popup"),n.has("C")||(this.data.color=null);this.data.popupRef=s instanceof Q?s.toString():null,n.has("RC")&&(this.data.richText=Dr.getRichTextAsHtml(n.get("RC")))}setCreationDate(e){this.creationDate=typeof e=="string"?e:null}_setDefaultAppearance({xref:e,extra:n,strokeColor:s,fillColor:a,blendMode:i,strokeAlpha:r,fillAlpha:o,pointsCallback:f}){const l=this.data.rect=ca.slice(),c=["q"];n&&c.push(n),s&&c.push(`${s[0]} ${s[1]} ${s[2]} RG`),a&&c.push(`${a[0]} ${a[1]} ${a[2]} rg`);const h=this.data.quadPoints||Float32Array.from([this.rectangle[0],this.rectangle[3],this.rectangle[2],this.rectangle[3],this.rectangle[0],this.rectangle[1],this.rectangle[2],this.rectangle[1]]);for(let j=0,k=h.length;jthis._decodeFormValue(s)).filter(s=>s!==null);return n.length>0?n:null}else{if(e instanceof J)return e.name;if(typeof e=="string")return Xe(e)}return null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,n){return n?this.viewable:super.mustBeViewed(e,n)&&!this._hasFlag(this.flags,Kt.NOVIEW)}getRotationMatrix(e){let n=e?.get(this.data.id)?.rotation;return n===void 0&&(n=this.rotation),n===0?Zn:k0(n,this.width,this.height)}getBorderAndBackgroundAppearances(e){let n=e?.get(this.data.id)?.rotation;if(n===void 0&&(n=this.rotation),!this.backgroundColor&&!this.borderColor)return"";const s=n===0||n===180?`0 0 ${this.width} ${this.height} re`:`0 0 ${this.height} ${this.width} re`;let a="";if(this.backgroundColor&&(a=`${Ts(this.backgroundColor,!0)} ${s} f `),this.borderColor){const i=this.borderStyle.width||1;a+=`${i} w ${Ts(this.borderColor,!1)} ${s} S `}return a}async getOperatorList(e,n,s,a){if(s&an.ANNOTATIONS_FORMS&&!(this instanceof xu)&&!this.data.noHTML&&!this.data.hasOwnCanvas){const d=this._getOperatorListNoAppearance();return d.separateForm=!0,d}if(!this._hasText)return super.getOperatorList(e,n,s,a);const i=await this._getAppearance(e,n,s,a);if(this.appearance&&i===null)return super.getOperatorList(e,n,s,a);const r=new Cn;if(!this._defaultAppearance||i===null)return{opList:r,separateForm:!1,separateCanvas:!1};const o=!!(this.data.hasOwnCanvas&&s&an.DISPLAY),f=[1,0,0,1,0,0],l=[0,0,this.width,this.height],c=pf(this.data.rect,l,f),h=this._oc;h!==void 0&&r.addOp(C.beginMarkedContentProps,["OC",h]),r.addOp(C.beginAnnotation,[this.data.id,this.data.rect,c,this.getRotationMatrix(a),o]);const u=new hn(i);return await e.getOperatorList({stream:u,task:n,resources:this._fieldResources.mergedResources,operatorList:r}),r.addOp(C.endAnnotation,[]),h!==void 0&&r.addOp(C.endMarkedContent,[]),{opList:r,separateForm:!1,separateCanvas:o}}_getMKDict(e){const n=new B(null);return e&&n.set("R",e),n.setIfArray("BC",un(this.borderColor)),n.setIfArray("BG",un(this.backgroundColor)),n.size>0?n:null}amendSavedDict(e,n){}setValue(e,n,s,a){const{dict:i,ref:r}=n1(e,this.ref,s);if(!i)e.set("V",n);else if(!a.has(r)){const o=i.clone();return o.set("V",n),a.put(r,{data:o}),o}return null}async save(e,n,s,a){const i=s?.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.value,f=i?.rotation;if(o===this.data.fieldValue||o===void 0){if(!this._hasValueFromXFA&&f===void 0&&r===void 0)return;o||=this.data.fieldValue}if(f===void 0&&!this._hasValueFromXFA&&Array.isArray(o)&&Array.isArray(this.data.fieldValue)&&za(o,this.data.fieldValue)&&r===void 0)return;f===void 0&&(f=this.rotation);let l=null;if(!this._needAppearances&&(l=await this._getAppearance(e,n,an.SAVE,s),l===null&&r===void 0))return;let c=!1;l?.needAppearances&&(c=!0,l=null);const{xref:h}=e,u=h.fetchIfRef(this.ref);if(!(u instanceof B))return;const d=new B(h);for(const[w,x]of u.getRawEntries())w!=="AP"&&d.set(w,x);if(r!==void 0&&(d.set("F",r),l===null&&!c)){const w=u.getRaw("AP");w&&d.set("AP",w)}const p={path:this.data.fieldName,value:o},m=this.setValue(d,Array.isArray(o)?o.map(Zt):Zt(o),h,a);this.amendSavedDict(s,m||d);const b=this._getMKDict(f);if(b&&d.set("MK",b),a.put(this.ref,{data:d,xfa:p,needAppearances:c}),l!==null){const w=h.getNewTemporaryRef(),x=new B(h);d.set("AP",x),x.set("N",w);const j=this._getSaveFieldResources(h),k=new B(h);k.setIfName("Subtype","Form"),k.set("Resources",j);const y=f%180===0?[0,0,this.width,this.height]:[0,0,this.height,this.width];k.set("BBox",y);const q=new hn(l,k),v=this.getRotationMatrix(s);v!==Zn&&k.set("Matrix",v),a.put(w,{data:q,xfa:null,needAppearances:!1})}d.set("M",`D:${ua()}`)}async _getAppearance(e,n,s,a){if(this.data.password)return null;const i=a?.get(this.data.id);let r,o;if(i&&(r=i.formattedValue||i.value,o=i.rotation),o===void 0&&r===void 0&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const f=this.getBorderAndBackgroundAppearances(a);if(r===void 0&&(r=this.data.fieldValue,!r))return`/Tx BMC q ${f}Q EMC`;if(Array.isArray(r)&&r.length===1&&(r=r[0]),Ct(typeof r=="string","Expected `value` to be a string."),r=r.trimEnd(),this.data.combo&&(r=this.data.options.find(({exportValue:K})=>r===K)?.displayValue||r),r==="")return`/Tx BMC q ${f}Q EMC`;o===void 0&&(o=this.rotation);let l=-1,c;this.data.multiLine?(c=r.split(/\r\n?|\n/).map($=>$.normalize("NFC")),l=c.length):c=[r.replace(/\r\n?|\n/,"").normalize("NFC")];const h=1,u=2;let{width:d,height:p}=this;(o===90||o===270)&&([d,p]=[p,d]),this._defaultAppearance||(this.data.defaultAppearanceData=Df(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let m=await ps._getFontData(e,n,this.data.defaultAppearanceData,this._fieldResources.mergedResources),b,w,x;const j=[];let k=!1;for(const $ of c){const K=m.encodeString($);K.length>1&&(k=!0),j.push(K.join(""))}if(k&&s&an.SAVE)return{needAppearances:!0};if(k&&this._isOffscreenCanvasSupported){const $=this.data.comb?"monospace":"sans-serif",K=new ra(e.xref,$),oe=K.createFontResources(c.join("")),me=oe.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const ye=this._fieldResources.mergedResources.get("Font");for(const[Be,ae]of me.getRawEntries())ye.set(Be,ae)}else this._fieldResources.mergedResources.set("Font",me);const X=K.fontName.name;m=await ps._getFontData(e,n,{fontName:X,fontSize:0},oe);for(let ye=0,Be=j.length;ye2)return`/Tx BMC q ${f}BT `+b+` 1 0 0 1 ${jt(u)} ${jt(M)} Tm (${ji(j[0])}) Tj ET Q EMC`;const N={shift:0},D=this._renderText(j[0],m,w,d,v,N,u,M);return`/Tx BMC q ${f}BT `+b+` 1 0 0 1 0 0 Tm ${D} ET Q EMC`}static async _getFontData(e,n,s,a){const i=new Cn,r={font:null,clone(){return this}},{fontName:o,fontSize:f}=s;return await e.handleSetFont(a,[o&&J.get(o),f],null,i,n,r,null),r.font}_getTextWidth(e,n){return Math.sumPrecise(n.charsToGlyphs(e).map(s=>s.width))/1e3}_computeFontSize(e,n,s,a,i){let{fontSize:r}=this.data.defaultAppearanceData,o=(r||12)*1.35,f=Math.round(e/o);if(!r){const l=u=>Math.floor(u*100)/100;if(i===-1){const u=this._getTextWidth(s,a);r=l(Math.min(e/1.35,n/u)),f=1}else{const u=s.split(/\r\n?|\n/),d=[];for(const m of u){const b=a.encodeString(m).join(""),w=a.charsToGlyphs(b),x=a.getCharPositions(b);d.push({line:b,glyphs:w,positions:x})}const p=m=>{let b=0;for(const w of d){const x=this._splitLine(null,a,m,n,w);if(b+=x.length*m,b>e)return!0}return!1};for(f=Math.max(f,i);;){if(o=e/f,r=l(o/1.35),p(r)){f++;continue}break}}const{fontName:c,fontColor:h}=this.data.defaultAppearanceData;this._defaultAppearance=ng({fontSize:r,fontName:c,fontColor:h})}return[this._defaultAppearance,r,e/f]}_renderText(e,n,s,a,i,r,o,f){let l;if(i===1){const h=this._getTextWidth(e,n)*s;l=(a-h)/2}else if(i===2){const h=this._getTextWidth(e,n)*s;l=a-h-o}else l=o;const c=jt(l-r.shift);return r.shift=l,f=jt(f),`${c} ${f} Td (${ji(e)}) Tj`}_getSaveFieldResources(e){const{localResources:n,appearanceResources:s,acroFormResources:a}=this._fieldResources,i=this.data.defaultAppearanceData?.fontName;if(!i)return n||B.empty;for(const r of[n,s])if(r instanceof B){const o=r.get("Font");if(o instanceof B&&o.has(i))return r}if(a instanceof B){const r=a.get("Font");if(r instanceof B&&r.has(i)){const o=new B(e);o.set(i,r.getRaw(i));const f=new B(e);return f.set("Font",o),B.merge({xref:e,dictArray:[f,n],mergeSubDicts:!0})}}return n||B.empty}getFieldObject(){return null}}class c3 extends ps{constructor(e){super(e);const{dict:n}=e;n.has("PMD")&&(this.flags|=Kt.HIDDEN,this.data.hidden=!0,H("Barcodes are not supported")),this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML,this._hasText=!0,typeof this.data.fieldValue!="string"&&(this.data.fieldValue="");let s=rn({dict:n,key:"Q"});(!Number.isInteger(s)||s<0||s>2)&&(s=null),this.data.textAlignment=s;let a=rn({dict:n,key:"MaxLen"});(!Number.isInteger(a)||a<0)&&(a=0),this.data.maxLen=a,this.data.multiLine=this.hasFieldFlag(ms.MULTILINE),this.data.comb=this.hasFieldFlag(ms.COMB)&&!this.data.multiLine&&!this.data.password&&!this.hasFieldFlag(ms.FILESELECT)&&this.data.maxLen!==0,this.data.doNotScroll=this.hasFieldFlag(ms.DONOTSCROLL);const{actions:i}=this.data;if(!i)return;const r=/^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/;let o=!1;const f=i.get("Format"),l=i.get("Keystroke");(f?.length===1&&l?.length===1&&r.test(f[0])&&r.test(l[0])||f?.length===0&&l?.length===1&&r.test(l[0])||l?.length===0&&f?.length===1&&r.test(f[0]))&&(o=!0);const c=[];f&&c.push(...f),l&&c.push(...l),o&&(i.delete("Keystroke"),i.set("Format",c));for(const h of c){const u=h.match(r);if(!u)continue;const d=u[1]==="Date";let p=u[2];const m=parseInt(p,10);if(!isNaN(m)&&Math.floor(Math.log10(m))+1===u[2].length&&(p=(d?sg:ag)[m]??p),this.data.datetimeFormat=p,!o)break;if(d){/HH|MM|ss|h/.test(p)?(this.data.datetimeType="datetime-local",this.data.timeStep=/ss/.test(p)?1:60):this.data.datetimeType="date";break}this.data.datetimeType="time",this.data.timeStep=/ss/.test(p)?1:60;break}}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,n,s,a,i,r,o,f,l){const c=i/this.data.maxLen,h=this.getBorderAndBackgroundAppearances(l),u=n.getCharPositions(s).map(([x,j])=>{const k=s.substring(x,j);return{glyph:k,width:this._getTextWidth(k,n)*a}});f&&u.reverse();const d=c*u.length;let p=0;o===1?p+=Math.floor((i-d)/(2*c))*c:o===2&&(p+=i-d);const m=[];let b=0;for(let x=0,j=u.length;xa?(l.push(e.substring(d,w)),d=w,p=k,c=-1,u=-1):(p+=k,c=w,h=x,u=m):p+k>a?c!==-1?(l.push(e.substring(d,h)),d=h,m=u+1,c=-1,p=0):(l.push(e.substring(d,w)),d=w,p=k):p+=k}return df?`\\${f}`:"\\s+");new RegExp(`^\\s*${r}\\s*$`).test(this.data.fieldValue)&&(this.data.textContent=this.data.fieldValue.split(` +`))}getFieldObject(){return{id:this.data.id,value:this.data.fieldValue,defaultValue:this.data.defaultFieldValue||"",multiline:this.data.multiLine,password:this.data.password,charLimit:this.data.maxLen,comb:this.data.comb,editable:!this.data.readOnly,hidden:this.data.hidden,name:this.data.fieldName,rect:this.data.rect,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,datetimeFormat:this.data.datetimeFormat,hasDatetimeHTML:!!this.data.datetimeType,type:"text"}}}class h3 extends ps{constructor(e){super(e),this.checkedAppearance=null,this.uncheckedAppearance=null;const n=this.hasFieldFlag(ms.RADIO),s=this.hasFieldFlag(ms.PUSHBUTTON);this.data.checkBox=!n&&!s,this.data.radioButton=n&&!s,this.data.pushButton=s,this.data.isTooltipOnly=!1,this.data.hasOwnCanvas=!0,this.data.noHTML=!1,this.data.checkBox?this._processCheckBox(e):this.data.radioButton?this._processRadioButton(e):this.data.pushButton?this._processPushButton(e):H("Invalid field flags for button widget annotation")}get _ownCanvasRequiresForms(){return this.data.checkBox||this.data.radioButton}#e(e,n,s,a,i,r){if(!r)return this._getOperatorListNoAppearance();const o=this.appearance,f=Ps(r.dict.getArray("Matrix"),Zn);i&&r.dict.set("Matrix",this.getRotationMatrix(a)),this.appearance=r;const l=super.getOperatorList(e,n,s,a);return this.appearance=o,r.dict.set("Matrix",f),l}async getOperatorList(e,n,s,a){if(this.data.pushButton)return super.getOperatorList(e,n,s,!1,a);if(s&an.DISPLAY&&s&an.ANNOTATIONS_FORMS&&(this.data.checkBox||this.data.radioButton)){const o=(c,h)=>{const u=c.fnArray.indexOf(C.beginAnnotation);u!==-1&&c.argsArray[u].push(h)},f=await this.#e(e,n,s,a,null,this.checkedAppearance);o(f.opList,"checked");const l=await this.#e(e,n,s,a,null,this.uncheckedAppearance);return o(l.opList,"unchecked"),f.opList.addOpList(l.opList),f.separateForm||=l.separateForm,f.separateCanvas||=l.separateCanvas,f}let i=null,r=null;if(a){const o=a.get(this.data.id);i=o?o.value:null,r=o?o.rotation:null}return i===null&&this.appearance?super.getOperatorList(e,n,s,a):(i??=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue,this.#e(e,n,s,a,r,i?this.checkedAppearance:this.uncheckedAppearance))}async save(e,n,s,a){if(this.data.checkBox){this._saveCheckbox(e,n,s,a);return}this.data.radioButton&&this._saveRadioButton(e,n,s,a)}async _saveCheckbox(e,n,s,a){if(!s)return;const i=s.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.rotation,f=i?.value;if(o===void 0&&r===void 0&&(f===void 0||this.data.fieldValue===this.data.exportValue===f))return;let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof B))return;l=l.clone(),o===void 0&&(o=this.rotation),f===void 0&&(f=this.data.fieldValue===this.data.exportValue);const c={path:this.data.fieldName,value:f?this.data.exportValue:""},h=J.get(f?this._onStateName:"Off");this.setValue(l,h,e.xref,a),l.set("AS",h),l.set("M",`D:${ua()}`),r!==void 0&&l.set("F",r);const u=this._getMKDict(o);u&&l.set("MK",u),a.put(this.ref,{data:l,xfa:c,needAppearances:!1})}async _saveRadioButton(e,n,s,a){if(!s)return;const i=s.get(this.data.id),r=this._buildFlags(i?.noView,i?.noPrint);let o=i?.rotation,f=i?.value;if(o===void 0&&r===void 0&&(f===void 0||this.data.fieldValue===this.data.buttonValue===f))return;let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof B))return;l=l.clone(),f===void 0&&(f=this.data.fieldValue===this.data.buttonValue),o===void 0&&(o=this.rotation);const c={path:this.data.fieldName,value:f?this.data.buttonValue:""},h=J.get(f?this._onStateName:"Off");f&&this.setValue(l,h,e.xref,a),l.set("AS",h),l.set("M",`D:${ua()}`),r!==void 0&&l.set("F",r);const u=this._getMKDict(o);u&&l.set("MK",u),a.put(this.ref,{data:l,xfa:c,needAppearances:!1})}_getDefaultCheckedAppearance(e,n){const{width:s,height:a}=this,i=[0,0,s,a],o=Math.min(s,a)*.8;let f,l;n==="check"?(f={width:.755*o,height:.705*o},l="3"):n==="disc"?(f={width:.791*o,height:.705*o},l="l"):st(`_getDefaultCheckedAppearance - unsupported type: ${n}`);const c=jt((s-f.width)/2),h=jt((a-f.height)/2),u=`q BT /PdfJsZaDb ${o} Tf 0 g ${c} ${h} Td (${l}) Tj ET Q`,d=new B(e.xref);d.set("FormType",1),d.setIfName("Subtype","Form"),d.setIfName("Type","XObject"),d.set("BBox",i),d.set("Matrix",[1,0,0,1,0,0]),d.set("Length",u.length);const p=new B(e.xref),m=new B(e.xref);m.set("PdfJsZaDb",this.fallbackFontDict),p.set("Font",m),d.set("Resources",p),this.checkedAppearance=new hn(u,d),this._streams.push(this.checkedAppearance)}_getOnStateName(e){const n=e.get("AP");if(!(n instanceof B))return null;const s=n.get("N");if(!(s instanceof B))return null;for(const a of s.getKeys())if(a!=="Off")return a;return null}_getExportValueForOptIndex(e,n,s){if(Number.isInteger(e)&&e>=0&&ed!=="Off");r.length=0,r.push("Off",u)}const o=r[1];this._onStateName=o;const f=rn({dict:e.dict,key:"Opt"}),l=this._getOptInfo(e.dict,o,f,e.xref);this.data.exportValue=this._getExportValue(o,l,e.xref),!r.includes(this.data.fieldValue)&&this.data.fieldValue!==this.data.exportValue&&(this.data.fieldValue="Off"),this.data.fieldValue=this._getExportValue(this.data.fieldValue,l,e.xref),this.data.defaultFieldValue=this._getExportValue(this.data.defaultFieldValue,l,e.xref);const c=s?.get(o);this.checkedAppearance=c instanceof Pe?c:null;const h=s?.get("Off");this.uncheckedAppearance=h instanceof Pe?h:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict,this.data.defaultFieldValue===null&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const n=e.dict.get("Parent");if(n instanceof B){this.parent=e.dict.getRaw("Parent");const c=n.get("V");c instanceof J&&(this.data.fieldValue=this._decodeFormValue(c))}const s=e.dict.get("AP");if(!(s instanceof B))return;const a=s.get("N");if(!(a instanceof B))return;let i=null;for(const c of a.getKeys())if(c!=="Off"){i=c;break}this._onStateName=i;const r=rn({dict:e.dict,key:"Opt"}),o=this._getOptInfo(e.dict,i,r,e.xref);this.data.buttonValue=this._getExportValue(i,o,e.xref),this.data.fieldValue=this._getExportValue(this.data.fieldValue,o,e.xref),this.data.defaultFieldValue=this._getExportValue(this.data.defaultFieldValue,o,e.xref);const f=a.get(i);this.checkedAppearance=f instanceof Pe?f:null;const l=a.get("Off");this.uncheckedAppearance=l instanceof Pe?l:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict,this.data.defaultFieldValue===null&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:n,annotationGlobals:s}=e;if(!n.has("A")&&!n.has("AA")&&!this.data.alternativeText){H("Push buttons without action dictionaries are not supported");return}this.data.isTooltipOnly=!n.has("A")&&!n.has("AA"),_a.parseDestDictionary({destDict:n,resultObj:this.data,docBaseUrl:s.baseUrl,docAttachments:s.attachments})}getFieldObject(){let e="button",n;return this.data.checkBox?(e="checkbox",n=this.data.exportValue):this.data.radioButton&&(e="radiobutton",n=this.data.buttonValue),{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:n,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:e}}get fallbackFontDict(){const e=new B;return e.setIfName("BaseFont","ZapfDingbats"),e.setIfName("Type","FallbackType"),e.setIfName("Subtype","FallbackType"),e.setIfName("Encoding","ZapfDingbatsEncoding"),ue(this,"fallbackFontDict",e)}}class u3 extends ps{constructor(e){super(e);const{dict:n,xref:s}=e;this.indices=n.getArray("I"),this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0,this.data.options=[];const a=rn({dict:n,key:"Opt"});if(Array.isArray(a))for(let i=0,r=a.length;i=0&&r0&&(this.data.options=this.data.fieldValue.map(i=>({exportValue:i,displayValue:i}))),this.data.combo=this.hasFieldFlag(ms.COMBO),this.data.multiSelect=this.hasFieldFlag(ms.MULTISELECT),this._hasText=!0}getFieldObject(){const e=this.data.combo?"combobox":"listbox",n=this.data.fieldValue.length>0?this.data.fieldValue[0]:null;return{id:this.data.id,value:n,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,n){if(!this.hasIndices)return;let s=e?.get(this.data.id)?.value;Array.isArray(s)||(s=[s]);const a=[],{options:i}=this.data;for(let r=0,o=0,f=i.length;rS&&(S=N,F=M)}[m,b]=this._computeFontSize(A,c-2*l,F,p,-1)}const w=b*1.35,x=(w-b)/2,j=Math.floor(h/w);let k=0;if(d.length>0){const A=Math.min(...d),S=Math.max(...d);k=Tt(S-j+1,0,A)}const y=Math.min(k+j+1,u),q=["/Tx BMC q",`1 1 ${c} ${h} re W n`];if(d.length){q.push("0.600006 0.756866 0.854904 rg");for(const A of d)k<=A&&Al.trimEnd());const{coords:r,bbox:o,matrix:f}=ra.getFirstPositionInfo(this.rectangle,this.rotation,i);this.data.textPosition=this._transformPoint(r,o,f)}if(this._isOffscreenCanvasSupported){const r=e.dict.get("CA"),o=new ra(s,"sans-serif");this.appearance=o.createAppearance(this._contents.str,this.rectangle,this.rotation,i,a,r),this._streams.push(this.appearance)}else H("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.")}}get hasTextContent(){return this._hasAppearance}static createNewDict(e,n,{apRef:s,ap:a}){const{color:i,date:r,fontSize:o,oldAnnotation:f,rect:l,rotation:c,user:h,value:u}=e,d=f||new B(n);d.setIfNotExists("Type",J.get("Annot")),d.setIfNotExists("Subtype",J.get("FreeText")),d.set(f?"M":"CreationDate",`D:${ua(r)}`),f&&d.delete("RC"),d.setIfArray("Rect",l);const p=`/Helv ${o} Tf ${Ts(i,!0)}`;if(d.set("DA",p),d.setIfDefined("Contents",Zt(u)),d.setIfNotExists("F",4),d.setIfNotExists("Border",[0,0,0]),d.setIfNumber("Rotate",c),d.setIfDefined("T",Zt(h)),s||a){const m=new B(n);d.set("AP",m),m.set("N",s||a)}return d}static async createNewAppearanceStream(e,n,s){const{baseFontRef:a,evaluator:i,task:r}=s,{color:o,fontSize:f,rect:l,rotation:c,value:h}=e;if(!o)return null;const u=new B(n),d=new B(n);if(a)d.set("Helv",a);else{const $e=new B(n);$e.setIfName("BaseFont","Helvetica"),$e.setIfName("Type","Font"),$e.setIfName("Subtype","Type1"),$e.setIfName("Encoding","WinAnsiEncoding"),d.set("Helv",$e)}u.set("Font",d);const p=await ps._getFontData(i,r,{fontName:"Helv",fontSize:f},u),[m,b,w,x]=l;let j=w-m,k=x-b;c%180!==0&&([j,k]=[k,j]);const y=h.split(` +`),q=f/1e3;let v=-1/0;const A=[];for(let $e of y){const tt=p.encodeString($e);if(tt.length>1)return null;$e=tt.join(""),A.push($e);let G=0;const _=p.charsToGlyphs($e);for(const L of _)G+=L.width*q;v=Math.max(v,G)}const S=v>j?j/v:1;let F=1;const M=1.35*f,N=(1.35-.35)*f,D=M*y.length;D>k&&(F=k/D);const $=Math.min(S,F),K=f*$;let oe,me,X;switch(c){case 0:X=[1,0,0,1],me=[l[0],l[1],j,k],oe=[l[0],l[3]-N];break;case 90:X=[0,1,-1,0],me=[l[1],-l[2],j,k],oe=[l[1],-l[0]-N];break;case 180:X=[-1,0,0,-1],me=[-l[2],-l[3],j,k],oe=[-l[2],-l[1]-N];break;case 270:X=[0,-1,1,0],me=[-l[3],l[0],j,k],oe=[-l[3],l[2]-N];break}const ee=["q",`${X.join(" ")} 0 0 cm`,`${me.join(" ")} re W n`,"BT",`${Ts(o,!0)}`,`0 Tc /Helv ${jt(K)} Tf`];ee.push(`${oe.join(" ")} Td (${ji(A[0])}) Tj`);const ye=jt(M);for(let $e=1,tt=A.length;$e(d.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S"),[p[0]-c,p[7]-c,p[2]+c,p[3]+c])})}}}class g3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,!this.appearance){const a=un(this.color,[0,0,0]),i=n.get("CA"),r=La(n.getArray("IC"),null),o=un(r),f=o?i:null;if(this.borderStyle.width===0&&!o)return;this._setDefaultAppearance({xref:s,extra:`${this.borderStyle.width} w`,strokeColor:a,fillColor:o,strokeAlpha:i,fillAlpha:f,pointsCallback:(l,c)=>{const h=c[4]+this.borderStyle.width/2,u=c[5]+this.borderStyle.width/2,d=c[6]-c[4]-this.borderStyle.width,p=c[3]-c[7]-this.borderStyle.width;return l.push(`${h} ${u} ${d} ${p} re`),o?l.push("B"):l.push("S"),[c[0],c[7],c[2],c[3]]}})}}}class b3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(!this.appearance){const a=un(this.color,[0,0,0]),i=n.get("CA"),r=La(n.getArray("IC"),null),o=un(r),f=o?i:null;if(this.borderStyle.width===0&&!o)return;const l=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:s,extra:`${this.borderStyle.width} w`,strokeColor:a,fillColor:o,strokeAlpha:i,fillAlpha:f,pointsCallback:(c,h)=>{const u=h[0]+this.borderStyle.width/2,d=h[1]-this.borderStyle.width/2,p=h[6]-this.borderStyle.width/2,m=h[7]+this.borderStyle.width/2,b=u+(p-u)/2,w=d+(m-d)/2,x=(p-u)/2*l,j=(m-d)/2*l;return c.push(`${b} ${m} m`,`${b+x} ${m} ${p} ${w+j} ${p} ${w} c`,`${p} ${w-j} ${b+x} ${d} ${b} ${d} c`,`${b-x} ${d} ${u} ${w-j} ${u} ${w} c`,`${u} ${w+j} ${b-x} ${m} ${b} ${m} c`,"h"),o?c.push("B"):c.push("S"),[h[0],h[7],h[2],h[3]]}})}}}class ju extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,this.data.vertices=null,this instanceof ku||(this.setLineEndings(n.getArray("LE")),this.data.lineEndings=this.lineEndings);const a=n.getArray("Vertices");if(!Rt(a,null))return;const i=this.data.vertices=Float32Array.from(a);if(!this.appearance){const r=un(this.color,[0,0,0]),o=n.get("CA");let f=La(n.getArray("IC"),null);f&&=un(f);let l;f?this.color?l=f.every((d,p)=>d===r[p])?"f":"B":l="f":l="S";const c=this.borderStyle.width||1,h=2*c,u=ca.slice();for(let d=0,p=i.length;d{for(let m=0,b=i.length;m{for(const u of this.data.inkLists){for(let d=0,p=u.length;d0){const b=new B(n);m.set("BS",b),b.set("W",d)}if(m.setIfArray("C",un(r)),m.setIfNumber("CA",f),a||s){const b=new B(n);m.set("AP",b),b.set("N",s||a)}return m}static async createNewAppearanceStream(e,n,s){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,n,s);const{color:a,rect:i,paths:r,thickness:o,opacity:f}=e;if(!a)return null;const l=[`${o} w 1 J 1 j`,`${Ts(a,!1)}`];f!==1&&l.push("/R0 gs");for(const u of r.lines)gf(u,l,!0);l.push("S");const c=l.join(` +`),h=new B(n);if(h.set("FormType",1),h.setIfName("Subtype","Form"),h.setIfName("Type","XObject"),h.set("BBox",i),h.set("Length",c.length),f!==1){const u=new B(n),d=new B(n),p=new B(n);p.set("CA",f),p.setIfName("Type","ExtGState"),d.set("R0",p),u.set("ExtGState",d),h.set("Resources",u)}return new hn(c,h)}static async createNewAppearanceStreamForHighlight(e,n,s){const{color:a,rect:i,outlines:{outline:r},opacity:o}=e;if(!a)return null;const f=[`${Ts(a,!0)}`,"/R0 gs"];gf(r,f),f.push("h f");const l=f.join(` +`),c=new B(n);c.set("FormType",1),c.setIfName("Subtype","Form"),c.setIfName("Type","XObject"),c.set("BBox",i),c.set("Length",l.length);const h=new B(n),u=new B(n);h.set("ExtGState",u),c.set("Resources",h);const d=new B(n);return u.set("R0",d),d.setIfName("BM","Multiply"),o!==1&&(d.set("ca",o),d.setIfName("Type","ExtGState")),new hn(l,c)}}class Ro extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.isEditable=!this.data.noHTML,this.data.noHTML=!1,this.data.opacity=n.get("CA")||1,this.data.quadPoints=_r(n,null)){if(!this.appearance){const i=un(this.color,[1,1,0]),r=n.get("CA");this._setDefaultAppearance({xref:s,fillColor:i,blendMode:"Multiply",fillAlpha:r,pointsCallback:(o,f)=>(o.push(`${f[0]} ${f[1]} m`,`${f[2]} ${f[3]} l`,`${f[6]} ${f[7]} l`,`${f[4]} ${f[5]} l`,"f"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}static createNewDict(e,n,{apRef:s,ap:a}){const{color:i,date:r,oldAnnotation:o,opacity:f,rect:l,rotation:c,user:h,quadPoints:u}=e,d=o||new B(n);if(d.setIfNotExists("Type",J.get("Annot")),d.setIfNotExists("Subtype",J.get("Highlight")),d.set(o?"M":"CreationDate",`D:${ua(r)}`),d.setIfArray("Rect",l),d.setIfNotExists("F",4),d.setIfNotExists("Border",[0,0,0]),d.setIfNumber("Rotate",c),d.setIfArray("QuadPoints",u),d.setIfArray("C",un(i)),d.setIfNumber("CA",f),d.setIfDefined("T",Zt(h)),s||a){const p=new B(n);d.set("AP",p),p.set("N",s||a)}return d}static async createNewAppearanceStream(e,n,s){const{color:a,rect:i,outlines:r,opacity:o}=e;if(!a)return null;const f=[`${Ts(a,!0)}`,"/R0 gs"],l=[];for(const m of r){l.length=0,l.push(`${jt(m[0])} ${jt(m[1])} m`);for(let b=2,w=m.length;b(o.push(`${f[4]} ${f[5]+1.3} m`,`${f[6]} ${f[7]+1.3} l`,"S"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class j3 extends Nn{constructor(e){super(e);const{dict:n,xref:s}=e;if(this.data.quadPoints=_r(n,null)){if(!this.appearance){const i=un(this.color,[0,0,0]),r=n.get("CA");this._setDefaultAppearance({xref:s,extra:"[] 0 d 1 w",strokeColor:i,strokeAlpha:r,pointsCallback:(o,f)=>{const l=(f[1]-f[5])/6;let c=l,h=f[4];const u=f[5],d=f[6];o.push(`${h} ${u+c} m`);do h+=2,c=c===0?l:0,o.push(`${h} ${u+c} l`);while(h(o.push(`${(f[0]+f[4])/2} ${(f[1]+f[5])/2} m`,`${(f[2]+f[6])/2} ${(f[3]+f[7])/2} l`,"S"),[f[0],f[7],f[2],f[3]])})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class Yi extends Nn{#e=null;constructor(e){super(e),this.data.hasOwnCanvas=this.data.noRotate,this.data.isEditable=!this.data.noHTML,this.data.noHTML=!1}mustBeViewedWhenEditing(e,n=null){return e?(this.data.isEditable&&(this.#e??=this.data.hasOwnCanvas,this.data.hasOwnCanvas=!0),!0):(this.#e!==null&&(this.data.hasOwnCanvas=this.#e,this.#e=null),!n?.has(this.data.id))}static createNewDict(e,n,{apRef:s,ap:a}){const{date:i,oldAnnotation:r,rect:o,rotation:f,user:l}=e,c=r||new B(n);if(c.setIfNotExists("Type",J.get("Annot")),c.setIfNotExists("Subtype",J.get("Stamp")),c.set(r?"M":"CreationDate",`D:${ua(i)}`),c.setIfArray("Rect",o),c.setIfNotExists("F",4),c.setIfNotExists("Border",[0,0,0]),c.setIfNumber("Rotate",f),c.setIfDefined("T",Zt(l)),s||a){const h=new B(n);c.set("AP",h),h.set("N",s||a)}return c}static async#t(e,n){const{areContours:s,color:a,rect:i,lines:r,thickness:o}=e;if(!a)return null;const f=[`${o} w 1 J 1 j`,`${Ts(a,s)}`];for(const h of r)gf(h,f,!0);f.push(s?"F":"S");const l=f.join(` +`),c=new B(n);return c.set("FormType",1),c.setIfName("Subtype","Form"),c.setIfName("Type","XObject"),c.set("BBox",i),c.set("Length",l.length),new hn(l,c)}static async createNewAppearanceStream(e,n,s){if(e.oldAnnotation)return null;if(e.isSignature)return this.#t(e,n);const{rotation:a}=e,{imageRef:i,width:r,height:o}=s.image,f=new B(n),l=new B(n);f.set("XObject",l),l.set("Im0",i);const c=`q ${r} 0 0 ${o} 0 0 cm /Im0 Do Q`,h=new B(n);if(h.set("FormType",1),h.setIfName("Subtype","Form"),h.setIfName("Type","XObject"),h.set("BBox",[0,0,r,o]),h.set("Resources",f),a){const u=k0(a,r,o);h.set("Matrix",u)}return new hn(c,h)}}class y3 extends Nn{constructor(e){super(e);const{annotationGlobals:n,dict:s}=e,a=s.get("FS");this.data.hasOwnCanvas=this.data.noRotate,this.data.noHTML=!1,this.data.fileId=this._getAttachmentId(a,s.getRaw("FS"),n),this.data.file=new Sn(a).serializable;const i=s.get("Name");this.data.name=i instanceof J?Xe(i.name):"PushPin";const r=s.get("ca");this.data.fillAlpha=typeof r=="number"&&r>=0&&r<=1?r:null}}class ga extends Fi{static#e=/^(?:video|audio)\//;constructor(e){super(e),this.data.noHTML=!0}_setMediaData({assetRef:e,assetDict:n,filename:s,contentType:a,wrapSound:i=!1},r){this.data.noHTML=!1,this.data.richMedia={fileId:this._getAttachmentId(n,e,r,i),filename:s,contentType:a}}static _getContentType(e,n,s=null){if(typeof s=="string"&&ga.#e.test(s))return s;const a=Sn.pickPlatformItem(e.get("EF")),i=a instanceof Pe?a.dict?.get("Subtype"):null;if(i instanceof J&&ga.#e.test(i.name))return i.name;switch(n.split(".").at(-1)?.toLowerCase()){case"mp4":case"m4v":return"video/mp4";case"webm":return"video/webm";case"ogv":return"video/ogg";case"mov":return"video/quicktime";case"mp3":return"audio/mpeg";case"m4a":return"audio/mp4";case"wav":return"audio/wav";case"oga":case"ogg":return"audio/ogg";default:return null}}}class el extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=n.get("RichMediaContent");if(!(i instanceof B))return;const r=el.#e(i,s);if(!r){H("RichMedia annotation has no playable asset.");return}this._setMediaData(r,a)}static#e(e,n){const s=e.get("Configurations");if(!Array.isArray(s))return null;for(const a of s){const i=n.fetchIfRef(a);if(!(i instanceof B))continue;const r=i.get("Instances");if(Array.isArray(r))for(const o of r){const f=n.fetchIfRef(o);if(!(f instanceof B)||ze(f.get("Subtype"),"Flash"))continue;const l=f.getRaw("Asset"),c=n.fetchIfRef(l);if(!(c instanceof B)||!Sn.hasEmbeddedFile(c))continue;const{filename:h}=new Sn(c).serializable,u=ga._getContentType(c,h);if(u)return{assetRef:l instanceof Q?l:null,assetDict:c,filename:h,contentType:u}}}return null}}class tl extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=tl.#e(n,s);i&&this._setMediaData(i,a)}static#e(e,n){for(const s of this.#t(e)){const a=this.#a(s.get("R"),n,new bt);if(a)return a}return null}static*#t(e){const n=e.get("A");n instanceof B&&ze(n.get("S"),"Rendition")&&this.#s(n)&&(yield n);const s=e.get("AA");if(s instanceof B)for(const[,a]of s)a instanceof B&&ze(a.get("S"),"Rendition")&&this.#s(a)&&(yield a)}static#s(e){const n=e.get("OP");return n===void 0||n===fl.PLAY_OR_RESUME||n===fl.PLAY}static#a(e,n,s){if(!(e instanceof B))return null;const a=e.get("S");if(ze(a,"MR"))return this.#n(e.get("C"),n);if(ze(a,"SR")){const i=e.get("R");if(Array.isArray(i))for(const r of i){if(r instanceof Q){if(s.has(r))continue;s.put(r)}const o=this.#a(n.fetchIfRef(r),n,s);if(o)return o}}return null}static#n(e,n){if(!(e instanceof B)||!ze(e.get("S"),"MCD"))return null;const s=e.getRaw("D"),a=n.fetchIfRef(s),i=e.get("CT");let r=typeof i=="string"?i:null,o,f;if(a instanceof Pe){o=a.dict;const c=e.get("N");if(f=typeof c=="string"?Xe(c):"",!r){const h=a.dict.get("Subtype");h instanceof J&&(r=h.name)}}else if(a instanceof B){if(!Sn.hasEmbeddedFile(a))return null;o=a,{filename:f}=new Sn(a).serializable}else return null;const l=ga._getContentType(o,f,r);return l?{assetRef:s instanceof Q?s:null,assetDict:o,filename:f,contentType:l}:null}}class q3 extends ga{constructor(e){super(e);const{dict:n,xref:s,annotationGlobals:a}=e,i=n.getRaw("Sound");if(!(i instanceof Q))return;let r;try{r=s.fetch(i)}catch(o){if(o instanceof kt)throw o;H(`SoundAnnotation: "${o}".`);return}!(r instanceof Pe)||!Mh(r.dict)||this._setMediaData({assetRef:i,assetDict:r.dict,filename:"sound.wav",contentType:"audio/wav",wrapSound:!0},a)}}const v3={get r(){return ue(this,"r",new Uint8Array([7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]))},get k(){return ue(this,"k",new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]))}};function na(t,e,n){let s=1732584193,a=-271733879,i=-1732584194,r=271733878;const o=n+72&-64,f=new Uint8Array(o);let l,c;for(l=0;l>5&255,f[l++]=n>>13&255,f[l++]=n>>21&255,f[l++]=n>>>29&255,l+=3;const u=new Int32Array(16),{k:d,r:p}=v3;for(l=0;l>>32-v)|0,m=y}s=s+m|0,a=a+b|0,i=i+w|0,r=r+x|0}return new Uint8Array([s&255,s>>8&255,s>>16&255,s>>>24&255,a&255,a>>8&255,a>>16&255,a>>>24&255,i&255,i>>8&255,i>>16&255,i>>>24&255,r&255,r>>8&255,r>>16&255,r>>>24&255])}function Ac(t){try{return bi(t)}catch(e){return H(`UTF-8 decoding failed: "${e}".`),t}}class S3 extends K0{node=null;onEndElement(e){const n=super.onEndElement(e);if(n&&e==="xfa:datasets")throw this.node=n,new Error("Aborting DatasetXMLParser.")}}class A3{constructor(e){if(e.datasets)this.node=new K0({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const n=new S3({hasAttributes:!0});try{n.parseFromString(e["xdp:xdp"])}catch{}this.node=n.node}}getValue(e){if(!this.node||!e)return"";const n=this.node.searchNode(Kc(e),0);return n?n.firstChild?.nodeName==="value"?n.children.map(a=>Ac(a.textContent)):Ac(n.textContent):""}}class I3{#e;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;#t=null;#s=[];#a=[];#n=-1;#i=!1;constructor(e){this.#e=e;const n=e.data.quadPoints;if(!n){[this.minX,this.minY,this.maxX,this.maxY]=e.data.rect;return}for(let s=0,a=n.length;s8&&(this.#t=n)}#r(e,n){if(this.minX>=e||this.maxX<=e||this.minY>=n||this.maxY<=n)return!1;const s=this.#t;if(!s)return!0;if(this.#n>=0){const a=this.#n;if(!(s[a]>=e||s[a+2]<=e||s[a+5]>=n||s[a+1]<=n))return!0;this.#n=-1}for(let a=0,i=s.length;a=e||s[a+2]<=e||s[a+5]>=n||s[a+1]<=n))return this.#n=a,!0;return!1}addGlyph(e,n,s){return this.#r(e,n)?(this.#a.length>0&&(this.#s.push(this.#a.join("")),this.#a.length=0),this.#s.push(s),this.#i=!0,!0):(this.disableExtraChars(),!1)}addExtraChar(e){this.#i&&this.#a.push(e)}disableExtraChars(){this.#i&&(this.#i=!1,this.#a.length=0)}setText(){this.#e.data.overlaidText=this.#s.join("")}}const Aa=64;class C3{#e=[];#t=[];#s;#a;#n;#i;#r;#f;constructor(e){let n=1/0,s=1/0,a=-1/0,i=-1/0;const r=this.#e;for(const o of e){if(!o.data.quadPoints&&!o.data.rect)continue;const f=new I3(o);r.push(f),n=Math.min(n,f.minX),s=Math.min(s,f.minY),a=Math.max(a,f.maxX),i=Math.max(i,f.maxY)}this.#s=n,this.#n=s,this.#a=a,this.#i=i,this.#r=(Aa-1)/(a-n),this.#f=(Aa-1)/(i-s);for(const o of r){const f=this.#o(o.minX,o.minY),l=this.#o(o.maxX,o.maxY),c=(l-f)%Aa,h=Math.floor((l-f)/Aa);for(let u=f;u<=f+h*Aa;u+=Aa)for(let d=0;d<=c;d++)(this.#t[u+d]??=[]).push(o)}}#o(e,n){const s=Math.floor((e-this.#s)*this.#r),a=Math.floor((n-this.#n)*this.#f);return s+a*Aa}addGlyph(e,n,s,a){const i=e[4]+n/2,r=e[5]+s/2;if(ithis.#a||r>this.#i)return;const o=this.#t[this.#o(i,r)];if(o)for(const f of o)f.addGlyph(i,r,a)}addExtraChar(e){for(const n of this.#e)n.addExtraChar(e)}setText(){for(const e of this.#e)e.setText()}}class be{constructor(e,n){this.high=e|0,this.low=n|0}and(e){this.high&=e.high,this.low&=e.low}xor(e){this.high^=e.high,this.low^=e.low}shiftRight(e){this.low=this.low>>>e|this.high<<32-e,this.high=this.high>>>e|0}rotateRight(e){let n,s;e&32?(s=this.low,n=this.high):(n=this.low,s=this.high),e&=31,this.low=n>>>e|s<<32-e,this.high=s>>>e|n<<32-e}not(){this.high=~this.high,this.low=~this.low}add(e){const n=(this.low>>>0)+(e.low>>>0);let s=(this.high>>>0)+(e.high>>>0);n>4294967295&&(s+=1),this.low=n|0,this.high=s|0}copyTo(e,n){e[n]=this.high>>>24&255,e[n+1]=this.high>>16&255,e[n+2]=this.high>>8&255,e[n+3]=this.high&255,e[n+4]=this.low>>>24&255,e[n+5]=this.low>>16&255,e[n+6]=this.low>>8&255,e[n+7]=this.low&255}assign(e){this.high=e.high,this.low=e.low}}const T3={get k(){return ue(this,"k",[new be(1116352408,3609767458),new be(1899447441,602891725),new be(3049323471,3964484399),new be(3921009573,2173295548),new be(961987163,4081628472),new be(1508970993,3053834265),new be(2453635748,2937671579),new be(2870763221,3664609560),new be(3624381080,2734883394),new be(310598401,1164996542),new be(607225278,1323610764),new be(1426881987,3590304994),new be(1925078388,4068182383),new be(2162078206,991336113),new be(2614888103,633803317),new be(3248222580,3479774868),new be(3835390401,2666613458),new be(4022224774,944711139),new be(264347078,2341262773),new be(604807628,2007800933),new be(770255983,1495990901),new be(1249150122,1856431235),new be(1555081692,3175218132),new be(1996064986,2198950837),new be(2554220882,3999719339),new be(2821834349,766784016),new be(2952996808,2566594879),new be(3210313671,3203337956),new be(3336571891,1034457026),new be(3584528711,2466948901),new be(113926993,3758326383),new be(338241895,168717936),new be(666307205,1188179964),new be(773529912,1546045734),new be(1294757372,1522805485),new be(1396182291,2643833823),new be(1695183700,2343527390),new be(1986661051,1014477480),new be(2177026350,1206759142),new be(2456956037,344077627),new be(2730485921,1290863460),new be(2820302411,3158454273),new be(3259730800,3505952657),new be(3345764771,106217008),new be(3516065817,3606008344),new be(3600352804,1432725776),new be(4094571909,1467031594),new be(275423344,851169720),new be(430227734,3100823752),new be(506948616,1363258195),new be(659060556,3750685593),new be(883997877,3785050280),new be(958139571,3318307427),new be(1322822218,3812723403),new be(1537002063,2003034995),new be(1747873779,3602036899),new be(1955562222,1575990012),new be(2024104815,1125592928),new be(2227730452,2716904306),new be(2361852424,442776044),new be(2428436474,593698344),new be(2756734187,3733110249),new be(3204031479,2999351573),new be(3329325298,3815920427),new be(3391569614,3928383900),new be(3515267271,566280711),new be(3940187606,3454069534),new be(4118630271,4000239992),new be(116418474,1914138554),new be(174292421,2731055270),new be(289380356,3203993006),new be(460393269,320620315),new be(685471733,587496836),new be(852142971,1086792851),new be(1017036298,365543100),new be(1126000580,2618297676),new be(1288033470,3409855158),new be(1501505948,4234509866),new be(1607167915,987167468),new be(1816402316,1246189591)])}};function B3(t,e,n,s,a){t.assign(e),t.and(n),a.assign(e),a.not(),a.and(s),t.xor(a)}function F3(t,e,n,s,a){t.assign(e),t.and(n),a.assign(e),a.and(s),t.xor(a),a.assign(n),a.and(s),t.xor(a)}function R3(t,e,n){t.assign(e),t.rotateRight(28),n.assign(e),n.rotateRight(34),t.xor(n),n.assign(e),n.rotateRight(39),t.xor(n)}function H3(t,e,n){t.assign(e),t.rotateRight(14),n.assign(e),n.rotateRight(18),t.xor(n),n.assign(e),n.rotateRight(41),t.xor(n)}function E3(t,e,n){t.assign(e),t.rotateRight(1),n.assign(e),n.rotateRight(8),t.xor(n),n.assign(e),n.shiftRight(7),t.xor(n)}function M3(t,e,n){t.assign(e),t.rotateRight(19),n.assign(e),n.rotateRight(61),t.xor(n),n.assign(e),n.shiftRight(6),t.xor(n)}function yu(t,e,n,s=!1){let a,i,r,o,f,l,c,h;s?(a=new be(3418070365,3238371032),i=new be(1654270250,914150663),r=new be(2438529370,812702999),o=new be(355462360,4144912697),f=new be(1731405415,4290775857),l=new be(2394180231,1750603025),c=new be(3675008525,1694076839),h=new be(1203062813,3204075428)):(a=new be(1779033703,4089235720),i=new be(3144134277,2227873595),r=new be(1013904242,4271175723),o=new be(2773480762,1595750129),f=new be(1359893119,2917565137),l=new be(2600822924,725511199),c=new be(528734635,4215389547),h=new be(1541459225,327033209));const u=Math.ceil((n+17)/128)*128,d=new Uint8Array(u);let p,m;for(p=0;p>>29&255,d[p++]=n>>21&255,d[p++]=n>>13&255,d[p++]=n>>5&255,d[p++]=n<<3&255;const w=new Array(80);for(p=0;p<80;p++)w[p]=new be(0,0);const{k:x}=T3;let j=new be(0,0),k=new be(0,0),y=new be(0,0),q=new be(0,0),v=new be(0,0),A=new be(0,0),S=new be(0,0),F=new be(0,0);const M=new be(0,0),N=new be(0,0),D=new be(0,0),$=new be(0,0);let K;for(p=0;p>>e|t<<32-e}function P3(t,e,n){return t&e^~t&n}function N3(t,e,n){return t&e^t&n^e&n}function O3(t){return Is(t,2)^Is(t,13)^Is(t,22)}function L3(t){return Is(t,6)^Is(t,11)^Is(t,25)}function z3(t){return Is(t,7)^Is(t,18)^t>>>3}function U3(t){return Is(t,17)^Is(t,19)^t>>>10}function bf(t,e,n){let s=1779033703,a=3144134277,i=1013904242,r=2773480762,o=1359893119,f=2600822924,l=528734635,c=1541459225;const h=Math.ceil((n+9)/64)*64,u=new Uint8Array(h);let d,p;for(d=0;d>>29&255,u[d++]=n>>21&255,u[d++]=n>>13&255,u[d++]=n>>5&255,u[d++]=n<<3&255;const b=new Uint32Array(64),{k:w}=_3;for(d=0;d>24&255,s>>16&255,s>>8&255,s&255,a>>24&255,a>>16&255,a>>8&255,a&255,i>>24&255,i>>16&255,i>>8&255,i&255,r>>24&255,r>>16&255,r>>8&255,r&255,o>>24&255,o>>16&255,o>>8&255,o&255,f>>24&255,f>>16&255,f>>8&255,f&255,l>>24&255,l>>16&255,l>>8&255,l&255,c>>24&255,c>>16&255,c>>8&255,c&255])}const Ic=512;class G3 extends jn{#e=null;constructor(e,n,s){super(n),this.stream=e,this.dict=e.dict,this.decrypt=s}readBlock(){let e=this.#e??this.stream.getBytes(Ic);if(!e.length){this.eof=!0;return}this.#e=this.stream.getBytes(Ic);const n=this.#e.length>0,s=this.decrypt;e=s(e,!n);const a=this.bufferLength,i=a+e.length;this.ensureBuffer(i).set(e,a),this.bufferLength=i}getOriginalStream(){return this}}const W3=new Set([160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8239,8287,12288]),K3=new Set([173,847,6150,6155,6156,6157,8203,8204,8205,8288,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279]);function V3(t){let e="";for(const n of t){const s=n.codePointAt(0);W3.has(s)?e+=" ":K3.has(s)||(e+=n)}return e.normalize("NFKC")}class Ia{a=0;b=0;constructor(e){const n=new Uint8Array(256),s=e.length;for(let a=0;a<256;++a)n[a]=a;for(let a=0,i=0;a<256;++a){const r=n[a];i=i+r+e[a%s]&255,n[a]=n[i],n[i]=r}this.s=n}encryptBlock(e){let n=this.a,s=this.b;const a=this.s,i=e.length,r=new Uint8Array(i);for(let o=0;on<128?n<<1:n<<1^27);constructor(){this.buffer=new Uint8Array(16),this.bufferPosition=0}_expandKey(e){st("Cannot call `_expandKey` on the base class")}_decrypt(e,n){let s,a,i;const r=new Uint8Array(16);r.set(e);for(let o=0,f=this._keySize;o<16;++o,++f)r[o]^=n[f];for(let o=this._cyclesOfRepetition-1;o>=1;--o){s=r[13],r[13]=r[9],r[9]=r[5],r[5]=r[1],r[1]=s,s=r[14],a=r[10],r[14]=r[6],r[10]=r[2],r[6]=s,r[2]=a,s=r[15],a=r[11],i=r[7],r[15]=r[3],r[11]=s,r[7]=a,r[3]=i;for(let f=0;f<16;++f)r[f]=this._inv_s[r[f]];for(let f=0,l=o*16;f<16;++f,++l)r[f]^=n[l];for(let f=0;f<16;f+=4){const l=this._mix[r[f]],c=this._mix[r[f+1]],h=this._mix[r[f+2]],u=this._mix[r[f+3]];s=l^c>>>8^c<<24^h>>>16^h<<16^u>>>24^u<<8,r[f]=s>>>24&255,r[f+1]=s>>16&255,r[f+2]=s>>8&255,r[f+3]=s&255}}s=r[13],r[13]=r[9],r[9]=r[5],r[5]=r[1],r[1]=s,s=r[14],a=r[10],r[14]=r[6],r[10]=r[2],r[6]=s,r[2]=a,s=r[15],a=r[11],i=r[7],r[15]=r[3],r[11]=s,r[7]=a,r[3]=i;for(let o=0;o<16;++o)r[o]=this._inv_s[r[o]],r[o]^=n[o];return r}_encrypt(e,n){const s=this._s;let a,i,r;const o=new Uint8Array(16);o.set(e);for(let f=0;f<16;++f)o[f]^=n[f];for(let f=1;f=d;--u)if(c[u]!==h){h=0;break}f-=h,r[r.length-1]=c.subarray(0,16-h)}}const l=new Uint8Array(f);for(let c=0,h=0,u=r.length;c=256&&(i=(i^27)&255));for(let u=0;u<4;++u)a[c]=r^=a[c-32],c++,a[c]=o^=a[c-32],c++,a[c]=f^=a[c-32],c++,a[c]=l^=a[c-32],c++}return a}}class vu{_hash(e,n,s){st("Abstract method `_hash` called")}checkOwnerPassword(e,n,s,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(n,e.length),i.set(s,e.length+n.length);const r=this._hash(e,i,s);return za(r,a)}checkUserPassword(e,n,s){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(n,e.length);const i=this._hash(e,a,[]);return za(i,s)}getOwnerKey(e,n,s,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(n,e.length),i.set(s,e.length+n.length);const r=this._hash(e,i,s);return new wf(r).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,n,s){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(n,e.length);const i=this._hash(e,a,[]);return new wf(i).decryptBlock(s,!1,new Uint8Array(16))}}class X3 extends vu{_hash(e,n,s){return bf(n,0,n.length)}}class Y3 extends vu{_hash(e,n,s){let a=bf(n,0,n.length).subarray(0,32),i=[0],r=0;for(;r<64||i.at(-1)>r-32;){const o=e.length+a.length+s.length,f=new Uint8Array(o);let l=0;f.set(e,l),l+=e.length,f.set(a,l),l+=a.length,f.set(s,l);const c=new Uint8Array(o*64);for(let d=0,p=0;d<64;d++,p+=o)c.set(f,p);i=new qu(a.subarray(0,16)).encrypt(c,a.subarray(16,32));const u=Math.sumPrecise(i.slice(0,16))%3;u===0?a=bf(i,0,i.length):u===1?a=D3(i,0,i.length):u===2&&(a=yu(i,0,i.length)),r++}return a.subarray(0,32)}}class Cc{#e=new Map;embeddedFilterName=null;constructor(e,n=null,s=null){this.resolveCipher=e,this.streamFilterName=s,this.stringFilterName=n}#t(e=null){const n=e instanceof J?e.name:"__default__";return this.#e.getOrInsertComputed(n,()=>this.resolveCipher(e))}createStream(e,n,s=null){const a=this.embeddedFilterName&&wi(e.dict,"EmbeddedFile")?this.embeddedFilterName:this.streamFilterName,i=this.#t(s||a),r=new i;return new G3(e,n,function(f,l){return r.decryptBlock(f,l)})}decryptString(e){const n=this.#t(this.stringFilterName),s=new n;let a=Bt(e);return a=s.decryptBlock(a,!0),An(a)}encryptString(e){const n=this.#t(this.stringFilterName),s=new n;if(s instanceof nl){const r=16-e.length%16;e+=String.fromCharCode(r).repeat(r);const o=new Uint8Array(16);crypto.getRandomValues(o);let f=Bt(e);f=s.encrypt(f,o);const l=new Uint8Array(16+f.length);return l.set(o),l.set(f,16),An(l)}let a=Bt(e);return a=s.encrypt(a),An(a)}}function Ho(t){try{t=Po(t)}catch{H("CipherTransformFactory: Unable to convert UTF8 encoded password.")}return Bt(t)}class Fa{#e;static get _defaultPasswordBytes(){return ue(this,"_defaultPasswordBytes",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]))}#t(e,n,s,a,i,r,o,f,l,c,h,u){if(n){const p=Math.min(127,n.length);n=n.subarray(0,p)}else n=[];const d=e===6?new Y3:new X3;return d.checkUserPassword(n,f,o)?d.getUserKey(n,l,h):n.length&&d.checkOwnerPassword(n,a,r,s)?d.getOwnerKey(n,i,r,c):null}#s(e,n,s,a,i,r,o,f){const l=40+s.length+e.length,c=new Uint8Array(l);let h=0,u,d;if(n)for(d=Math.min(32,n.length);h>8&255,c[h++]=i>>16&255,c[h++]=i>>>24&255,c.set(e,h),h+=e.length,r>=4&&!f&&(c.fill(255,h,h+4),h+=4);let p=na(c,0,h);const m=o>>3;if(r>=3)for(u=0;u<50;++u)p=na(p,0,m);const b=p.subarray(0,m);let w,x;if(r>=3){h=0,c.set(Fa._defaultPasswordBytes,h),h+=32,c.set(e,h),h+=e.length,w=new Ia(b),x=w.encryptBlock(na(c,0,h)),d=b.length;const j=new Uint8Array(d);for(u=1;u<=19;++u){for(let k=0;ka[k]===j)?b:null}#a(e,n,s,a){const i=new Uint8Array(32);let r=0;const o=Math.min(32,e.length);for(;r>3;if(s>=3)for(f=0;f<50;++f)l=na(l,0,l.length);let h,u;if(s>=3){u=n;const d=new Uint8Array(c);for(f=19;f>=0;f--){for(let p=0;p>8&255,r[o++]=e>>16&255,r[o++]=n&255,r[o++]=n>>8&255,a&&(r[o++]=115,r[o++]=65,r[o++]=108,r[o++]=84),na(r,0,o).subarray(0,Math.min(i+5,16))}constructor(e,n,s){const a=e.get("Filter");if(!ze(a,"Standard"))throw new Y("unknown encryption method");this.filterName=a.name,this.dict=e,this.#e=n;const i=e.get("V");if(!Number.isInteger(i)||i!==1&&i!==2&&i!==4&&i!==5)throw new Y("unsupported encryption algorithm");this.algorithm=i;let r=e.get("Length");if(!r)if(i<=3)r=40;else{const q=e.get("CF"),v=e.get("StmF");q instanceof B&&v instanceof J&&(q.suppressEncryption=!0,r=q.get(v.name)?.get("Length")||128,r<40&&(r<<=3))}if(!Number.isInteger(r)||r<40||r%8!==0)throw new Y("invalid key length");let o=null,f=J.get("Identity"),l=J.get("Identity"),c=f;i>=4&&(o=e.get("CF"),o instanceof B&&(o.suppressEncryption=!0),f=e.get("StmF")||J.get("Identity"),l=e.get("StrF")||J.get("Identity"),c=e.get("EFF")||f),this.cf=o,this.stmf=f,this.strf=l,this.eff=c;const h=Bt(e.get("O")),u=Bt(e.get("U")),d=h.subarray(0,32),p=u.subarray(0,32),m=e.get("P"),b=e.get("R"),w=(i===4||i===5)&&e.get("EncryptMetadata")!==!1;this.encryptMetadata=w;const x=Bt(n);let j,k;if(s)if(b===6){const q=V3(s);j=Ho(q),q!==s&&(k=Ho(s))}else i===5?j=Ho(s):j=Bt(s);let y;if(i!==5)y=this.#s(x,j,d,p,m,b,r,w);else{const q=h.subarray(32,40),v=h.subarray(40,48),A=u.subarray(0,48),S=u.subarray(32,40),F=u.subarray(40,48),M=Bt(e.get("OE")),N=Bt(e.get("UE")),D=Bt(e.get("Perms"));for(const $ of k?[j,k]:[j])if(y=this.#t(b,$,d,q,v,A,p,S,F,M,N,D),y)break}if(!y){if(!s){if(this.algorithm>=4&&ze(this.stmf,"Identity")&&ze(this.strf,"Identity")){const A=this.cf?.get(this.eff.name)?.get("AuthEvent");if(ze(A,"EFOpen")){this.encryptionKey=null;return}}throw new Os("No password given",f0.NEED_PASSWORD)}const q=this.#a(j,d,b,r);y=this.#s(x,q,d,p,m,b,r,w)}if(!y)throw new Os("Incorrect Password",f0.INCORRECT_PASSWORD);i===4&&y.length<16?(this.encryptionKey=new Uint8Array(16),this.encryptionKey.set(y)):this.encryptionKey=y}setPassword(e){const n=new Fa(this.dict,this.#e,e);this.encryptionKey=n.encryptionKey}createCipherTransform(e,n){if(this.algorithm===4||this.algorithm===5){const a=r=>{if(!(r instanceof J))throw new Y("Invalid crypt filter name.");const f=this.cf.get(r.name)?.get("CFM");if(!f||f.name==="None")return $3;if(!this.encryptionKey)throw new Os("No password given",f0.NEED_PASSWORD);if(this.algorithm===5||f.name==="AESV3")return wf.bind(null,this.encryptionKey);if(f.name==="V2")return Ia.bind(null,this.#n(e,n,this.encryptionKey,!1));if(f.name==="AESV2")return qu.bind(null,this.#n(e,n,this.encryptionKey,!0));throw new Y("Unknown crypto method")},i=new Cc(a,this.strf,this.stmf);return i.embeddedFilterName=this.eff,i}const s=()=>Ia.bind(null,this.#n(e,n,this.encryptionKey,!1));return new Cc(s)}}class J3{#e=new Map;#t=[];#s=null;#a=null;#n=!1;#i=new bt;#r=null;#f=new Set;#o=!0;#l=new Set;constructor(e,n){this.stream=e,this.pdfManager=n}getNewPersistentRef(e){this.#s===null&&(this.#s=this.#t.length||1);const n=this.#s++;return this.#e.set(n,e),Q.get(n,0)}getNewTemporaryRef(){if(this.#a===null&&(this.#a=this.#t.length||1,this.#s)){this.#r=new Map;for(let e=this.#a;e0;){const[o,f]=r;if(!Number.isInteger(o)||!Number.isInteger(f))throw new Y(`Invalid XRef range fields: ${o}, ${f}`);if(!Number.isInteger(s)||!Number.isInteger(a)||!Number.isInteger(i))throw new Y(`Invalid XRef entry fields length: ${o}, ${f}`);for(let l=n.entryNum;l=F.length);)N+=String.fromCharCode(D),D=F[M];return N}function f(F,M,N){const D=N.length,$=F.length;let K=0;for(;M<$;){let oe=0;for(;oe=D)break;M++,K++}return K}const l=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,c=/\b(startxref|\d+\s+\d+\s+obj)\b/g,h=/^(\d+)\s+(\d+)\s+obj\b/,u=new Uint8Array([116,114,97,105,108,101,114]),d=new Uint8Array([115,116,97,114,116,120,114,101,102]),p=new Uint8Array([47,88,82,101,102]);this.#t.length=0,this.#e.clear();const m=this.stream;m.pos=0;const b=m.getBytes(),w=An(b),x=b.length;let j=m.start;const k=[],y=[];for(;j=x)break;F=b[j]}while(F!==10&&F!==13);continue}const M=o(b,j);let N;if(M.startsWith("xref")&&(M.length===4||/\s/.test(M[4])))j+=f(b,j,u),k.push(j),j+=f(b,j,d);else if(N=h.exec(M)){const D=N[1]|0,$=N[2]|0,K=j+M.length;let oe,me=!1;if(!this.#t[D])me=!0;else if(this.#t[D].gen===$)try{new Zs({lexer:new cs(m.makeSubStream(K))}).getObj(),me=!0}catch(Be){Be instanceof zo?H(`indexObjects -- checking object (${M}): "${Be}".`):me=!0}me&&(this.#t[D]={offset:j-m.start,gen:$,free:!1,uncompressed:!0}),l.lastIndex=K;const X=l.exec(w);X?(oe=l.lastIndex+1-j,X[1]!=="endobj"&&(H(`indexObjects: Found "${X[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`),oe-=X[1].length+1)):oe=x-j;const ee=b.subarray(j,j+oe),ye=f(ee,0,p);ye=n&&!this.#l.has(a)&&s++;return s}getEntry(e){const n=this.#t[e];return n&&!n.free&&n.offset?n:null}fetchIfRef(e,n=!1){return e instanceof Q?this.fetch(e,n):e}fetch(e,n=!1){if(!(e instanceof Q))throw new Error("ref object is not a reference");const s=e.num,a=this.#e.get(s);if(a!==void 0)return a instanceof B&&!a.objId&&(a.objId=e.toString()),a;let i=this.getEntry(s);if(i===null)return i;if(this.#i.has(e))return this.#i.remove(e),H(`Ignoring circular reference: ${e}.`),Xu;this.#i.put(e);try{i=i.uncompressed?this.fetchUncompressed(e,i,n):this.fetchCompressed(e,i,n),this.#i.remove(e)}catch(r){throw this.#i.remove(e),r}return i instanceof B?i.objId=e.toString():i instanceof Pe&&(i.dict.objId=e.toString()),i}fetchUncompressed(e,n,s=!1){const a=e.gen;let i=e.num;if(n.gen!==a){const h=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&n.gen0&&n[3]-n[1]>0)return n;H(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return ue(this,"mediaBox",this.getBoundingBox("MediaBox")||Su)}get cropBox(){return ue(this,"cropBox",this.getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){const e=this.pageDict.get("UserUnit");return ue(this,"userUnit",typeof e=="number"&&e>0?e:1)}get view(){const{cropBox:e,mediaBox:n}=this;if(e!==n&&!za(e,n)){const s=ft.intersect(e,n);if(s&&s[2]-s[0]>0&&s[3]-s[1]>0)return ue(this,"view",s);H("Empty /CropBox and /MediaBox intersection.")}return ue(this,"view",n)}get rotate(){let e=this.#t("Rotate")||0;return e%90!==0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360),ue(this,"rotate",e)}#s(e,n){if(this.evaluatorOptions.ignoreErrors){H(`getContentStream - ignoring sub-stream (${n}): "${e}".`);return}throw e}async getContentStream(){const e=await this.pdfManager.ensure(this,"content");if(e instanceof Pe&&!e.isImageStream){if(e.isAsync){const n=await e.asyncGetBytes();if(n)return new yt(n,0,n.length,e.dict)}return e}if(Array.isArray(e)){const n=[];for(let s=0,a=e.length;s{r&&(e[s]=new yt(r,0,r.length,i.dict))}))}return n.length>0&&await Promise.all(n),new N1(e,this.#s.bind(this))}return new Ko}get xfaData(){return ue(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async#a(e,n,s){const a=[];for(const i of e){if(!i.id)continue;const r=Q.fromString(i.id);if(!r){H(`A non-linked annotation cannot be modified: ${i.id}`);continue}if(i.deleted){if(n.put(r),i.popupRef){const o=Q.fromString(i.popupRef);o&&n.put(o)}continue}if(i.popup?.deleted){const o=Q.fromString(i.popupRef);o&&n.put(o)}s?.put(r),i.ref=r,a.push(this.xref.fetchAsync(r).then(o=>{o instanceof B&&(i.oldAnnotation=o.clone())},()=>{H(`Cannot fetch \`oldAnnotation\` for: ${r}.`)})),delete i.id}await Promise.all(a)}async saveNewAnnotations(e,n,s,a,i){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const r=this._createPartialEvaluator(e),o=new bt,f=new bt;await this.#a(s,o,f);const l=this.pageDict,c=this.annotations.filter(d=>!(d instanceof Q&&o.has(d))),h=await hs.saveNewAnnotations(r,this.xref,n,s,a,i);for(const{ref:d}of h.annotations)d instanceof Q&&!f.has(d)&&c.push(d);const u=l.clone();u.set("Annots",c),i.put(this.ref,{data:u});for(const d of o)i.put(d,{data:null})}async save(e,n,s,a){const i=this._createPartialEvaluator(e),r=await this._parsedAnnotations,o=[];for(const f of r)o.push(f.save(i,n,s,a).catch(function(l){return H(`save - ignoring annotation data during "${n.name}" task: "${l}".`),null}));return Promise.all(o)}async loadResources(e){await(this.#e??=this.pdfManager.ensure(this,"resources")),await qi.load(this.resources,e,this.xref)}async#n(e,n){const s=e?.get("Resources");return s instanceof B&&s.size?(await qi.load(s,n,this.xref),B.merge({xref:this.xref,dictArray:[s,this.resources],mergeSubDicts:!0})):this.resources}async getOperatorList({handler:e,sink:n,task:s,intent:a,cacheKey:i,pageIndex:r=this.pageIndex,annotationStorage:o=null,modifiedIds:f=null}){const l=this.getContentStream(),c=this.loadResources(Oo),h=this._createPartialEvaluator(e,r),d=(this.xfaFactory?null:kf(o))?.get(this.pageIndex);let p=Promise.resolve(null),m=null;if(d){const D=this.pdfManager.ensureDoc("annotationGlobals");let $;const K=new Set;for(const{bitmapId:me,bitmap:X}of d)me&&!X&&!K.has(me)&&K.add(me);const{isOffscreenCanvasSupported:oe}=this.evaluatorOptions;if(K.size>0){const me=d.slice();for(const[X,ee]of o)X.startsWith(Mc)&&ee.bitmap&&K.has(ee.bitmapId)&&me.push(ee);$=hs.generateImages(me,this.xref,oe)}else $=hs.generateImages(d,this.xref,oe);m=new bt,p=Promise.all([D,this.#a(d,m,null)]).then(([me])=>me?hs.printNewAnnotations(me,h,s,d,$):null)}const b=Promise.all([l,c]).then(async([D])=>{const $=await this.#n(D.dict,Oo),K=new Cn(a,n);return e.send("StartRenderPage",{transparency:h.hasBlendModes($,this.nonBlendModesSet),pageIndex:r,cacheKey:i}),await h.getOperatorList({stream:D,task:s,resources:$,operatorList:K}),K});let[w,x,j]=await Promise.all([b,this._parsedAnnotations,p]);if(j){x=x.filter(D=>!(D.ref&&m.has(D.ref)));for(let D=0,$=j.length;D<$;D++){const K=j[D];if(K.refToReplace){const oe=x.findIndex(me=>me.ref&&xi(me.ref,K.refToReplace));oe>=0&&(x.splice(oe,1,K),j.splice(D--,1),$--)}}x=x.concat(j)}if(x.length===0||a&an.ANNOTATIONS_DISABLE)return w.flush(!0),{length:w.totalLength};const k=!!(a&an.ANNOTATIONS_FORMS),y=!!(a&an.IS_EDITING),q=!!(a&an.ANY),v=!!(a&an.DISPLAY),A=!!(a&an.PRINT),S=[];for(const D of x)(q||v&&D.mustBeViewed(o,k)&&D.mustBeViewedWhenEditing(y,f)||A&&D.mustBePrinted(o))&&S.push(D.getOperatorList(h,s,a,o).catch(function($){return H(`getOperatorList - ignoring annotation data during "${s.name}" task: "${$}".`),{opList:null,separateForm:!1,separateCanvas:!1}}));const F=await Promise.all(S);let M=!1,N=!1;for(const{opList:D,separateForm:$,separateCanvas:K}of F)w.addOpList(D),M||=$,N||=K;return w.flush(!0,{form:M,canvas:N}),{length:w.totalLength}}async extractTextContent({handler:e,task:n,includeMarkedContent:s,disableNormalization:a,sink:i,intersector:r=null}){const o=this.getContentStream(),f=this.loadResources(Lo),l=this.pdfManager.ensureCatalog("lang"),[c,,h]=await Promise.all([o,f,l]),u=await this.#n(c.dict,Lo);return this._createPartialEvaluator(e).getTextContent({stream:c,task:n,resources:u,includeMarkedContent:s,disableNormalization:a,sink:i,viewBox:this.view,lang:h,intersector:r})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;try{const n=await this.pdfManager.ensure(this,"_parseStructTree",[e]);return await this.pdfManager.ensure(n,"serializable")}catch(n){return H(`getStructTree: "${n}".`),null}}_parseStructTree(e){const n=new Dh(e,this.pageDict);return n.parse(this.ref),n}async getAnnotationsData(e,n,s){const a=await this._parsedAnnotations;if(a.length===0)return a;const i=[],r=[];let o;const f=!!(s&an.ANY),l=!!(s&an.DISPLAY),c=!!(s&an.PRINT),h=[];for(const u of a){const d=f||l&&u.viewable;(d||c&&u.printable)&&i.push(u.data),u.hasTextContent&&d?(o??=this._createPartialEvaluator(e),r.push(u.extractTextContent(o,n,[-1/0,-1/0,1/0,1/0]).catch(function(p){H(`getAnnotationsData - ignoring textContent during "${n.name}" task: "${p}".`)}))):u.overlaysTextContent&&d&&h.push(u)}if(h.length>0){const u=new C3(h);r.push(this.extractTextContent({handler:e,task:n,includeMarkedContent:!1,disableNormalization:!1,sink:null,intersector:u}).then(()=>{u.setText()}))}return await Promise.all(r),i}get annotations(){const e=this.#t("Annots");return ue(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then(async n=>{if(n.length===0)return n;const[s,a]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureDoc("fieldObjects")]);if(!s)return[];const i=a?.orphanFields,r=[];for(const c of n)r.push(hs.create(this.xref,c,s,this._localIdFactory,!1,i,null,this.ref).catch(function(h){return H(`_parsedAnnotations: "${h}".`),null}));const o=[];let f,l;for(const c of await Promise.all(r))if(c){if(c instanceof ps){(l||=[]).push(c);continue}if(c instanceof Zf){(f||=[]).push(c);continue}o.push(c)}return l&&o.push(...l),f&&o.push(...f),o});return ue(this,"_parsedAnnotations",e)}get jsActions(){const e=N0(this.xref,this.pageDict,Ou);return ue(this,"jsActions",e)}async collectAnnotationsByType(e,n,s,a,i){const{pageIndex:r}=this;if(Object.hasOwn(this,"_parsedAnnotations")){const l=await this._parsedAnnotations;for(const{data:c}of l)(!s||s.has(c.annotationType))&&(c.pageIndex=r,a.push(Promise.resolve(c)));return}const o=await this.pdfManager.ensure(this,"annotations");let f;for(const l of o)a.push(hs.create(this.xref,l,i,this._localIdFactory,!1,null,s,this.ref).then(async c=>c?(c.data.pageIndex=r,c.hasTextContent&&c.viewable&&(f??=this._createPartialEvaluator(e),await c.extractTextContent(f,n,[-1/0,-1/0,1/0,1/0])),c.data):null).catch(function(c){return H(`collectAnnotationsByType: "${c}".`),null}))}}const Fc=new Uint8Array([37,80,68,70,45]),Rc=new Uint8Array([115,116,97,114,116,120,114,101,102]),Q3=new Uint8Array([101,110,100,111,98,106]);function Eo(t,e,n=1024,s=!1){const a=e.length,i=t.peekBytes(n),r=i.length-a;if(r<=0)return!1;if(s){const o=a-1;let f=i.length-1;for(;f>=o;){let l=0;for(;l=a)return t.pos+=f-o,!0;f--}}else{let o=0;for(;o<=r;){let f=0;for(;f=a)return t.pos+=o,!0;o++}}return!1}class Au{#e=new Map;#t=null;#s=null;constructor(e,n){if(n.length<=0)throw new ur("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e,this.stream=n,this.xref=new J3(n,e);const s={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return`f${++s.font}`}static createObjId(){st("Abstract method `createObjId` called.")}static getPageObjId(){st("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e),this.catalog=new _a(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=kd.create(this.stream)}catch(n){if(n instanceof kt)throw n;ut(n)}return ue(this,"linearization",e)}get startXRef(){const e=this.stream;let n=0;if(this.linearization){if(e.reset(),Eo(e,Q3)){e.skip(6);let s=e.peekByte();for(;es(s);)e.pos++,s=e.peekByte();n=e.pos-e.start}}else{const a=Rc.length;let i=!1,r=e.end;for(;!i&&r>0;)r-=1024-a,r<0&&(r=0),e.pos=r,i=Eo(e,Rc,1024,!0);if(i){e.skip(9);let o;do o=e.getByte();while(es(o));let f="";for(;o>=32&&o<=57;)f+=String.fromCharCode(o),o=e.getByte();n=parseInt(f,10),isNaN(n)&&(n=0)}}return ue(this,"startXRef",n)}checkHeader(){const e=this.stream;if(e.reset(),!Eo(e,Fc))return;e.moveStart(),e.skip(Fc.length);let n="",s;for(;(s=e.getByte())>32&&n.length<7;)n+=String.fromCharCode(s);Gc.test(n)?this.#s=n:H(`Invalid PDF header version: ${n}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;return this.catalog.hasActualNumPages?e=this.catalog.numPages:this.xfaFactory?e=this.xfaFactory.getNumPages():this.linearization?e=this.linearization.numPages:e=this.catalog.numPages,ue(this,"numPages",e)}#a(e,n=0){return Array.isArray(e)?e.every(a=>{if(a=this.xref.fetchIfRef(a),!(a instanceof B))return!1;if(a.has("Kids"))return++n>10?(H("#hasOnlyDocumentSignatures: maximum recursion depth reached"),!1):this.#a(a.get("Kids"),n);const i=ze(rn({dict:a,key:"FT"}),"Sig"),r=a.get("Rect"),o=Array.isArray(r)&&r.every(f=>f===0);return i&&o}):!1}get _xfaStreams(){const{acroForm:e}=this.catalog;if(!e)return null;const n=e.get("XFA"),s=new Map(["xdp:xdp","template","datasets","config","connectionSet","localeSet","stylesheet","/xdp:xdp"].map(a=>[a,null]));if(n instanceof Pe&&!n.isEmpty)return s.set("xdp:xdp",n),s;if(!Array.isArray(n)||n.length===0)return null;for(let a=0,i=n.length;ac.handleSetFont(a,[J.get(x),1],null,h,n,d,j,k).catch(y=>(H(`loadXfaFonts: "${y}".`),null)),m=[];for(const[x,j]of i){const k=j.get("FontDescriptor");if(!(k instanceof B))continue;const y=o1(k.get("FontFamily")),q=k.get("FontWeight"),v=-k.get("ItalicAngle"),A={fontFamily:y,fontWeight:q,italicAngle:v};f1(A)&&m.push(p(x,null,A))}await Promise.all(m);const b=this.xfaFactory.setFonts(u);if(!b)return;r.ignoreErrors=!0,m.length=0,u.length=0;const w=new Set;for(const x of b)Hf(`${x}-Regular`)||w.add(x);w.size&&b.push("PdfJS-Fallback");for(const x of b)if(!w.has(x))for(const j 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 k=`${x}-${j.name}`;m.push(p(k,Sh(k),{fontFamily:x,fontWeight:j.fontWeight,italicAngle:j.italicAngle}))}await Promise.all(m),this.xfaFactory.appendFonts(u,w)}loadXfaResources(e,n){return Promise.all([this.#i(e,n).catch(()=>{}),this.#n()])}serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this.#s}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},{acroForm:n}=this.catalog;if(!n)return ue(this,"formInfo",e);try{const s=n.get("Fields"),a=Array.isArray(s)&&s.length>0;e.hasFields=a;const i=n.get("XFA");e.hasXfa=Array.isArray(i)&&i.length>0||i instanceof Pe&&!i.isEmpty;const o=!!(n.get("SigFlags")&1),f=o&&this.#a(s);e.hasAcroForm=a&&!f,e.hasSignatures=o}catch(s){if(s instanceof kt)throw s;H(`Cannot fetch form information: "${s}".`)}return ue(this,"formInfo",e)}get documentInfo(){const{catalog:e,formInfo:n,xref:s}=this,a={PDFFormatVersion:this.version,Language:e.lang,EncryptFilterName:s.encrypt?.filterName??null,IsLinearized:!!this.linearization,IsAcroFormPresent:n.hasAcroForm,IsXFAPresent:n.hasXfa,IsCollectionPresent:!!e.collection,IsSignaturesPresent:n.hasSignatures};let i;try{i=s.trailer.get("Info")}catch(r){if(r instanceof kt)throw r;ut("The document information dictionary is invalid.")}if(!(i instanceof B))return ue(this,"documentInfo",a);for(const[r,o]of i){switch(r){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if(typeof o=="string"){a[r]=Xe(o);continue}break;case"Trapped":if(o instanceof J){a[r]=o;continue}break;default:let f;switch(typeof o){case"string":f=Xe(o);break;case"number":case"boolean":f=o;break;default:if(o instanceof J){f=o;break}H(`Bad value, for custom key "${r}", in Info: ${o}.`);continue}(a.Custom??=new Map).set(r,f);continue}H(`Bad value, for key "${r}", in Info: ${o}.`)}return ue(this,"documentInfo",a)}get fingerprints(){const n="\0".repeat(16);function s(o){return typeof o=="string"&&o.length===16&&o!==n}const a=this.xref.trailer.get("ID");let i,r;return Array.isArray(a)&&s(a[0])?(i=Bt(a[0]),a[1]!==a[0]&&s(a[1])&&(r=Bt(a[1]))):i=na(this.stream.getByteRange(0,1024),0,1024),ue(this,"fingerprints",[i.toHex(),r?.toHex()??null])}async#r(e){const{catalog:n,linearization:s,xref:a}=this,i=Q.get(s.objectNumberFirst,0);try{const r=await a.fetchAsync(i);if(r instanceof B){let o=r.getRaw("Type");if(o instanceof Q&&(o=await a.fetchAsync(o)),ze(o,"Page")||!r.has("Type")&&!r.has("Kids")&&r.has("Contents"))return n.pageKidsCountCache.has(i)||n.pageKidsCountCache.put(i,1),n.pageIndexCache.has(i)||n.pageIndexCache.put(i,0),[r,i]}throw new Y("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(r){return H(`_getLinearizationPage: "${r.message}".`),n.getPageDict(e)}}getPage(e){const n=this.#e.get(e);if(n)return n;const{catalog:s,linearization:a,xfaFactory:i}=this;let r;return i?r=Promise.resolve([B.empty,null]):a?.pageFirst===e?r=this.#r(e):r=s.getPageDict(e),r=r.then(([o,f])=>new Bc({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:o,ref:f,globalIdFactory:this._globalIdFactory,fontCache:s.fontCache,builtInCMapCache:s.builtInCMapCache,standardFontDataCache:s.standardFontDataCache,globalColorSpaceCache:s.globalColorSpaceCache,globalImageCache:s.globalImageCache,systemFontCache:s.systemFontCache,nonBlendModesSet:s.nonBlendModesSet,xfaFactory:i})),this.#e.set(e,r),r}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(n){if(n instanceof aa)throw this.#e.delete(0),await this.cleanup(),new Da}}async checkLastPage(e=!1){const{catalog:n,pdfManager:s}=this;n.setActualNumPages();let a;try{if(await Promise.all([s.ensureDoc("xfaFactory"),s.ensureDoc("linearization"),s.ensureCatalog("numPages")]),this.xfaFactory)return;if(this.linearization?a=this.linearization.numPages:a=n.numPages,Number.isInteger(a)){if(a<=1)return}else throw new Y("Page count is not an integer.");await this.getPage(a-1)}catch(i){if(this.#e.delete(a-1),await this.cleanup(),i instanceof aa&&!e)throw new Da;H(`checkLastPage - invalid /Pages tree /Count: ${a}.`);let r;try{r=await n.getAllPageDicts(e)}catch(o){if(o instanceof aa&&!e)throw new Da;n.setActualNumPages(1);return}for(const[o,[f,l]]of r){let c;f instanceof Error?(c=Promise.reject(f),c.catch(()=>{})):c=Promise.resolve(new Bc({pdfManager:s,xref:this.xref,pageIndex:o,pageDict:f,ref:l,globalIdFactory:this._globalIdFactory,fontCache:n.fontCache,builtInCMapCache:n.builtInCMapCache,standardFontDataCache:n.standardFontDataCache,globalColorSpaceCache:this.globalColorSpaceCache,globalImageCache:n.globalImageCache,systemFontCache:n.systemFontCache,nonBlendModesSet:n.nonBlendModesSet,xfaFactory:null})),this.#e.set(o,c)}n.setActualNumPages(r.size)}}async fontFallback(e,n){const{catalog:s,pdfManager:a}=this;for(const i of await Promise.all(s.fontCache))if(i.loadedName===e){i.fallback(n,a.evaluatorOptions);return}}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):_f()}async#f(e,n,s,a,i,r,o){const{xref:f}=this;if(!(s instanceof Q)||r.has(s))return;r.put(s);const l=await f.fetchAsync(s);if(!(l instanceof B))return;let c=await l.getAsync("Subtype");if(c=c instanceof J?c.name:null,c==="Link")return;if(l.has("T")){const u=Xe(await l.getAsync("T"));e=e===""?u:`${e}.${u}`}else{let u=l;const d=new bt;for(;;){if(u=u.getRaw("Parent")||n,u instanceof Q){if(r.has(u)||d.has(u))break;d.put(u),u=await f.fetchAsync(u)}if(!(u instanceof B))break;if(u.has("T")){const p=Xe(await u.getAsync("T"));e=e===""?p:`${e}.${p}`;break}}}if(n&&!l.has("Parent")&&ze(l.get("Subtype"),"Widget")&&o.put(s,n),a.getOrInsertComputed(e,ha).push(hs.create(f,s,i,null,!0,o,null,null).then(u=>u?.getFieldObject()).catch(function(u){return H(`#collectFieldObjects: "${u}".`),null})),!l.has("Kids"))return;const h=await l.getAsync("Kids");if(Array.isArray(h))for(const u of h)await this.#f(e,s,u,a,i,r,o)}get fieldObjects(){const e=this.pdfManager.ensureDoc("formInfo").then(async n=>{if(!n.hasFields)return null;const s=await this.annotationGlobals;if(!s)return null;const{acroForm:a}=s,i=new bt,r=new Map,o=new Map,f=new $t;for(const c of a.get("Fields"))await this.#f("",null,c,o,s,i,f);const l=[];for(const[c,h]of o)l.push(Promise.all(h).then(u=>{u=u.filter(Boolean),u.length>0&&r.set(c,u)}));return await Promise.all(l),{allFields:r.size?r:null,orphanFields:f}});return ue(this,"fieldObjects",e)}async#o(e,n,s){if(Array.isArray(e))for(const a of e){if(a instanceof Q){if(s.has(a))continue;s.put(a)}const i=await this.xref.fetchIfRefAsync(a);if(i instanceof B){if(ze(await i.getAsync("FT"),"Sig")){const r=await i.getAsync("V");if(r instanceof B){const o=await this.#c(i,r,a);o&&n.push(o)}}i.has("Kids")&&await this.#o(await i.getAsync("Kids"),n,s)}}}async#l(e,n){try{return this.stream.getByteRange(e,n)}catch(s){if(!(s instanceof kt))throw s;return await this.pdfManager.requestRange(e,n),this.#l(e,n)}}async#u(e,n){if(n>0)return!1;const s=this.stream.end;for(let a=e;a!Number.isInteger(v)||v<0))return null;const[i,r,o,f]=a,l=this.stream.end||0;if(i!==0||r<=0||i+r>o||o+f>l||l===0)return null;const c=await n.getAsync("Contents");if(typeof c!="string"||c.length===0)return null;const[h,u,d,p,m,b,w,x]=await Promise.all([n.getAsync("Filter"),n.getAsync("SubFilter"),e.getAsync("T"),n.getAsync("Name"),n.getAsync("Reason"),n.getAsync("Location"),n.getAsync("ContactInfo"),n.getAsync("M")]),j=h instanceof J?h.name:null,k=u instanceof J?u.name:null;let y=null;return k==="adbe.pkcs7.detached"?y=0:k==="adbe.pkcs7.sha1"&&(y=1),{id:`${s instanceof Q?s.toString():"inline"}:${i}-${r}-${o}-${f}`,fieldName:typeof d=="string"?Xe(d):"",signerName:typeof p=="string"?Xe(p):null,reason:typeof m=="string"?Xe(m):null,location:typeof b=="string"?Xe(b):null,contactInfo:typeof w=="string"?Xe(w):null,signingTime:typeof x=="string"?x:null,filter:j,subFilter:k,signatureType:y,byteRange:a,pkcs7:Bt(c),revisionIndex:0,parentId:null}}get signatures(){const e=this.pdfManager.ensureDoc("formInfo").then(async n=>{if(!n.hasSignatures||!n.hasFields)return null;const s=await this.annotationGlobals;if(!s)return null;const a=s.acroForm.get("Fields"),i=[];await this.#o(a,i,new bt),await Promise.all(i.map(async f=>{const l=f.byteRange[2]+f.byteRange[3];f.modificationsAfterSignature=this.xref.countUpdatesAfter(l),f.coversWholeDocument=await this.#u(l,f.modificationsAfterSignature)})),i.sort((f,l)=>l.byteRange[2]+l.byteRange[3]-(f.byteRange[2]+f.byteRange[3]));for(let f=0,l=i.length;f=0;h--){const u=i[h];if(u.byteRange[2]+u.byteRange[3]>c.byteRange[2]+c.byteRange[3]){c.parentId=u.id;break}}}const r=new Map,o=i.map(f=>{const{pkcs7:l,...c}=f;return r.set(f.id,{byteRange:f.byteRange,pkcs7:l}),c});return this.#t=r,o.length?o:null});return ue(this,"signatures",e)}async getSignatureData(e){await this.signatures;const n=this.#t?.get(e);if(!n)return null;const{byteRange:s,pkcs7:a}=n,[i,r,o,f]=s;return{data:await Promise.all([this.#l(i,i+r),this.#l(o,o+f)]),pkcs7:a}}get hasJSActions(){const e=Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]).then(([n,s])=>n?!0:s?.allFields?s.allFields.values().some(a=>a.some(i=>i.actions!==null)):!1);return ue(this,"hasJSActions",e)}get calculationOrderIds(){const e=this.catalog.acroForm?.get("CO");if(!Array.isArray(e)||e.length===0)return ue(this,"calculationOrderIds",null);const n=[];for(const s of e)s instanceof Q&&n.push(s.toString());return ue(this,"calculationOrderIds",n.length?n:null)}get annotationGlobals(){return ue(this,"annotationGlobals",hs.createGlobals(this.pdfManager))}async toJSObject(e,n=!0){throw new Error("Not implemented: toJSObject")}}function Z3(t){if(t){const e=x0(t);if(e)return e.href;H(`Invalid absolute docBaseUrl: "${t}".`)}return null}class Iu{constructor({docBaseUrl:e,docId:n,enableXfa:s,evaluatorOptions:a,handler:i,password:r}){this._docBaseUrl=Z3(e),this._docId=n,this._password=r,this.enableXfa=s,a.isOffscreenCanvasSupported&&=Tn.isOffscreenCanvasSupported,a.isImageDecoderSupported&&=Tn.isImageDecoderSupported,this.evaluatorOptions=Object.freeze(a),vn.setOptions(a),Ci.setOptions(a),Cn.setOptions(a);const o={...a,handler:i};Ls.setOptions(o),mr.setOptions(o),Rr.setOptions(o),ah.setOptions(o),gn.setOptions(o)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}ensureDoc(e,n){return this.ensure(this.pdfDocument,e,n)}ensureCatalog(e,n){return this.ensure(this.pdfDocument.catalog,e,n)}async initDocument(e){await this.ensureDoc("checkHeader"),await this.ensureDoc("parseStartXRef"),await this.ensureDoc("parse",[e]),await this.ensureDoc("checkFirstPage",[e]),await this.ensureDoc("checkLastPage",[e])}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,n){return this.pdfDocument.fontFallback(e,n)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,n,s){st("Abstract method `ensure` called")}requestRange(e,n){st("Abstract method `requestRange` called")}requestLoadedStream(e=!1){st("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){st("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e,this.pdfDocument.xref.encrypt?.setPassword(e)}terminate(e){st("Abstract method `terminate` called")}}class Mo extends Iu{constructor(e){super(e);const n=new yt(e.source);this.pdfDocument=new Au(this,n),this._loadedStreamPromise=Promise.resolve(n)}async ensure(e,n,s){const a=e[n];return typeof a=="function"?a.apply(e,s):a}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class e5 extends Iu{constructor(e){super(e),this.streamManager=new E1(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize}),this.pdfDocument=new Au(this,this.streamManager.getStream())}async ensure(e,n,s){try{const a=e[n];return typeof a=="function"?await a.apply(e,s):a}catch(a){if(!(a instanceof kt))throw a;return await this.requestRange(a.begin,a.end),this.ensure(e,n,s)}}requestRange(e,n){return this.streamManager.requestRange(e,n)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const o0={DATA:1,ERROR:2},Gt={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Hc(){}function zn(t){if(t instanceof fn||t instanceof ur||t instanceof Os||t instanceof ll||t instanceof so)return t;switch(t instanceof Error||typeof t=="object"&&t!==null||st('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),t.name){case"AbortException":return new fn(t.message);case"InvalidPDFException":return new ur(t.message);case"PasswordException":return new Os(t.message,t.code);case"ResponseException":return new ll(t.message,t.status,t.missing);case"UnknownErrorException":return new so(t.message,t.details)}return new so(t.message,t.toString())}class Ec{#e=new AbortController;constructor(e,n,s){this.sourceName=e,this.targetName=n,this.comObj=s,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),s.addEventListener("message",this.#t.bind(this),{signal:this.#e.signal})}#t({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#a(e);return}if(e.callback){const s=e.callbackId,a=this.callbackCapabilities[s];if(!a)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],e.callback===o0.DATA)a.resolve(e.data);else if(e.callback===o0.ERROR)a.reject(zn(e.reason));else throw new Error("Unexpected callback case");return}const n=this.actionHandler[e.action];if(!n)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const s=this.sourceName,a=e.sourceName,i=this.comObj;Promise.try(n,e.data).then(function(r){i.postMessage({sourceName:s,targetName:a,callback:o0.DATA,callbackId:e.callbackId,data:r})},function(r){i.postMessage({sourceName:s,targetName:a,callback:o0.ERROR,callbackId:e.callbackId,reason:zn(r)})});return}if(e.streamId){this.#s(e);return}n(e.data)}on(e,n){const s=this.actionHandler;if(s[e])throw new Error(`There is already an actionName called "${e}"`);s[e]=n}send(e,n,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:n},s)}sendWithPromise(e,n,s){const a=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[a]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:n},s)}catch(r){i.reject(r)}return i.promise}sendWithStream(e,n,s,a){const i=this.streamId++,r=this.sourceName,o=this.targetName,f=this.comObj;return new ReadableStream({start:l=>{const c=Promise.withResolvers();return this.streamControllers[i]={controller:l,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},f.postMessage({sourceName:r,targetName:o,action:e,streamId:i,data:n,desiredSize:l.desiredSize},a),c.promise},pull:l=>{const c=Promise.withResolvers();return this.streamControllers[i].pullCall=c,f.postMessage({sourceName:r,targetName:o,stream:Gt.PULL,streamId:i,desiredSize:l.desiredSize}),c.promise},cancel:l=>{Ct(l instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[i].cancelCall=c,this.streamControllers[i].isClosed=!0,f.postMessage({sourceName:r,targetName:o,stream:Gt.CANCEL,streamId:i,reason:zn(l)}),c.promise}},s)}#s(e){const n=e.streamId,s=this.sourceName,a=e.sourceName,i=this.comObj,r=this,o=this.actionHandler[e.action],f={enqueue(l,c=1,h){if(this.isCancelled)return;const u=this.desiredSize;this.desiredSize-=c,u>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:s,targetName:a,stream:Gt.ENQUEUE,streamId:n,chunk:l},h)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:s,targetName:a,stream:Gt.CLOSE,streamId:n}),delete r.streamSinks[n])},error(l){Ct(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:s,targetName:a,stream:Gt.ERROR,streamId:n,reason:zn(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};f.sinkCapability.resolve(),f.ready=f.sinkCapability.promise,this.streamSinks[n]=f,Promise.try(o,e.data,f).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.START_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.START_COMPLETE,streamId:n,reason:zn(l)})})}#a(e){const n=e.streamId,s=this.sourceName,a=e.sourceName,i=this.comObj,r=this.streamControllers[n],o=this.streamSinks[n];switch(e.stream){case Gt.START_COMPLETE:e.success?r.startCall.resolve():r.startCall.reject(zn(e.reason));break;case Gt.PULL_COMPLETE:e.success?r.pullCall.resolve():r.pullCall.reject(zn(e.reason));break;case Gt.PULL:if(!o){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,success:!0});break}o.desiredSize<=0&&e.desiredSize>0&&o.sinkCapability.resolve(),o.desiredSize=e.desiredSize,Promise.try(o.onPull||Hc).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.PULL_COMPLETE,streamId:n,reason:zn(l)})});break;case Gt.ENQUEUE:if(Ct(r,"enqueue should have stream controller"),r.isClosed)break;r.controller.enqueue(e.chunk);break;case Gt.CLOSE:if(Ct(r,"close should have stream controller"),r.isClosed)break;r.isClosed=!0,r.controller.close(),this.#n(r,n);break;case Gt.ERROR:Ct(r,"error should have stream controller"),r.controller.error(zn(e.reason)),this.#n(r,n);break;case Gt.CANCEL_COMPLETE:e.success?r.cancelCall.resolve():r.cancelCall.reject(zn(e.reason)),this.#n(r,n);break;case Gt.CANCEL:if(!o)break;const f=zn(e.reason);Promise.try(o.onCancel||Hc,f).then(function(){i.postMessage({sourceName:s,targetName:a,stream:Gt.CANCEL_COMPLETE,streamId:n,success:!0})},function(l){i.postMessage({sourceName:s,targetName:a,stream:Gt.CANCEL_COMPLETE,streamId:n,reason:zn(l)})}),o.sinkCapability.reject(f),o.isCancelled=!0,delete this.streamSinks[n];break;default:throw new Error("Unexpected stream case")}}async#n(e,n){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]),delete this.streamControllers[n]}destroy(){this.#e?.abort(),this.#e=null}}async function Cu(t,e,n,{encrypt:s=null,encryptRef:a=null}){const i=s&&a!==t?s.createCipherTransform(t.num,t.gen):null;n.push(`${t.num} ${t.gen} obj +`),await Tr(e,n,i),n.push(` +endobj +`)}async function sl(t,e,n){e.push("<<");for(const[s,a]of t.getRawEntries())e.push(` /${jf(s)} `),await Tr(a,e,n);e.push(">>")}async function t5(t,e,n){t=t.getOriginalStream(),t.reset();let s=t.getBytes();const{dict:a}=t,[i,r]=await Promise.all([a.getAsync("Filter"),a.getAsync("DecodeParms")]),o=Array.isArray(i)?await a.xref.fetchIfRefAsync(i[0]):i,f=ze(o,"FlateDecode"),l=ze(o,"DCTDecode")||ze(o,"JPXDecode")||ze(o,"JBIG2Decode")||ze(o,"CCITTFaxDecode")||ze(o,"LZWDecode");if(!(f||l||ze(o,"BrotliDecode"))&&s.length>=256)try{const d=new CompressionStream("deflate"),p=d.writable.getWriter();await p.ready,p.write(s).then(async()=>{await p.ready,await p.close()}).catch(()=>{}),s=await new Response(d.readable).bytes();let m,b;i?f||(m=Array.isArray(i)?[J.get("FlateDecode"),...i]:[J.get("FlateDecode"),i],r&&(b=Array.isArray(r)?[null,...r]:[null,r])):m=J.get("FlateDecode"),m&&a.set("Filter",m),b&&a.set("DecodeParms",b)}catch(d){ut(`writeStream - cannot compress data: "${d}".`)}let u=An(s);n&&(u=n.encryptString(u)),a.set("Length",u.length),await sl(a,e,n),e.push(` stream +`,u,` +endstream`)}async function n5(t,e,n){e.push("[");for(let s=0,a=t.length;s=1e21)return BigInt(t).toString();const e=t.toFixed(10);let n=e.length;for(;e[n-1]==="0";)n--;return e[n-1]==="."&&n--,e.slice(0,n)}async function Tr(t,e,n){t instanceof J?e.push(`/${jf(t.name)}`):t instanceof Q?e.push(`${t.num} ${t.gen} R`):Array.isArray(t)||ArrayBuffer.isView(t)?await n5(t,e,n):typeof t=="string"?(n&&(t=n.encryptString(t)),e.push(`(${ji(t)})`)):typeof t=="number"?e.push(s5(t)):typeof t=="boolean"?e.push(t.toString()):t instanceof B?await sl(t,e,n):t instanceof Pe?await t5(t,e,n):t===null?e.push("null"):H(`Unhandled value in writer: ${typeof t}, please file a bug.`)}function Do(t,e,n,s){for(let a=e+n-1;a>n-1;a--)s[a]=t&255,t>>=8;return n+e}function Tu(t,e,n){const s=t.length;for(let a=0;af.length)),r=new Uint8Array(i);let o=0;for(const f of a)o=Tu(f,o,r);return An(na(r,0,r.length))}function i5(t,e){const n=new K0({hasAttributes:!0}).parseFromString(t);for(const{xfa:a}of e){if(!a)continue;const{path:i,value:r}=a;if(!i||r===null)continue;const o=Kc(i);let f=n.documentElement.searchNode(o,0);!f&&o.length>1&&(f=n.documentElement.searchNode([o.at(-1)],0)),f?f.childNodes=Array.isArray(r)?r.map(l=>new ir("value",l)):[new ir("#text",r)]:H(`Node not found for path: ${i}`)}const s=[];return n.documentElement.dump(s),s.join("")}async function r5({xref:t,acroForm:e,acroFormRef:n,hasXfa:s,hasXfaDatasetsEntry:a,xfaDatasetsRef:i,needAppearances:r,changes:o}){if(s&&!a&&!i&&H("XFA - Cannot save it"),!r&&(!s||!i||a))return;const f=e.clone();if(s&&!a){const l=e.get("XFA").slice();l.splice(2,0,"datasets"),l.splice(3,0,i),f.set("XFA",l)}r&&f.set("NeedAppearances",!0),o.put(n,{data:f})}function o5({xfaData:t,xfaDatasetsRef:e,changes:n,xref:s}){if(t===null){const i=s.fetchIfRef(e);t=i5(i.getString(),n)}const a=new hn(t,new B(s));a.dict.setIfName("Type","EmbeddedFile"),n.put(e,{data:a})}async function f5(t,e,n,s,a){a.push(`xref +`);const i=Bu(n);let r=0;for(const{ref:o,data:f}of n)o.num===i[r]&&(a.push(`${i[r]} ${i[r+1]} +`),r+=2),f!==null?(a.push(`${e.toString().padStart(10,"0")} ${Math.min(o.gen,65535).toString().padStart(5,"0")} n\r +`),e+=f.length):a.push(`0000000000 ${Math.min(o.gen+1,65535).toString().padStart(5,"0")} f\r +`);Fu(e,t,s),a.push(`trailer +`),await sl(s,a,null),a.push(` +startxref +`,e.toString(),` +%%EOF +`)}function Bu(t){const e=[];for(const{ref:n}of t)n.num===e.at(-2)+e.at(-1)?e[e.length-1]+=1:e.push(n.num,1);return e}async function l5(t,e,n,s,a){const i=[];let r=0,o=0;for(const{ref:m,data:b,objStreamRef:w,index:x}of n){let j;r=Math.max(r,e),w?(j=x,i.push([2,w.num,j])):b!==null?(j=Math.min(m.gen,65535),i.push([1,e,j]),e+=b.length):(j=Math.min(m.gen+1,65535),i.push([0,0,j])),o=Math.max(o,j)}s.set("Index",Bu(n));const f=dl(r),l=dl(o),c=[1,f,l];s.set("W",c),Fu(e,t,s);const h=Math.sumPrecise(c),u=new Uint8Array(h*i.length),d=new yt(u);d.dict=s;let p=0;for(const[m,b,w]of i)p=Do(m,c[0],p,u),p=Do(b,c[1],p,u),p=Do(w,c[2],p,u);await Cu(t.newRef,d,a,{}),a.push(`startxref +`,e.toString(),` +%%EOF +`)}function Fu(t,e,n){if(Array.isArray(e.fileIds)&&e.fileIds.length>0){const s=a5(t,e);n.set("ID",[e.fileIds[0]||s,s])}}function c5(t,e,n){const s=new B(null);s.setIfDefined("Prev",t?.startXRef);const a=t.newRef;return n?(e.put(a,{data:""}),s.set("Size",a.num+1),s.setIfName("Type","XRef")):s.set("Size",a.num),s.setIfDefined("Root",t?.rootRef),s.setIfDefined("Info",t?.infoRef),s.setIfDefined("Encrypt",t?.encryptRef),s}async function h5(t,e,n=[]){const s=[];for(const[a,{data:i,objStreamRef:r,index:o}]of t.items()){if(r){s.push({ref:a,data:i,objStreamRef:r,index:o});continue}if(i===null||typeof i=="string"){s.push({ref:a,data:i});continue}await Cu(a,i,n,e),s.push({ref:a,data:n.join("")}),n.length=0}return s.sort((a,i)=>a.ref.num-i.ref.num)}async function Ru({originalData:t,xrefInfo:e,changes:n,xref:s=null,hasXfa:a=!1,xfaDatasetsRef:i=null,hasXfaDatasetsEntry:r=!1,needAppearances:o,acroFormRef:f=null,acroForm:l=null,xfaData:c=null,useXrefStream:h=!1}){await r5({xref:s,acroForm:l,acroFormRef:f,hasXfa:a,hasXfaDatasetsEntry:r,xfaDatasetsRef:i,needAppearances:o,changes:n}),a&&o5({xfaData:c,xfaDatasetsRef:i,changes:n,xref:s});const u=c5(e,n,h),d=[],p=await h5(n,s,d);let m=t.length;const b=t.at(-1);b!==10&&b!==13&&(d.push(` +`),m+=1);for(const{data:k}of p)k!==null&&d.push(k);await(h?l5(e,m,p,u,d):f5(e,m,p,u,d));const w=t.length+Math.sumPrecise(d.map(k=>k.length)),x=new Uint8Array(w);x.set(t);let j=t.length;for(const k of d)j=Tu(k,j,x);return x}const u5=16,d5=64;class m5{constructor(e,n){this.page=e,this.documentData=n,this.annotations=null,this.pointingNamedDestinations=null,this.copyLevel=0,n.pagesMap.put(e.ref,this)}}class p5{constructor(e){this.document=e,this.destinations=null,this.pageLabels=null,this.pagesMap=new $t,this.oldRefMapping=new $t,this.dedupNamedDestinations=new Map,this.usedNamedDestinations=new Set,this.postponedRefCopies=new $t,this.resourceStreamPromises=new Map,this.usedStructParents=new Set,this.oldStructParentMapping=new Map,this.structTreeRoot=null,this.parentTree=null,this.idTree=null,this.roleMap=null,this.classMap=null,this.namespaces=null,this.structTreeAF=null,this.structTreePronunciationLexicon=[],this.acroForm=null,this.acroFormDefaultAppearance="",this.acroFormDefaultResources=null,this.acroFormQ=0,this.hasSignatureAnnotations=!1,this.fieldToParent=new $t,this.outline=null,this.embeddedFiles=null}}class g5{constructor(e,n){this.entries=e,this._getNewRef=n}getNewTemporaryRef(){return this._getNewRef()}countUpdatesAfter(e){return null}fetchIfRef(e){return e instanceof Q?this.fetch(e):e}fetch(e){if(!(e instanceof Q))throw new Error("ref object is not a reference");return this.entries[e.num]}async fetchIfRefAsync(e){return e instanceof Q?this.fetchAsync(e):e}async fetchAsync(e){return this.fetch(e)}}class b5{isSingleFile=!1;#e=null;#t=null;#s=new Map;currentDocument=null;oldPages=[];newPages=[];xref=[null];xrefWrapper=new g5(this.xref,()=>this.newRef);newRefCount=1;namesDict=null;version="1.7";pageLabels=null;namedDestinations=new Map;parentTree=new Map;structTreeKids=[];idTree=new Map;classMap=new B;roleMap=new B;namespaces=new Map;structTreeAF=[];structTreePronunciationLexicon=[];fields=[];acroFormDefaultAppearance="";acroFormDefaultResources=null;acroFormNeedAppearances=!1;acroFormSigFlags=0;acroFormCalculationOrder=null;acroFormQ=0;outlineItems=null;embeddedFiles=new Map;constructor({useObjectStreams:e=!0,title:n="",author:s=""}={}){[this.rootRef,this.rootDict]=this.newDict,[this.infoRef,this.infoDict]=this.newDict,[this.pagesRef,this.pagesDict]=this.newDict,this.useObjectStreams=e,this.objStreamRefs=e?new Set:null,this.title=n,this.author=s}get newRef(){return Q.get(this.newRefCount++,0)}get newDict(){const e=this.newRef,n=this.xref[e.num]=new B;return[e,n]}async#a(e,n){const s=this.newRef;return this.xref[s.num]=await this.#n(e,!0,n),s}cloneDict(e){const n=e.clone();return n.xref=this.xrefWrapper,n}async#n(e,n,s,a=new bt){if(e instanceof Q){const{currentDocument:{fieldToParent:f,oldRefMapping:l}}=this,c=l.get(e);if(c)return c;const h=e;e=await s.fetchAsync(h);const u=l.get(h);if(u)return u;if(typeof e=="number")return e;if(e instanceof Pe&&this.#i(e.dict))return this.#l(h,e,s,a);const d=this.newRef;l.put(h,d);let p=!0;return f.has(h)&&e instanceof B&&(e=this.cloneDict(e),e.delete("Parent"),p=!1),this.xref[d.num]=await this.#n(e,p,s,a),d}const i=[],{currentDocument:{postponedRefCopies:r}}=this;if(Array.isArray(e)){n&&(e=e.slice());for(let f=0,l=e.length;fe[f]=h);continue}i.push(this.#n(e[f],!0,s,a).then(h=>e[f]=h))}return await Promise.all(i),e}let o;if(e instanceof Pe?({dict:o}=e=e.getOriginalStream().clone(),o.xref=this.xrefWrapper):e instanceof B&&(n&&(e=e.clone(),e.xref=this.xrefWrapper),o=e),o){for(const[f,l]of o.getRawEntries()){const c=l instanceof Q&&r.get(l);if(c){c.push(h=>o.set(f,h));continue}i.push(this.#n(l,!0,s,a).then(h=>o.set(f,h)))}await Promise.all(i)}return e}#i(e){const n=e.get("Subtype");return ze(n,"Image")||e.has("Length1")||ze(n,"Type1C")||ze(n,"CIDFontType0C")||ze(n,"OpenType")}#r(e){const n=e.getOriginalStream();return n.reset(),n.getBytes()}async#f(e){const n=[];return await Tr(e,n,null),n.join("")}#o(e,n){const{length:i}=n,r=new Fh;if(r.update(e),r.update(`#${i}`),i<=256*4)r.update(n);else{const o=Math.floor((i-256)/3);for(let f=0;f<4;f++){const l=Math.min(f*o,i-256);r.update(n.subarray(l,l+256))}}return r.hexdigest()}async#l(e,n,s,a){const{currentDocument:{oldRefMapping:i,resourceStreamPromises:r}}=this;if(a.has(e))return i.getOrPutComputed(e,()=>this.newRef);const o=e.toString(),f=r.get(o);if(f)return f;const l=new bt(a);l.put(e);const c=Promise.resolve().then(async()=>{const h=await this.#n(n,!0,s,l),u=i.get(e);if(u)return this.xref[u.num]=h,u;const d=await this.#u(h);return i.put(e,d),d});r.set(o,c);try{return await c}finally{r.get(o)===c&&r.delete(o)}}async#u(e){const n=await this.#f(e.dict),s=this.#r(e),a=this.#o(n,s),i=this.#s.getOrInsertComputed(a,ha);for(const o of i)if(o.dictStr===n&&za(this.#r(o.stream),s))return o.ref;const r=this.newRef;return this.xref[r.num]=e,i.push({ref:r,dictStr:n,stream:e}),r}async#c(e,n){if(e instanceof Q){const s=await n.fetchAsync(e);return Array.isArray(s)?s:[e]}return Array.isArray(e)?e:[e]}async#h(e,n,s,a,i,r,o,f=new bt){const{currentDocument:{pagesMap:l,oldRefMapping:c}}=this,h=n.getRaw("Pg");if(h instanceof Q&&!l.has(h))return null;const u=n.getRaw("K");if(u instanceof Q&&f.has(u))return null;const d=await this.#c(u,s),p=[],m=[];for(let q of d){const v=q instanceof Q?q:null;if(v){if(f.has(v))continue;f.put(v),q=await s.fetchAsync(v)}if(typeof q=="number"){p.push(q);continue}if(!(q instanceof B))continue;const A=q.getRaw("Pg");if(A instanceof Q&&!l.has(A))continue;const S=q.get("Type");if(!S||ze(S,"StructElem")){let F=!1;if(v&&a.has(v)){if(!ze(q.get("S"),"Link"))continue;F=!0}const M=await this.#h(v,q,s,a,i,r,o,f);M&&(m.push(p.length),p.push(M),v&&c.put(v,M),F&&this.xref[M.num].setIfName("S","Span"));continue}if(ze(S,"OBJR")){if(!v)continue;const F=q.getRaw("Obj");if(F instanceof Q&&!c.get(F))continue;const M=c.get(v)||await this.#n(v,!0,s),D=this.xref[M.num].getRaw("Obj");if(D instanceof Q){const $=this.xref[D.num];if($ instanceof B&&!$.has("StructParent")&&e){const K=this.parentTree.size;this.parentTree.set(K,[c,e]),$.set("StructParent",K)}}p.push(M);continue}if(ze(S,"MCR")){const F=await this.#n(v||q,!0,s);p.push(F);continue}if(v){const F=await this.#n(v,!0,s);p.push(F)}}if(d.length!==0&&p.length===0)return null;const b=this.newRef,w=this.xref[b.num]=this.cloneDict(n);w.delete("ID"),w.delete("C"),w.delete("K"),w.delete("P"),w.delete("S"),await this.#n(w,!1,s);const x=n.get("C");if(x instanceof J){const q=r.get(x.name);w.set("C",q?J.get(q):x)}else if(Array.isArray(x)){const q=[];for(const v of x)if(v instanceof J){const A=r.get(v.name);q.push(A?J.get(A):v)}w.set("C",q)}const j=n.get("S");if(j instanceof J){const q=o.get(j.name);w.set("S",q?J.get(q):j)}const k=n.get("ID");if(typeof k=="string"){const q=Xe(k,!1),v=i.get(q);w.set("ID",v?Zt(v):k)}let y=w.get("A");if(y){Array.isArray(y)||(y=[y]);for(let q of y)if(q=this.xrefWrapper.fetchIfRef(q),q instanceof B&&ze(q.get("O"),"Table")&&q.has("Headers")){const v=this.xrefWrapper.fetchIfRef(q.getRaw("Headers"));if(Array.isArray(v))for(let A=0,S=v.length;A1&&w.set("K",p),b}#d({document:e,includePages:n,excludePages:s}){if(!e)return[];const a=l=>{if(!l?.length)return null;const c=new Set,h=[];for(const u of l)Array.isArray(u)?h.push(u):c.add(u);return{indices:c,ranges:h}},i=(l,{indices:c,ranges:h})=>c.has(l)||h.some(([u,d])=>l>=u&&l<=d),r=a(n),o=a(s),f=[];for(let l=0,c=e.numPages;l!!(f.document||f.image);for(let f=0;ff.insertAfter-l.insertAfter||f.i-l.i),s.length===0&&e.some(f=>i(f)&&f.pageIndices)){const f=e.slice();let l=-1;for(const h of e)if(!(!i(h)||!h.pageIndices))for(const u of h.pageIndices)u>l&&(l=u);let c=0;for(const{i:h,insertAfter:u,count:d}of a){const p=Math.min(Math.max(u,-1)+c,l);for(let w=0;wj<=p)||(f[w]={...x,pageIndices:x.pageIndices.map(j=>j>p?j+d:j)})}const m=[];for(let w=0;w{if(!i(f)||f.pageIndices)return f;const c={...f,pageIndices:o[l]||[]};return delete c.insertAfter,c})}async extractPages(e,n,s,a,i){this.#t=s,e=this.#m(e);const r=[];let o=0;const f=m=>{if(!Number.isInteger(m)||m<0)throw new Error("extractPages: invalid page index.");if(this.oldPages[m]!==void 0)throw new Error("extractPages: overlapping pageIndices.");this.oldPages[m]=null},l=[];n&&(this.#e={handler:a,task:i,newAnnotationsByPage:kf(n),imagesPromises:hs.generateImages(n.values(),this.xrefWrapper,!0)});const c=[];for(const m of e){const{document:b,image:w,includePages:x,excludePages:j,pageIndices:k}=m;if(w){if(k&&(o=-1,k.length>1))throw new Error("extractPages: too many pageIndices.");let A;if(k?.length)A=k[0];else if(o!==-1)A=o++;else for(A=0;this.oldPages[A]!==void 0;A++);f(A),c.push({image:w,slot:A});continue}if(!b)continue;k&&(o=-1);const y=this.#d({document:b,includePages:x,excludePages:j});if(k&&k.length>y.length)throw new Error("extractPages: too many pageIndices.");const q=new p5(b);l.push(q),r.push(this.#p(q));let v=0;for(const A of y){let S;if(k&&(S=k[v++]),S===void 0)if(o!==-1)S=o++;else for(S=0;this.oldPages[S]!==void 0;S++);f(S),r.push(b.getPage(A).then(F=>{this.oldPages[S]=new m5(F,q)}))}}if(await Promise.all(r),this.oldPages.length===0)throw new Error("extractPages: nothing to extract.");const h=new Map,u=new Set;for(let m=0,b=this.oldPages.length;m0?this.#L():null;for(let m=0,b=this.oldPages.length;me.destinations=i),n.ensureCatalog("rawPageLabels").then(i=>e.pageLabels=i),n.ensureCatalog("structTreeRoot").then(i=>e.structTreeRoot=i),n.ensureCatalog("acroForm").then(i=>e.acroForm=i),n.ensureCatalog("documentOutlineForEditor").then(i=>e.outline=i),n.ensureCatalog("rawEmbeddedFiles").then(i=>e.embeddedFiles=i)]);const a=e.structTreeRoot;if(a){const i=a.dict,r=i.get("ParentTree");if(r){const l=new qr(r,s);e.parentTree=l.getAll(!0)}const o=i.get("IDTree");if(o){const l=new Ms(o,s);e.idTree=l.getAll(!0)}e.roleMap=i.get("RoleMap")||null,e.classMap=i.get("ClassMap")||null;let f=i.get("Namespaces")||null;f&&!Array.isArray(f)&&(f=[f]),e.namespaces=f,e.structTreeAF=i.get("AF")||null,e.structTreePronunciationLexicon=i.get("PronunciationLexicon")||null}}async#b(e){const{page:{xref:n,annotations:s},documentData:{pagesMap:a,destinations:i,usedNamedDestinations:r,fieldToParent:o}}=e;if(!s)return;const f=[];let l=[],c=0,{hasSignatureAnnotations:h}=e.documentData;for(const u of s){const d=c++;f.push(n.fetchIfRefAsync(u).then(async p=>{if(!ze(p.get("Subtype"),"Link")){if(ze(p.get("Subtype"),"Widget")){h||=ze(rn({dict:p,key:"FT"}),"Sig");const w=p.getRaw("Parent")||null;o.put(u,w)}l[d]=u;return}const m=p.get("A");if(m instanceof B&&!ze(m.get("S"),"GoTo")){l[d]=u;return}const b=m instanceof B?m.get("D"):p.get("Dest");if(!b||Array.isArray(b)&&(!(b[0]instanceof Q)||a.has(b[0])))l[d]=u;else if(b instanceof J||typeof b=="string"){const w=Xe(b instanceof J?b.name:b,!0);i.has(w)&&(l[d]=u,r.add(w))}}))}await Promise.all(f),l=l.filter(Boolean),e.annotations=l.length>0?l:null,e.documentData.hasSignatureAnnotations||=h}#j(e){for(const{postponedRefCopies:n,pagesMap:s}of e)for(const a of s.keys())n.put(a,[])}#k(e){for(const{postponedRefCopies:n,oldRefMapping:s}of e){for(const[a,i]of n.items()){const r=s.get(a);for(const o of i)o(r)}n.clear()}}#w(e,n,s=new bt){if(e instanceof Q){s.has(e)||(s.put(e),this.#w(this.xref[e.num],n,s));return}if(Array.isArray(e)){for(const i of e)this.#w(i,n,s);return}let a;if(e instanceof Pe?{dict:a}=e:e instanceof B&&(a=e),a){n(a);for(const i of a.getRawValues())this.#w(i,n,s)}}async#y(e){let n=0;const{parentTree:s}=this;for(let h=0,u=this.newPages.length;h{const q=y.get("StructParent")??y.get("StructParents");if(typeof q!="number")return;b.add(q);let v=d.get(q);const A=v instanceof Q?v:null;if(A){const F=w.fetch(A);Array.isArray(F)&&(v=F)}if(Array.isArray(v)&&v.every(F=>F===null)&&(v=null),!v){y.has("StructParent")?y.delete("StructParent"):y.delete("StructParents");return}let S=m.get(q);S===void 0&&(S=n++,m.set(q,S),s.set(S,[p,v])),y.has("StructParent")?y.set("StructParent",S):y.set("StructParents",S)},k)}const{structTreeKids:a,idTree:i,classMap:r,roleMap:o,namespaces:f,structTreeAF:l,structTreePronunciationLexicon:c}=this;for(const h of e){const{document:{xref:u},oldRefMapping:d,parentTree:p,usedStructParents:m,structTreeRoot:b,idTree:w,classMap:x,roleMap:j,namespaces:k,structTreeAF:y,structTreePronunciationLexicon:q}=h;if(!b)continue;this.currentDocument=h;const v=new bt;for(const[D,$]of p||[])!m.has(D)&&$ instanceof Q&&v.put($);const A=new Map;for(const[D,$]of w||[]){let K=D;if(i.has(D))for(let oe=1;;oe++){const me=`${D}_${oe}`;if(!i.has(me)){A.set(D,me),K=me;break}}i.set(K,$)}const S=new Map;if(x?.size>0)for(let[D,$]of x){if($=await this.#n($,!0,u),r.has(D))for(let K=1;;K++){const oe=`${D}_${K}`;if(!r.has(oe)){S.set(D,oe),D=oe;break}}r.set(D,$)}const F=new Map;if(j?.size>0)for(const[D,$]of j){const K=o.get(D);if(!K){o.set(D,$);continue}if(K!==$)for(let oe=1;;oe++){const me=`${D}_${oe}`;if(!o.has(me)){F.set(D,me),o.set(me,$);break}}}if(k?.length>0)for(const D of k){const $=await u.fetchIfRefAsync(D);let K=$.get("NS");if(!K||f.has(K))continue;K=Xe(K,!1);const oe=await this.#n($,!0,u);f.set(K,oe)}if(y)for(const D of y)l.push(await this.#n(D,!0,u));if(q)for(const D of q)c.push(await this.#n(D,!0,u));const M=b.dict.getRaw("K");if(!M)continue;const N=await this.#c(M,u);for(let D of N){const $=D instanceof Q?D:null;if(D=await u.fetchIfRefAsync(D),!(D instanceof B))continue;let K=!1;if($&&v.has($)){if(!ze(D.get("S"),"Link"))continue;K=!0}const oe=await this.#h($,D,u,v,A,S,F);oe&&(a.push(oe),$&&d.put($,oe),K&&this.xref[oe.num].setIfName("S","Span"))}for(const[D,$]of w||[]){const K=$ instanceof Q&&d.get($),oe=A.get(D)||D;K?i.set(oe,K):i.delete(oe)}}for(const[h,[u,d]]of s){if(!d){s.delete(h);continue}if(!Array.isArray(d)){const m=u.get(d);m===void 0?s.delete(h):s.set(h,m);continue}const p=d.map(m=>m instanceof Q&&u.get(m)||null);if(p.length===0||p.every(m=>m===null)){s.delete(h);continue}s.set(h,p)}this.currentDocument=null}#q(e){for(const n of e){if(!n.destinations)continue;const{destinations:s,pagesMap:a}=n,i=n.destinations=new Map;for(const[r,o]of s){const f=o[0],l=f instanceof Q&&a.get(f);l&&((l.pointingNamedDestinations||=new Set).add(r),i.set(r,o))}}}#v(){const{namedDestinations:e}=this,n=s=>{if(!e.has(s))return s;for(let a=1;;a++){const i=`${s}_${a}`;if(!e.has(i))return i}};for(let s=0,a=this.oldPages.length;s{typeof r=="string"&&a.set(i,n.get(Xe(r,!0))||r)};for(const a of e){const i=this.xref[a.num];if(!ze(i.get("Subtype"),"Link"))continue;const r=i.get("A");if(r instanceof B&&r.has("D")){const f=r.get("D");s(r,"D",f);continue}const o=i.get("Dest");s(i,"Dest",o)}}#A(e){const n=(s,a,i)=>{for(const r of s)typeof r.dest=="string"&&a?.has(r.dest)&&i.add(r.dest),r.items.length>0&&n(r.items,a,i)};for(const s of e){const{outline:a,destinations:i,usedNamedDestinations:r}=s;a?.length&&n(a,i,r)}}#I(e,n){const{dest:s,action:a,url:i,unsafeUrl:r,attachment:o,setOCGState:f}=e;if(a||i||r||o||f)return!0;if(!s)return!1;if(typeof s=="string"){const l=n.dedupNamedDestinations.get(s)||s;return this.namedDestinations.has(l)}return Array.isArray(s)&&s[0]instanceof Q?!!n.oldRefMapping.get(s[0]):!1}#x(e,n){const s=[];for(const a of e){const i=this.#x(a.items,n),r=this.#I(a,n);(r||i.length>0)&&s.push({...a,dest:r?a.dest:null,rawDict:r?a.rawDict:null,items:i,_documentData:n})}return s}#C(e){const n=[];for(const s of e){const{outline:a}=s;a?.length&&n.push(...this.#x(a,s))}this.outlineItems=n.length>0?n:null}async#T(e,n){const{dest:s,rawDict:a}=n,i=n._documentData;if(s){if(typeof s=="string"){const o=i.dedupNamedDestinations.get(s)||s;e.set("Dest",Zt(o))}else if(Array.isArray(s)){const o=s.slice();o[0]instanceof Q&&(o[0]=i.oldRefMapping.get(o[0])||o[0]),e.set("Dest",o)}return}const r=a?.get("A");if(r instanceof B){this.currentDocument=i;const o=await this.#a(r,i.document.xref);this.currentDocument=null,e.set("A",o)}}async#B(){const{outlineItems:e}=this;if(!e?.length)return;const[n,s]=this.newDict;s.setIfName("Type","Outlines");const a=o=>{for(const f of o)[f._ref]=this.newDict,f.items.length>0&&a(f.items)};a(e);const i=async(o,f)=>{let l=0;for(let c=0;c0&&u.set("Prev",o[c-1]._ref),c0){u.set("First",h.items[0]._ref),u.set("Last",h.items.at(-1)._ref);const p=await i(h.items,h._ref);h.count!==void 0&&u.set("Count",h.count<0?-p:p),l+=h.count!==void 0&&h.count<0?1:p+1}else l+=1;await this.#T(u,h);const d=(h.bold?2:0)|(h.italic?1:0);d!==0&&u.set("F",d),h.color&&(h.color[0]!==0||h.color[1]!==0||h.color[2]!==0)&&u.set("C",[h.color[0]/255,h.color[1]/255,h.color[2]/255])}return l},r=await i(e,n);s.set("First",e[0]._ref),s.set("Last",e.at(-1)._ref),s.set("Count",r),this.rootDict.set("Outlines",n)}async#F(e){this.#H(e),this.#M(e),this.#R(e),await this.#D(e);const n=this.fields;for(const s of e){let a=s.acroForm?.get("Fields")||null;!a&&s.fieldToParent.size>0&&(a=this.#_(s.fieldToParent,s.document.xref)),Array.isArray(a)&&a.length>0&&(this.currentDocument=s,await this.#P(n,a),this.currentDocument=null)}this.#E(e)}#R(e){let n=0,s=null;for(const a of e){const i=a.acroForm?.get("Q");if(!(typeof i!="number"||i===0)){if(s?.acroFormQ>0){a.acroFormQ=i;continue}if(n===0){n=i,s=a;continue}i!==n&&(s.acroFormQ||=n,a.acroFormQ=i,n=0)}}n>0&&(this.acroFormQ=n)}#H(e){let n=0,s=!1;for(const a of e){if(!a.acroForm)continue;const i=a.acroForm.get("SigFlags");typeof i=="number"&&a.hasSignatureAnnotations&&(n|=i),a.acroForm.get("NeedAppearances")===!0&&(s=!0)}this.acroFormSigFlags=n,this.acroFormNeedAppearances=s}#E(e){const n=[];for(const s of e){const a=s.acroForm?.get("CO")||null;if(!Array.isArray(a))continue;const{oldRefMapping:i}=s;for(const r of a){const o=r instanceof Q&&i.get(r);o&&n.push(o)}}this.acroFormCalculationOrder=n.length>0?n:null}#M(e){let n=null,s=null;for(const a of e){const i=a.acroForm?.get("DA")||null;if(!(!i||typeof i!="string")){if(s?.acroFormDefaultAppearance){a.acroFormDefaultAppearance=i;continue}if(!n){n=i,s=a;continue}i!==n&&(s.acroFormDefaultAppearance||=n,a.acroFormDefaultAppearance=i,n=null)}}n&&(this.acroFormDefaultAppearance=n)}async#D(e){let n=null,s=null,a=null;for(const i of e){const r=i.acroForm?.get("DR")||null;if(!(!r||!(r instanceof B))){if(a?.acroFormDefaultResources){i.acroFormDefaultResources=r;continue}if(!n){n=r,s=i.acroForm.getRaw("DR"),a=i;continue}Go(n,r)||(a.acroFormDefaultResources||=n,i.acroFormDefaultResources=r,n=null,s=null)}}n&&(this.currentDocument=a,this.acroFormDefaultResources=await this.#n(s,!0,a.document.xref),this.currentDocument=null)}#_(e,n){const s=[],a=new bt;for(const[i,r]of e.items()){if(!r){s.push(i);continue}let o=r,f=r;const l=new bt;for(;;){if(o instanceof Q){if(l.has(o))break;l.put(o)}const c=n.fetchIfRef(o);if(!(c instanceof B)||(o=c.getRaw("Parent")||null,!o))break;f=o}f instanceof Q&&!a.has(f)&&(s.push(f),a.put(f))}return s}async#P(e,n){const s=new bt,a=[{kids:n,newKids:e,pos:0,oldParentRef:null,parentRef:null,parent:null}],{document:{xref:i},oldRefMapping:r,fieldToParent:o,acroFormDefaultAppearance:f,acroFormDefaultResources:l,acroFormQ:c}=this.currentDocument,h=[],u=[];for(;a.length>0;){const m=a.at(-1),{kids:b,newKids:w,parent:x,pos:j}=m;if(j===b.length){if(a.pop(),w.length===0||!x)continue;const A=this.xref[m.parentRef.num]=this.cloneDict(x);if(A.delete("Parent"),A.delete("Kids"),await this.#n(A,!1,i),A.set("Kids",w),a.length>0){const S=a.at(-1);if(!S.parentRef&&S.oldParentRef){const F=S.parentRef=this.newRef;A.set("Parent",F),r.put(S.oldParentRef,F)}S.newKids.push(m.parentRef)}continue}const k=b[m.pos++];if(!(k instanceof Q)||s.has(k))continue;s.put(k);const y=i.fetchIfRef(k);if(!(y instanceof B))continue;if(y.has("Kids")){const A=y.get("Kids");if(!Array.isArray(A))continue;a.push({kids:A,newKids:[],pos:0,oldParentRef:k,parentRef:null,parent:y});continue}if(!o.has(k))continue;const q=r.get(k);if(!q)continue;w.push(q),!m.parentRef&&m.oldParentRef&&(m.parentRef=this.newRef,r.put(m.oldParentRef,m.parentRef));const v=this.xref[q.num];m.parentRef&&v.set("Parent",m.parentRef),f&&!v.has("DA")&&h.push(v),l&&!v.has("Kids")&&v.get("AP")instanceof B&&u.push(v),c&&!v.has("Q")&&v.set("Q",c)}for(const m of h){const b=rn({dict:m,key:"FT"});if(!ze(b,"Tx"))continue;rn({dict:m,key:"DA"})||m.set("DA",f)}const d=new Map,p=async m=>{let b=m.dict.getRaw("Resources");if(b&&=this.xrefWrapper.fetchIfRef(b),!(b instanceof B)){const w=await d.getOrInsertComputed(l,()=>this.#a(l,i));m.dict.set("Resources",w);return}for(const[w,x]of l.getRawEntries()){if(b.has(w))continue;let j=x;x instanceof Q?j=await this.#n(x,!0,i):(x instanceof B||x instanceof Pe||Array.isArray(x))&&(j=await d.getOrInsertComputed(x,()=>this.#a(x,i))),b.set(w,j)}};for(const m of u){const b=m.get("AP");for(const[,w]of b)if(w instanceof Pe)await p(w);else if(w instanceof B)for(const[,x]of w)x instanceof Pe&&await p(x)}}async#N(){if(!this.isSingleFile)return;const e=this.oldPages.find(h=>!!h);if(!e)return;const{documentData:{document:n,pageLabels:s}}=e;if(!s)return;const a=n.numPages,i=new Map,r=new Set(this.oldPages.filter(Boolean).map(({page:{pageIndex:h}})=>h));let o=null,f=-1;for(let h=0;h{const u=new B;return u.setIfName("S","D"),u.set("St",h+1),u};o=null;const c=this.pageLabels=[];for(let h=0,u=this.oldPages.length;hq!==h[v])&&m.set(k,y)}const w=n.userUnit;w!==1&&m.set("UserUnit",w),m.setIfDict("Resources",await this.#n(u,!0,l));let x=null;if(a){const k=await this.#n(a,!0,l);this.#S(k,o),Array.isArray(k)&&k.length>0&&(x=k)}const j=s.document===this.#t?this.#e?.newAnnotationsByPage?.get(n.pageIndex)?.filter(({copyLevel:k})=>(k??0)===r):null;if(j?.length){const{handler:k,task:y,imagesPromises:q}=this.#e,v=new $t,A=await hs.saveNewAnnotations(n._createPartialEvaluator(k),this.xrefWrapper,y,j,q,v);for(const[S,{data:F}]of v.items())this.xref[S.num]=F;x||=[];for(const{ref:S}of A.annotations)x.push(S)}if(m.setIfArray("Annots",x),this.useObjectStreams){const k=this.newRefCount,y=[];for(let q=b;qn.count||s.count===n.count&&s.width*s.height>n.width*n.height)&&(n=s);return{width:n.width,height:n.height}}async#z(e,n){const{width:s,height:a}=n,r=s*.1,o=Math.max(1,s-2*r),f=Math.max(1,a-2*r),l=this.newRefCount,{imageStream:c,smaskStream:h,width:u,height:d}=await _h(e,this.xrefWrapper,{closeBitmap:!0}),p=Math.min(o/u,f/d),m=u*p,b=d*p,w=(s-m)/2,x=(a-b)/2;if(h){const M=this.newRef;this.xref[M.num]=h,c.dict.set("SMask",M)}const j=this.newRef;this.xref[j.num]=c;const k=new B(this.xrefWrapper);k.set("Im0",j);const y=new B(this.xrefWrapper);y.set("XObject",k),y.set("ProcSet",[J.get("PDF"),J.get("ImageC")]);const q=`q ${jt(m)} 0 0 ${jt(b)} ${jt(w)} ${jt(x)} cm /Im0 Do Q`,v=new hn(q,new B(this.xrefWrapper)),A=this.newRef;this.xref[A.num]=v;const S=this.newRef,F=this.xref[S.num]=new B(this.xrefWrapper);if(F.setIfName("Type","Page"),F.set("MediaBox",[0,0,s,a]),F.set("Resources",y),F.set("Contents",A),this.useObjectStreams){const M=this.newRefCount,N=[];for(let D=l;D0;){const{dict:o,kids:f,parentRef:l}=r.pop();if(f.length<=i){o.set("Kids",f);for(const d of f)this.xref[d.num].set("Parent",l);continue}const c=Math.max(i,Math.ceil(f.length/i)),h=[];for(let d=0;dlc?1:0:([l],[c])=>l-c),a=d5,[i,r]=this.newDict,o=[{dict:r,entries:s,isRoot:!0}],f=n?"Names":"Nums";for(;o.length>0;){const{dict:l,entries:c,isRoot:h}=o.pop();if(c.length<=a){h||l.set("Limits",[c[0][0],c.at(-1)[0]]),l.set(f,c.flat());continue}const u=[],d=Math.max(a,Math.ceil(c.length/a));for(let m=0;m[Zt(n),s]),!0)))}#$(){const{structTreeKids:e}=this;if(!e?.length)return;const{rootDict:n}=this,s=this.newRef,a=this.xref[s.num]=new B;a.setIfName("Type","StructTreeRoot"),a.setIfArray("K",e);for(const i of e){const r=this.xref[i.num],o=r.get("Type");(!o||ze(o,"StructElem"))&&r.set("P",s)}if(this.parentTree.size>0){const i=this.#g(Array.from(this.parentTree.entries()),!1);this.xref[i.num].setIfName("Type","ParentTree"),a.set("ParentTree",i);let o=0;for(const f of this.parentTree.keys())o=Math.max(o,f+1);a.set("ParentTreeNextKey",o)}if(this.idTree.size>0){const i=this.#g(Array.from(this.idTree.entries()),!0);this.xref[i.num].setIfName("Type","IDTree"),a.set("IDTree",i)}if(this.classMap.size>0){const i=this.newRef;this.xref[i.num]=this.classMap,a.set("ClassMap",i)}if(this.roleMap.size>0){const i=this.newRef;this.xref[i.num]=this.roleMap,a.set("RoleMap",i)}if(this.namespaces.size>0){const i=this.newRef;this.xref[i.num]=Array.from(this.namespaces.values()),a.set("Namespaces",i)}if(this.structTreeAF.length>0){const i=this.newRef;this.xref[i.num]=this.structTreeAF,a.set("AF",i)}if(this.structTreePronunciationLexicon.length>0){const i=this.newRef;this.xref[i.num]=this.structTreePronunciationLexicon,a.set("PronunciationLexicon",i)}n.set("StructTreeRoot",s)}#X(){if(this.fields.length===0)return;const{rootDict:e}=this,n=this.newRef,s=this.xref[n.num]=new B;e.set("AcroForm",n),s.set("Fields",this.fields),this.acroFormNeedAppearances&&s.set("NeedAppearances",!0),this.acroFormSigFlags>0&&s.set("SigFlags",this.acroFormSigFlags),s.setIfArray("CO",this.acroFormCalculationOrder),s.setIfDefined("DR",this.acroFormDefaultResources),this.acroFormDefaultAppearance&&s.set("DA",this.acroFormDefaultAppearance),this.acroFormQ>0&&s.set("Q",this.acroFormQ)}async#Y(){const{rootDict:e}=this;e.setIfName("Type","Catalog"),e.setIfName("Version",this.version),this.#X(),this.#U(),this.#G(),this.#K(),this.#V(),this.#$(),await this.#B()}#J(){const e=new Map;if(this.isSingleFile){const n=this.oldPages.find(i=>!!i),{xref:{trailer:s}}=n.documentData.document,a=s.get("Info");for(const[i,r]of a||[])typeof r=="string"&&e.set(i,Xe(r))}e.delete("ModDate"),e.set("CreationDate",ua()),e.set("Creator","PDF.js"),e.set("Producer","Firefox"),this.author&&e.set("Author",this.author),this.title&&e.set("Title",this.title);for(const[n,s]of e)this.infoDict.set(n,Zt(s));return e}async#Q(){if(!this.isSingleFile)return[null,null,null];const e=this.oldPages.find(o=>!!o),{documentData:n}=e,{document:{xref:{trailer:s,encrypt:a}}}=n;if(!s.has("Encrypt"))return[null,null,null];const i=s.get("Encrypt");if(!(i instanceof B))return[null,null,null];this.currentDocument=n;const r=[await this.#a(i,s.xref),a,s.get("ID")];return this.currentDocument=null,r}async#Z(){const e=new $t;e.put(Q.get(0,65535),{data:null});for(let n=1,s=this.xref.length;n{this._contentLength=a.contentLength,this._isStreamingSupported=a.isStreamingSupported,this._isRangeSupported=a.isRangeSupported,this._headersCapability.resolve()},this._headersCapability.reject)}async read(){const{value:e,done:n}=await this._reader.read();return n?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class q5 extends j5{_reader=null;constructor(e,n,s){super(e,n,s);const{msgHandler:a}=e._source,i=a.sendWithStream("GetRangeReader",{begin:n,end:s});this._reader=i.getReader()}async read(){const{value:e,done:n}=await this._reader.read();return n?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class Es{#e=Promise.withResolvers();terminated=!1;constructor(e){this.name=e}get finished(){return this.#e.promise}finish(){this.#e.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}const al=class al{static setup(e,n){let s=!1;e.on("test",a=>{s||(s=!0,e.send("test",a instanceof Uint8Array))}),e.on("configure",a=>{Lu(a.verbosity)}),e.on("GetDocRequest",a=>this.createDocumentHandler(a,n))}static createDocumentHandler(e,n){let s,a=!1,i=null;const r=new Set,o=zu(),{docId:f,apiVersion:l}=e,c="6.3.289";if(l!==c)throw new Error(`The API version "${l}" does not match the Worker version "${c}".`);const h=(y,q)=>`The \`${y}.prototype\` contains unexpected enumerable property "${q}", thus breaking e.g. \`for...in\` iteration of ${y}s.`;for(const y in{})throw new Error(h("Object",y));for(const y in[])throw new Error(h("Array",y));const u=f+"_worker";let d=new Ec(u,f,n);function p(){if(a)throw new Error("Worker was terminated")}function m(y){r.add(y)}function b(y){y.finish(),r.delete(y)}async function w(y){await s.initDocument(y);const q=await s.ensureDoc("isPureXfa");if(q){const F=new Es("loadXfaResources");m(F),await s.ensureDoc("loadXfaResources",[d,F]),b(F)}const[v,A]=await Promise.all([s.ensureDoc("numPages"),s.ensureDoc("fingerprints")]),S=q?await s.ensureDoc("htmlForXfa"):null;return{numPages:v,fingerprints:A,htmlForXfa:S}}async function x({data:y,password:q,disableAutoFetch:v,rangeChunkSize:A,docBaseUrl:S,enableXfa:F,evaluatorOptions:M}){const N={source:null,disableAutoFetch:v,docBaseUrl:S,docId:f,enableXfa:F,evaluatorOptions:M,handler:d,length:0,password:q,rangeChunkSize:A};if(y)return N.source=y,new Mo(N);const D=new k5({msgHandler:d}),$=D.getFullReader(),{promise:K,resolve:oe,reject:me}=Promise.withResolvers();let X,ee=[];i=Be=>D.cancelAllRequests(Be),$.headersReady.then(()=>{if($.isRangeSupported){N.source=D,N.length=$.contentLength,N.disableAutoFetch||=$.isStreamingSupported,X=new e5(N);for(const Be of ee)X.sendProgressiveData(Be);ee=null,oe(X),i=null}}).catch(Be=>{me(Be),i=null});async function ye(){let Be=0;for(;;){const{value:ae,done:$e}=await $.read();if(p(),$e)break;Be+=ae.byteLength,$.isStreamingSupported||d.send("DocProgress",{loaded:Be,total:$.contentLength}),X?X.sendProgressiveData(ae):ee.push(ae)}X||(N.source=Wc(ee),ee=null,X=new Mo(N),oe(X)),i=null}return ye().catch(Be=>{me(Be),i=null}),K}async function j(y){const q=new Es(`PasswordException: response ${y.code}`);m(q);try{return(await d.sendWithPromise("PasswordRequest",y)).password}finally{Promise.resolve().then(()=>{b(q)})}}function k(y){function q(S){p(),d.send("GetDoc",{pdfInfo:S})}function v(S){a||(S instanceof Os?j(S).then(F=>{s.updatePassword(F),A()}).catch(()=>{d.send("DocException",S)}):d.send("DocException",zn(S)))}function A(){p(),w(!1).then(q,function(S){if(p(),!(S instanceof Da)){v(S);return}s.requestLoadedStream().then(function(){p(),w(!0).then(q,v)},v)})}p(),x(y).then(function(S){if(a)throw S.terminate(new fn("Worker was terminated.")),new Error("Worker was terminated");s=S,s.requestLoadedStream(!0).then(F=>{d.send("DataLoaded",{length:F.bytes.byteLength})},()=>{})}).then(A,v)}return d.on("GetPage",async function({pageIndex:y}){const q=await s.getPage(y),[v,A,S,F]=await Promise.all([s.ensure(q,"rotate"),s.ensure(q,"ref"),s.ensure(q,"userUnit"),s.ensure(q,"view")]);return{rotate:v,ref:A,refStr:A?.toString()??null,userUnit:S,view:F}}),d.on("GetPageIndex",function({num:y,gen:q}){return s.ensureCatalog("getPageIndex",[Q.get(y,q)])}),d.on("GetDestinations",function(){return s.ensureCatalog("destinations")}),d.on("GetDestination",function({id:y}){return s.ensureCatalog("getDestination",[y])}),d.on("GetPageLabels",function(){return s.ensureCatalog("pageLabels")}),d.on("GetPageLayout",function(){return s.ensureCatalog("pageLayout")}),d.on("GetPageMode",function(){return s.ensureCatalog("pageMode")}),d.on("GetViewerPreferences",function(){return s.ensureCatalog("viewerPreferences")}),d.on("GetOpenAction",function(){return s.ensureCatalog("openAction")}),d.on("GetAttachments",function(){return s.ensureCatalog("attachments")}),d.on("GetAttachmentContent",async function(y){let q;for(;;){const v=q?await j(q):null;try{return v&&s.updatePassword(v),await s.ensureCatalog("attachmentContent",[y])}catch(A){if(A instanceof Os){q=A;continue}throw A}}}),d.on("GetDocJSActions",function(){return s.ensureCatalog("jsActions")}),d.on("GetPageJSActions",async function({pageIndex:y}){const q=await s.getPage(y);return s.ensure(q,"jsActions")}),d.on("GetAnnotationsByType",async function({types:y,pageIndexesToSkip:q}){const[v,A]=await Promise.all([s.ensureDoc("numPages"),s.ensureDoc("annotationGlobals")]);if(!A)return null;const S=[],F=[];let M=null;try{for(let D=0,$=v;D<$;D++)q?.has(D)||(M||(M=new Es("GetAnnotationsByType"),m(M)),S.push(s.getPage(D).then(K=>K.collectAnnotationsByType(d,M,y,F,A))));return await Promise.all(S),(await Promise.all(F)).filter(Boolean)}finally{M&&b(M)}}),d.on("GetOutline",function(){return s.ensureCatalog("documentOutline")}),d.on("GetOptionalContentConfig",function(){return s.ensureCatalog("optionalContentConfig")}),d.on("GetPermissions",function(){return s.ensureCatalog("permissions")}),d.on("GetMetadata",function(){return Promise.all([s.ensureDoc("documentInfo"),s.ensureCatalog("metadata"),s.ensureCatalog("hasStructTree")])}),d.on("GetMarkInfo",function(){return s.ensureCatalog("markInfo")}),d.on("GetData",async function(){return(await s.requestLoadedStream()).bytes}),d.on("GetAnnotations",async function({pageIndex:y,intent:q}){const v=await s.getPage(y),A=new Es(`GetAnnotations: page ${y}`);m(A);try{return await v.getAnnotationsData(d,A,q)}finally{b(A)}}),d.on("GetFieldObjects",async function(){return(await s.ensureDoc("fieldObjects"))?.allFields||null}),d.on("GetSignatures",function(){return s.ensureDoc("signatures")}),d.on("GetSignatureData",function(y){return s.ensureDoc("getSignatureData",[y])}),d.on("HasJSActions",function(){return s.ensureDoc("hasJSActions")}),d.on("GetCalculationOrderIds",function(){return s.ensureDoc("calculationOrderIds")}),d.on("ExtractPages",async function({pageInfos:y,annotationStorage:q}){if(!y)return H("extractPages: nothing to extract."),null;Array.isArray(y)||(y=[y]);let v=0;for(const S of y)if(!S.image)if(S.document===null)S.document=s.pdfDocument;else if(ArrayBuffer.isView(S.document)){const F=new Mo({source:S.document,docId:`${f}_extractPages_${v++}`,handler:d,password:S.password??null,evaluatorOptions:Object.assign({},s.evaluatorOptions)});let M=!1,N=!0;for(;;)try{await F.requestLoadedStream(),await F.initDocument(M);break}catch($){if($ instanceof Da)if(M===!1){M=!0;continue}else N=!1,H("extractPages: XRefParseException.");else if($ instanceof Os)try{const K=await j($);F.updatePassword(K)}catch{N=!1,H("extractPages: invalid password.")}else N=!1,H("extractPages: invalid document.");if(!N)break}N||(S.document=null),await F.ensureDoc("isPureXfa")?(S.document=null,H("extractPages does not support pure XFA documents.")):S.document=F.pdfDocument}else H("extractPages: invalid document.");let A;try{const S=new b5;return A=new Es(`ExtractPages: ${y.length} page(s)`),m(A),await S.extractPages(y,q,s.pdfDocument,d,A)}catch(S){return H(`extractPages: "${S}".`),null}finally{A&&b(A)}}),d.on("SaveDocument",async function({isPureXfa:y,numPages:q,annotationStorage:v,filename:A}){const S=[s.requestLoadedStream(),s.ensureCatalog("acroForm"),s.ensureCatalog("acroFormRef"),s.ensureDoc("startXRef"),s.ensureDoc("xref"),s.ensureCatalog("structTreeRoot")],F=new $t,M=[],N=y?null:kf(v),[D,$,K,oe,me,X]=await Promise.all(S),ee=me.trailer.getRaw("Root")||null;let ye;if(N){X?await X.canUpdateStructTree({pdfManager:s,newAnnotationsByPage:N})&&(ye=X):await oa.canCreateStructureTree({catalogRef:ee,pdfManager:s,newAnnotationsByPage:N})&&(ye=null);const z=hs.generateImages(v.values(),me,s.evaluatorOptions.isOffscreenCanvasSupported),te=ye===void 0?M:[];for(const[je,he]of N)te.push(s.getPage(je).then(ie=>{const Fe=new Es(`Save (editor): page ${je}`);return m(Fe),ie.saveNewAnnotations(d,Fe,he,z,F).finally(()=>{b(Fe)})}));ye===null?M.push(Promise.all(te).then(async()=>{await oa.createStructureTree({newAnnotationsByPage:N,xref:me,catalogRef:ee,pdfManager:s,changes:F})})):ye&&M.push(Promise.all(te).then(async()=>{await ye.updateStructureTree({newAnnotationsByPage:N,pdfManager:s,changes:F})}))}if(y)M.push(s.ensureDoc("serializeXfaData",[v]));else for(let z=0;z{b(je)})}));const Be=await Promise.all(M);let ae=null;if(y){if(ae=Be[0],!ae)return D.bytes}else if(F.size===0)return D.bytes;const $e=K&&$ instanceof B&&F.values().some(z=>z.needAppearances),tt=$ instanceof B&&$.get("XFA")||null;let G=null,_=!1;if(Array.isArray(tt)){for(let z=0,te=tt.length;z{me.resetNewTemporaryRef()})}),d.on("GetOperatorList",function({pageId:y,pageIndex:q,intent:v,cacheKey:A,annotationStorage:S,modifiedIds:F},M){s.getPage(y).then(function(N){const D=new Es(`GetOperatorList: page ${q}`);m(D);const $=o>=hr.INFOS?Date.now():0;N.getOperatorList({handler:d,sink:M,task:D,intent:v,cacheKey:A,annotationStorage:S,modifiedIds:F,pageIndex:q}).then(K=>{$&&ut(`${D.name}; time=${Date.now()-$}ms, len=${K.length}`),M.close()},K=>{D.terminated||M.error(K)}).finally(()=>{b(D)})})}),d.on("GetTextContent",function({pageId:y,pageIndex:q,includeMarkedContent:v,disableNormalization:A},S){s.getPage(y).then(function(F){const M=new Es("GetTextContent: page "+q);m(M);const N=o>=hr.INFOS?Date.now():0;F.extractTextContent({handler:d,task:M,sink:S,includeMarkedContent:v,disableNormalization:A}).then(()=>{N&&ut(`${M.name}; time=${Date.now()-N}ms`),S.close()},D=>{M.terminated||S.error(D)}).finally(()=>{b(M)})})}),d.on("GetStructTree",async function({pageIndex:y}){const q=await s.getPage(y);return s.ensure(q,"getStructTree")}),d.on("FontFallback",function({id:y}){return s.fontFallback(y,d)}),d.on("Cleanup",function(){return s.cleanup(!0)}),d.on("Terminate",async function(){a=!0;const y=[];if(s){s.terminate(new fn("Worker was terminated."));const q=s.cleanup();y.push(q),s=null}else _f();i?.(new fn("Worker was terminated."));for(const q of r)y.push(q.finished),q.terminate();await Promise.all(y),d.destroy(),d=null}),d.on("Ready",function(){k(e),e=null}),u}static initializeFromPort(e){const n=new Ec("worker","main",e);this.setup(n,e),n.send("ready",null)}};typeof window>"u"&&!Eu&&typeof self<"u"&&typeof self.postMessage=="function"&&"onmessage"in self&&al.initializeFromPort(self);let xf=al;globalThis.pdfjsWorker={WorkerMessageHandler:xf}; +//# sourceMappingURL=pdf.worker.js.map diff --git a/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map new file mode 100644 index 000000000..dbfffb03d --- /dev/null +++ b/suites-experimental/pdf-viewer/dist/assets/pdf.worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.worker.js","sources":["../node_modules/pdfjs-dist/build/pdf.worker.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 6.3.289\n * pdfjsBuild = 1c8020a7d\n */\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = (/* unused pure expression or super */ null && ({\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n}));\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = (/* unused pure expression or super */ null && ({\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n INK_COLOR_AND_OPACITY: 24,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n}));\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n RICHMEDIA: 27\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationRenditionOperation = {\n PLAY_OR_RESUME: 0,\n STOP: 1,\n PAUSE: 2,\n RESUME: 3,\n PLAY: 4\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nclass FeatureTest {\n static get isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return shadow(this, \"isLittleEndian\", view32[0] === 1);\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCanvasFilterSupported() {\n let ctx;\n if (this.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n }\n return shadow(this, \"isCanvasFilterSupported\", ctx?.filter !== undefined);\n }\n static get isAlphaColorInputSupported() {\n return shadow(this, \"isAlphaColorInputSupported\", false);\n }\n static get isBackdropFilterSupported() {\n return shadow(this, \"isBackdropFilterSupported\", typeof CSS !== \"undefined\" && CSS.supports(\"backdrop-filter\", \"blur(1px)\"));\n }\n}\nclass Util {\n static get hexNums() {\n return shadow(this, \"hexNums\", Array.from({\n length: 256\n }, (_, n) => n.toString(16).padStart(2, \"0\")));\n }\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[b]}`;\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\nconst makeSet = () => new Set();\nif (typeof Iterator.prototype.join !== \"function\") {\n Iterator.prototype.join = function (separator) {\n return [...this].join(separator);\n };\n}\n\n;// ./src/core/primitives.js\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\nfunction clearPrimitiveCaches() {\n CmdCache = Object.create(null);\n NameCache = Object.create(null);\n RefCache = Object.create(null);\n}\nclass Name {\n constructor(name) {\n this.name = name;\n }\n static get(name) {\n return NameCache[name] ||= new Name(name);\n }\n}\nclass Cmd {\n constructor(cmd) {\n this.cmd = cmd;\n }\n static get(cmd) {\n return CmdCache[cmd] ||= new Cmd(cmd);\n }\n}\nconst nonSerializable = () => nonSerializable;\nclass Dict {\n __nonSerializable__ = nonSerializable;\n #map = new Map();\n objId = null;\n suppressEncryption = false;\n xref;\n constructor(xref = null) {\n this.xref = xref;\n }\n assignXref(newXref) {\n this.xref = newXref;\n }\n get size() {\n return this.#map.size;\n }\n #getValue(isAsync, key1, key2) {\n let value = this.#map.get(key1);\n if (value === undefined && key2 !== undefined) {\n value = this.#map.get(key2);\n }\n if (value instanceof Ref && this.xref) {\n return isAsync ? this.xref.fetchAsync(value, this.suppressEncryption) : this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n get(key1, key2) {\n return this.#getValue(false, key1, key2);\n }\n async getAsync(key1, key2) {\n return this.#getValue(true, key1, key2);\n }\n getArray(key1, key2) {\n let value = this.#getValue(false, key1, key2);\n if (Array.isArray(value)) {\n value = value.slice();\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n getRaw(key) {\n return this.#map.get(key);\n }\n getKeys() {\n return this.#map.keys();\n }\n getRawValues() {\n return this.#map.values();\n }\n getRawEntries() {\n return this.#map.entries();\n }\n set(key, value) {\n this.#map.set(key, value);\n }\n setIfNotExists(key, value) {\n if (!this.has(key)) {\n this.set(key, value);\n }\n }\n setIfNumber(key, value) {\n if (typeof value === \"number\") {\n this.set(key, value);\n }\n }\n setIfArray(key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n this.set(key, value);\n }\n }\n setIfDefined(key, value) {\n if (value !== undefined && value !== null) {\n this.set(key, value);\n }\n }\n setIfName(key, value) {\n if (typeof value === \"string\") {\n this.set(key, Name.get(value));\n } else if (value instanceof Name) {\n this.set(key, value);\n }\n }\n setIfDict(key, value) {\n if (value instanceof Dict) {\n this.set(key, value);\n }\n }\n has(key) {\n return this.#map.has(key);\n }\n *[Symbol.iterator]() {\n for (const [key, value] of this.#map) {\n yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value];\n }\n }\n static get empty() {\n const emptyDict = new Dict(null);\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n static merge({\n xref,\n dictArray,\n mergeSubDicts = false\n }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of dict.getRawEntries()) {\n const property = properties.getOrInsertComputed(key, makeArr);\n if (property.length && !(mergeSubDicts && value instanceof Dict)) {\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict.set(name, values[0]);\n continue;\n }\n const subDict = new Dict(xref);\n for (const dict of values) {\n for (const [key, value] of dict.getRawEntries()) {\n subDict.setIfNotExists(key, value);\n }\n }\n if (subDict.size > 0) {\n mergedDict.set(name, subDict);\n }\n }\n properties.clear();\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n clone() {\n const dict = new Dict(this.xref);\n for (const [key, value] of this.#map) {\n dict.set(key, value);\n }\n return dict;\n }\n delete(key) {\n this.#map.delete(key);\n }\n}\nclass Ref {\n #str;\n constructor(str, num, gen) {\n this.#str = str;\n this.num = num;\n this.gen = gen;\n }\n toString() {\n return this.#str;\n }\n static fromString(str) {\n const ref = RefCache[str];\n if (ref) {\n return ref;\n }\n const m = /^(\\d+)R(\\d*)$/.exec(str);\n if (!m || m[1] === \"0\") {\n return null;\n }\n const num = parseInt(m[1], 10),\n gen = !m[2] ? 0 : parseInt(m[2], 10);\n return RefCache[str] = new Ref(str, num, gen);\n }\n static get(num, gen) {\n const str = gen === 0 ? `${num}R` : `${num}R${gen}`;\n return RefCache[str] ||= new Ref(str, num, gen);\n }\n}\nclass RefSet {\n #set = new Set();\n constructor(parent = null) {\n if (parent) {\n for (const refStr of parent) {\n this.#set.add(refStr);\n }\n }\n }\n has(ref) {\n return this.#set.has(ref.toString());\n }\n put(ref) {\n this.#set.add(ref.toString());\n }\n remove(ref) {\n this.#set.delete(ref.toString());\n }\n [Symbol.iterator]() {\n return this.#set.keys();\n }\n clear() {\n this.#set.clear();\n }\n}\nclass RefMap {\n #map = new Map();\n get size() {\n return this.#map.size;\n }\n get(ref) {\n return this.#map.get(ref.toString());\n }\n has(ref) {\n return this.#map.has(ref.toString());\n }\n put(ref, obj) {\n this.#map.set(ref.toString(), obj);\n }\n putAlias(ref, aliasRef) {\n this.#map.set(ref.toString(), this.get(aliasRef));\n }\n getOrPutComputed(ref, callback) {\n const map = this.#map,\n refStr = ref.toString();\n if (!map.has(refStr)) {\n map.set(refStr, callback(ref));\n }\n return map.get(refStr);\n }\n [Symbol.iterator]() {\n return this.#map.values();\n }\n clear() {\n this.#map.clear();\n }\n *values() {\n yield* this.#map.values();\n }\n *items() {\n for (const [ref, value] of this.#map) {\n yield [Ref.fromString(ref), value];\n }\n }\n *keys() {\n for (const ref of this.#map.keys()) {\n yield Ref.fromString(ref);\n }\n }\n}\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\nfunction isDict(v, type) {\n return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\n;// ./src/core/base_stream.js\n\nclass BaseStream {\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n async getImageData(length, decoderOptions) {\n return this.getBytes(length, decoderOptions);\n }\n async asyncGetBytes() {\n unreachable(\"Abstract method `asyncGetBytes` called\");\n }\n get isAsync() {\n return false;\n }\n get isAsyncDecoder() {\n return false;\n }\n get isImageStream() {\n return false;\n }\n get canAsyncDecodeImageFromBuffer() {\n return false;\n }\n async getTransferableImage(width, height) {\n return null;\n }\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n }\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n skip(n) {\n this.pos += n || 1;\n }\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n clone() {\n unreachable(\"Abstract method `clone` called\");\n }\n getBaseStreams() {\n return null;\n }\n getOriginalStream() {\n return this.stream?.getOriginalStream() || this;\n }\n}\n\n;// ./src/shared/css_utils.js\nconst CONTROL_CHAR_REGEXP = /\\p{Cc}/u;\nfunction isCSSString(str) {\n const quote = str[0];\n if (str.length < 2 || quote !== `\"` && quote !== `'` || str.at(-1) !== quote) {\n return false;\n }\n const end = str.length - 1;\n for (let i = 1; i < end; i++) {\n const char = str[i];\n if (char === quote || CONTROL_CHAR_REGEXP.test(char)) {\n return false;\n }\n if (char === \"\\\\\") {\n if (++i >= end || CONTROL_CHAR_REGEXP.test(str[i])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction serializeFontFamily(fontFamily) {\n if (isCSSString(fontFamily)) {\n return fontFamily;\n }\n const escaped = fontFamily.replaceAll(/[\"\\\\\\p{Cc}]/gu, char => char === `\"` || char === \"\\\\\" ? `\\\\${char}` : `\\\\${char.codePointAt(0).toString(16)} `);\n return `\"${escaped}\"`;\n}\n\n;// ./src/core/string_utils.js\n\nfunction isAscii(str) {\n return typeof str === \"string\" && (!str || /^[\\x00-\\x7F]*$/.test(str));\n}\nfunction stringToAsciiOrUTF16BE(str) {\n return str === null || str === undefined || isAscii(str) ? str : stringToUTF16String(str, true);\n}\nfunction stringToUTF16HexString(str) {\n const buf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(Util.hexNums[char >> 8 & 0xff], Util.hexNums[char & 0xff]);\n }\n return buf.join(\"\");\n}\nfunction stringToUTF16String(str, bigEndian = false) {\n const buf = [];\n if (bigEndian) {\n buf.push(\"\\xFE\\xFF\");\n }\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n }\n return buf.join(\"\");\n}\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nconst PDFStringTextDecoders = Object.create(null);\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = PDFStringTextDecoders[encoding] ??= new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\n;// ./src/core/core_utils.js\n\n\n\n\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst RESOURCES_KEYS_OPERATOR_LIST = [\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"];\nconst RESOURCES_KEYS_TEXT_CONTENT = [\"ExtGState\", \"Font\", \"Properties\", \"XObject\"];\nfunction getLookupTableFactory(initializer, useArray = false) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = useArray ? [] : Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\nfunction arrayBuffersToBytes(arr) {\n const length = arr.length;\n if (length === 0) {\n return new Uint8Array(0);\n }\n if (length === 1) {\n return new Uint8Array(arr[0]);\n }\n let dataLength = 0;\n for (let i = 0; i < length; i++) {\n dataLength += arr[i].byteLength;\n }\n const data = new Uint8Array(dataLength);\n let pos = 0;\n for (let i = 0; i < length; i++) {\n const item = new Uint8Array(arr[i]);\n data.set(item, pos);\n pos += item.byteLength;\n }\n return data;\n}\nasync function fetchBinaryData(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n }\n return response.bytes();\n}\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true\n}) {\n let values;\n const visited = new RefSet();\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n (values ||= []).push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\nfunction getParentToUpdate(dict, ref, xref) {\n const visited = new RefSet();\n const firstDict = dict;\n const result = {\n dict: null,\n ref: null\n };\n while (dict instanceof Dict && !visited.has(ref)) {\n visited.put(ref);\n if (dict.has(\"T\")) {\n break;\n }\n ref = dict.getRaw(\"Parent\");\n if (!(ref instanceof Ref)) {\n return result;\n }\n dict = xref.fetch(ref);\n }\n if (dict instanceof Dict && dict !== firstDict) {\n result.dict = dict;\n result.ref = ref;\n }\n return result;\n}\nfunction deepCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (a instanceof Ref && b instanceof Ref) {\n return isRefsEqual(a, b);\n }\n if (a instanceof Name && b instanceof Name) {\n return a.name === b.name;\n }\n if (a instanceof Dict && b instanceof Dict) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value1] of a.getRawEntries()) {\n const value2 = b.getRaw(key);\n if (value2 === undefined || !deepCompare(value1, value2)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0, ii = a.length; i < ii; i++) {\n if (!deepCompare(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nconst ROMAN_NUMBER_MAP = [\"\", \"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\"];\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n const roman = \"M\".repeat(number / 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 / 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 / 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10];\n return lowerCase ? roman.toLowerCase() : roman;\n}\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\nfunction isBooleanArray(arr, len) {\n return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"boolean\");\n}\nfunction isNumberArray(arr, len) {\n if (Array.isArray(arr)) {\n return (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n }\n return ArrayBuffer.isView(arr) && !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) && (len === null || arr.length === len);\n}\nfunction lookupMatrix(arr, fallback) {\n return isNumberArray(arr, 6) ? arr : fallback;\n}\nfunction lookupRect(arr, fallback) {\n return isNumberArray(arr, 4) ? arr : fallback;\n}\nfunction lookupNormalRect(arr, fallback) {\n return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\n}\nfunction parseXFAPath(path) {\n const positionPattern = /^(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return {\n name: m[1],\n pos: parseInt(m[2], 10)\n };\n }\n return {\n name: component,\n pos: 0\n };\n });\n}\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16).padStart(2, \"0\")}`);\n start = i + 1;\n }\n }\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n return buffer.join(\"\");\n}\nfunction escapeString(str) {\n return str.replaceAll(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code &&= stringToPDFString(code, true).replaceAll(\"\\x00\", \"\");\n if (code) {\n list.push(code.trim());\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n if (parent) {\n parents.remove(parent);\n }\n}\nfunction collectActions(xref, dict, eventType) {\n const actions = new Map();\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false\n });\n if (additionalActionsDicts) {\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const [key, rawActionDict] of additionalActions.getRawEntries()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const parents = new RefSet();\n const list = [];\n _collectJS(rawActionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(action, list);\n }\n }\n }\n }\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(\"Action\", list);\n }\n }\n return actions.size ? actions : null;\n}\nconst XMLEntities = {\n 0x3c: \"<\",\n 0x3e: \">\",\n 0x26: \"&\",\n 0x22: \""\",\n 0x27: \"'\"\n};\nfunction* codePointIter(str) {\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n i++;\n }\n yield char;\n }\n}\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xffff) {\n i++;\n }\n start = i + 1;\n }\n }\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n return buffer.join(\"\");\n}\nfunction validateFontName(fontFamily, mustWarn = false) {\n const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n if (m && m[1] === m[2]) {\n const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n if (re.test(fontFamily.slice(1, -1))) {\n if (mustWarn) {\n warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n }\n return false;\n }\n if (CONTROL_CHAR_REGEXP.test(fontFamily)) {\n if (mustWarn) {\n warn(`FontFamily contains control characters: ${fontFamily}.`);\n }\n return false;\n }\n } else {\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(?:\\d|-[\\d-])/.test(ident) || !/^[\\w\\\\-]+$/.test(ident)) {\n if (mustWarn) {\n warn(`FontFamily contains invalid : ${fontFamily}.`);\n }\n return false;\n }\n }\n }\n return true;\n}\nfunction normalizeCSSFontFamily(fontFamily) {\n return fontFamily.replaceAll(/( +)(\\d)?/g, (_, spaces, digit) => digit ?? \" \");\n}\nfunction validateCSSFont(cssFontInfo) {\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"1000\", \"normal\", \"bold\", \"bolder\", \"lighter\"]);\n const {\n fontFamily,\n fontWeight,\n italicAngle\n } = cssFontInfo;\n if (!validateFontName(fontFamily, true)) {\n return false;\n }\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT;\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString();\n return true;\n}\nfunction recoverJsURL(str) {\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n const jsUrl = regex.exec(str);\n if (jsUrl?.[2]) {\n return {\n url: jsUrl[2],\n newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\"\n };\n }\n return null;\n}\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n return value.toFixed(2);\n}\nfunction getNewAnnotationsMap(annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const newAnnotationsByPage = new Map();\n for (const [key, value] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n newAnnotationsByPage.getOrInsertComputed(value.pageIndex, makeArr).push(value);\n }\n return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nfunction getRotationMatrix(rotation, width, height) {\n switch (rotation) {\n case 90:\n return [0, 1, -1, 0, width, 0];\n case 180:\n return [-1, 0, 0, -1, width, height];\n case 270:\n return [0, -1, 1, 0, 0, height];\n default:\n throw new Error(\"Invalid rotation\");\n }\n}\nfunction getSizeInBytes(x) {\n return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\n;// ./external/qcms/qcms_utils.js\nconst ALPHA_MASK = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1 ? 0xff000000 : 0x000000ff;\nconst RGB_MASK = ~ALPHA_MASK;\nclass QCMS {\n static #memoryArray = null;\n static _memory = null;\n static _destBuffer = null;\n static _destOffset = 0;\n static _keepAlpha = false;\n static get _memoryArray() {\n const array = this.#memoryArray;\n if (array?.byteLength) {\n return array;\n }\n return this.#memoryArray = new Uint8Array(this._memory.buffer);\n }\n}\nfunction copy_result(ptr, len) {\n const {\n _destBuffer,\n _destOffset,\n _keepAlpha,\n _memoryArray\n } = QCMS;\n if (!_keepAlpha) {\n _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);\n return;\n }\n const count = len >> 2;\n const destStart = _destBuffer.byteOffset + _destOffset;\n if (((destStart | ptr) & 3) === 0) {\n const dest32 = new Uint32Array(_destBuffer.buffer, destStart, count);\n const src32 = new Uint32Array(QCMS._memory.buffer, ptr, count);\n for (let i = 0; i < count; i++) {\n dest32[i] = dest32[i] & ALPHA_MASK | src32[i] & RGB_MASK;\n }\n return;\n }\n for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 4, j += 4) {\n _destBuffer[j] = _memoryArray[i];\n _destBuffer[j + 1] = _memoryArray[i + 1];\n _destBuffer[j + 2] = _memoryArray[i + 2];\n }\n}\n\n;// ./external/qcms/qcms.js\n\nconst DataType = Object.freeze({\n RGB8: 0,\n \"0\": \"RGB8\",\n RGBA8: 1,\n \"1\": \"RGBA8\",\n BGRA8: 2,\n \"2\": \"BGRA8\",\n Gray8: 3,\n \"3\": \"Gray8\",\n GrayA8: 4,\n \"4\": \"GrayA8\",\n CMYK: 5,\n \"5\": \"CMYK\"\n});\nconst Intent = Object.freeze({\n Perceptual: 0,\n \"0\": \"Perceptual\",\n RelativeColorimetric: 1,\n \"1\": \"RelativeColorimetric\",\n Saturation: 2,\n \"2\": \"Saturation\",\n AbsoluteColorimetric: 3,\n \"3\": \"AbsoluteColorimetric\"\n});\nfunction qcms_convert_array(transformer, src, add_alpha) {\n const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.qcms_convert_array(transformer, ptr0, len0, add_alpha);\n}\nfunction qcms_convert_four(transformer, src1, src2, src3, src4) {\n const ret = wasm.qcms_convert_four(transformer, src1, src2, src3, src4);\n return ret >>> 0;\n}\nfunction qcms_convert_one(transformer, src) {\n const ret = wasm.qcms_convert_one(transformer, src);\n return ret >>> 0;\n}\nfunction qcms_convert_three(transformer, src1, src2, src3) {\n const ret = wasm.qcms_convert_three(transformer, src1, src2, src3);\n return ret >>> 0;\n}\nfunction qcms_drop_transformer(transformer) {\n wasm.qcms_drop_transformer(transformer);\n}\nfunction qcms_transformer_from_memory(mem, in_type, intent) {\n const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\n return ret >>> 0;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg___wbindgen_throw_344f42d3211c4765: function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_copy_result_0d15f3bf9d9012ae: function (arg0, arg1) {\n copy_result(arg0 >>> 0, arg1 >>> 0);\n },\n __wbindgen_init_externref_table: function () {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n \"./qcms_bg.js\": import0\n };\n}\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nlet cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n});\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\nlet WASM_VECTOR_LEN = 0;\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return {\n instance,\n module\n };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case 'basic':\n case 'cors':\n case 'default':\n return true;\n }\n return false;\n }\n}\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({\n module\n } = module);\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({\n module_or_path\n } = module_or_path);\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === 'string' || typeof Request === 'function' && module_or_path instanceof Request || typeof URL === 'function' && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const {\n instance,\n module\n } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance, module);\n}\n\n;// ./src/shared/math_clamp.js\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\n;// ./src/core/colorspace.js\n\n\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0;\n const xScaled = new Uint16Array(w2);\n if (alpha01 === 1) {\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0; i < h2; i++) {\n const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n for (let j = 0; j < w2; j++) {\n dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n }\n }\n } else {\n const COMPONENTS = 4;\n const w1Scanline = w1 * COMPONENTS;\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n for (let j = 0; j < w2; j++) {\n const oldIndex = xScaled[j];\n dest[newIndex++] = buf[oldIndex];\n dest[newIndex++] = buf[oldIndex + 1];\n dest[newIndex++] = buf[oldIndex + 2];\n }\n }\n }\n}\nfunction copyRgbaImage(src, dest, alpha01) {\n if (alpha01 === 1) {\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0, ii = src32.length; i < ii; i++) {\n dest32[i] |= src32[i] & rgbMask;\n }\n } else {\n let j = 0;\n for (let i = 0, ii = src.length; i < ii; i += 4) {\n dest[j++] = src[i];\n dest[j++] = src[i + 1];\n dest[j++] = src[i + 2];\n }\n }\n}\nfunction isDefaultDecodeHelper(decode, expectedLen) {\n if (!Array.isArray(decode)) {\n return true;\n }\n const decodeLen = decode.length;\n if (decodeLen < expectedLen) {\n warn(\"Decode map length is too short.\");\n return true;\n }\n if (decodeLen > expectedLen) {\n info(\"Truncating too long decode map.\");\n decode.length = expectedLen;\n }\n return false;\n}\nclass ColorSpace {\n static #rgbBuf = new Uint8ClampedArray(3);\n constructor(name, numComps) {\n this.name = name;\n this.numComps = numComps;\n }\n getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) {\n this.getRgbItem(src, srcOffset, output, 0);\n return output;\n }\n getRgbHex(src, srcOffset) {\n const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf);\n return Util.makeHexColor(buffer[0], buffer[1], buffer[2]);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n numComps\n } = this;\n for (let i = 0, srcOffset = 0; i < count; i++, srcOffset += numComps) {\n this.getRgbItem(src, srcOffset, dest, destOffset);\n destOffset += 3 + alpha01;\n }\n }\n isPassthrough(bits) {\n return false;\n }\n isDefaultDecode(decode, bpc) {\n return ColorSpace.isDefaultDecode(decode, this.numComps);\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n if (!needsResizing) {\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else if (!needsResizing) {\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n }\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n static isDefaultDecode(decode, numComps) {\n if (isDefaultDecodeHelper(decode, numComps * 2)) {\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n}\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n base,\n numComps,\n tintFn\n } = this;\n const baseNumComps = base.numComps;\n const tinted = new Float32Array(count * baseNumComps);\n for (let i = 0, srcOffset = 0, tintedOffset = 0; i < count; i++) {\n tintFn(src, srcOffset, tinted, tintedOffset);\n srcOffset += numComps;\n tintedOffset += baseNumComps;\n }\n base.getRgbItems(tinted, count, dest, destOffset, alpha01);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n}\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n isDefaultDecode(decode, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\nclass IndexedCS extends ColorSpace {\n #rgbLookup;\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.highVal = highVal;\n const count = highVal + 1;\n const length = base.numComps * count;\n const palette = new Uint8Array(length);\n if (lookup instanceof BaseStream) {\n palette.set(lookup.getBytes(length));\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n palette[i] = lookup.charCodeAt(i);\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n this.#rgbLookup = new Uint8ClampedArray(count * 3);\n base.getRgbBuffer(palette, 0, count, this.#rgbLookup, 0, 8, 0);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const rgbLookup = this.#rgbLookup;\n const pos = MathClamp(Math.round(src[srcOffset]), 0, this.highVal) * 3;\n dest[destOffset] = rgbLookup[pos];\n dest[destOffset + 1] = rgbLookup[pos + 1];\n dest[destOffset + 2] = rgbLookup[pos + 2];\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const {\n highVal\n } = this;\n const rgbLookup = this.#rgbLookup;\n for (let i = 0; i < count; ++i) {\n const pos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * 3;\n dest[destOffset++] = rgbLookup[pos];\n dest[destOffset++] = rgbLookup[pos + 1];\n dest[destOffset++] = rgbLookup[pos + 2];\n destOffset += alpha01;\n }\n }\n isDefaultDecode(decode, bpc) {\n if (isDefaultDecodeHelper(decode, 2)) {\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decode[0] === 0 && decode[1] === (1 << bpc) - 1;\n }\n}\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n}\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n}\nclass DeviceRgbaCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGBA\", 4);\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n if (originalHeight !== height || originalWidth !== width) {\n resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n copyRgbaImage(comps, dest, alpha01);\n }\n }\n}\nclass DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, 1, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n this.G = gamma || 1;\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n }\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n }\n if (this.G < 1) {\n info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n this.G = 1;\n }\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = src[srcOffset] * scale;\n const AG = A ** this.G;\n const L = this.YW * AG;\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass CalRGBCS extends ColorSpace {\n static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n static #tempNormalizeMatrix = new Float32Array(3);\n static #tempConvertMatrix1 = new Float32Array(3);\n static #tempConvertMatrix2 = new Float32Array(3);\n static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n }\n const [XW, YW, ZW] = this.whitePoint = whitePoint;\n const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n }\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n this.blackPoint = new Float32Array(3);\n }\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n this.GR = this.GG = this.GB = 1;\n }\n }\n #matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n #toFlat(sourceWhitePoint, LMS, result) {\n result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n }\n #toD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n }\n #sRGBTransferFunction(color) {\n if (color <= 0.0031308) {\n return MathClamp(12.92 * color, 0, 1);\n }\n if (color >= 0.99554525) {\n return 1;\n }\n return MathClamp((1 + 0.055) * color ** (1 / 2.4) - 0.055, 0, 1);\n }\n #decodeL(L) {\n if (L < 0) {\n return -this.#decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * CalRGBCS.#DECODE_L_CONSTANT;\n }\n #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n const zeroDecodeL = this.#decodeL(0);\n const X_DST = zeroDecodeL;\n const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n const Y_DST = zeroDecodeL;\n const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n const Z_DST = zeroDecodeL;\n const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = MathClamp(src[srcOffset] * scale, 0, 1);\n const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\n const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\n const AGR = A === 1 ? 1 : A ** this.GR;\n const BGG = B === 1 ? 1 : B ** this.GG;\n const CGB = C === 1 ? 1 : C ** this.GB;\n const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n const XYZ = CalRGBCS.#tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n const SRGB = CalRGBCS.#tempConvertMatrix1;\n this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n}\nclass LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\n }\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n #fn_g(x) {\n return x >= 6 / 29 ? x ** 3 : 108 / 841 * (x - 4 / 29);\n }\n #decode(value, high1, low2, high2) {\n return low2 + value * (high2 - low2) / high1;\n }\n #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = this.#decode(Ls, maxVal, 0, 100);\n as = this.#decode(as, maxVal, this.amin, this.amax);\n bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n }\n if (as > this.amax) {\n as = this.amax;\n } else if (as < this.amin) {\n as = this.amin;\n }\n if (bs > this.bmax) {\n bs = this.bmax;\n } else if (bs < this.bmin) {\n bs = this.bmin;\n }\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n const X = this.XW * this.#fn_g(L);\n const Y = this.YW * this.#fn_g(M);\n const Z = this.ZW * this.#fn_g(N);\n let r, g, b;\n if (this.ZW < 1) {\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, false, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n isDefaultDecode(decode, bpc) {\n return true;\n }\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n}\n\n;// ./src/core/icc_colorspace.js\n\n\n\n\nfunction fetchSync(url) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return xhr.response;\n}\nclass IccColorSpace extends ColorSpace {\n #transformer;\n #convertPixel;\n static #useWasm = true;\n static #wasmUrl = null;\n static #finalizer = null;\n constructor(iccProfile, name, numComps) {\n if (!IccColorSpace.isUsable) {\n throw new Error(\"No ICC color space support\");\n }\n super(name, numComps);\n let inType;\n switch (numComps) {\n case 1:\n inType = DataType.Gray8;\n this.#convertPixel = (src, srcOffset) => qcms_convert_one(this.#transformer, src[srcOffset] * 255);\n break;\n case 3:\n inType = DataType.RGB8;\n this.#convertPixel = (src, srcOffset) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255);\n break;\n case 4:\n inType = DataType.CMYK;\n this.#convertPixel = (src, srcOffset) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255);\n break;\n default:\n throw new Error(`Unsupported number of components: ${numComps}`);\n }\n this.#transformer = qcms_transformer_from_memory(iccProfile, inType, Intent.Perceptual);\n if (!this.#transformer) {\n throw new Error(\"Failed to create ICC color space\");\n }\n IccColorSpace.#finalizer ||= new FinalizationRegistry(transformer => {\n qcms_drop_transformer(transformer);\n });\n IccColorSpace.#finalizer.register(this, this.#transformer);\n }\n getRgbHex(src, srcOffset) {\n const color = this.#convertPixel(src, srcOffset);\n return Util.makeHexColor(color >> 16, color >> 8 & 0xff, color & 0xff);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const color = this.#convertPixel(src, srcOffset);\n dest[destOffset] = color >> 16;\n dest[destOffset + 1] = color >> 8 & 0xff;\n dest[destOffset + 2] = color & 0xff;\n }\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const {\n numComps\n } = this;\n const length = count * numComps;\n const scaled = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n scaled[i] = src[i] * 255;\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n QCMS._keepAlpha = alpha01 === 1;\n qcms_convert_array(this.#transformer, scaled, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n src = src.subarray(srcOffset, srcOffset + count * this.numComps);\n if (bits !== 8) {\n const scale = 255 / ((1 << bits) - 1);\n for (let i = 0, ii = src.length; i < ii; i++) {\n src[i] *= scale;\n }\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n QCMS._keepAlpha = alpha01 === 1 && dest.buffer !== src.buffer;\n qcms_convert_array(this.#transformer, src, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n static setOptions({\n useWasm,\n useWorkerFetch,\n wasmUrl\n }) {\n if (!useWorkerFetch) {\n this.#useWasm = false;\n return;\n }\n this.#useWasm = useWasm;\n this.#wasmUrl = wasmUrl;\n }\n static get isUsable() {\n let isUsable = false;\n if (this.#useWasm) {\n if (this.#wasmUrl) {\n try {\n this._module = initSync({\n module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`)\n });\n isUsable = !!this._module;\n QCMS._memory = this._module.memory;\n } catch (e) {\n warn(`ICCBased color space: \"${e}\".`);\n }\n } else {\n warn(\"No ICC color space support due to missing `wasmUrl` API option\");\n }\n }\n return shadow(this, \"isUsable\", isUsable);\n }\n}\nclass CmykICCBasedCS extends IccColorSpace {\n static #iccUrl;\n constructor() {\n const iccProfile = new Uint8Array(fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`));\n super(iccProfile, \"DeviceCMYK\", 4);\n }\n static setOptions({\n iccUrl\n }) {\n this.#iccUrl = iccUrl;\n }\n static get isUsable() {\n let isUsable = false;\n if (IccColorSpace.isUsable) {\n if (this.#iccUrl) {\n isUsable = true;\n } else {\n warn(\"No CMYK ICC profile support due to missing `iccUrl` API option\");\n }\n }\n return shadow(this, \"isUsable\", isUsable);\n }\n}\n\n;// ./src/core/stream.js\n\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n get length() {\n return this.end - this.start;\n }\n get isEmpty() {\n return this.length === 0;\n }\n getByte() {\n return this.pos >= this.end ? -1 : this.bytes[this.pos++];\n }\n getBytes(length) {\n const pos = this.pos;\n const endPos = !length ? this.end : Math.min(pos + length, this.end);\n this.pos = endPos;\n return this.bytes.subarray(pos, endPos);\n }\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n reset() {\n this.pos = this.start;\n }\n moveStart() {\n this.start = this.pos;\n }\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n clone() {\n return new Stream(this.bytes.buffer, this.start, this.length, this.dict?.clone());\n }\n}\nclass StringStream extends Stream {\n constructor(str, dict = null) {\n super(stringToBytes(str), NaN, NaN, dict);\n }\n}\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\n;// ./src/core/chunked_stream.js\n\n\n\n\nclass ChunkedStream extends Stream {\n progressiveDataLength = 0;\n _lastSuccessfulEnsureByteChunk = -1;\n _loadedChunks = new Set();\n constructor(length, chunkSize, manager) {\n super(new Uint8Array(length), 0, length, null);\n this.chunkSize = chunkSize;\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n }\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this._lastSuccessfulEnsureByteChunk) {\n return;\n }\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this._lastSuccessfulEnsureByteChunk = chunk;\n }\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks;\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n getBytes(length) {\n const pos = this.pos;\n const endPos = !length ? this.end : Math.min(pos + length, this.end);\n if (endPos > this.progressiveDataLength) {\n this.ensureRange(pos, endPos);\n }\n this.pos = endPos;\n return this.bytes.subarray(pos, endPos);\n }\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n return this.numChunksLoaded === this.numChunks || this.getMissingChunks().length === 0;\n },\n configurable: true\n });\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n getBaseStreams() {\n return [this];\n }\n}\nclass ChunkedStreamManager {\n #aborted = false;\n currRequestId = 0;\n _chunksNeededByRequest = new Map();\n #loadedStreamCapability = Promise.withResolvers();\n _promisesByRequest = new Map();\n _requestsByChunk = new Map();\n constructor(pdfStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfStream = pdfStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n }\n async sendRequest(begin, end) {\n const rangeReader = this.pdfStream.getRangeReader(begin, end);\n let chunks = [];\n while (true) {\n const {\n value,\n done\n } = await rangeReader.read();\n if (this.#aborted) {\n chunks = null;\n return;\n }\n if (done) {\n break;\n }\n chunks.push(value);\n }\n if (chunks.length === 0 && this.disableAutoFetch) {\n return;\n }\n const data = arrayBuffersToBytes(chunks);\n chunks = null;\n this.onReceiveData({\n chunk: data.buffer,\n begin\n });\n }\n requestAllChunks(noFetch = false) {\n if (!noFetch) {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n }\n return this.#loadedStreamCapability.promise;\n }\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n const capability = Promise.withResolvers();\n this._promisesByRequest.set(requestId, capability);\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n const requestIds = this._requestsByChunk.getOrInsertComputed(chunk, () => {\n chunksToRequest.push(chunk);\n return [];\n });\n requestIds.push(requestId);\n }\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n return capability.promise.catch(reason => {\n if (this.#aborted) {\n return;\n }\n throw reason;\n });\n }\n getStream() {\n return this.stream;\n }\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n chunksToRequest.sort((a, b) => a - b);\n return this._requestChunks(chunksToRequest);\n }\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({\n beginChunk,\n endChunk: prevChunk + 1\n });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({\n beginChunk,\n endChunk: chunk + 1\n });\n }\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n onReceiveData(args) {\n const {\n chunkSize,\n length,\n stream\n } = this;\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? stream.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = end < length ? Math.floor(end / chunkSize) : Math.ceil(end / chunkSize);\n if (isProgressive) {\n stream.onReceiveProgressiveData(chunk);\n } else {\n stream.onReceiveData(begin, chunk);\n }\n if (stream.isDataLoaded) {\n this.#loadedStreamCapability.resolve(stream);\n }\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (stream.numChunksLoaded === 1) {\n const lastChunk = stream.numChunks - 1;\n if (!stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n this.msgHandler.send(\"DocProgress\", {\n loaded: MathClamp(stream.numChunksLoaded * chunkSize, stream.progressiveDataLength, length),\n total: length\n });\n }\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n abort(reason) {\n this.#aborted = true;\n this.pdfStream?.cancelAllRequests(reason);\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n this.#loadedStreamCapability.reject(reason);\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const xorMask = zeroMapping ^ oneMapping;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; ++i) {\n for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;\n dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;\n dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;\n dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;\n dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;\n dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;\n dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;\n dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;\n dest[destPos + 3] = s3 >>> 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;\n dest[destPos + 3] = s3 << 8 | alphaMask;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/core/image_resizer.js\n\n\n\nconst MIN_IMAGE_DIM = 2048;\nconst MAX_IMAGE_DIM = 32768;\nconst MAX_ERROR = 128;\nclass ImageResizer {\n static #goodSquareLength = MIN_IMAGE_DIM;\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(imgData, isMask) {\n this._imgData = imgData;\n this._isMask = isMask;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/bmp\") : Promise.resolve(false));\n }\n static needsToBeResized(width, height) {\n if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) {\n return false;\n }\n const {\n MAX_DIM\n } = this;\n if (width > MAX_DIM || height > MAX_DIM) {\n return true;\n }\n const area = width * height;\n if (this._hasMaxArea) {\n return area > this.MAX_AREA;\n }\n if (area < this.#goodSquareLength ** 2) {\n return false;\n }\n if (this._areGoodDims(width, height)) {\n this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height)));\n return false;\n }\n this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2;\n return area > maxArea;\n }\n static getReducePower(width, height, maxArea = Infinity) {\n if (!Number.isInteger(width) || width <= 0 || !Number.isInteger(height) || height <= 0) {\n return 0;\n }\n const area = width * height;\n if (!this.needsToBeResized(width, height)) {\n if (area > maxArea) {\n return Math.ceil(Math.log2(area / maxArea));\n }\n return 0;\n }\n const {\n MAX_DIM,\n MAX_AREA\n } = this;\n const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(area / Math.min(maxArea, MAX_AREA)));\n return Math.max(0, Math.ceil(Math.log2(minFactor)));\n }\n static getReducePowerForJPX(width, height, componentsCount) {\n return this.getReducePower(width, height, 2 ** 30 / (componentsCount * 4));\n }\n static get MAX_DIM() {\n return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n }\n static get MAX_AREA() {\n this._hasMaxArea = true;\n return shadow(this, \"MAX_AREA\", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n }\n static set MAX_AREA(area) {\n if (area >= 0) {\n this._hasMaxArea = true;\n shadow(this, \"MAX_AREA\", area);\n }\n }\n static setOptions({\n canvasMaxAreaInBytes = -1,\n isImageDecoderSupported = false\n }) {\n if (!this._hasMaxArea) {\n this.MAX_AREA = canvasMaxAreaInBytes >> 2;\n }\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n static _areGoodDims(width, height) {\n try {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.fillRect(0, 0, 1, 1);\n const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n canvas.width = canvas.height = 1;\n return opacity !== 0;\n } catch {\n return false;\n }\n }\n static _guessMax(start, end, tolerance, defaultHeight) {\n while (start + tolerance + 1 < end) {\n const middle = Math.floor((start + end) / 2);\n const height = defaultHeight || middle;\n if (this._areGoodDims(middle, height)) {\n start = middle;\n } else {\n end = middle;\n }\n }\n return start;\n }\n static async createImage(imgData, isMask = false) {\n return new ImageResizer(imgData, isMask)._createImage();\n }\n async _createImage() {\n const {\n _imgData: imgData\n } = this;\n const {\n width,\n height\n } = imgData;\n if (width * height * 4 > MAX_INT_32) {\n const result = this.#rescaleImageData();\n if (result) {\n return result;\n }\n }\n const data = this._encodeBMP();\n let decoder, imagePromise;\n if (await ImageResizer.canUseImageDecoder) {\n decoder = new ImageDecoder({\n data,\n type: \"image/bmp\",\n preferAnimation: false,\n transfer: [data.buffer]\n });\n imagePromise = decoder.decode().catch(reason => {\n warn(`BMP image decoding failed: ${reason}`);\n return createImageBitmap(new Blob([this._encodeBMP().buffer], {\n type: \"image/bmp\"\n }));\n }).finally(() => {\n decoder.close();\n });\n } else {\n imagePromise = createImageBitmap(new Blob([data.buffer], {\n type: \"image/bmp\"\n }));\n }\n const {\n MAX_AREA,\n MAX_DIM\n } = ImageResizer;\n const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA));\n const firstFactor = Math.max(minFactor, 2);\n const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor;\n const N = Math.floor(Math.log2(factor));\n const steps = new Array(N + 2).fill(2);\n steps[0] = firstFactor;\n steps.splice(-1, 1, factor / (1 << N));\n let newWidth = width;\n let newHeight = height;\n const result = await imagePromise;\n let bitmap = result.image || result;\n for (const step of steps) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n newWidth = Math.floor(newWidth / step);\n newHeight = Math.floor(newHeight / step);\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap.close();\n bitmap = canvas.transferToImageBitmap();\n }\n imgData.data = null;\n imgData.bitmap = bitmap;\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n #rescaleImageData() {\n const {\n _imgData: imgData\n } = this;\n const {\n data,\n width,\n height,\n kind\n } = imgData;\n const rgbaSize = width * height * 4;\n const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32));\n const newWidth = width >> K;\n const newHeight = height >> K;\n let rgbaData;\n let maxHeight = height;\n try {\n rgbaData = new Uint8Array(rgbaSize);\n } catch {\n let n = Math.floor(Math.log2(rgbaSize + 1));\n while (true) {\n try {\n rgbaData = new Uint8Array(2 ** n - 1);\n break;\n } catch {\n n -= 1;\n }\n }\n maxHeight = Math.floor((2 ** n - 1) / (width * 4));\n const newSize = width * maxHeight * 4;\n if (newSize < rgbaData.length) {\n rgbaData = new Uint8Array(newSize);\n }\n }\n const src32 = new Uint32Array(rgbaData.buffer);\n const dest32 = new Uint32Array(newWidth * newHeight);\n let srcPos = 0;\n let newIndex = 0;\n const step = Math.ceil(height / maxHeight);\n const remainder = height % maxHeight === 0 ? height : height % maxHeight;\n for (let k = 0; k < step; k++) {\n const h = k < step - 1 ? maxHeight : remainder;\n ({\n srcPos\n } = convertToRGBA({\n kind,\n src: data,\n dest: src32,\n width,\n height: h,\n inverseDecode: this._isMask,\n srcPos\n }));\n for (let i = 0, ii = h >> K; i < ii; i++) {\n const buf = src32.subarray((i << K) * width);\n for (let j = 0; j < newWidth; j++) {\n dest32[newIndex++] = buf[j << K];\n }\n }\n }\n if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\n imgData.data = dest32;\n imgData.width = newWidth;\n imgData.height = newHeight;\n imgData.kind = ImageKind.RGBA_32BPP;\n return null;\n }\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0);\n imgData.data = null;\n imgData.bitmap = canvas.transferToImageBitmap();\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n _encodeBMP() {\n const {\n width,\n height,\n kind\n } = this._imgData;\n let data = this._imgData.data;\n let bitPerPixel;\n let colorTable = new Uint8Array(0);\n let maskTable = colorTable;\n let compression = 0;\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n {\n bitPerPixel = 1;\n colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n const rowLen = width + 7 >> 3;\n const rowSize = rowLen + 3 & -4;\n if (rowLen !== rowSize) {\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) {\n newData.set(data.subarray(i, i + rowLen), k);\n }\n data = newData;\n }\n break;\n }\n case ImageKind.RGB_24BPP:\n {\n bitPerPixel = 24;\n if (width & 3) {\n const rowLen = 3 * width;\n const rowSize = rowLen + 3 & -4;\n const extraLen = rowSize - rowLen;\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) {\n const row = data.subarray(i, i + rowLen);\n for (let j = 0; j < rowLen; j += 3) {\n newData[k++] = row[j + 2];\n newData[k++] = row[j + 1];\n newData[k++] = row[j];\n }\n k += extraLen;\n }\n data = newData;\n } else {\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const tmp = data[i];\n data[i] = data[i + 2];\n data[i + 2] = tmp;\n }\n }\n break;\n }\n case ImageKind.RGBA_32BPP:\n bitPerPixel = 32;\n compression = 3;\n maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n const view = new DataView(maskTable.buffer);\n if (FeatureTest.isLittleEndian) {\n view.setUint32(0, 0x000000ff, true);\n view.setUint32(4, 0x0000ff00, true);\n view.setUint32(8, 0x00ff0000, true);\n view.setUint32(12, 0xff000000, true);\n } else {\n view.setUint32(0, 0xff000000, true);\n view.setUint32(4, 0x00ff0000, true);\n view.setUint32(8, 0x0000ff00, true);\n view.setUint32(12, 0x000000ff, true);\n }\n break;\n default:\n throw new Error(\"invalid format\");\n }\n let i = 0;\n const headerLength = 40 + maskTable.length;\n const fileLength = 14 + headerLength + colorTable.length + data.length;\n const bmpData = new Uint8Array(fileLength);\n const view = new DataView(bmpData.buffer);\n view.setUint16(i, 0x4d42, true);\n i += 2;\n view.setUint32(i, fileLength, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setUint32(i, 14 + headerLength + colorTable.length, true);\n i += 4;\n view.setUint32(i, headerLength, true);\n i += 4;\n view.setInt32(i, width, true);\n i += 4;\n view.setInt32(i, -height, true);\n i += 4;\n view.setUint16(i, 1, true);\n i += 2;\n view.setUint16(i, bitPerPixel, true);\n i += 2;\n view.setUint32(i, compression, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setUint32(i, colorTable.length / 4, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n bmpData.set(maskTable, i);\n i += maskTable.length;\n bmpData.set(colorTable, i);\n i += colorTable.length;\n bmpData.set(data, i);\n return bmpData;\n }\n}\n\n;// ./src/core/decode_stream.js\n\n\n\nconst emptyBuffer = new Uint8Array(0);\nclass DecodeStream extends BaseStream {\n buffer = emptyBuffer;\n bufferLength = 0;\n eof = false;\n minBufferLength = 512;\n pos = 0;\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n if (maybeMinBufferLength) {\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n readBlock() {\n unreachable(\"Abstract method `readBlock` called\");\n }\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return this.buffer = buffer2;\n }\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n getBytes(length, decoderOptions = null) {\n const pos = this.pos;\n let end;\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock(decoderOptions);\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock(decoderOptions);\n }\n end = this.bufferLength;\n }\n this.pos = end;\n return this.buffer.subarray(pos, end);\n }\n async getImageData(length, decoderOptions) {\n if (!this.canAsyncDecodeImageFromBuffer) {\n return this.isAsyncDecoder ? this.decodeImage(null, length, decoderOptions) : this.getBytes(length, decoderOptions);\n }\n const data = await this.stream.asyncGetBytes();\n return this.decodeImage(data, length, decoderOptions);\n }\n async asyncGetBytesFromDecompressionStream(name) {\n this.stream.reset();\n const bytes = this.stream.isAsync ? await this.stream.asyncGetBytes() : this.stream.getBytes();\n try {\n const {\n readable,\n writable\n } = new DecompressionStream(name);\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n const chunks = [];\n let totalLength = 0;\n for await (const chunk of readable) {\n chunks.push(chunk);\n totalLength += chunk.byteLength;\n }\n const data = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n data.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return {\n decompressed: data,\n compressed: bytes\n };\n } catch {\n return {\n decompressed: null,\n compressed: bytes\n };\n }\n }\n reset() {\n this.pos = 0;\n }\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n clone() {\n while (!this.eof) {\n this.readBlock();\n }\n return new Stream(this.buffer, 0, this.bufferLength, this.dict?.clone());\n }\n getBaseStreams() {\n return this.stream ? this.stream.getBaseStreams() : null;\n }\n}\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n streams = streams.filter(s => s instanceof BaseStream && !s.isImageStream);\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n }\n super(maybeLength);\n this.streams = streams;\n this._onError = onError;\n }\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict?.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\n;// ./src/core/colorspace_utils.js\n\n\n\n\n\n\nclass ColorSpaceUtils {\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache,\n asyncIfNotCached = false\n }) {\n const options = {\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n };\n let csName, csRef, parsedCS;\n if (cs instanceof Ref) {\n csRef = cs;\n const cachedCS = globalColorSpaceCache.getByRef(csRef) || localColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n cs = xref.fetch(cs);\n }\n if (cs instanceof Name) {\n csName = cs.name;\n const cachedCS = localColorSpaceCache.getByName(csName);\n if (cachedCS) {\n return cachedCS;\n }\n }\n try {\n parsedCS = this.#parse(cs, options);\n } catch (ex) {\n if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\n return Promise.reject(ex);\n }\n throw ex;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedCS);\n if (csRef) {\n globalColorSpaceCache.set(null, csRef, parsedCS);\n }\n }\n return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\n }\n static #subParse(cs, options) {\n const {\n globalColorSpaceCache\n } = options;\n let csRef;\n if (cs instanceof Ref) {\n csRef = cs;\n const cachedCS = globalColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n }\n const parsedCS = this.#parse(cs, options);\n if (csRef) {\n globalColorSpaceCache.set(null, csRef, parsedCS);\n }\n return parsedCS;\n }\n static #parse(cs, options) {\n const {\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache\n } = options;\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"DeviceRGBA\":\n return this.rgba;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"Pattern\":\n return new PatternCS(null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this.#parse(resourcesCS, options);\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n warn(`Unrecognized ColorSpace: ${cs.name}`);\n return this.gray;\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const isRef = cs[1] instanceof Ref;\n if (isRef) {\n const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\n if (cachedCS) {\n return cachedCS;\n }\n }\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n if (IccColorSpace.isUsable) {\n try {\n const iccCS = new IccColorSpace(stream.getBytes(), \"ICCBased\", numComps);\n if (isRef) {\n globalColorSpaceCache.set(null, cs[1], iccCS);\n }\n return iccCS;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`ICCBased color space (${cs[1]}): \"${ex}\".`);\n }\n }\n const altRaw = dict.getRaw(\"Alternate\");\n if (altRaw) {\n const altCS = this.#subParse(altRaw, options);\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.gray;\n } else if (numComps === 3) {\n return this.rgb;\n } else if (numComps === 4) {\n return this.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n baseCS &&= this.#subParse(baseCS, options);\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this.#subParse(cs[1], options);\n const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this.#subParse(cs[2], options);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n warn(`Unimplemented ColorSpace object: ${mode}`);\n return this.gray;\n }\n }\n warn(`Unrecognized ColorSpace object: ${cs}`);\n return this.gray;\n }\n static get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n }\n static get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n }\n static get rgba() {\n return shadow(this, \"rgba\", new DeviceRgbaCS());\n }\n static get cmyk() {\n if (CmykICCBasedCS.isUsable) {\n try {\n return shadow(this, \"cmyk\", new CmykICCBasedCS());\n } catch {\n warn(\"CMYK fallback: DeviceCMYK\");\n }\n }\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n }\n}\n\n;// ./src/core/jpg.js\n\n\n\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(msg, \"JpegError\");\n }\n}\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\nconst dctZigZag = 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]);\nconst dctCos1 = 4017;\nconst dctSin1 = 799;\nconst dctCos3 = 3406;\nconst dctSin3 = 2276;\nconst dctCos6 = 1567;\nconst dctSin6 = 3784;\nconst dctSqrt2 = 5793;\nconst dctSqrt1d2 = 2896;\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{\n children: [],\n index: 0\n }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\nfunction decodeScan(data, view, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return bitsData >> bitsCount & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === 0xdc && parseDNLMarker) {\n offset += 2;\n const scanLines = view.getUint16(offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n }\n } else if (nextByte === 0xd9) {\n if (parseDNLMarker) {\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) {\n throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n }\n }\n throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n }\n throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n }\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = n << 1 | readBit();\n length--;\n }\n return n;\n }\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << length - 1) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0:\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1:\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = mcu / mcusPerLine | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n function decodeBlock(component, decode, mcu) {\n blockRow = mcu / component.blocksPerLine | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n let mcu = 0,\n fileMarker;\n const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n let h, v;\n while (mcu <= mcuExpected) {\n const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, view, offset);\n if (!fileMarker) {\n break;\n }\n if (fileMarker.invalid) {\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n offset += 2;\n } else {\n break;\n }\n }\n return offset - startOffset;\n}\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n for (let row = 0; row < 64; row += 8) {\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n p0 *= qt[row];\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 512 >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n v0 = dctSqrt2 * p0 + 128 >> 8;\n v1 = dctSqrt2 * p4 + 128 >> 8;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n v0 = v0 + v1 + 1 >> 1;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 8192 >> 14;\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = t + 2056 >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n v0 = dctSqrt2 * p0 + 2048 >> 12;\n v1 = dctSqrt2 * p4 + 2048 >> 12;\n v2 = p2;\n v3 = p6;\n v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n v5 = p3;\n v6 = p5;\n v0 = (v0 + v1 + 1 >> 1) + 4112;\n v1 = v0 - v1;\n t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n v3 = t;\n v4 = v4 + v6 + 1 >> 1;\n v6 = v4 - v6;\n v7 = v7 + v5 + 1 >> 1;\n v5 = v7 - v5;\n v0 = v0 + v3 + 1 >> 1;\n v3 = v0 - v3;\n v1 = v1 + v2 + 1 >> 1;\n v2 = v1 - v2;\n t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n v7 = t;\n t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n v6 = t;\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\nfunction findNextFileMarker(data, view, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n if (currentPos >= maxPos) {\n return null;\n }\n const currentMarker = view.getUint16(currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos\n };\n }\n let newMarker = view.getUint16(newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null;\n }\n newMarker = view.getUint16(newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos\n };\n}\nfunction prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (const component of frame.components) {\n const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n}\nfunction readDataBlock(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n let endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n const array = data.subarray(offset, endOffset);\n return {\n appData: array,\n oldOffset: offset,\n newOffset: offset + array.length\n };\n}\nfunction skipData(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n const endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n return fileMarker.offset;\n }\n return endOffset;\n}\nclass JpegImage {\n constructor(options) {\n this._colorTransform = options?.colorTransform ?? -1;\n }\n static canUseImageDecoder(data, colorTransform = -1) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const info = {\n width: 0,\n height: 0,\n exifStart: 0,\n exifEnd: 0\n };\n let offset = 0;\n let numComponents = null;\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n switch (fileMarker) {\n case 0xffe1:\n const {\n appData,\n oldOffset,\n newOffset\n } = readDataBlock(data, view, offset);\n offset = newOffset;\n if (appData[0] === 0x45 && appData[1] === 0x78 && appData[2] === 0x69 && appData[3] === 0x66 && appData[4] === 0 && appData[5] === 0) {\n if (info.exifStart) {\n throw new JpegError(\"Duplicate EXIF-blocks found.\");\n }\n info.exifStart = oldOffset + 6;\n info.exifEnd = newOffset;\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n continue;\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n info.height = view.getUint16(offset + (2 + 1));\n info.width = view.getUint16(offset + (2 + 1 + 2));\n numComponents = data[offset + (2 + 1 + 2 + 2)];\n break markerLoop;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n }\n offset = skipData(data, view, offset);\n fileMarker = view.getUint16(offset);\n offset += 2;\n }\n if (numComponents === 4) {\n return null;\n }\n if (numComponents === 3 && colorTransform === 0) {\n return null;\n }\n return info;\n }\n parse(data, {\n dnlScanLines = null\n } = {}) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const maxOffset = data.length - 1;\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n case 0xfffe:\n const {\n appData,\n newOffset\n } = readDataBlock(data, view, offset);\n offset = newOffset;\n if (fileMarker === 0xffe0) {\n if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n jfif = {\n version: {\n major: appData[5],\n minor: appData[6]\n },\n densityUnits: appData[7],\n xDensity: appData[8] << 8 | appData[9],\n yDensity: appData[10] << 8 | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n if (fileMarker === 0xffee) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n adobe = {\n version: appData[5] << 8 | appData[6],\n flags0: appData[7] << 8 | appData[8],\n flags1: appData[9] << 8 | appData[10],\n transformCode: appData[11]\n };\n }\n }\n break;\n case 0xffdb:\n const quantizationTablesLength = view.getUint16(offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = view.getUint16(offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2;\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = view.getUint16(offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = view.getUint16(offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n case 0xffc4:\n const huffmanLength = view.getUint16(offset);\n offset += 2;\n for (i = 2; i < huffmanLength;) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n case 0xffdd:\n offset += 2;\n resetInterval = view.getUint16(offset);\n offset += 2;\n break;\n case 0xffda:\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n offset += 2;\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(data, view, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, {\n dnlScanLines: ex.scanLines\n });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n case 0xffdc:\n offset += 4;\n break;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n default:\n const nextFileMarker = findNextFileMarker(data, view, offset - 2, offset - 3);\n if (nextFileMarker?.invalid) {\n warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= maxOffset) {\n warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n break markerLoop;\n }\n throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n }\n if (offset < maxOffset) {\n fileMarker = view.getUint16(offset);\n offset += 2;\n } else {\n fileMarker = 0;\n }\n }\n if (!frame) {\n throw new JpegError(\"JpegImage.parse - no frame data found.\");\n }\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (const component of frame.components) {\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n #getLinearizedBlockData(width, height) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8;\n let lastComponentScaleX;\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = component.blocksPerLine + 1 << 3;\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | x * componentScaleX;\n xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;\n }\n lastComponentScaleX = componentScaleX;\n }\n for (y = 0; y < height; y++) {\n j = 0 | y * componentScaleY;\n index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n return data;\n }\n get _isColorConversionNeeded() {\n if (this.adobe) {\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n return false;\n } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n return false;\n }\n return true;\n }\n if (this._colorTransform === 1) {\n return true;\n }\n return false;\n }\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n _convertYccToRgba(data, out) {\n for (let i = 0, j = 0, ii = data.length; i < ii; i += 3, j += 4) {\n const Y = data[i];\n const Cb = data[i + 1];\n const Cr = data[i + 2];\n out[j] = Y - 179.456 + 1.402 * Cr;\n out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n out[j + 2] = Y - 226.816 + 1.772 * Cb;\n out[j + 3] = 255;\n }\n return out;\n }\n _convertYcckToRgb(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgb(data);\n }\n _convertYcckToRgba(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgba(data);\n }\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n }\n return data;\n }\n _convertCmykToRgb(data) {\n const count = data.length / 4;\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\n return data.subarray(0, count * 3);\n }\n _convertCmykToRgba(data) {\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length / 4, data, 0, 8, 1);\n if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\n for (let i = 3, ii = data.length; i < ii; i += 4) {\n data[i] = 255;\n }\n }\n return data;\n }\n getData({\n width,\n height,\n forceRGBA = false,\n forceRGB = false\n }) {\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n const data = this.#getLinearizedBlockData(width, height);\n if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n const len = data.length * (forceRGBA ? 4 : 3);\n const rgbaData = new Uint8ClampedArray(len);\n let offset = 0;\n if (forceRGBA) {\n grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n } else {\n for (const grayColor of data) {\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n }\n }\n return rgbaData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n if (forceRGBA) {\n const rgbaData = new Uint8ClampedArray(data.length / 3 * 4);\n return this._convertYccToRgba(data, rgbaData);\n }\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGBA) {\n return this._convertYcckToRgba(data);\n }\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGBA) {\n return this._convertCmykToRgba(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\n;// ./src/core/jpeg_stream.js\n\n\n\n\n\nclass JpegStream extends DecodeStream {\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/jpeg\") : Promise.resolve(false));\n }\n static setOptions({\n isImageDecoderSupported = false\n }) {\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n readBlock() {\n this.decodeImage();\n }\n get jpegOptions() {\n const jpegOptions = {\n colorTransform: undefined\n };\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n return shadow(this, \"jpegOptions\", jpegOptions);\n }\n #skipUselessBytes(data) {\n for (let i = 0, ii = data.length - 1; i < ii; i++) {\n if (data[i] === 0xff && data[i + 1] === 0xd8) {\n if (i > 0) {\n data = data.subarray(i);\n }\n break;\n }\n }\n return data;\n }\n decodeImage(bytes) {\n if (this.eof) {\n return this.buffer;\n }\n bytes = this.#skipUselessBytes(bytes || this.bytes);\n const jpegImage = new JpegImage(this.jpegOptions);\n jpegImage.parse(bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGBA: this.forceRGBA,\n forceRGB: this.forceRGB\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n async getTransferableImage(width, height) {\n if (!(await JpegStream.canUseImageDecoder)) {\n return null;\n }\n const jpegOptions = this.jpegOptions;\n let decoder;\n try {\n const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes;\n if (!bytes) {\n return null;\n }\n let data = this.#skipUselessBytes(bytes);\n const useImageDecoder = JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform);\n if (!useImageDecoder) {\n return null;\n }\n const {\n width: frameWidth,\n height: frameHeight\n } = useImageDecoder;\n const reducePower = ImageResizer.getReducePower(frameWidth, frameHeight);\n if ((frameWidth !== width || frameHeight !== height) && (reducePower || !frameHeight)) {\n return null;\n }\n if (useImageDecoder.exifStart) {\n data = data.slice();\n data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd);\n }\n const init = {\n data,\n type: \"image/jpeg\",\n preferAnimation: false\n };\n if (reducePower) {\n const factor = 2 ** reducePower;\n init.desiredWidth = Math.ceil(frameWidth / factor);\n init.desiredHeight = Math.ceil(frameHeight / factor);\n }\n decoder = new ImageDecoder(init);\n return (await decoder.decode()).image;\n } catch (reason) {\n warn(`getTransferableImage - failed: \"${reason}\".`);\n return null;\n } finally {\n decoder?.close();\n }\n }\n get isImageStream() {\n return true;\n }\n}\n\n;// ./src/core/operator_list.js\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] ||= [];\n }\n state[pattern.at(-1)] = {\n checkFn,\n iterateFn,\n processFn\n };\n}\nconst InitialState = [];\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n}, function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = map[q].x + map[q].y * imgWidth << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n const img = {\n width: imgWidth,\n height: imgHeight\n };\n if (context.isOffscreenCanvasSupported) {\n const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n img.bitmap = canvas.transferToImageBitmap();\n img.data = null;\n } else {\n img.kind = ImageKind.RGBA_32BPP;\n img.data = imgData;\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [img, map]);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n}, function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n let count = Math.floor((i - iFirstSave) / 4);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break;\n }\n }\n }\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n interpolate: maskParams.interpolate,\n count: maskParams.count,\n transform: transformArgs\n });\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n}, function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n return false;\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false;\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n return false;\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - (i - iFirstBeginText) % 5;\n }\n let iFirst = iFirstBeginText;\n if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n return iEndText + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.constructPath, OPS.restore], context => {\n const argsArray = context.argsArray;\n const iFirstConstructPath = context.iCurr - 1;\n const op = argsArray[iFirstConstructPath][0];\n if (op !== OPS.stroke && op !== OPS.closeStroke && op !== OPS.fillStroke && op !== OPS.eoFillStroke && op !== OPS.closeFillStroke && op !== OPS.closeEOFillStroke) {\n return true;\n }\n const iFirstTransform = context.iCurr - 2;\n const transform = argsArray[iFirstTransform];\n return transform[0] === 1 && transform[1] === 0 && transform[2] === 0 && transform[3] === 1;\n}, () => false, (context, i) => {\n const {\n fnArray,\n argsArray\n } = context;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstConstructPath = curr - 1;\n const args = argsArray[iFirstConstructPath];\n const transform = argsArray[iFirstTransform];\n const [, [buffer], minMax] = args;\n if (minMax) {\n const newBBox = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(minMax, transform, newBBox);\n minMax.set(newBBox);\n for (let k = 0, kk = buffer.length; k < kk;) {\n switch (buffer[k++]) {\n case DrawOPS.moveTo:\n case DrawOPS.lineTo:\n Util.applyTransform(buffer, transform, k);\n k += 2;\n break;\n case DrawOPS.curveTo:\n Util.applyTransformToBezier(buffer, transform, k);\n k += 6;\n break;\n }\n }\n }\n fnArray.splice(iFirstSave, 4, OPS.constructPath);\n argsArray.splice(iFirstSave, 4, args);\n return iFirstSave + 1;\n});\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n _optimize() {}\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n flush() {}\n reset() {}\n}\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n _optimize() {\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n this.lastProcessed = ii;\n return;\n }\n const context = this.context;\n while (i < ii) {\n if (match) {\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n this._optimize();\n }\n }\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\nclass OperatorList {\n static CHUNK_SIZE = 1000;\n static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n static isOffscreenCanvasSupported = false;\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n static setOptions({\n isOffscreenCanvasSupported\n }) {\n this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n }\n get length() {\n return this.argsArray.length;\n }\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n get totalLength() {\n return this._totalLength + this.length;\n }\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n this.flush();\n }\n }\n }\n addImageOps(fn, args, optionalContent, hasMask = false) {\n if (hasMask) {\n this.addOp(OPS.save);\n this.addOp(OPS.setGState, [[[\"SMask\", false]]]);\n }\n if (optionalContent !== undefined) {\n this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n this.addOp(fn, args);\n if (optionalContent !== undefined) {\n this.addOp(OPS.endMarkedContent, []);\n }\n if (hasMask) {\n this.addOp(OPS.restore);\n }\n }\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length\n };\n }\n get _transfers() {\n const transfers = [];\n const {\n fnArray,\n argsArray,\n length\n } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n {\n const {\n bitmap,\n data\n } = argsArray[i][0];\n if (bitmap || data?.buffer) {\n transfers.push(bitmap || data.buffer);\n }\n break;\n }\n case OPS.constructPath:\n {\n const [, [data], minMax] = argsArray[i];\n if (data) {\n transfers.push(data.buffer, minMax.buffer);\n }\n break;\n }\n case OPS.paintFormXObjectBegin:\n const [matrix, bbox] = argsArray[i];\n if (matrix) {\n transfers.push(matrix.buffer);\n }\n if (bbox) {\n transfers.push(bbox.buffer);\n }\n break;\n case OPS.setTextMatrix:\n transfers.push(argsArray[i][0].buffer);\n break;\n }\n }\n return transfers;\n }\n flush(lastChunk = false, separateAnnots = null) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n this._streamSink.enqueue({\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n separateAnnots,\n length\n }, 1, this._transfers);\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\nclass CheckedOperatorList extends OperatorList {\n needsIsolation = false;\n hasSoftMask = false;\n addOp(fn, args) {\n if (!this.needsIsolation || !this.hasSoftMask) {\n if (fn === OPS.beginGroup) {\n this.needsIsolation ||= args[0].needsIsolation;\n this.hasSoftMask ||= args[0].hasSoftMask;\n } else if (fn === OPS.setGState) {\n for (const [key, val] of args[0]) {\n if (key === \"BM\" && val !== \"source-over\") {\n this.needsIsolation = true;\n } else if (key === \"SMask\" && val !== false) {\n this.needsIsolation = true;\n this.hasSoftMask = true;\n }\n }\n }\n }\n super.addOp(fn, args);\n }\n}\n\n;// ./src/core/pattern.js\n\n\n\n\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7\n};\nconst MAX_SAMPLED_COLOR_COMPONENTS = 1 << 16;\nfunction getColorConversionBatchSize(count, numComps) {\n return MathClamp(Math.floor(MAX_SAMPLED_COLOR_COMPONENTS / numComps), 1, count);\n}\nclass Pattern {\n static #hasGPU = false;\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n static setOptions({\n hasGPU\n }) {\n this.#hasGPU = hasGPU;\n }\n static parseShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n try {\n switch (type) {\n case ShadingType.FUNCTION_BASED:\n return new FunctionBasedShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(ex);\n return new DummyShading();\n }\n }\n}\nclass BaseShading {\n static SMALL_NUMBER = 1e-6;\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n this.shadingType = dict.get(\"ShadingType\");\n let coordsLen = 0;\n if (this.shadingType === ShadingType.AXIAL) {\n coordsLen = 4;\n } else if (this.shadingType === ShadingType.RADIAL) {\n coordsLen = 6;\n }\n this.coordsArr = dict.getArray(\"Coords\");\n if (!isNumberArray(this.coordsArr, coordsLen)) {\n throw new FormatError(\"RadialAxialShading: Invalid /Coords array.\");\n }\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let t0 = 0.0,\n t1 = 1.0;\n const domainArr = dict.getArray(\"Domain\");\n if (isNumberArray(domainArr, 2)) {\n [t0, t1] = domainArr;\n }\n let extendStart = false,\n extendEnd = false;\n const extendArr = dict.getArray(\"Extend\");\n if (isBooleanArray(extendArr, 2)) {\n [extendStart, extendEnd] = extendArr;\n }\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.create(fnObj, true);\n const NUMBER_OF_SAMPLES = 840;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n const colorStops = this.colorStops = [];\n if (t0 >= t1 || step <= 0) {\n info(\"Bad shading domain.\");\n return;\n }\n const {\n numComps\n } = cs;\n const ratio = new Float32Array(1);\n const batchSize = getColorConversionBatchSize(NUMBER_OF_SAMPLES, numComps);\n const comps = new Float32Array(batchSize * numComps);\n const rgb = new Uint8ClampedArray(NUMBER_OF_SAMPLES * 3);\n for (let start = 0; start < NUMBER_OF_SAMPLES; start += batchSize) {\n const count = Math.min(batchSize, NUMBER_OF_SAMPLES - start);\n for (let i = 0, offset = 0; i < count; i++, offset += numComps) {\n ratio[0] = t0 + (start + i) * step;\n fn(ratio, 0, comps, offset);\n }\n cs.getRgbItems(comps, count, rgb, start * 3, 0);\n }\n let iBase = 0;\n let rBase = rgb[0],\n gBase = rgb[1],\n bBase = rgb[2];\n colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]);\n let iPrev = 1;\n let rPrev = rgb[3],\n gPrev = rgb[4],\n bPrev = rgb[5];\n let maxSlopeR = rPrev - rBase + 1;\n let maxSlopeG = gPrev - gBase + 1;\n let maxSlopeB = bPrev - bBase + 1;\n let minSlopeR = rPrev - rBase - 1;\n let minSlopeG = gPrev - gBase - 1;\n let minSlopeB = bPrev - bBase - 1;\n for (let i = 2; i < NUMBER_OF_SAMPLES; i++) {\n const rgbOffset = i * 3;\n const r = rgb[rgbOffset],\n g = rgb[rgbOffset + 1],\n b = rgb[rgbOffset + 2];\n const run = i - iBase;\n maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) / run);\n maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) / run);\n maxSlopeB = Math.min(maxSlopeB, (b - bBase + 1) / run);\n minSlopeR = Math.max(minSlopeR, (r - rBase - 1) / run);\n minSlopeG = Math.max(minSlopeG, (g - gBase - 1) / run);\n minSlopeB = Math.max(minSlopeB, (b - bBase - 1) / run);\n const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB;\n if (!slopesExist) {\n const cssColor = Util.makeHexColor(rPrev, gPrev, bPrev);\n colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]);\n maxSlopeR = r - rPrev + 1;\n maxSlopeG = g - gPrev + 1;\n maxSlopeB = b - bPrev + 1;\n minSlopeR = r - rPrev - 1;\n minSlopeG = g - gPrev - 1;\n minSlopeB = b - bPrev - 1;\n iBase = iPrev;\n rBase = rPrev;\n gBase = gPrev;\n bBase = bPrev;\n }\n iPrev = i;\n rPrev = r;\n gPrev = g;\n bPrev = b;\n }\n colorStops.push([1, Util.makeHexColor(rPrev, gPrev, bPrev)]);\n const background = dict.has(\"Background\") ? cs.getRgbHex(dict.get(\"Background\"), 0) : \"transparent\";\n if (!extendStart) {\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n this.colorStops = colorStops;\n }\n getIR() {\n const {\n coordsArr,\n shadingType\n } = this;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\nfunction meshUpdateBounds(self) {\n let minX = self.coords[0][0],\n minY = self.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = self.coords.length; i < ii; i++) {\n const x = self.coords[i][0],\n y = self.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n self.bounds = [minX, minY, maxX, maxY];\n}\nfunction meshPackData(self) {\n let i, j, ii;\n const coords = self.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n self.coords = coordsPacked;\n const colors = self.colors;\n const colorsPacked = new Uint8Array(colors.length * 4);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n j++;\n }\n self.colors = colorsPacked;\n for (const figure of self.figures) {\n figure.coords = new Uint32Array(figure.coords);\n figure.colors = new Uint32Array(figure.colors);\n }\n}\nfunction buildMeshVertexData(coords, colors, figures) {\n let vertexCount = 0;\n for (const figure of figures) {\n if (figure.type === MeshFigureType.TRIANGLES) {\n vertexCount += figure.coords.length;\n } else if (figure.type === MeshFigureType.LATTICE) {\n const vpr = figure.verticesPerRow;\n vertexCount += (Math.floor(figure.coords.length / vpr) - 1) * (vpr - 1) * 6;\n }\n }\n const posData = new Float32Array(vertexCount * 2);\n const colData = new Uint8Array(vertexCount * 4);\n let pOff = 0,\n cOff = 0;\n const addVertex = (pi, ci) => {\n posData[pOff++] = coords[pi * 2];\n posData[pOff++] = coords[pi * 2 + 1];\n colData[cOff++] = colors[ci * 4];\n colData[cOff++] = colors[ci * 4 + 1];\n colData[cOff++] = colors[ci * 4 + 2];\n cOff++;\n };\n for (const figure of figures) {\n const ps = figure.coords;\n const cs = figure.colors;\n if (figure.type === MeshFigureType.TRIANGLES) {\n for (let i = 0, ii = ps.length; i < ii; i++) {\n addVertex(ps[i], cs[i]);\n }\n } else if (figure.type === MeshFigureType.LATTICE) {\n const vpr = figure.verticesPerRow;\n const rows = Math.floor(ps.length / vpr) - 1;\n const cols = vpr - 1;\n for (let i = 0; i < rows; i++) {\n let q = i * vpr;\n for (let j = 0; j < cols; j++, q++) {\n addVertex(ps[q], cs[q]);\n addVertex(ps[q + 1], cs[q + 1]);\n addVertex(ps[q + vpr], cs[q + vpr]);\n addVertex(ps[q + vpr + 1], cs[q + vpr + 1]);\n addVertex(ps[q + 1], cs[q + 1]);\n addVertex(ps[q + vpr], cs[q + vpr]);\n }\n }\n }\n }\n return {\n posData,\n colData,\n vertexCount\n };\n}\nclass FunctionBasedShading extends BaseShading {\n static MAX_STEP_COUNT = 512;\n constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n const fnObj = dict.getRaw(\"Function\");\n if (!fnObj) {\n throw new FormatError(\"FunctionBasedShading: missing /Function\");\n }\n const fn = pdfFunctionFactory.create(fnObj, true);\n const [x0, x1, y0, y1] = lookupRect(dict.getArray(\"Domain\"), [0, 1, 0, 1]);\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n this.bounds = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], matrix, this.bounds);\n const bboxW = this.bounds[2] - this.bounds[0];\n const bboxH = this.bounds[3] - this.bounds[1];\n const stepsX = MathClamp(Math.ceil(bboxW), 1, FunctionBasedShading.MAX_STEP_COUNT);\n const stepsY = MathClamp(Math.ceil(bboxH), 1, FunctionBasedShading.MAX_STEP_COUNT);\n const verticesPerRow = stepsX + 1;\n const totalVertices = (stepsY + 1) * verticesPerRow;\n const coords = this.coords = new Float32Array(totalVertices * 2);\n const colors = this.colors = new Uint8ClampedArray(totalVertices * 4);\n const {\n numComps\n } = cs;\n const xyBuf = new Float32Array(2);\n const batchSize = getColorConversionBatchSize(totalVertices, numComps);\n const comps = new Float32Array(batchSize * numComps);\n const rangeX = (x1 - x0) / stepsX;\n const rangeY = (y1 - y0) / stepsY;\n const halfStepX = rangeX / 2;\n const halfStepY = rangeY / 2;\n let coordOffset = 0;\n let compOffset = 0;\n let batchCount = 0;\n let colorOffset = 0;\n for (let row = 0; row <= stepsY; row++) {\n const yDomain = y0 + rangeY * row;\n xyBuf[1] = row === stepsY ? yDomain - halfStepY : yDomain;\n for (let col = 0; col <= stepsX; col++) {\n const xDomain = x0 + rangeX * col;\n xyBuf[0] = col === stepsX ? xDomain - halfStepX : xDomain;\n fn(xyBuf, 0, comps, compOffset);\n compOffset += numComps;\n batchCount++;\n coords[coordOffset] = xDomain;\n coords[coordOffset + 1] = yDomain;\n Util.applyTransform(coords, matrix, coordOffset);\n coordOffset += 2;\n if (batchCount === batchSize) {\n cs.getRgbItems(comps, batchCount, colors, colorOffset, 1);\n colorOffset += batchCount * 4;\n compOffset = batchCount = 0;\n }\n }\n }\n if (batchCount > 0) {\n cs.getRgbItems(comps, batchCount, colors, colorOffset, 1);\n }\n const ps = new Uint32Array(totalVertices);\n for (let i = 0; i < totalVertices; i++) {\n ps[i] = i;\n }\n this.figures = [{\n type: MeshFigureType.LATTICE,\n coords: ps,\n colors: new Uint32Array(ps),\n verticesPerRow\n }];\n }\n getIR() {\n const {\n posData,\n colData,\n vertexCount\n } = buildMeshVertexData(this.coords, this.colors, this.figures);\n return [\"Mesh\", ShadingType.FUNCTION_BASED, posData, colData, vertexCount, this.bounds, this.bbox, this.background];\n }\n}\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n }\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n readBits(n) {\n const {\n stream\n } = this;\n let {\n buffer,\n bufferLength\n } = this;\n if (n === 32) {\n if (bufferLength === 0) {\n return stream.getInt32() >>> 0;\n }\n buffer = buffer << 24 | stream.getByte() << 16 | stream.getByte() << 8 | stream.getByte();\n const nextByte = stream.getByte();\n this.buffer = nextByte & (1 << bufferLength) - 1;\n return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n }\n if (n === 8 && bufferLength === 0) {\n return stream.getByte();\n }\n while (bufferLength < n) {\n buffer = buffer << 8 | stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & (1 << bufferLength) - 1;\n return buffer >> bufferLength;\n }\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n readCoordinate() {\n const {\n bitsPerCoordinate,\n decode\n } = this.context;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n }\n readComponents() {\n const {\n bitsPerComponent,\n colorFn,\n colorSpace,\n decode,\n numComps\n } = this.context;\n const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n colorFn?.(components, 0, color, 0);\n return colorSpace.getRgb(color, 0);\n }\n}\nlet bCache = null;\nfunction getB(count) {\n return (bCache ??= new Map()).getOrInsertComputed(count, () => Array.from({\n length: count + 1\n }, (_, i) => {\n const t = i / count,\n t_ = 1 - t;\n return new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3]);\n }));\n}\nfunction clearPatternCaches() {\n bCache?.clear();\n}\nclass MeshShading extends BaseShading {\n static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n static TRIANGLE_DENSITY = 20;\n constructor(stream, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n const cs = ColorSpaceUtils.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.create(fnObj, true) : null;\n this.coords = [];\n this.colors = [];\n this.figures = [];\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n if (patchMesh) {\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n this._updateBounds();\n this._packData();\n }\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = [];\n let verticesLeft = 0;\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps.at(-2), ps.at(-1));\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps.at(-3), ps.at(-1));\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n reader.align();\n }\n this.figures.push({\n type: MeshFigureType.TRIANGLES,\n coords: new Int32Array(ps),\n colors: new Int32Array(ps)\n });\n }\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = [];\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: MeshFigureType.LATTICE,\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow\n });\n }\n _decodeType6Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n ps[5] = coords.length;\n coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n ps[6] = coords.length;\n coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n ps[9] = coords.length;\n coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n ps[10] = coords.length;\n coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n this.figures.push({\n type: MeshFigureType.PATCH,\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[9] = pi + 13;\n ps[10] = pi + 14;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[5] = pi + 12;\n ps[6] = pi + 15;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: MeshFigureType.PATCH,\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === MeshFigureType.PATCH, \"Unexpected patch mesh figure\");\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0]));\n splitXBy = MathClamp(splitXBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1]));\n splitYBy = MathClamp(splitYBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n for (let col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n this.figures[index] = {\n type: MeshFigureType.LATTICE,\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow\n };\n }\n _updateBounds() {\n meshUpdateBounds(this);\n }\n _packData() {\n meshPackData(this);\n }\n getIR() {\n const {\n posData,\n colData,\n vertexCount\n } = buildMeshVertexData(this.coords, this.colors, this.figures);\n return [\"Mesh\", this.shadingType, posData, colData, vertexCount, this.bounds, this.bbox, this.background];\n }\n}\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\nfunction getTilingPatternIR(operatorList, dict, color, needsIsolation = true) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array.`);\n }\n const xstep = dict.get(\"XStep\");\n if (typeof xstep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /XStep value.`);\n }\n const ystep = dict.get(\"YStep\");\n if (typeof ystep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /YStep value.`);\n }\n const paintType = dict.get(\"PaintType\");\n if (!Number.isInteger(paintType)) {\n throw new FormatError(`Invalid getTilingPatternIR /PaintType value.`);\n }\n const tilingType = dict.get(\"TilingType\");\n if (!Number.isInteger(tilingType)) {\n throw new FormatError(`Invalid getTilingPatternIR /TilingType value.`);\n }\n return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType, needsIsolation];\n}\n\n;// ./src/core/binary_cmap.js\n\n\nfunction hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = n << 8 | a[i];\n }\n return n >>> 0;\n}\nfunction hexToStr(a, size) {\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode(...a.subarray(0, size + 1));\n}\nfunction addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n}\nfunction incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n}\nconst MAX_NUM_SIZE = 16;\nconst MAX_ENCODED_NUM_SIZE = 19;\nclass BinaryCMapStream extends Stream {\n tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n constructor(data) {\n super(data, 0, data.length, null);\n }\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.getByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = n << 7 | b & 0x7f;\n } while (!last);\n return n;\n }\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n readHex(num, size) {\n num.set(this.getBytes(size + 1));\n }\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.getByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = (c & 1) << 8 | num[i];\n num[i] = c >> 1 ^ sign;\n }\n }\n readString() {\n const len = this.readNumber(),\n buf = new Array(len);\n for (let i = 0; i < len; i++) {\n buf[i] = this.readNumber();\n }\n return String.fromCharCode(...buf);\n }\n}\nclass BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.getByte();\n cMap.vertical = !!(header & 1);\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n let b;\n while ((b = stream.getByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n switch (b & 0x1f) {\n case 0:\n stream.readString();\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n }\n break;\n case 1:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\n }\n break;\n case 2:\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n }\n break;\n case 4:\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n case 5:\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n}\n\n;// ./src/core/ascii_85_stream.js\n\n\nclass Ascii85Stream extends DecodeStream {\n #input = new Uint8Array(5);\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n }\n readBlock() {\n const TILDA_CHAR = 0x7e;\n const Z_LOWER_CHAR = 0x7a;\n const EOF = -1;\n const str = this.stream;\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n const bufferLength = this.bufferLength;\n let buffer, i;\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n buffer.fill(0, bufferLength, bufferLength + 4);\n this.bufferLength += 4;\n } else {\n const input = this.#input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n input[i] = c;\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n if (i < 5) {\n input.fill(0x21 + 84, i, 5);\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\n;// ./src/core/ascii_hex_stream.js\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.firstDigit = -1;\n }\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.stream.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n const maxDecodeLength = bytes.length + 1 >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= 0x30 && ch <= 0x39) {\n digit = ch & 0x0f;\n } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === 0x3e) {\n this.eof = true;\n break;\n } else {\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = firstDigit << 4 | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\n;// ./external/brotli/decode.js\nlet Options;\nlet makeBrotliDecode = () => {\n const MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]);\n const CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n const DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]);\n const DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]);\n const FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]);\n const BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]);\n const BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]);\n const INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]);\n const COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]);\n const CMD_LOOKUP = new Int16Array(2816);\n unpackCommandLookupTable(CMD_LOOKUP);\n function log2floor(i) {\n let result = -1;\n let step = 16;\n let v = i;\n while (step > 0) {\n let next = v >> step;\n if (next !== 0) {\n result += step;\n v = next;\n }\n step = step >> 1;\n }\n return result + v;\n }\n function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) {\n return 16 + ndirect + 2 * (maxndistbits << npostfix);\n }\n function calculateDistanceAlphabetLimit(s, maxDistance, npostfix, ndirect) {\n if (maxDistance < ndirect + (2 << npostfix)) {\n return makeError(s, -23);\n }\n const offset = (maxDistance - ndirect >> npostfix) + 4;\n const ndistbits = log2floor(offset) - 1;\n const group = ndistbits - 1 << 1 | offset >> ndistbits & 1;\n return (group - 1 << npostfix) + (1 << npostfix) + ndirect + 16;\n }\n function unpackCommandLookupTable(cmdLookup) {\n const insertLengthOffsets = new Int32Array(24);\n const copyLengthOffsets = new Int32Array(24);\n copyLengthOffsets[0] = 2;\n for (let i = 0; i < 23; ++i) {\n insertLengthOffsets[i + 1] = insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i]);\n copyLengthOffsets[i + 1] = copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i]);\n }\n for (let cmdCode = 0; cmdCode < 704; ++cmdCode) {\n let rangeIdx = cmdCode >> 6;\n let distanceContextOffset = -4;\n if (rangeIdx >= 2) {\n rangeIdx -= 2;\n distanceContextOffset = 0;\n }\n const insertCode = (0x29850 >> rangeIdx * 2 & 0x3) << 3 | cmdCode >> 3 & 7;\n const copyCode = (0x26244 >> rangeIdx * 2 & 0x3) << 3 | cmdCode & 7;\n const copyLengthOffset = copyLengthOffsets[copyCode];\n const distanceContext = distanceContextOffset + Math.min(copyLengthOffset, 5) - 2;\n const index = cmdCode * 4;\n cmdLookup[index] = INSERT_LENGTH_N_BITS[insertCode] | COPY_LENGTH_N_BITS[copyCode] << 8;\n cmdLookup[index + 1] = insertLengthOffsets[insertCode];\n cmdLookup[index + 2] = copyLengthOffsets[copyCode];\n cmdLookup[index + 3] = distanceContext;\n }\n }\n function decodeWindowBits(s) {\n const largeWindowEnabled = s.isLargeWindow;\n s.isLargeWindow = 0;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) === 0) {\n return 16;\n }\n let n = readFewBits(s, 3);\n if (n !== 0) {\n return 17 + n;\n }\n n = readFewBits(s, 3);\n if (n !== 0) {\n if (n === 1) {\n if (largeWindowEnabled === 0) {\n return -1;\n }\n s.isLargeWindow = 1;\n if (readFewBits(s, 1) === 1) {\n return -1;\n }\n n = readFewBits(s, 6);\n if (n < 10 || n > 30) {\n return -1;\n }\n return n;\n }\n return 8 + n;\n }\n return 17;\n }\n function attachDictionaryChunk(s, data) {\n if (s.runningState !== 1) {\n return makeError(s, -24);\n }\n if (s.cdNumChunks === 0) {\n s.cdChunks = new Array(16);\n s.cdChunkOffsets = new Int32Array(16);\n s.cdBlockBits = -1;\n }\n if (s.cdNumChunks === 15) {\n return makeError(s, -27);\n }\n s.cdChunks[s.cdNumChunks] = data;\n s.cdNumChunks++;\n s.cdTotalSize += data.length;\n s.cdChunkOffsets[s.cdNumChunks] = s.cdTotalSize;\n return 0;\n }\n function initState(s) {\n if (s.runningState !== 0) {\n return makeError(s, -26);\n }\n s.blockTrees = new Int32Array(3091);\n s.blockTrees[0] = 7;\n s.distRbIdx = 3;\n let result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, 3, 120);\n if (result < 0) {\n return result;\n }\n const maxDistanceAlphabetLimit = result;\n s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit);\n s.distOffset = new Int32Array(maxDistanceAlphabetLimit);\n result = initBitReader(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 1;\n return 0;\n }\n function close(s) {\n if (s.runningState === 0) {\n return makeError(s, -25);\n }\n if (s.runningState > 0) {\n s.runningState = 11;\n }\n return 0;\n }\n function decodeVarLenUnsignedByte(s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) !== 0) {\n const n = readFewBits(s, 3);\n if (n === 0) {\n return 1;\n }\n return readFewBits(s, n) + (1 << n);\n }\n return 0;\n }\n function decodeMetaBlockLength(s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.inputEnd = readFewBits(s, 1);\n s.metaBlockLength = 0;\n s.isUncompressed = 0;\n s.isMetadata = 0;\n if (s.inputEnd !== 0 && readFewBits(s, 1) !== 0) {\n return 0;\n }\n const sizeNibbles = readFewBits(s, 2) + 4;\n if (sizeNibbles === 7) {\n s.isMetadata = 1;\n if (readFewBits(s, 1) !== 0) {\n return makeError(s, -6);\n }\n const sizeBytes = readFewBits(s, 2);\n if (sizeBytes === 0) {\n return 0;\n }\n for (let i = 0; i < sizeBytes; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const bits = readFewBits(s, 8);\n if (bits === 0 && i + 1 === sizeBytes && sizeBytes > 1) {\n return makeError(s, -8);\n }\n s.metaBlockLength += bits << i * 8;\n }\n } else {\n for (let i = 0; i < sizeNibbles; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const bits = readFewBits(s, 4);\n if (bits === 0 && i + 1 === sizeNibbles && sizeNibbles > 4) {\n return makeError(s, -8);\n }\n s.metaBlockLength += bits << i * 4;\n }\n }\n s.metaBlockLength++;\n if (s.inputEnd === 0) {\n s.isUncompressed = readFewBits(s, 1);\n }\n return 0;\n }\n function readSymbol(tableGroup, tableIdx, s) {\n let offset = tableGroup[tableIdx];\n const v = s.accumulator32 >>> s.bitOffset;\n offset += v & 0xFF;\n const bits = tableGroup[offset] >> 16;\n const sym = tableGroup[offset] & 0xFFFF;\n if (bits <= 8) {\n s.bitOffset += bits;\n return sym;\n }\n offset += sym;\n const mask = (1 << bits) - 1;\n offset += (v & mask) >>> 8;\n s.bitOffset += (tableGroup[offset] >> 16) + 8;\n return tableGroup[offset] & 0xFFFF;\n }\n function readBlockLength(tableGroup, tableIdx, s) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const code = readSymbol(tableGroup, tableIdx, s);\n const n = BLOCK_LENGTH_N_BITS[code];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n return BLOCK_LENGTH_OFFSET[code] + (n <= 16 ? readFewBits(s, n) : readManyBits(s, n));\n }\n function moveToFront(v, index) {\n let i = index;\n const value = v[i];\n while (i > 0) {\n v[i] = v[i - 1];\n i--;\n }\n v[0] = value;\n }\n function inverseMoveToFrontTransform(v, vLen) {\n const mtf = new Int32Array(256);\n for (let i = 0; i < 256; ++i) {\n mtf[i] = i;\n }\n for (let i = 0; i < vLen; ++i) {\n const index = v[i] & 0xFF;\n v[i] = mtf[index];\n if (index !== 0) {\n moveToFront(mtf, index);\n }\n }\n }\n function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) {\n let symbol = 0;\n let prevCodeLen = 8;\n let repeat = 0;\n let repeatCodeLen = 0;\n let space = 32768;\n const table = new Int32Array(33);\n const tableIdx = table.length - 1;\n buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18);\n while (symbol < numSymbols && space > 0) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const p = s.accumulator32 >>> s.bitOffset & 31;\n s.bitOffset += table[p] >> 16;\n const codeLen = table[p] & 0xFFFF;\n if (codeLen < 16) {\n repeat = 0;\n codeLengths[symbol++] = codeLen;\n if (codeLen !== 0) {\n prevCodeLen = codeLen;\n space -= 32768 >> codeLen;\n }\n } else {\n const extraBits = codeLen - 14;\n let newLen = 0;\n if (codeLen === 16) {\n newLen = prevCodeLen;\n }\n if (repeatCodeLen !== newLen) {\n repeat = 0;\n repeatCodeLen = newLen;\n }\n const oldRepeat = repeat;\n if (repeat > 0) {\n repeat -= 2;\n repeat = repeat << extraBits;\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n repeat += readFewBits(s, extraBits) + 3;\n const repeatDelta = repeat - oldRepeat;\n if (symbol + repeatDelta > numSymbols) {\n return makeError(s, -2);\n }\n for (let i = 0; i < repeatDelta; ++i) {\n codeLengths[symbol++] = repeatCodeLen;\n }\n if (repeatCodeLen !== 0) {\n space -= repeatDelta << 15 - repeatCodeLen;\n }\n }\n }\n if (space !== 0) {\n return makeError(s, -18);\n }\n codeLengths.fill(0, symbol, numSymbols);\n return 0;\n }\n function checkDupes(s, symbols, length) {\n for (let i = 0; i < length - 1; ++i) {\n for (let j = i + 1; j < length; ++j) {\n if (symbols[i] === symbols[j]) {\n return makeError(s, -7);\n }\n }\n }\n return 0;\n }\n function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {\n const codeLengths = new Int32Array(alphabetSizeLimit);\n const symbols = new Int32Array(4);\n const maxBits = 1 + log2floor(alphabetSizeMax - 1);\n const numSymbols = readFewBits(s, 2) + 1;\n for (let i = 0; i < numSymbols; ++i) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const symbol = readFewBits(s, maxBits);\n if (symbol >= alphabetSizeLimit) {\n return makeError(s, -15);\n }\n symbols[i] = symbol;\n }\n const result = checkDupes(s, symbols, numSymbols);\n if (result < 0) {\n return result;\n }\n let histogramId = numSymbols;\n if (numSymbols === 4) {\n histogramId += readFewBits(s, 1);\n }\n switch (histogramId) {\n case 1:\n codeLengths[symbols[0]] = 1;\n break;\n case 2:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 1;\n break;\n case 3:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 2;\n break;\n case 4:\n codeLengths[symbols[0]] = 2;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 2;\n codeLengths[symbols[3]] = 2;\n break;\n case 5:\n codeLengths[symbols[0]] = 1;\n codeLengths[symbols[1]] = 2;\n codeLengths[symbols[2]] = 3;\n codeLengths[symbols[3]] = 3;\n break;\n default:\n break;\n }\n return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);\n }\n function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) {\n const codeLengths = new Int32Array(alphabetSizeLimit);\n const codeLengthCodeLengths = new Int32Array(18);\n let space = 32;\n let numCodes = 0;\n for (let i = skip; i < 18; ++i) {\n const codeLenIdx = CODE_LENGTH_CODE_ORDER[i];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const p = s.accumulator32 >>> s.bitOffset & 15;\n s.bitOffset += FIXED_TABLE[p] >> 16;\n const v = FIXED_TABLE[p] & 0xFFFF;\n codeLengthCodeLengths[codeLenIdx] = v;\n if (v !== 0) {\n space -= 32 >> v;\n numCodes++;\n if (space <= 0) {\n break;\n }\n }\n }\n if (space !== 0 && numCodes !== 1) {\n return makeError(s, -4);\n }\n const result = readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s);\n if (result < 0) {\n return result;\n }\n return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);\n }\n function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const simpleCodeOrSkip = readFewBits(s, 2);\n if (simpleCodeOrSkip === 1) {\n return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s);\n }\n return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s);\n }\n function decodeContextMap(contextMapSize, contextMap, s) {\n let result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n const numTrees = decodeVarLenUnsignedByte(s) + 1;\n if (numTrees === 1) {\n contextMap.fill(0, 0, contextMapSize);\n return numTrees;\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const useRleForZeros = readFewBits(s, 1);\n let maxRunLengthPrefix = 0;\n if (useRleForZeros !== 0) {\n maxRunLengthPrefix = readFewBits(s, 4) + 1;\n }\n const alphabetSize = numTrees + maxRunLengthPrefix;\n const tableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSize + 31 >> 5];\n const table = new Int32Array(tableSize + 1);\n const tableIdx = table.length - 1;\n result = readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s);\n if (result < 0) {\n return result;\n }\n let i = 0;\n while (i < contextMapSize) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const code = readSymbol(table, tableIdx, s);\n if (code === 0) {\n contextMap[i] = 0;\n i++;\n } else if (code <= maxRunLengthPrefix) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n let reps = (1 << code) + readFewBits(s, code);\n while (reps !== 0) {\n if (i >= contextMapSize) {\n return makeError(s, -3);\n }\n contextMap[i] = 0;\n i++;\n reps--;\n }\n } else {\n contextMap[i] = code - maxRunLengthPrefix;\n i++;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n if (readFewBits(s, 1) === 1) {\n inverseMoveToFrontTransform(contextMap, contextMapSize);\n }\n return numTrees;\n }\n function decodeBlockTypeAndLength(s, treeType, numBlockTypes) {\n const ringBuffers = s.rings;\n const offset = 4 + treeType * 2;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n let blockType = readSymbol(s.blockTrees, 2 * treeType, s);\n const result = readBlockLength(s.blockTrees, 2 * treeType + 1, s);\n if (blockType === 1) {\n blockType = ringBuffers[offset + 1] + 1;\n } else if (blockType === 0) {\n blockType = ringBuffers[offset];\n } else {\n blockType -= 2;\n }\n if (blockType >= numBlockTypes) {\n blockType -= numBlockTypes;\n }\n ringBuffers[offset] = ringBuffers[offset + 1];\n ringBuffers[offset + 1] = blockType;\n return result;\n }\n function decodeLiteralBlockSwitch(s) {\n s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes);\n const literalBlockType = s.rings[5];\n s.contextMapSlice = literalBlockType << 6;\n s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF;\n const contextMode = s.contextModes[literalBlockType];\n s.contextLookupOffset1 = contextMode << 9;\n s.contextLookupOffset2 = s.contextLookupOffset1 + 256;\n }\n function decodeCommandBlockSwitch(s) {\n s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes);\n s.commandTreeIdx = s.rings[7];\n }\n function decodeDistanceBlockSwitch(s) {\n s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes);\n s.distContextMapSlice = s.rings[9] << 2;\n }\n function maybeReallocateRingBuffer(s) {\n let newSize = s.maxRingBufferSize;\n if (newSize > s.expectedTotalSize) {\n const minimalNewSize = s.expectedTotalSize;\n while (newSize >> 1 > minimalNewSize) {\n newSize = newSize >> 1;\n }\n if (s.inputEnd === 0 && newSize < 16384 && s.maxRingBufferSize >= 16384) {\n newSize = 16384;\n }\n }\n if (newSize <= s.ringBufferSize) {\n return;\n }\n const ringBufferSizeWithSlack = newSize + 37;\n const newBuffer = new Int8Array(ringBufferSizeWithSlack);\n const oldBuffer = s.ringBuffer;\n if (oldBuffer.length !== 0) {\n newBuffer.set(oldBuffer.subarray(0, s.ringBufferSize), 0);\n }\n s.ringBuffer = newBuffer;\n s.ringBufferSize = newSize;\n }\n function readNextMetablockHeader(s) {\n if (s.inputEnd !== 0) {\n s.nextRunningState = 10;\n s.runningState = 12;\n return 0;\n }\n s.literalTreeGroup = new Int32Array(0);\n s.commandTreeGroup = new Int32Array(0);\n s.distanceTreeGroup = new Int32Array(0);\n let result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n result = decodeMetaBlockLength(s);\n if (result < 0) {\n return result;\n }\n if (s.metaBlockLength === 0 && s.isMetadata === 0) {\n return 0;\n }\n if (s.isUncompressed !== 0 || s.isMetadata !== 0) {\n result = jumpToByteBoundary(s);\n if (result < 0) {\n return result;\n }\n if (s.isMetadata === 0) {\n s.runningState = 6;\n } else {\n s.runningState = 5;\n }\n } else {\n s.runningState = 3;\n }\n if (s.isMetadata !== 0) {\n return 0;\n }\n s.expectedTotalSize += s.metaBlockLength;\n if (s.expectedTotalSize > 1 << 30) {\n s.expectedTotalSize = 1 << 30;\n }\n if (s.ringBufferSize < s.maxRingBufferSize) {\n maybeReallocateRingBuffer(s);\n }\n return 0;\n }\n function readMetablockPartition(s, treeType, numBlockTypes) {\n let offset = s.blockTrees[2 * treeType];\n if (numBlockTypes <= 1) {\n s.blockTrees[2 * treeType + 1] = offset;\n s.blockTrees[2 * treeType + 2] = offset;\n return 1 << 28;\n }\n const blockTypeAlphabetSize = numBlockTypes + 2;\n let result = readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s);\n if (result < 0) {\n return result;\n }\n offset += result;\n s.blockTrees[2 * treeType + 1] = offset;\n const blockLengthAlphabetSize = 26;\n result = readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s);\n if (result < 0) {\n return result;\n }\n offset += result;\n s.blockTrees[2 * treeType + 2] = offset;\n return readBlockLength(s.blockTrees, 2 * treeType + 1, s);\n }\n function calculateDistanceLut(s, alphabetSizeLimit) {\n const distExtraBits = s.distExtraBits;\n const distOffset = s.distOffset;\n const npostfix = s.distancePostfixBits;\n const ndirect = s.numDirectDistanceCodes;\n const postfix = 1 << npostfix;\n let bits = 1;\n let half = 0;\n let i = 16;\n for (let j = 0; j < ndirect; ++j) {\n distExtraBits[i] = 0;\n distOffset[i] = j + 1;\n ++i;\n }\n while (i < alphabetSizeLimit) {\n const base = ndirect + ((2 + half << bits) - 4 << npostfix) + 1;\n for (let j = 0; j < postfix; ++j) {\n distExtraBits[i] = bits;\n distOffset[i] = base + j;\n ++i;\n }\n bits = bits + half;\n half = half ^ 1;\n }\n }\n function readMetablockHuffmanCodesAndContextMaps(s) {\n s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n let result = readMetablockPartition(s, 0, s.numLiteralBlockTypes);\n if (result < 0) {\n return result;\n }\n s.literalBlockLength = result;\n s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n result = readMetablockPartition(s, 1, s.numCommandBlockTypes);\n if (result < 0) {\n return result;\n }\n s.commandBlockLength = result;\n s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1;\n result = readMetablockPartition(s, 2, s.numDistanceBlockTypes);\n if (result < 0) {\n return result;\n }\n s.distanceBlockLength = result;\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.distancePostfixBits = readFewBits(s, 2);\n s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits;\n s.contextModes = new Int8Array(s.numLiteralBlockTypes);\n let i = 0;\n while (i < s.numLiteralBlockTypes) {\n const limit = Math.min(i + 96, s.numLiteralBlockTypes);\n while (i < limit) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n s.contextModes[i] = readFewBits(s, 2);\n i++;\n }\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n }\n const contextMapLength = s.numLiteralBlockTypes << 6;\n s.contextMap = new Int8Array(contextMapLength);\n result = decodeContextMap(contextMapLength, s.contextMap, s);\n if (result < 0) {\n return result;\n }\n const numLiteralTrees = result;\n s.trivialLiteralContext = 1;\n for (let j = 0; j < contextMapLength; ++j) {\n if (s.contextMap[j] !== j >> 6) {\n s.trivialLiteralContext = 0;\n break;\n }\n }\n s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2);\n result = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s);\n if (result < 0) {\n return result;\n }\n const numDistTrees = result;\n s.literalTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(256, numLiteralTrees));\n result = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s, s.literalTreeGroup);\n if (result < 0) {\n return result;\n }\n s.commandTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(704, s.numCommandBlockTypes));\n result = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s, s.commandTreeGroup);\n if (result < 0) {\n return result;\n }\n let distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24);\n let distanceAlphabetSizeLimit = distanceAlphabetSizeMax;\n if (s.isLargeWindow === 1) {\n distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62);\n result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes);\n if (result < 0) {\n return result;\n }\n distanceAlphabetSizeLimit = result;\n }\n s.distanceTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(distanceAlphabetSizeLimit, numDistTrees));\n result = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s, s.distanceTreeGroup);\n if (result < 0) {\n return result;\n }\n calculateDistanceLut(s, distanceAlphabetSizeLimit);\n s.contextMapSlice = 0;\n s.distContextMapSlice = 0;\n s.contextLookupOffset1 = s.contextModes[0] * 512;\n s.contextLookupOffset2 = s.contextLookupOffset1 + 256;\n s.literalTreeIdx = 0;\n s.commandTreeIdx = 0;\n s.rings[4] = 1;\n s.rings[5] = 0;\n s.rings[6] = 1;\n s.rings[7] = 0;\n s.rings[8] = 1;\n s.rings[9] = 0;\n return 0;\n }\n function copyUncompressedData(s) {\n const ringBuffer = s.ringBuffer;\n let result;\n if (s.metaBlockLength <= 0) {\n result = reload(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 2;\n return 0;\n }\n const chunkLength = Math.min(s.ringBufferSize - s.pos, s.metaBlockLength);\n result = copyRawBytes(s, ringBuffer, s.pos, chunkLength);\n if (result < 0) {\n return result;\n }\n s.metaBlockLength -= chunkLength;\n s.pos += chunkLength;\n if (s.pos === s.ringBufferSize) {\n s.nextRunningState = 6;\n s.runningState = 12;\n return 0;\n }\n result = reload(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 2;\n return 0;\n }\n function writeRingBuffer(s) {\n const toWrite = Math.min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten);\n if (toWrite !== 0) {\n s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed);\n s.outputUsed += toWrite;\n s.ringBufferBytesWritten += toWrite;\n }\n if (s.outputUsed < s.outputLength) {\n return 0;\n }\n return 2;\n }\n function huffmanTreeGroupAllocSize(alphabetSizeLimit, n) {\n const maxTableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSizeLimit + 31 >> 5];\n return n + n * maxTableSize;\n }\n function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s, group) {\n let next = n;\n for (let i = 0; i < n; ++i) {\n group[i] = next;\n const result = readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s);\n if (result < 0) {\n return result;\n }\n next += result;\n }\n return 0;\n }\n function calculateFence(s) {\n let result = s.ringBufferSize;\n if (s.isEager !== 0) {\n result = Math.min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed);\n }\n return result;\n }\n function doUseDictionary(s, fence) {\n if (s.distance > 0x7FFFFFFC) {\n return makeError(s, -9);\n }\n const address = s.distance - s.maxDistance - 1 - s.cdTotalSize;\n if (address < 0) {\n const result = initializeCompoundDictionaryCopy(s, -address - 1, s.copyLength);\n if (result < 0) {\n return result;\n }\n s.runningState = 14;\n } else {\n const dictionaryData = data;\n const wordLength = s.copyLength;\n if (wordLength > 31) {\n return makeError(s, -9);\n }\n const shift = sizeBits[wordLength];\n if (shift === 0) {\n return makeError(s, -9);\n }\n let offset = offsets[wordLength];\n const mask = (1 << shift) - 1;\n const wordIdx = address & mask;\n const transformIdx = address >> shift;\n offset += wordIdx * wordLength;\n const transforms = RFC_TRANSFORMS;\n if (transformIdx >= transforms.numTransforms) {\n return makeError(s, -9);\n }\n const len = transformDictionaryWord(s.ringBuffer, s.pos, dictionaryData, offset, wordLength, transforms, transformIdx);\n s.pos += len;\n s.metaBlockLength -= len;\n if (s.pos >= fence) {\n s.nextRunningState = 4;\n s.runningState = 12;\n return 0;\n }\n s.runningState = 4;\n }\n return 0;\n }\n function initializeCompoundDictionary(s) {\n s.cdBlockMap = new Int8Array(256);\n let blockBits = 8;\n while (s.cdTotalSize - 1 >> blockBits !== 0) {\n blockBits++;\n }\n blockBits -= 8;\n s.cdBlockBits = blockBits;\n let cursor = 0;\n let index = 0;\n while (cursor < s.cdTotalSize) {\n while (s.cdChunkOffsets[index + 1] < cursor) {\n index++;\n }\n s.cdBlockMap[cursor >> blockBits] = index;\n cursor += 1 << blockBits;\n }\n }\n function initializeCompoundDictionaryCopy(s, address, length) {\n if (s.cdBlockBits === -1) {\n initializeCompoundDictionary(s);\n }\n let index = s.cdBlockMap[address >> s.cdBlockBits];\n while (address >= s.cdChunkOffsets[index + 1]) {\n index++;\n }\n if (s.cdTotalSize > address + length) {\n return makeError(s, -9);\n }\n s.distRbIdx = s.distRbIdx + 1 & 0x3;\n s.rings[s.distRbIdx] = s.distance;\n s.metaBlockLength -= length;\n s.cdBrIndex = index;\n s.cdBrOffset = address - s.cdChunkOffsets[index];\n s.cdBrLength = length;\n s.cdBrCopied = 0;\n return 0;\n }\n function copyFromCompoundDictionary(s, fence) {\n let pos = s.pos;\n const origPos = pos;\n while (s.cdBrLength !== s.cdBrCopied) {\n const space = fence - pos;\n const chunkLength = s.cdChunkOffsets[s.cdBrIndex + 1] - s.cdChunkOffsets[s.cdBrIndex];\n const remChunkLength = chunkLength - s.cdBrOffset;\n let length = s.cdBrLength - s.cdBrCopied;\n if (length > remChunkLength) {\n length = remChunkLength;\n }\n if (length > space) {\n length = space;\n }\n s.ringBuffer.set(s.cdChunks[s.cdBrIndex].subarray(s.cdBrOffset, s.cdBrOffset + length), pos);\n pos += length;\n s.cdBrOffset += length;\n s.cdBrCopied += length;\n if (length === remChunkLength) {\n s.cdBrIndex++;\n s.cdBrOffset = 0;\n }\n if (pos >= fence) {\n break;\n }\n }\n return pos - origPos;\n }\n function decompress(s) {\n let result;\n if (s.runningState === 0) {\n return makeError(s, -25);\n }\n if (s.runningState < 0) {\n return makeError(s, -28);\n }\n if (s.runningState === 11) {\n return makeError(s, -22);\n }\n if (s.runningState === 1) {\n const windowBits = decodeWindowBits(s);\n if (windowBits === -1) {\n return makeError(s, -11);\n }\n s.maxRingBufferSize = 1 << windowBits;\n s.maxBackwardDistance = s.maxRingBufferSize - 16;\n s.runningState = 2;\n }\n let fence = calculateFence(s);\n let ringBufferMask = s.ringBufferSize - 1;\n let ringBuffer = s.ringBuffer;\n while (s.runningState !== 10) {\n switch (s.runningState) {\n case 2:\n if (s.metaBlockLength < 0) {\n return makeError(s, -10);\n }\n result = readNextMetablockHeader(s);\n if (result < 0) {\n return result;\n }\n fence = calculateFence(s);\n ringBufferMask = s.ringBufferSize - 1;\n ringBuffer = s.ringBuffer;\n continue;\n case 3:\n result = readMetablockHuffmanCodesAndContextMaps(s);\n if (result < 0) {\n return result;\n }\n s.runningState = 4;\n continue;\n case 4:\n if (s.metaBlockLength <= 0) {\n s.runningState = 2;\n continue;\n }\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.commandBlockLength === 0) {\n decodeCommandBlockSwitch(s);\n }\n s.commandBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2;\n const insertAndCopyExtraBits = CMD_LOOKUP[cmdCode];\n const insertLengthOffset = CMD_LOOKUP[cmdCode + 1];\n const copyLengthOffset = CMD_LOOKUP[cmdCode + 2];\n s.distanceCode = CMD_LOOKUP[cmdCode + 3];\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const insertLengthExtraBits = insertAndCopyExtraBits & 0xFF;\n s.insertLength = insertLengthOffset + (insertLengthExtraBits <= 16 ? readFewBits(s, insertLengthExtraBits) : readManyBits(s, insertLengthExtraBits));\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const copyLengthExtraBits = insertAndCopyExtraBits >> 8;\n s.copyLength = copyLengthOffset + (copyLengthExtraBits <= 16 ? readFewBits(s, copyLengthExtraBits) : readManyBits(s, copyLengthExtraBits));\n s.j = 0;\n s.runningState = 7;\n continue;\n case 7:\n if (s.trivialLiteralContext !== 0) {\n while (s.j < s.insertLength) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.literalBlockLength === 0) {\n decodeLiteralBlockSwitch(s);\n }\n s.literalBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s);\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 7;\n s.runningState = 12;\n break;\n }\n }\n } else {\n let prevByte1 = ringBuffer[s.pos - 1 & ringBufferMask] & 0xFF;\n let prevByte2 = ringBuffer[s.pos - 2 & ringBufferMask] & 0xFF;\n while (s.j < s.insertLength) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.literalBlockLength === 0) {\n decodeLiteralBlockSwitch(s);\n }\n const literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2];\n const literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF;\n s.literalBlockLength--;\n prevByte2 = prevByte1;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s);\n ringBuffer[s.pos] = prevByte1;\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 7;\n s.runningState = 12;\n break;\n }\n }\n }\n if (s.runningState !== 7) {\n continue;\n }\n s.metaBlockLength -= s.insertLength;\n if (s.metaBlockLength <= 0) {\n s.runningState = 4;\n continue;\n }\n let distanceCode = s.distanceCode;\n if (distanceCode < 0) {\n s.distance = s.rings[s.distRbIdx];\n } else {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.distanceBlockLength === 0) {\n decodeDistanceBlockSwitch(s);\n }\n s.distanceBlockLength--;\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n const distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF;\n distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s);\n if (distanceCode < 16) {\n const index = s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode] & 0x3;\n s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode];\n if (s.distance < 0) {\n return makeError(s, -12);\n }\n } else {\n const extraBits = s.distExtraBits[distanceCode];\n let bits;\n if (s.bitOffset + extraBits <= 32) {\n bits = readFewBits(s, extraBits);\n } else {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n bits = extraBits <= 16 ? readFewBits(s, extraBits) : readManyBits(s, extraBits);\n }\n s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits);\n }\n }\n if (s.maxDistance !== s.maxBackwardDistance && s.pos < s.maxBackwardDistance) {\n s.maxDistance = s.pos;\n } else {\n s.maxDistance = s.maxBackwardDistance;\n }\n if (s.distance > s.maxDistance) {\n s.runningState = 9;\n continue;\n }\n if (distanceCode > 0) {\n s.distRbIdx = s.distRbIdx + 1 & 0x3;\n s.rings[s.distRbIdx] = s.distance;\n }\n if (s.copyLength > s.metaBlockLength) {\n return makeError(s, -9);\n }\n s.j = 0;\n s.runningState = 8;\n continue;\n case 8:\n let src = s.pos - s.distance & ringBufferMask;\n let dst = s.pos;\n const copyLength = s.copyLength - s.j;\n const srcEnd = src + copyLength;\n const dstEnd = dst + copyLength;\n if (srcEnd < ringBufferMask && dstEnd < ringBufferMask) {\n if (copyLength < 12 || srcEnd > dst && dstEnd > src) {\n const numQuads = copyLength + 3 >> 2;\n for (let k = 0; k < numQuads; ++k) {\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n ringBuffer[dst++] = ringBuffer[src++];\n }\n } else {\n ringBuffer.copyWithin(dst, src, srcEnd);\n }\n s.j += copyLength;\n s.metaBlockLength -= copyLength;\n s.pos += copyLength;\n } else {\n while (s.j < s.copyLength) {\n ringBuffer[s.pos] = ringBuffer[s.pos - s.distance & ringBufferMask];\n s.metaBlockLength--;\n s.pos++;\n s.j++;\n if (s.pos >= fence) {\n s.nextRunningState = 8;\n s.runningState = 12;\n break;\n }\n }\n }\n if (s.runningState === 8) {\n s.runningState = 4;\n }\n continue;\n case 9:\n result = doUseDictionary(s, fence);\n if (result < 0) {\n return result;\n }\n continue;\n case 14:\n s.pos += copyFromCompoundDictionary(s, fence);\n if (s.pos >= fence) {\n s.nextRunningState = 14;\n s.runningState = 12;\n return 2;\n }\n s.runningState = 4;\n continue;\n case 5:\n while (s.metaBlockLength > 0) {\n if (s.halfOffset > 2030) {\n result = readMoreInput(s);\n if (result < 0) {\n return result;\n }\n }\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n readFewBits(s, 8);\n s.metaBlockLength--;\n }\n s.runningState = 2;\n continue;\n case 6:\n result = copyUncompressedData(s);\n if (result < 0) {\n return result;\n }\n continue;\n case 12:\n s.ringBufferBytesReady = Math.min(s.pos, s.ringBufferSize);\n s.runningState = 13;\n continue;\n case 13:\n result = writeRingBuffer(s);\n if (result !== 0) {\n return result;\n }\n if (s.pos >= s.maxBackwardDistance) {\n s.maxDistance = s.maxBackwardDistance;\n }\n if (s.pos >= s.ringBufferSize) {\n if (s.pos > s.ringBufferSize) {\n ringBuffer.copyWithin(0, s.ringBufferSize, s.pos);\n }\n s.pos = s.pos & ringBufferMask;\n s.ringBufferBytesWritten = 0;\n }\n s.runningState = s.nextRunningState;\n continue;\n default:\n return makeError(s, -28);\n }\n }\n if (s.runningState !== 10) {\n return makeError(s, -29);\n }\n if (s.metaBlockLength < 0) {\n return makeError(s, -10);\n }\n result = jumpToByteBoundary(s);\n if (result !== 0) {\n return result;\n }\n result = checkHealth(s, 1);\n if (result !== 0) {\n return result;\n }\n return 1;\n }\n function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) {\n this.numTransforms = 0;\n this.triplets = new Int32Array(0);\n this.prefixSuffixStorage = new Int8Array(0);\n this.prefixSuffixHeads = new Int32Array(0);\n this.params = new Int16Array(0);\n this.numTransforms = numTransforms;\n this.triplets = new Int32Array(numTransforms * 3);\n this.params = new Int16Array(numTransforms);\n this.prefixSuffixStorage = new Int8Array(prefixSuffixLen);\n this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1);\n }\n const RFC_TRANSFORMS = new Transforms(121, 167, 50);\n function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) {\n const prefixSuffixBytes = toUtf8Runes(prefixSuffixSrc);\n const n = prefixSuffixBytes.length;\n let index = 1;\n let j = 0;\n for (let i = 0; i < n; ++i) {\n const c = prefixSuffixBytes[i];\n if (c === 35) {\n prefixSuffixHeads[index++] = j;\n } else {\n prefixSuffix[j++] = c;\n }\n }\n for (let i = 0; i < 363; ++i) {\n transforms[i] = transformsSrc.charCodeAt(i) - 32;\n }\n }\n unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, \"# #s #, #e #.# the #.com/#\\xC2\\xA0# of # and # in # to #\\\"#\\\">#\\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\\n\\t#:#ed #(# at #ly #=\\\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #\", \" !! ! , *! &! \\\" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \\\" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K\");\n function transformDictionaryWord(dst, dstOffset, src, srcOffset, wordLen, transforms, transformIndex) {\n let offset = dstOffset;\n const triplets = transforms.triplets;\n const prefixSuffixStorage = transforms.prefixSuffixStorage;\n const prefixSuffixHeads = transforms.prefixSuffixHeads;\n const transformOffset = 3 * transformIndex;\n const prefixIdx = triplets[transformOffset];\n const transformType = triplets[transformOffset + 1];\n const suffixIdx = triplets[transformOffset + 2];\n let prefix = prefixSuffixHeads[prefixIdx];\n const prefixEnd = prefixSuffixHeads[prefixIdx + 1];\n let suffix = prefixSuffixHeads[suffixIdx];\n const suffixEnd = prefixSuffixHeads[suffixIdx + 1];\n let omitFirst = transformType - 11;\n let omitLast = transformType;\n if (omitFirst < 1 || omitFirst > 9) {\n omitFirst = 0;\n }\n if (omitLast < 1 || omitLast > 9) {\n omitLast = 0;\n }\n while (prefix !== prefixEnd) {\n dst[offset++] = prefixSuffixStorage[prefix++];\n }\n let len = wordLen;\n if (omitFirst > len) {\n omitFirst = len;\n }\n let dictOffset = srcOffset + omitFirst;\n len -= omitFirst;\n len -= omitLast;\n let i = len;\n while (i > 0) {\n dst[offset++] = src[dictOffset++];\n i--;\n }\n if (transformType === 10 || transformType === 11) {\n let uppercaseOffset = offset - len;\n if (transformType === 10) {\n len = 1;\n }\n while (len > 0) {\n const c0 = dst[uppercaseOffset] & 0xFF;\n if (c0 < 0xC0) {\n if (c0 >= 97 && c0 <= 122) {\n dst[uppercaseOffset] = dst[uppercaseOffset] ^ 32;\n }\n uppercaseOffset += 1;\n len -= 1;\n } else if (c0 < 0xE0) {\n dst[uppercaseOffset + 1] = dst[uppercaseOffset + 1] ^ 32;\n uppercaseOffset += 2;\n len -= 2;\n } else {\n dst[uppercaseOffset + 2] = dst[uppercaseOffset + 2] ^ 5;\n uppercaseOffset += 3;\n len -= 3;\n }\n }\n } else if (transformType === 21 || transformType === 22) {\n let shiftOffset = offset - len;\n const param = transforms.params[transformIndex];\n let scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000));\n while (len > 0) {\n let step = 1;\n const c0 = dst[shiftOffset] & 0xFF;\n if (c0 < 0x80) {\n scalar += c0;\n dst[shiftOffset] = scalar & 0x7F;\n } else if (c0 < 0xC0) {} else if (c0 < 0xE0) {\n if (len >= 2) {\n const c1 = dst[shiftOffset + 1];\n scalar += c1 & 0x3F | (c0 & 0x1F) << 6;\n dst[shiftOffset] = 0xC0 | scalar >> 6 & 0x1F;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar & 0x3F;\n step = 2;\n } else {\n step = len;\n }\n } else if (c0 < 0xF0) {\n if (len >= 3) {\n const c1 = dst[shiftOffset + 1];\n const c2 = dst[shiftOffset + 2];\n scalar += c2 & 0x3F | (c1 & 0x3F) << 6 | (c0 & 0x0F) << 12;\n dst[shiftOffset] = 0xE0 | scalar >> 12 & 0x0F;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 6 & 0x3F;\n dst[shiftOffset + 2] = c2 & 0xC0 | scalar & 0x3F;\n step = 3;\n } else {\n step = len;\n }\n } else if (c0 < 0xF8) {\n if (len >= 4) {\n const c1 = dst[shiftOffset + 1];\n const c2 = dst[shiftOffset + 2];\n const c3 = dst[shiftOffset + 3];\n scalar += c3 & 0x3F | (c2 & 0x3F) << 6 | (c1 & 0x3F) << 12 | (c0 & 0x07) << 18;\n dst[shiftOffset] = 0xF0 | scalar >> 18 & 0x07;\n dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 12 & 0x3F;\n dst[shiftOffset + 2] = c2 & 0xC0 | scalar >> 6 & 0x3F;\n dst[shiftOffset + 3] = c3 & 0xC0 | scalar & 0x3F;\n step = 4;\n } else {\n step = len;\n }\n }\n shiftOffset += step;\n len -= step;\n if (transformType === 21) {\n len = 0;\n }\n }\n }\n while (suffix !== suffixEnd) {\n dst[offset++] = prefixSuffixStorage[suffix++];\n }\n return offset - dstOffset;\n }\n function getNextKey(key, len) {\n let step = 1 << len - 1;\n while ((key & step) !== 0) {\n step = step >> 1;\n }\n return (key & step - 1) + step;\n }\n function replicateValue(table, offset, step, end, item) {\n let pos = end;\n while (pos > 0) {\n pos -= step;\n table[offset + pos] = item;\n }\n }\n function nextTableBitSize(count, len, rootBits) {\n let bits = len;\n let left = 1 << bits - rootBits;\n while (bits < 15) {\n left -= count[bits];\n if (left <= 0) {\n break;\n }\n bits++;\n left = left << 1;\n }\n return bits - rootBits;\n }\n function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) {\n const tableOffset = tableGroup[tableIdx];\n const sorted = new Int32Array(codeLengthsSize);\n const count = new Int32Array(16);\n const offset = new Int32Array(16);\n for (let sym = 0; sym < codeLengthsSize; ++sym) {\n count[codeLengths[sym]]++;\n }\n offset[1] = 0;\n for (let len = 1; len < 15; ++len) {\n offset[len + 1] = offset[len] + count[len];\n }\n for (let sym = 0; sym < codeLengthsSize; ++sym) {\n if (codeLengths[sym] !== 0) {\n sorted[offset[codeLengths[sym]]++] = sym;\n }\n }\n let tableBits = rootBits;\n let tableSize = 1 << tableBits;\n let totalSize = tableSize;\n if (offset[15] === 1) {\n for (let k = 0; k < totalSize; ++k) {\n tableGroup[tableOffset + k] = sorted[0];\n }\n return totalSize;\n }\n let key = 0;\n let symbol = 0;\n let step = 1;\n for (let len = 1; len <= rootBits; ++len) {\n step = step << 1;\n while (count[len] > 0) {\n replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]);\n key = getNextKey(key, len);\n count[len]--;\n }\n }\n const mask = totalSize - 1;\n let low = -1;\n let currentOffset = tableOffset;\n step = 1;\n for (let len = rootBits + 1; len <= 15; ++len) {\n step = step << 1;\n while (count[len] > 0) {\n if ((key & mask) !== low) {\n currentOffset += tableSize;\n tableBits = nextTableBitSize(count, len, rootBits);\n tableSize = 1 << tableBits;\n totalSize += tableSize;\n low = key & mask;\n tableGroup[tableOffset + low] = tableBits + rootBits << 16 | currentOffset - tableOffset - low;\n }\n replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, len - rootBits << 16 | sorted[symbol++]);\n key = getNextKey(key, len);\n count[len]--;\n }\n }\n return totalSize;\n }\n function readMoreInput(s) {\n if (s.endOfStreamReached !== 0) {\n if (halfAvailable(s) >= -2) {\n return 0;\n }\n return makeError(s, -16);\n }\n const readOffset = s.halfOffset << 1;\n let bytesInBuffer = 4096 - readOffset;\n s.byteBuffer.copyWithin(0, readOffset, 4096);\n s.halfOffset = 0;\n while (bytesInBuffer < 4096) {\n const spaceLeft = 4096 - bytesInBuffer;\n const len = readInput(s, s.byteBuffer, bytesInBuffer, spaceLeft);\n if (len < -1) {\n return len;\n }\n if (len <= 0) {\n s.endOfStreamReached = 1;\n s.tailBytes = bytesInBuffer;\n bytesInBuffer += 1;\n break;\n }\n bytesInBuffer += len;\n }\n bytesToNibbles(s, bytesInBuffer);\n return 0;\n }\n function checkHealth(s, endOfStream) {\n if (s.endOfStreamReached === 0) {\n return 0;\n }\n const byteOffset = (s.halfOffset << 1) + (s.bitOffset + 7 >> 3) - 4;\n if (byteOffset > s.tailBytes) {\n return makeError(s, -13);\n }\n if (endOfStream !== 0 && byteOffset !== s.tailBytes) {\n return makeError(s, -17);\n }\n return 0;\n }\n function readFewBits(s, n) {\n const v = s.accumulator32 >>> s.bitOffset & (1 << n) - 1;\n s.bitOffset += n;\n return v;\n }\n function readManyBits(s, n) {\n const low = readFewBits(s, 16);\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n return low | readFewBits(s, n - 16) << 16;\n }\n function initBitReader(s) {\n s.byteBuffer = new Int8Array(4160);\n s.accumulator32 = 0;\n s.shortBuffer = new Int16Array(2080);\n s.bitOffset = 32;\n s.halfOffset = 2048;\n s.endOfStreamReached = 0;\n return prepare(s);\n }\n function prepare(s) {\n if (s.halfOffset > 2030) {\n const result = readMoreInput(s);\n if (result !== 0) {\n return result;\n }\n }\n let health = checkHealth(s, 0);\n if (health !== 0) {\n return health;\n }\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n return 0;\n }\n function reload(s) {\n if (s.bitOffset === 32) {\n return prepare(s);\n }\n return 0;\n }\n function jumpToByteBoundary(s) {\n const padding = 32 - s.bitOffset & 7;\n if (padding !== 0) {\n const paddingBits = readFewBits(s, padding);\n if (paddingBits !== 0) {\n return makeError(s, -5);\n }\n }\n return 0;\n }\n function halfAvailable(s) {\n let limit = 2048;\n if (s.endOfStreamReached !== 0) {\n limit = s.tailBytes + 1 >> 1;\n }\n return limit - s.halfOffset;\n }\n function copyRawBytes(s, data, offset, length) {\n let pos = offset;\n let len = length;\n if ((s.bitOffset & 7) !== 0) {\n return makeError(s, -30);\n }\n while (s.bitOffset !== 32 && len !== 0) {\n data[pos++] = s.accumulator32 >>> s.bitOffset;\n s.bitOffset += 8;\n len--;\n }\n if (len === 0) {\n return 0;\n }\n const copyNibbles = Math.min(halfAvailable(s), len >> 1);\n if (copyNibbles > 0) {\n const readOffset = s.halfOffset << 1;\n const delta = copyNibbles << 1;\n data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), pos);\n pos += delta;\n len -= delta;\n s.halfOffset += copyNibbles;\n }\n if (len === 0) {\n return 0;\n }\n if (halfAvailable(s) > 0) {\n if (s.bitOffset >= 16) {\n s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;\n s.bitOffset -= 16;\n }\n while (len !== 0) {\n data[pos++] = s.accumulator32 >>> s.bitOffset;\n s.bitOffset += 8;\n len--;\n }\n return checkHealth(s, 0);\n }\n while (len > 0) {\n const chunkLen = readInput(s, data, pos, len);\n if (chunkLen < -1) {\n return chunkLen;\n }\n if (chunkLen <= 0) {\n return makeError(s, -16);\n }\n pos += chunkLen;\n len -= chunkLen;\n }\n return 0;\n }\n function bytesToNibbles(s, byteLen) {\n const byteBuffer = s.byteBuffer;\n const halfLen = byteLen >> 1;\n const shortBuffer = s.shortBuffer;\n for (let i = 0; i < halfLen; ++i) {\n shortBuffer[i] = byteBuffer[i * 2] & 0xFF | (byteBuffer[i * 2 + 1] & 0xFF) << 8;\n }\n }\n const LOOKUP = new Int32Array(2048);\n function unpackLookupTable(lookup, utfMap, utfRle) {\n for (let i = 0; i < 256; ++i) {\n lookup[i] = i & 0x3F;\n lookup[512 + i] = i >> 2;\n lookup[1792 + i] = 2 + (i >> 6);\n }\n for (let i = 0; i < 128; ++i) {\n lookup[1024 + i] = 4 * (utfMap.charCodeAt(i) - 32);\n }\n for (let i = 0; i < 64; ++i) {\n lookup[1152 + i] = i & 1;\n lookup[1216 + i] = 2 + (i & 1);\n }\n let offset = 1280;\n for (let k = 0; k < 19; ++k) {\n const value = k & 3;\n const rep = utfRle.charCodeAt(k) - 32;\n for (let i = 0; i < rep; ++i) {\n lookup[offset++] = value;\n }\n }\n for (let i = 0; i < 16; ++i) {\n lookup[1792 + i] = 1;\n lookup[2032 + i] = 6;\n }\n lookup[1792] = 0;\n lookup[2047] = 7;\n for (let i = 0; i < 256; ++i) {\n lookup[1536 + i] = lookup[1792 + i] << 3;\n }\n }\n unpackLookupTable(LOOKUP, \" !! ! \\\"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# \", \"A/* ': & : $ \\x81 @\");\n function State() {\n this.ringBuffer = new Int8Array(0);\n this.contextModes = new Int8Array(0);\n this.contextMap = new Int8Array(0);\n this.distContextMap = new Int8Array(0);\n this.distExtraBits = new Int8Array(0);\n this.output = new Int8Array(0);\n this.byteBuffer = new Int8Array(0);\n this.shortBuffer = new Int16Array(0);\n this.intBuffer = new Int32Array(0);\n this.rings = new Int32Array(0);\n this.blockTrees = new Int32Array(0);\n this.literalTreeGroup = new Int32Array(0);\n this.commandTreeGroup = new Int32Array(0);\n this.distanceTreeGroup = new Int32Array(0);\n this.distOffset = new Int32Array(0);\n this.accumulator64 = 0;\n this.runningState = 0;\n this.nextRunningState = 0;\n this.accumulator32 = 0;\n this.bitOffset = 0;\n this.halfOffset = 0;\n this.tailBytes = 0;\n this.endOfStreamReached = 0;\n this.metaBlockLength = 0;\n this.inputEnd = 0;\n this.isUncompressed = 0;\n this.isMetadata = 0;\n this.literalBlockLength = 0;\n this.numLiteralBlockTypes = 0;\n this.commandBlockLength = 0;\n this.numCommandBlockTypes = 0;\n this.distanceBlockLength = 0;\n this.numDistanceBlockTypes = 0;\n this.pos = 0;\n this.maxDistance = 0;\n this.distRbIdx = 0;\n this.trivialLiteralContext = 0;\n this.literalTreeIdx = 0;\n this.commandTreeIdx = 0;\n this.j = 0;\n this.insertLength = 0;\n this.contextMapSlice = 0;\n this.distContextMapSlice = 0;\n this.contextLookupOffset1 = 0;\n this.contextLookupOffset2 = 0;\n this.distanceCode = 0;\n this.numDirectDistanceCodes = 0;\n this.distancePostfixBits = 0;\n this.distance = 0;\n this.copyLength = 0;\n this.maxBackwardDistance = 0;\n this.maxRingBufferSize = 0;\n this.ringBufferSize = 0;\n this.expectedTotalSize = 0;\n this.outputOffset = 0;\n this.outputLength = 0;\n this.outputUsed = 0;\n this.ringBufferBytesWritten = 0;\n this.ringBufferBytesReady = 0;\n this.isEager = 0;\n this.isLargeWindow = 0;\n this.cdNumChunks = 0;\n this.cdTotalSize = 0;\n this.cdBrIndex = 0;\n this.cdBrOffset = 0;\n this.cdBrLength = 0;\n this.cdBrCopied = 0;\n this.cdChunks = new Array(0);\n this.cdChunkOffsets = new Int32Array(0);\n this.cdBlockBits = 0;\n this.cdBlockMap = new Int8Array(0);\n this.input = new InputStream(new Int8Array(0));\n this.ringBuffer = new Int8Array(0);\n this.rings = new Int32Array(10);\n this.rings[0] = 16;\n this.rings[1] = 15;\n this.rings[2] = 11;\n this.rings[3] = 4;\n }\n let data = new Int8Array(0);\n const offsets = new Int32Array(32);\n const sizeBits = new Int32Array(32);\n function setData(newData, newSizeBits) {\n const dictionaryOffsets = offsets;\n const dictionarySizeBits = sizeBits;\n for (let i = 0; i < newSizeBits.length; ++i) {\n dictionarySizeBits[i] = newSizeBits[i];\n }\n let pos = 0;\n for (let i = 0; i < newSizeBits.length; ++i) {\n dictionaryOffsets[i] = pos;\n const bits = dictionarySizeBits[i];\n if (bits !== 0) {\n pos += i << (bits & 31);\n }\n }\n for (let i = newSizeBits.length; i < 32; ++i) {\n dictionaryOffsets[i] = pos;\n }\n data = newData;\n }\n function unpackDictionaryData(dictionary, data0, data1, skipFlip, sizeBits, sizeBitsData) {\n const dict = toUsAsciiBytes(data0 + data1);\n const skipFlipRunes = toUtf8Runes(skipFlip);\n let offset = 0;\n const n = skipFlipRunes.length >> 1;\n for (let i = 0; i < n; ++i) {\n const skip = skipFlipRunes[2 * i] - 36;\n const flip = skipFlipRunes[2 * i + 1] - 36;\n for (let j = 0; j < skip; ++j) {\n dict[offset] = dict[offset] ^ 3;\n offset++;\n }\n for (let j = 0; j < flip; ++j) {\n dict[offset] = dict[offset] ^ 236;\n offset++;\n }\n }\n for (let i = 0; i < sizeBitsData.length; ++i) {\n sizeBits[i] = sizeBitsData.charCodeAt(i) - 65;\n }\n dictionary.set(dict);\n }\n const dictionaryData = new Int8Array(122784);\n const dictionarySizeBits = new Int32Array(25);\n unpackDictionaryData(dictionaryData, \"wjnfgltmojefofewab`h`lgfgbwbpkltlmozpjwf`jwzlsfmivpwojhfeqfftlqhwf{wzfbqlufqalgzolufelqnallhsobzojufojmfkfosklnfpjgfnlqftlqgolmdwkfnujftejmgsbdfgbzpevookfbgwfqnfb`kbqfbeqlnwqvfnbqhbaofvslmkjdkgbwfobmgmftpfufmmf{w`bpfalwkslpwvpfgnbgfkbmgkfqftkbwmbnfOjmhaoldpjyfabpfkfognbhfnbjmvpfq$*#(klogfmgptjwkMftpqfbgtfqfpjdmwbhfkbufdbnfpffm`boosbwktfoosovpnfmvejonsbqwiljmwkjpojpwdllgmffgtbzptfpwilapnjmgboploldlqj`kvpfpobpwwfbnbqnzellghjmdtjoofbpwtbqgafpwejqfSbdfhmltbtbz-smdnlufwkbmolbgdjufpfoemlwfnv`keffgnbmzql`hj`lmlm`follhkjgfgjfgKlnfqvofklpwbib{jmel`ovaobtpofppkboeplnfpv`kylmf233&lmfp`bqfWjnfqb`faovfelvqtffheb`fklsfdbufkbqgolpwtkfmsbqhhfswsbpppkjsqllnKWNOsobmWzsfglmfpbufhffseobdojmhplogejufwllhqbwfwltmivnswkvpgbqh`bqgejofefbqpwbzhjoowkbweboobvwlfufq-`lnwbohpklsulwfgffsnlgfqfpwwvqmalqmabmgefooqlpfvqo+phjmqlof`lnfb`wpbdfpnffwdlog-isdjwfnubqzefowwkfmpfmggqlsUjft`lsz2-3!?,b=pwlsfopfojfpwlvqsb`h-djesbpw`pp!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?\\\"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+\\\"sj`hfujo'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sksolpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqn\\x0ElupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\\n.pjy....sqls$*8\\x0EojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#\\x0Elxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*\\x7F\\\"+njmfyk9\\x04abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{\\\"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\\b$**8svqfnbdfsbqbwlmfalmg904Y\\\\le\\\\$^*8333/yk9\\x0Bwbmhzbqgaltoavpk965YIbub03s{\\t\\x7F~\\t&@0&907YifeeF[SJ`bpkujpbdloepmltyk9\\x05rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8\\t~\\tf{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8\\t\\n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~\\tgvpw`ojs*-\\t\\t43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~\\x0E\\tKFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf\\x7F.\\t\\\"331*mgltX2^8X^8\\tOld#pbow\\x0E\\t\\n\\nabmdwqjnabwk*x\\x0E\\t33s{\\t~*8hl9\\0effpbg=\\x0Ep9,,#X^8wloosovd+*x\\tx\\x0E\\t#-ip$133sgvboalbw-ISD*8\\t~rvlw*8\\t\\t$*8\\t\\x0E\\t~\\x0E1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\\\!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?\\\"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8\\x0E\\tabmgprvfvf>#x~8;3s{8`hjmdx\\x0E\\t\\n\\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8\\t\\nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*#\\x7F\\x7F#oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9\\x0Fnpjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#\\\">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8\\t~\\telqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?\\\"..\\tl.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isd\\x7Fpvjwfpoj`fkbqqz213!#ptffwwq=\\x0E\\tmbnf>gjfdlsbdf#ptjpp..=\\t\\t eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9\\x0Fojg>!`Mbnf!tlqpfpklwp.al{.gfowb\\t%ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8\\t.2!*8wzsf>aovfpwqvozgbujp-ip$8=\\x0E\\t?\\\"pwffo#zlv#k1=\\x0E\\telqn#ifpvp233&#nfmv-\\x0E\\t\\n\\x0E\\ttbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w-\\t\\tLmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{\\x7F`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2=\\t\\\\elqn!ofbufppwqfpp!#,=\\x0E\\t-dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg\\x7F\\x7F#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{\\x7Ffpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!=\\t)#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\\\jnbdfwkqfbgmbwjufsl`hfwal{!=\\tPzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw#\\x7F\\x7F#X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd\\t\\tTkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8#\\t\\tJm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=\\x0Evpjmd#\\t\\nubq#=$*8\\t\\n?,wg=\\t?,wq=\\tabkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\\bTA\\nzk\\x0BBl\\bQ\\x7F\\x0BUm\\x05Gx\\bSM\\nmC\\bTA\\twQ\\nd}\\bW@\\bTl\\bTF\\ti@\\tcT\\x0BBM\\x0B|j\\x04BV\\tqw\\tcC\\bWI\\npa\\tfM\\n{Z\\x05{X\\bTF\\bVV\\bVK\\t\\x7Fm\\x04kF\\t[]\\bPm\\bTv\\nsI\\x0Bpg\\t[I\\bQp\\x04mx\\x0B_W\\n^M\\npe\\x0BQ}\\x0BGu\\nel\\npe\\x04Ch\\x04BV\\bTA\\tSo\\nzk\\x0BGL\\x0BxD\\nd[\\x05Jz\\x05MY\\bQp\\x04li\\nfl\\npC\\x05{B\\x05Nt\\x0BwT\\ti_\\bTg\\x04QQ\\n|p\\x0BXN\\bQS\\x0BxD\\x04QC\\bWZ\\tpD\\x0BVS\\bTW\\x05Nt\\x04Yh\\nzu\\x04Kj\\x05N}\\twr\\tHa\\n_D\\tj`\\x0BQ}\\x0BWp\\nxZ\\x04{c\\tji\\tBU\\nbD\\x04a|\\tTn\\tpV\\nZd\\nmC\\x0BEV\\x05{X\\tc}\\tTo\\bWl\\bUd\\tIQ\\tcg\\x0Bxs\\nXW\\twR\\x0Bek\\tc}\\t]y\\tJn\\nrp\\neg\\npV\\nz\\\\\\x05{W\\npl\\nz\\\\\\nzU\\tPc\\t`{\\bV@\\nc|\\bRw\\ti_\\bVb\\nwX\\tHv\\x04Su\\bTF\\x0B_W\\x0BWs\\x0BsI\\x05m\\x7F\\nTT\\ndc\\tUS\\t}f\\tiZ\\bWz\\tc}\\x04MD\\tBe\\tiD\\x0B@@\\bTl\\bPv\\t}t\\x04Sw\\x04M`\\x0BnU\\tkW\\x0Bed\\nqo\\x0BxY\\tA|\\bTz\\x0By`\\x04BR\\x04BM\\tia\\x04XU\\nyu\\x04n^\\tfL\\tiI\\nXW\\tfD\\bWz\\bW@\\tyj\\t\\x7Fm\\tav\\tBN\\x0Bb\\\\\\tpD\\bTf\\nY[\\tJn\\bQy\\t[^\\x0BWc\\x0Byu\\x04Dl\\x04CJ\\x0BWj\\x0BHR\\t`V\\x0BuW\\tQy\\np@\\x0BGu\\x05pl\\x04Jm\\bW[\\nLP\\nxC\\n`m\\twQ\\x05ui\\x05\\x7FR\\nbI\\twQ\\tBZ\\tWV\\x04BR\\npg\\tcg\\x05ti\\x04CW\\n_y\\tRg\\bQa\\x0BQB\\x0BWc\\nYb\\x05le\\ngE\\x04Su\\nL[\\tQ\\x7F\\tea\\tdj\\x0B]W\\nb~\\x04M`\\twL\\bTV\\bVH\\nt\\x7F\\npl\\t|b\\x05s_\\bU|\\bTa\\x04oQ\\x05lv\\x04Sk\\x04M`\\bTv\\x0BK}\\nfl\\tcC\\x04oQ\\x04BR\\tHk\\t|d\\bQp\\tHK\\tBZ\\x0BHR\\bPv\\x0BLx\\x0BEZ\\bT\\x7F\\bTv\\tiD\\x05oD\\x05MU\\x0BwB\\x04Su\\x05k`\\x04St\\ntC\\tPl\\tKg\\noi\\tjY\\x0BxY\\x04h}\\nzk\\bWZ\\t\\x7Fm\\x0Be`\\tTB\\tfE\\nzk\\t`z\\x04Yh\\nV|\\tHK\\tAJ\\tAJ\\bUL\\tp\\\\\\tql\\nYc\\x04Kd\\nfy\\x04Yh\\t[I\\x0BDg\\x04Jm\\n]n\\nlb\\bUd\\n{Z\\tlu\\tfs\\x04oQ\\bTW\\x04Jm\\x0BwB\\tea\\x04Yh\\x04BC\\tsb\\tTn\\nzU\\n_y\\x0BxY\\tQ]\\ngw\\x04mt\\tO\\\\\\ntb\\bWW\\bQy\\tmI\\tV[\\ny\\\\\\naB\\x0BRb\\twQ\\n]Q\\x04QJ\\bWg\\x0BWa\\bQj\\ntC\\bVH\\nYm\\x0Bxs\\bVK\\nel\\bWI\\x0BxY\\x04Cq\\ntR\\x0BHV\\bTl\\bVw\\tay\\bQa\\bVV\\t}t\\tdj\\nr|\\tp\\\\\\twR\\n{i\\nTT\\t[I\\ti[\\tAJ\\x0Bxs\\x0B_W\\td{\\x0BQ}\\tcg\\tTz\\tA|\\tCj\\x0BLm\\x05N}\\x05m\\x7F\\nbK\\tdZ\\tp\\\\\\t`V\\tsV\\np@\\tiD\\twQ\\x0BQ}\\bTf\\x05ka\\x04Jm\\x0B@@\\bV`\\tzp\\n@N\\x04Sw\\tiI\\tcg\\noi\\x04Su\\bVw\\x04lo\\x04Cy\\tc}\\x0Bb\\\\\\tsU\\x04BA\\bWI\\bTf\\nxS\\tVp\\nd|\\bTV\\x0BbC\\tNo\\x05Ju\\nTC\\t|`\\n{Z\\tD]\\bU|\\tc}\\x05lm\\bTl\\tBv\\tPl\\tc}\\bQp\\t\\x7Fm\\nLk\\tkj\\n@N\\x04Sb\\x04KO\\tj_\\tp\\\\\\nzU\\bTl\\bTg\\bWI\\tcf\\x04XO\\bWW\\ndz\\x04li\\tBN\\nd[\\bWO\\x04MD\\x0BKC\\tdj\\tI_\\bVV\\ny\\\\\\x0BLm\\x05xl\\txB\\tkV\\x0Bb\\\\\\x0BJW\\x0BVS\\tVx\\x0BxD\\td{\\x04MD\\bTa\\t|`\\x0BPz\\x04R}\\x0BWs\\x04BM\\nsI\\x04CN\\bTa\\x04Jm\\npe\\ti_\\npV\\nrh\\tRd\\tHv\\n~A\\nxR\\x0BWh\\x0BWk\\nxS\\x0BAz\\x0BwX\\nbI\\x04oQ\\tfw\\nqI\\nV|\\nun\\x05z\\x7F\\x0Bpg\\td\\\\\\x0BoA\\x05{D\\ti_\\x05xB\\bT\\x7F\\t`V\\x05qr\\tTT\\x04g]\\x04CA\\x0BuR\\tVJ\\tT`\\npw\\x0BRb\\tI_\\nCx\\x04Ro\\x0BsI\\x04Cj\\x04Kh\\tBv\\tWV\\x04BB\\x05oD\\x05{D\\nhc\\x04Km\\x0B^R\\tQE\\n{I\\np@\\nc|\\x05Gt\\tc}\\x04Dl\\nzU\\x05qN\\tsV\\x05k}\\tHh\\x0B|j\\nqo\\x05u|\\tQ]\\x0Bek\\x05\\x7FZ\\x04M`\\x04St\\npe\\tdj\\bVG\\x0BeE\\t\\x7Fm\\x0BWc\\x04|I\\n[W\\tfL\\bT\\x7F\\tBZ\\x04Su\\x0BKa\\x04Cq\\x05Nt\\x04Y[\\nqI\\bTv\\tfM\\ti@\\t}f\\x04B\\\\\\tQy\\x0BBl\\bWg\\x04XD\\x05kc\\x0Bx[\\bVV\\tQ]\\t\\x7Fa\\tPy\\x0BxD\\nfI\\t}f\\x05oD\\tdj\\tSG\\x05ls\\t~D\\x04CN\\n{Z\\t\\\\v\\n_D\\nhc\\x0Bx_\\x04C[\\tAJ\\nLM\\tVx\\x04CI\\tbj\\tc^\\tcF\\ntC\\x04Sx\\twr\\x04XA\\bU\\\\\\t|a\\x0BK\\\\\\bTV\\bVj\\nd|\\tfs\\x04CX\\ntb\\bRw\\tVx\\tAE\\tA|\\bT\\x7F\\x05Nt\\x0BDg\\tVc\\bTl\\x04d@\\npo\\t\\x7FM\\tcF\\npe\\tiZ\\tBo\\bSq\\nfH\\x04l`\\bTx\\bWf\\tHE\\x0BF{\\tcO\\tfD\\nlm\\x0BfZ\\nlm\\x0BeU\\tdG\\x04BH\\bTV\\tSi\\x05MW\\nwX\\nz\\\\\\t\\\\c\\x04CX\\nd}\\tl}\\bQp\\bTV\\tF~\\bQ\\x7F\\t`i\\ng@\\x05nO\\bUd\\bTl\\nL[\\twQ\\tji\\ntC\\t|J\\nLU\\naB\\x0BxY\\x04Kj\\tAJ\\x05uN\\ti[\\npe\\x04Sk\\x0BDg\\x0Bx]\\bVb\\bVV\\nea\\tkV\\nqI\\bTa\\x04Sk\\nAO\\tpD\\ntb\\nts\\nyi\\bVg\\ti_\\x0B_W\\nLk\\x05Nt\\tyj\\tfM\\x04R\\x7F\\tiI\\bTl\\x0BwX\\tsV\\x0BMl\\nyu\\tAJ\\bVj\\x04KO\\tWV\\x0BA}\\x0BW\\x7F\\nrp\\tiD\\x0B|o\\x05lv\\x0BsI\\x04BM\\td~\\tCU\\bVb\\x04eV\\npC\\x0BwT\\tj`\\tc}\\x0Bxs\\x0Bps\\x0Bvh\\tWV\\x0BGg\\x0BAe\\x0BVK\\x0B]W\\trg\\x0BWc\\x05F`\\tBr\\x0Bb\\\\\\tdZ\\bQp\\nqI\\x04kF\\nLk\\x0BAR\\bWI\\bTg\\tbs\\tdw\\n{L\\n_y\\tiZ\\bTA\\tlg\\bVV\\bTl\\tdk\\n`k\\ta{\\ti_\\x05{A\\x05wj\\twN\\x0B@@\\bTe\\ti_\\n_D\\twL\\nAH\\x0BiK\\x0Bek\\n[]\\tp_\\tyj\\bTv\\tUS\\t[r\\n{I\\nps\\x05Gt\\x0BVK\\npl\\x04S}\\x0BWP\\t|d\\x04MD\\x0BHV\\bT\\x7F\\x04R}\\x04M`\\bTV\\bVH\\x05lv\\x04Ch\\bW[\\x04Ke\\tR{\\x0B^R\\tab\\tBZ\\tVA\\tB`\\nd|\\nhs\\x04Ke\\tBe\\x04Oi\\tR{\\td\\\\\\x05nB\\bWZ\\tdZ\\tVJ\\x05Os\\t\\x7Fm\\x04uQ\\x0BhZ\\x04Q@\\x04QQ\\nfI\\bW[\\x04B\\\\\\x04li\\nzU\\nMd\\x04M`\\nxS\\bVV\\n\\\\}\\x0BxD\\t\\x7Fm\\bTp\\x04IS\\nc|\\tkV\\x05i~\\tV{\\x0BhZ\\t|b\\bWt\\n@R\\x0BoA\\x0BnU\\bWI\\tea\\tB`\\tiD\\tc}\\tTz\\x04BR\\x0BQB\\x05Nj\\tCP\\t[I\\bTv\\t`W\\x05uN\\x0Bpg\\x0Bpg\\x0BWc\\tiT\\tbs\\twL\\tU_\\tc\\\\\\t|h\\x0BKa\\tNr\\tfL\\nq|\\nzu\\nz\\\\\\tNr\\bUg\\t|b\\x04m`\\bTv\\nyd\\nrp\\bWf\\tUX\\x04BV\\nzk\\nd}\\twQ\\t}f\\x04Ce\\x0Bed\\bTW\\bSB\\nxU\\tcn\\bTb\\ne\\x7F\\ta\\\\\\tSG\\bU|\\npV\\nN\\\\\\x04Kn\\x0BnU\\tAt\\tpD\\x0B^R\\x0BIr\\x04b[\\tR{\\tdE\\x0BxD\\x0BWK\\x0BWA\\bQL\\bW@\\x04Su\\bUd\\nDM\\tPc\\x04CA\\x04Dl\\x04oQ\\tHs\\x05wi\\x04ub\\n\\x7Fa\\bQp\\x05Ob\\nLP\\bTl\\x04Y[\\x0BK}\\tAJ\\bQ\\x7F\\x04n^\\x0BsA\\bSM\\nqM\\bWZ\\n^W\\x0Bz{\\x04S|\\tfD\\bVK\\bTv\\bPv\\x04BB\\tCP\\x04dF\\tid\\x0Bxs\\x04mx\\x0Bws\\tcC\\ntC\\tyc\\x05M`\\x0BW\\x7F\\nrh\\bQp\\x0BxD\\x04\\\\o\\nsI\\x04_k\\nzu\\x04kF\\tfD\\x04Xs\\x04XO\\tjp\\bTv\\x04BS\\x05{B\\tBr\\nzQ\\nbI\\tc{\\x04BD\\x04BV\\x05nO\\bTF\\tca\\x05Jd\\tfL\\tPV\\tI_\\nlK\\x04`o\\twX\\npa\\tgu\\bP}\\x05{^\\bWf\\n{I\\tBN\\npa\\x04Kl\\x0Bpg\\tcn\\tfL\\x0Bvh\\x04Cq\\bTl\\x0BnU\\bSq\\x04Cm\\twR\\bUJ\\npe\\nyd\\nYg\\x04Cy\\x0BKW\\tfD\\nea\\x04oQ\\tj_\\tBv\\x04nM\\x0BID\\bTa\\nzA\\x05pl\\n]n\\bTa\\tR{\\tfr\\n_y\\bUg\\x05{X\\x05kk\\x0BxD\\x04|I\\x05xl\\nfy\\x04Ce\\x0BwB\\nLk\\x0Bd]\\noi\\n}h\\tQ]\\npe\\bVw\\x04Hk\\x04OQ\\nzk\\tAJ\\npV\\bPv\\ny\\\\\\tA{\\x04Oi\\bSB\\x04XA\\x0BeE\\tjp\\nq}\\tiD\\x05qN\\x0B^R\\t\\x7Fm\\tiZ\\tBr\\bVg\\noi\\n\\\\X\\tU_\\nc|\\x0BHV\\bTf\\tTn\\x04\\\\N\\x04\\\\N\\nuB\\x05lv\\nyu\\tTd\\bTf\\bPL\\x0B]W\\tdG\\nA`\\nw^\\ngI\\npe\\tdw\\nz\\\\\\x05ia\\bWZ\\tcF\\x04Jm\\n{Z\\bWO\\x04_k\\x04Df\\x04RR\\td\\\\\\bVV\\x0Bxs\\x04BN\\x05ti\\x04lm\\tTd\\t]y\\x0BHV\\tSo\\x0B|j\\x04XX\\tA|\\x0BZ^\\x0BGu\\bTW\\x05M`\\x04kF\\x0BhZ\\x0BVK\\tdG\\x0BBl\\tay\\nxU\\x05qE\\x05nO\\bVw\\nqI\\x04CX\\ne\\x7F\\tPl\\bWO\\x0BLm\\tdL\\x05uH\\x04Cm\\tdT\\x04fn\\x0BwB\\x05ka\\x0BnU\\n@M\\nyT\\tHv\\t\\\\}\\x04Kh\\td~\\x04Yh\\x05k}\\neR\\td\\\\\\bWI\\t|b\\tHK\\tiD\\bTW\\x05MY\\npl\\bQ_\\twr\\x0BAx\\tHE\\bTg\\bSq\\x05vp\\x0Bb\\\\\\bWO\\nOl\\nsI\\nfy\\x0BID\\t\\\\c\\n{Z\\n^~\\npe\\nAO\\tTT\\x0Bxv\\x04k_\\bWO\\x0B|j\\x0BwB\\tQy\\ti@\\tPl\\tHa\\tdZ\\x05k}\\x04ra\\tUT\\x0BJc\\x0Bed\\np@\\tQN\\nd|\\tkj\\tHk\\x04M`\\noi\\twr\\td\\\\\\nlq\\no_\\nlb\\nL[\\tac\\x04BB\\x04BH\\x04Cm\\npl\\tIQ\\bVK\\x0Bxs\\n`e\\x0BiK\\npa\\x04Oi\\tUS\\bTp\\tfD\\nPG\\x05kk\\x04XA\\nz\\\\\\neg\\x0BWh\\twR\\x05qN\\nqS\\tcn\\x04lo\\nxS\\n^W\\tBU\\nt\\x7F\\tHE\\tp\\\\\\tfF\\tfw\\bVV\\bW@\\tak\\x0BVK\\x05ls\\tVJ\\bVV\\x0BeE\\x04\\\\o\\nyX\\nYm\\x04M`\\x05lL\\nd|\\nzk\\tA{\\x05sE\\twQ\\x04XT\\nt\\x7F\\tPl\\t]y\\x0BwT\\x05{p\\x04MD\\x0Bb\\\\\\tQ]\\x04Kj\\tJn\\nAH\\x0BRb\\tBU\\tHK\\t\\\\c\\nfI\\x05m\\x7F\\nqM\\n@R\\tSo\\noi\\x04BT\\tHv\\n_y\\x04Kh\\tBZ\\t]i\\bUJ\\tV{\\x04Sr\\nbI\\x0BGg\\ta_\\bTR\\nfI\\nfl\\t[K\\tII\\x04S|\\x0BuW\\tiI\\bWI\\nqI\\x0B|j\\x04BV\\bVg\\bWZ\\x04kF\\x0Bx]\\bTA\\tab\\tfr\\ti@\\tJd\\tJd\\x0Bps\\nAO\\bTa\\x05xu\\tiD\\nzk\\t|d\\t|`\\bW[\\tlP\\tdG\\bVV\\x0Bw}\\x0BqO\\ti[\\bQ\\x7F\\bTz\\x0BVF\\twN\\x05ts\\tdw\\bTv\\neS\\ngi\\tNr\\x05yS\\npe\\bVV\\bSq\\n`m\\tyj\\tBZ\\x0BWX\\bSB\\tc\\\\\\nUR\\t[J\\tc_\\x04nM\\bWQ\\x0BAx\\nMd\\tBr\\x05ui\\x0BxY\\bSM\\x0BWc\\x0B|j\\x0Bxs\\t}Q\\tBO\\bPL\\bWW\\tfM\\nAO\\tPc\\x0BeU\\x04e^\\bTg\\nqI\\tac\\bPv\\tcF\\x04oQ\\tQ\\x7F\\x0BhZ\\x05ka\\nz\\\\\\tiK\\tBU\\n`k\\tCP\\x04S|\\x04M`\\n{I\\tS{\\x04_O\\tBZ\\x04Zi\\x04Sk\\tps\\tp\\\\\\nYu\\n]s\\nxC\\bWt\\nbD\\tkV\\x0BGu\\x05yS\\nqA\\t[r\\neK\\x04M`\\tdZ\\x05lL\\bUg\\bTl\\nbD\\tUS\\x0Bb\\\\\\tpV\\ncc\\x04S\\\\\\tct\\t`z\\bPL\\x0BWs\\nA`\\neg\\bSq\\x05uE\\x04CR\\x0BDg\\t`W\\x0Bz{\\x0BWc\\x04Sk\\x04Sk\\tbW\\bUg\\tea\\nxZ\\tiI\\tUX\\tVJ\\nqn\\tS{\\x0BRb\\bTQ\\npl\\x05Gt\\x0BuW\\x05uj\\npF\\nqI\\tfL\\t[I\\tia\\x04XO\\nyu\\x0BDg\\x0Bed\\tq{\\x04VG\\bQ\\x7F\\x05ka\\tVj\\tkV\\txB\\nd|\\np@\\tQN\\tPc\\tps\\x04]j\\tkV\\toU\\bTp\\nzU\\x05nB\\x0BB]\\ta{\\bV@\\n]n\\x04m`\\tcz\\tR{\\x04m`\\bQa\\x0BwT\\bSM\\x05MY\\x05qN\\tdj\\x05~s\\x0BQ}\\x05MY\\x0BMB\\tBv\\twR\\bRg\\x0BQ}\\tql\\x0BKC\\nrm\\x05xu\\x04CC\\x0BwB\\x0Bvh\\tBq\\x04Xq\\npV\\ti_\\x05Ob\\x05uE\\nbd\\nqo\\x0B{i\\nC~\\tBL\\x0BeE\\x05uH\\bVj\\x04Ey\\x04Gz\\x0BzR\\x0B{i\\tcf\\n{Z\\n]n\\x04XA\\x0BGu\\x0BnU\\thS\\x0BGI\\nCc\\tHE\\bTA\\tHB\\x04BH\\x04Cj\\nCc\\bTF\\tHE\\nXI\\tA{\\bQ\\x7F\\tc\\\\\\x0BmO\\x0BWX\\nfH\\np@\\x05MY\\bTF\\nlK\\tBt\\nzU\\tTT\\x04Km\\x0BwT\\npV\\ndt\\x0ByI\\tVx\\tQ\\x7F\\tRg\\tTd\\nzU\\bRS\\nLM\\twA\\x04nM\\tTn\\ndS\\t]g\\nLc\\x0BwB\\t}t\\t[I\\tCP\\x04kX\\x0BFm\\x0BhZ\\x05m\\x7F\\ti[\\np@\\x0BQ}\\x0BW\\x7F\\t|d\\nMO\\nMd\\tf_\\tfD\\tcJ\\tHz\\x0BRb\\tio\\tPy\\x04Y[\\nxU\\tct\\x0B@@\\tww\\bPv\\x04BM\\x04FF\\ntb\\x05v|\\x0BKm\\tBq\\tBq\\x04Kh\\x04`o\\nZd\\x04XU\\ti]\\t|`\\tSt\\x04B\\\\\\bQ\\x7F\\x0B_W\\tTJ\\nqI\\t|a\\tA{\\x0BuP\\x04MD\\tPl\\nxR\\tfL\\x0Bws\\tc{\\td\\\\\\bV`\\neg\\tHK\\x05kc\\nd|\\bVV\\ny\\\\\\x05kc\\ti]\\bVG\\t`V\\tss\\tI_\\tAE\\tbs\\tdu\\nel\\tpD\\x0BW\\x7F\\nqs\\x05lv\\bSM\\x04Zi\\x0BVK\\x05ia\\x0BQB\\tQ\\x7F\\n{Z\\bPt\\x0BKl\\nlK\\nhs\\ndS\\bVK\\x05mf\\nd^\\tkV\\tcO\\nc|\\bVH\\t\\\\]\\bTv\\bSq\\tmI\\x0BDg\\tVJ\\tcn\\ny\\\\\\bVg\\bTv\\nyX\\bTF\\t]]\\bTp\\noi\\nhs\\x0BeU\\nBf\\tdj\\x05Mr\\n|p\\t\\\\g\\t]r\\bVb\\x05{D\\nd[\\x04XN\\tfM\\tO\\\\\\x05s_\\tcf\\tiZ\\x04XN\\x0BWc\\tqv\\n`m\\tU^\\x05oD\\nd|\\x0BGg\\tdE\\x0Bwf\\x04lo\\x04u}\\nd|\\x05oQ\\t`i\\x04Oi\\x0BxD\\ndZ\\nCx\\x04Yw\\nzk\\ntb\\ngw\\tyj\\tB`\\nyX\\x0Bps\\ntC\\x0BpP\\x0Bqw\\bPu\\bPX\\tDm\\npw\\x05Nj\\tss\\taG\\x0Bxs\\bPt\\noL\\x04Gz\\tOk\\ti@\\ti]\\x04eC\\tIQ\\tii\\tdj\\x0B@J\\t|d\\x05uh\\bWZ\\x0BeU\\x0BnU\\bTa\\tcC\\x04g]\\nzk\\x04Yh\\bVK\\nLU\\np@\\ntb\\ntR\\tCj\\x0BNP\\ti@\\bP{\\n\\\\}\\n{c\\nwX\\tfL\\bVG\\tc{\\t|`\\tAJ\\t|C\\tfD\\x05ln\\t|d\\tbs\\nqI\\x05{B\\x0BAx\\np@\\nzk\\x0BRb\\x05Os\\x0BWS\\x04e^\\x0BD_\\tBv\\x0BWd\\bVb\\x0Bxs\\x0BeE\\bRw\\n]n\\n|p\\x0Bg|\\tfw\\x05kc\\bTI\\x05ka\\n\\\\T\\x04Sp\\tju\\x0Bps\\npe\\x05u|\\x0BGr\\bVe\\tCU\\x04]M\\x04XU\\x0BxD\\bTa\\tIQ\\x0BWq\\tCU\\tam\\tdj\\bSo\\x04Sw\\x0BnU\\x04Ch\\tQ]\\x05s_\\bPt\\tfS\\bTa\\t\\\\}\\n@O\\x04Yc\\tUZ\\bTx\\npe\\x0BnU\\nzU\\t|}\\tiD\\nz\\\\\\bSM\\x0BxD\\x04BR\\nzQ\\tQN\\x04]M\\x04Yh\\nLP\\x0BFm\\x0BLX\\x05vc\\x0Bql\\x05ka\\tHK\\bVb\\ntC\\nCy\\bTv\\nuV\\x04oQ\\t`z\\t[I\\tB`\\x0BRb\\tyj\\tsb\\x0BWs\\bTl\\tkV\\x0Bed\\ne\\x7F\\x05lL\\x0BxN\\t\\x7Fm\\nJn\\tjY\\x0BxD\\bVb\\bSq\\x0Byu\\twL\\x0BXL\\bTA\\tpg\\tAt\\tnD\\x04XX\\twR\\npl\\nhw\\x05yS\\nps\\tcO\\bW[\\x0B|j\\x04XN\\tsV\\tp\\\\\\tBe\\nb~\\nAJ\\n]e\\x05k`\\x05qN\\tdw\\tWV\\tHE\\x0BEV\\x05Jz\\tid\\tB`\\tzh\\x05E]\\tfD\\bTg\\x05qN\\bTa\\tja\\x04Cv\\bSM\\nhc\\bUe\\x05t_\\tie\\x04g]\\twQ\\nPn\\bVB\\tjw\\bVg\\x0BbE\\tBZ\\x0BRH\\bP{\\tjp\\n\\\\}\\ta_\\tcC\\t|a\\x0BD]\\tBZ\\ti[\\tfD\\x0BxW\\no_\\td\\\\\\n_D\\ntb\\t\\\\c\\tAJ\\nlK\\x04oQ\\x04lo\\x0BLx\\x0BM@\\bWZ\\x04Kn\\x0Bpg\\nTi\\nIv\\n|r\\x0B@}\\x05Jz\\x05Lm\\x05Wh\\x05k}\\x05ln\\x0BxD\\n]s\\x04gc\\x0Bps\\tBr\\bTW\\x0BBM\\x05tZ\\nBY\\x04DW\\tjf\\x0BSW\\x04C}\\nqo\\tdE\\tmv\\tIQ\\bPP\\bUb\\x05lv\\x04BC\\nzQ\\t[I\\x0Bgl\\nig\\bUs\\x04BT\\x0BbC\\bSq\\tsU\\tiW\\nJn\\tSY\\tHK\\trg\\npV\\x0BID\\x0B|j\\x04KO\\t`S\\t|a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8\\\"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8\\t`lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz-\\t\\tWkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8\\x0E\\tsbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#\\\">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm\\t\\tTkfm#lapfquf?,k1=\\x0E\\tNlgfqm#sqlujgf!#bow>!alqgfqp-\\t\\tElq#\\t\\tNbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s=\\x0E\\t#@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8\\x0E\\tjpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0=\\t#pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8\\t\\tavqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq=\\x0E\\t`lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,=\\t9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2=\\x0E\\tlmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!=\\tsfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz\\t\\n\\n?\\\"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+\\x7F\\x7F#X^8\\tGBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsksbo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm\\t\\n?\\\"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-iptfbqjmdBoo#Qjd8\\t~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..=\\t?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#\\t\\x0E\\t?\\\"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg=\\x0E\\t#qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le\\t\\tPlnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!=\\tnlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz=\\tfujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg=\\t#kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8\\t~*8\\telvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8\\t##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo\\t\\t?\\\"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?\\\"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8\\talnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfp\\x7F\\x7Fx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj=\\t\\t-#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s=\\t\\n\\njw#jmwlqbmhfg#qbwf#levo=\\x0E\\t##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=\\x0E\\t\\x0E\\t#qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp\\\">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,=\\t\\n\\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8\\t#jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8\\x0E\\t##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8\\t##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl\\\"..#fmgojfp#jm$^*8\\x0E\\t##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd#\\t\\n\\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq\\t?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?\\\"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!=\\x0E\\tsvpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno=\\tsflsof-jm#lmf#>tjmgltellwfq\\\\b#dllg#qfhobnblwkfqp/wl#wkjp\\\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,=\\x0E\\tBwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x\\tgjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=\\x0E\\t\\x0E\\t\\x0E\\tnbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll\\\"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbmgjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!=\\t+*8!#qfb#sob`f_v330@bbalvw#bwq=\\x0E\\t\\n\\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s=\\x0E\\t?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=\\x0E\\t\\x0E\\t?\\\"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!=\\tnfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1=\\t##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg=\\t`lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo=\\t\\n\\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8\\t\\t`lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b=\\x0E\\tfof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!=\\t\\n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=-\\t\\tPlnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-#\\t\\tWkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz\\t\\tBewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg=\\t\\nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?\\\"..#fmg?,psbm=??aq#,=\\x0E\\t\\\\slsvsp\\x7Fp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*-\\t\\tWkf#wb{lmlnznv`k#le#?,psbm=\\t!#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg=\\x0E\\tbwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{\\t?kfbg=\\tbqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!=\\t%maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8\\\"..#wjwof!=?,irvfqz-?,elqn=\\t+\\x0BBl\\bQ\\x7F*+\\x0BUm\\x05Gx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn=\\x0E\\tpwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x\\tplovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!=\\tf{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof=\\tqfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm=\\t?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof=\\tnlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof=\\tqfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo=\\tpvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg=\\t\\tnj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn=\\t\\npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..=\\x0E\\t?\\\"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8\\t\\tplvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s=\\t`bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?\\\"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..=\\t?\\\"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!=\\x0E\\tqfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8\\x0E\\tsqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq\\t%ow8\\\"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg\\t\\tJm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl\\t?kfbg=\\t?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju=\\t?,b=?,wg=gfsfmg#lmpfbq`k!=\\tsjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp-\\t\\tBewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{\\x7Fqjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le\\x0E\\t?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\\fUh\\fT{\\fTN\\n{I\\np@\\x04Fr\\x0BBl\\bQ\\x7F\\tA{\\x0BUm\\x05Gx\\tA{\\x01yp\\x06YA\\0zX\\bTV\\bWl\\bUd\\x04BM\\x0BB{\\npV\\x0B@x\\x04B\\\\\\np@\\x04Db\\x04Gz\\tal\\npa\\tfM\\tuD\\bV~\\x04mx\\x0BQ}\\ndS\\tp\\\\\\bVK\\bS]\\bU|\\x05oD\\tkV\\x0Bed\\x0BHR\\nb~\\x04M`\\nJp\\x05oD\\x04|Q\\nLP\\x04Sw\\bTl\\nAI\\nxC\\bWt\\tBq\\x05F`\\x04Cm\\x0BLm\\tKx\\t}t\\bPv\\ny\\\\\\naB\\tV\\x7F\\nZd\\x04XU\\x04li\\tfr\\ti@\\tBH\\x04BD\\x04BV\\t`V\\n[]\\tp_\\tTn\\n~A\\nxR\\tuD\\t`{\\bV@\\tTn\\tHK\\tAJ\\x0Bxs\\x04Zf\\nqI\\x04Zf\\x0BBM\\x0B|j\\t}t\\bSM\\nmC\\x0BQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\\fHB\\fIk\\fHn\\fH^\\fHS\\fHc\\fHU\\fId\\fHn\\fH{\\fHC\\fHR\\fHT\\fHR\\fHI\\fHc\\fHY\\fHn\\fH\\\\\\fHU\\fIk\\fHy\\fIg\\fHd\\fHy\\fIm\\fHw\\fH\\\\\\fHU\\fHR\\fH@\\fHR\\fHJ\\fHy\\fHU\\fHR\\fHT\\fHA\\fIl\\fHU\\fIm\\fHc\\fH\\\\\\fHU\\fIl\\fHB\\fId\\fHn\\fHJ\\fHS\\fHD\\fH@\\fHR\\fHHgjsolgl`p\\fHT\\fHB\\fHC\\fH\\\\\\fIn\\fHF\\fHD\\fHR\\fHB\\fHF\\fHH\\fHR\\fHG\\fHS\\fH\\\\\\fHx\\fHT\\fHH\\fHH\\fH\\\\\\fHU\\fH^\\fIg\\fH{\\fHU\\fIm\\fHj\\fH@\\fHR\\fH\\\\\\fHJ\\fIk\\fHZ\\fHU\\fIm\\fHd\\fHz\\fIk\\fH^\\fHC\\fHJ\\fHS\\fHy\\fHR\\fHB\\fHY\\fIk\\fH@\\fHH\\fIl\\fHD\\fH@\\fIl\\fHv\\fHB\\fI`\\fHH\\fHT\\fHR\\fH^\\fH^\\fIk\\fHz\\fHp\\fIe\\fH@\\fHB\\fHJ\\fHJ\\fHH\\fHI\\fHR\\fHD\\fHU\\fIl\\fHZ\\fHU\\fH\\\\\\fHi\\fH^\\fH{\\fHy\\fHA\\fIl\\fHD\\fH{\\fH\\\\\\fHF\\fHR\\fHT\\fH\\\\\\fHR\\fHH\\fHy\\fHS\\fHc\\fHe\\fHT\\fIk\\fH{\\fHC\\fIl\\fHU\\fIn\\fHm\\fHj\\fH{\\fIk\\fHs\\fIl\\fHB\\fHz\\fIg\\fHp\\fHy\\fHR\\fH\\\\\\fHi\\fHA\\fIl\\fH{\\fHC\\fIk\\fHH\\fIm\\fHB\\fHY\\fIg\\fHs\\fHJ\\fIk\\fHn\\fHi\\fH{\\fH\\\\\\fH|\\fHT\\fIk\\fHB\\fIk\\fH^\\fH^\\fH{\\fHR\\fHU\\fHR\\fH^\\fHf\\fHF\\fH\\\\\\fHv\\fHR\\fH\\\\\\fH|\\fHT\\fHR\\fHJ\\fIk\\fH\\\\\\fHp\\fHS\\fHT\\fHJ\\fHS\\fH^\\fH@\\fHn\\fHJ\\fH@\\fHD\\fHR\\fHU\\fIn\\fHn\\fH^\\fHR\\fHz\\fHp\\fIl\\fHH\\fH@\\fHs\\fHD\\fHB\\fHS\\fH^\\fHk\\fHT\\fIk\\fHj\\fHD\\fIk\\fHD\\fHC\\fHR\\fHy\\fIm\\fH^\\fH^\\fIe\\fH{\\fHA\\fHR\\fH{\\fH\\\\\\fIk\\fH^\\fHp\\fH{\\fHU\\fH\\\\\\fHR\\fHB\\fH^\\fH{\\fIk\\fHF\\fIk\\fHp\\fHU\\fHR\\fHI\\fHk\\fHT\\fIl\\fHT\\fHU\\fIl\\fHy\\fH^\\fHR\\fHL\\fIl\\fHy\\fHU\\fHR\\fHm\\fHJ\\fIn\\fH\\\\\\fHH\\fHU\\fHH\\fHT\\fHR\\fHH\\fHC\\fHR\\fHJ\\fHj\\fHC\\fHR\\fHF\\fHR\\fHy\\fHy\\fI`\\fHD\\fHZ\\fHR\\fHB\\fHJ\\fIk\\fHz\\fHC\\fHU\\fIl\\fH\\\\\\fHR\\fHC\\fHz\\fIm\\fHJ\\fH^\\fH{\\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof=\\x0E\\t@lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!=\\tnfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw\\t\\tGvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof=\\x0E\\tbaplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof=\\x0E\\t#`lopsbm>!?,elqn=\\t##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8\\tevm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm\\x0E\\tevm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?\\\"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn=\\t?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~\\t?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof=\\t\\ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>!\\t?\\\"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp\\t?,kfbg=\\x0E\\tqf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp\\t\\t%ow8\\\"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo\\t?kfbg=\\t?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!=\\tsqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..=\\x0E\\t?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw=\\tqfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=\\x0E,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm=\\t\\n\\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks!owqOjfvwfmbmw\\t?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm-\\t\\tJm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.=\\t?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=\\x0E?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm=\\x0E\\t#l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju=\\t##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof=\\t?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw\", \"fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISD\\x7Fwkvna\\x7Fsbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le\\t\\tKltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz\\t\\tBowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p\\t\\n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!=\\t?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le\\x0E\\t?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!=\\t?kfbg=\\t?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm\\\"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s=\\t?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju=\\t#pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw=\\tkbujmd#affm\\x0E\\t?kfbg=\\x0E\\t?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm\\t\\t?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm=\\x0E\\t@lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!=\\trvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw\\x0E\\t?,kfbg=\\x0E\\t@lmufqpfoz/=\\t?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le\\x0E\\t\\n?,gju=\\x0E\\t\\x0E\\t?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw=\\t?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq\\t\\n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof=\\t##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju=\\x0E\\t\\n\\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#\\x7Fpklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\\n\\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju=\\tKltfufq#wkfofbg#wl#wkf\\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?\\\"X@GBWBX\\tLqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw=\\t,jmgf{-kwno!tjmglt-lsfm+#\\\"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw=\\tsbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!=\\x0E\\t?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?\\\"Xfmgje^..=~\\t?,p`qjsw=\\t@kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/\\t-mlmwlv`k#lapfqubwjlmp?,b=\\t?,gju=\\te#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!=\\tpv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp\\t\\n\\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\\n\\n?,p`qjsw=\\t\\t\\n\\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju=\\x0E\\t`lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo=\\t?,gju=\\ttbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#=\\x0E\\t?kfbg=\\x0E\\t?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=\\x0Epbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf\\t?,p`qjsw=\\t\\tbm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b=\\twklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju=\\t?gju#!=?,gju=\\x0E\\t##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(\\x7F_p(',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo=\\t?,gju=\\tskjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x\\t?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg=\\x0E\\t?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof\\t\\n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8\\x7F%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg=\\t?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw\\\"Xfmgje^..=\\x0E\\tJmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz=\\t?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\\n\\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf\\t?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp\\t?nfwb#mbnf>!b``lnnlgbwjlm?,gju=\\t?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf\\t?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8\\t?,p`qjsw=\\t?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?\\\"Xfmgje^..=\\t?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg=\\t?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8\\t?,p`qjsw=\\t-pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?\\\"Xfmgje^..=\\x0E\\tgjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw=\\twzsf>!pvanjw!#\\t+evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?\\\"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?\\\"Xfmgje^..=\\t\\tgfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!=\\t?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b=\\t?,oj=\\t?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf\\t\\t?gju#`obpp>!`obpp>!pfbq`k.,algz=\\t?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg=\\x0E\\t?algz#pwzof>!tjgwk9Wj\\rVSmd#Uj\\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8\\t?,p`qjsw=\\t\\tGfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju=\\t\\t?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=\\x0E#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq\\x0E\\t?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg=\\t?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm\\t\\n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a\\x0E\\t?,p`qjsw=\\x0E\\t?tbp#elvmgfg#jmjmwfqujft#tjwk\\\\jg!#`lmwfmw>!`bsjwbo#le#wkf\\x0E\\t?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#x\\x0Eje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le\\t?,kfbg=\\t?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,=\\t?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~\\t-\\t?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le=\\x0E\\t?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?\\\"Xfmgje^..=\\tpwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=\\x0E\\t\\x0E\\tfmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg=\\t?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\\n\\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8\\t?,p`qjsw=\\t?skjolplskj`bo#pqsphlkqubwphjwj\\rVSmd#Uj\\rWkw!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=#\\x7F#?b#kqfe>!?\\\"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,=\\t\\n\\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz=\\t?,kwno=\\tpklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm\\t##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8\\x0E\\t?,p`qjsw=\\x0E\\tqfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju=\\t?,gju=\\t\\tbgnjmjpwqbwjuf#?,algz=\\t?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!=\\t?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,=\\t?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp\\x0E\\t\\n?gju#`obpp>!?,gju=\\t\\n?,gju=\\tjmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,=\\t?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8\\t?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf=\\t\\n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw=\\x0E\\tvo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\\bTA\\nzk#+\\x0BBl\\bQ\\x7F*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\\fHe\\fHF\\fHC\\fIg\\fH{\\fHF\\fIn\\fH\\\\\\fIa\\fHY\\fHU\\fHB\\fHR\\fH\\\\\\fIk\\fH^\\fIg\\fH{\\fIg\\fHn\\fHv\\fIm\\fHD\\fHR\\fHY\\fH^\\fIk\\fHy\\fHS\\fHD\\fHT\\fH\\\\\\fHy\\fHR\\fH\\\\\\fHF\\fIm\\fH^\\fHS\\fHT\\fHz\\fIg\\fHp\\fIk\\fHn\\fHv\\fHR\\fHU\\fHS\\fHc\\fHA\\fIk\\fHp\\fIk\\fHn\\fHZ\\fHR\\fHB\\fHS\\fH^\\fHU\\fHB\\fHR\\fH\\\\\\fIl\\fHp\\fHR\\fH{\\fH\\\\\\fHO\\fH@\\fHD\\fHR\\fHD\\fIk\\fHy\\fIm\\fHB\\fHR\\fH\\\\\\fH@\\fIa\\fH^\\fIe\\fH{\\fHB\\fHR\\fH^\\fHS\\fHy\\fHB\\fHU\\fHS\\fH^\\fHR\\fHF\\fIo\\fH[\\fIa\\fHL\\fH@\\fHN\\fHP\\fHH\\fIk\\fHA\\fHR\\fHp\\fHF\\fHR\\fHy\\fIa\\fH^\\fHS\\fHy\\fHs\\fIa\\fH\\\\\\fIk\\fHD\\fHz\\fHS\\fH^\\fHR\\fHG\\fHJ\\fI`\\fH\\\\\\fHR\\fHD\\fHB\\fHR\\fHB\\fH^\\fIk\\fHB\\fHH\\fHJ\\fHR\\fHD\\fH@\\fHR\\fHp\\fHR\\fH\\\\\\fHY\\fHS\\fHy\\fHR\\fHT\\fHy\\fIa\\fHC\\fIg\\fHn\\fHv\\fHR\\fHU\\fHH\\fIk\\fHF\\fHU\\fIm\\fHm\\fHv\\fH@\\fHH\\fHR\\fHC\\fHR\\fHT\\fHn\\fHY\\fHR\\fHJ\\fHJ\\fIk\\fHz\\fHD\\fIk\\fHF\\fHS\\fHw\\fH^\\fIk\\fHY\\fHS\\fHZ\\fIk\\fH[\\fH\\\\\\fHR\\fHp\\fIa\\fHC\\fHe\\fHH\\fIa\\fHH\\fH\\\\\\fHB\\fIm\\fHn\\fH@\\fHd\\fHJ\\fIg\\fHD\\fIg\\fHn\\fHe\\fHF\\fHy\\fH\\\\\\fHO\\fHF\\fHN\\fHP\\fIk\\fHn\\fHT\\fIa\\fHI\\fHS\\fHH\\fHG\\fHS\\fH^\\fIa\\fHB\\fHB\\fIm\\fHz\\fIa\\fHC\\fHi\\fHv\\fIa\\fHw\\fHR\\fHw\\fIn\\fHs\\fHH\\fIl\\fHT\\fHn\\fH{\\fIl\\fHH\\fHp\\fHR\\fHc\\fH{\\fHR\\fHY\\fHS\\fHA\\fHR\\fH{\\fHt\\fHO\\fIa\\fHs\\fIk\\fHJ\\fIn\\fHT\\fH\\\\\\fIk\\fHJ\\fHS\\fHD\\fIg\\fHn\\fHU\\fHH\\fIa\\fHC\\fHR\\fHT\\fIk\\fHy\\fIa\\fHT\\fH{\\fHR\\fHn\\fHK\\fIl\\fHY\\fHS\\fHZ\\fIa\\fHY\\fH\\\\\\fHR\\fHH\\fIk\\fHn\\fHJ\\fId\\fHs\\fIa\\fHT\\fHD\\fHy\\fIa\\fHZ\\fHR\\fHT\\fHR\\fHB\\fHD\\fIk\\fHi\\fHJ\\fHR\\fH^\\fHH\\fH@\\fHS\\fHp\\fH^\\fIl\\fHF\\fIm\\fH\\\\\\fIn\\fH[\\fHU\\fHS\\fHn\\fHJ\\fIl\\fHB\\fHS\\fHH\\fIa\\fH\\\\\\fHy\\fHY\\fHS\\fHH\\fHR\\fH\\\\\\fIm\\fHF\\fHC\\fIk\\fHT\\fIa\\fHI\\fHR\\fHD\\fHy\\fH\\\\\\fIg\\fHM\\fHP\\fHB\\fIm\\fHy\\fIa\\fHH\\fHC\\fIg\\fHp\\fHD\\fHR\\fHy\\fIo\\fHF\\fHC\\fHR\\fHF\\fIg\\fHT\\fIa\\fHs\\fHt\\fH\\\\\\fIk\\fH^\\fIn\\fHy\\fHR\\fH\\\\\\fIa\\fHC\\fHY\\fHS\\fHv\\fHR\\fH\\\\\\fHT\\fIn\\fHv\\fHD\\fHR\\fHB\\fIn\\fH^\\fIa\\fHC\\fHJ\\fIk\\fHz\\fIk\\fHn\\fHU\\fHB\\fIk\\fHZ\\fHR\\fHT\\fIa\\fHy\\fIn\\fH^\\fHB\\fId\\fHn\\fHD\\fIk\\fHH\\fId\\fHC\\fHR\\fH\\\\\\fHp\\fHS\\fHT\\fHy\\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw=\\t?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8\\t?,p`qjsw=\\t?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz=\\t?,kwno=\\tlufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw=\\t,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8\\tgl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8\\x0E\\t?,p`qjsw=\\x0E\\t?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju=\\t\\n\\n?,gju=\\tgjpsobz9#mlmf8!=!#,=\\t?ojmh#qfo>!\\t##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isd\\x7Fwkvna\\x7Fofew\\x7Fubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw=\\t\\npAzWbdMbnf+p*X3^ip!=?,p`qjsw=\\x0E\\t?-ip!=?,p`qjsw=\\x0E\\tojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf=\\t##?sbdf=\\t?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*\\\"y\\\"W\\\"W\\\"[\\\"Q\\\"U\\\"V\\\"@=i=l<^<\\\\=n=m!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isd\\x7Fqjdkw\\x7Fwkvna\\x7F-ip!=?,p`qjsw=\\x0E\\t?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,=\\t?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm=\\t##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8\\x0E\\tjmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju=\\x0E\\t?,gju=\\x0E\\t?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf#\\t?,algz=\\t?,kwno=\\tpwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!=\\tafdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju=\\x0E\\t?,gju=\\x0E\\t\\x0E\\twkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz=\\x0E\\t?,kwno=\\x0E\\\"y\\\"W\\\"W\\\"[\\\"Q\\\"U\\\"V\\\"@\\twbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!=\\twkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,=\\t`ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\\\aobmh!=Lm#wkf#lwkfq#kbmg/-isd\\x7Fwkvna\\x7Fqjdkw\\x7F1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz=\\x0E\\t?,kwno=\\x0E\\t?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!=\\tgvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?\\\"GL@WZSF#kwno=\\x0E\\t?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k\\x7F#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju=\\x0E\\t?,gju=\\x0E\\t\\x0E\\t?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw=\\tsbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju=\\t?,gju=\\t?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju=\\t?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\\n\\n?,gju=\\t\\n\\n?,gju=\\twkf#nlwjlm#sj`wvqf<}=f!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,,\\t?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw=\\t?,gju=\\t?gju#`obpp>!t0-lqd,2:::,{kwno!#\\t\\x0E\\t?,algz=\\x0E\\t?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<=\\tt-bggFufmwOjpwfmfq!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,=\\tnfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw=\\t\\t?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg\\t?,p`qjsw=\\t?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..=\\x0E\\t?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju=\\x0E\\t?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju=\\t?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm\\t?,p`qjsw=\\x0E\\t?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf\\x0E\\t?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8\\t?,p`qjsw=\\t?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?\\\"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw=\\x0E\\t?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju=\\t?,gju=\\t?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le\\t?,gju=\\t?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,=\\tjmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj=\\t?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!#\\x0E\\t?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju=\\t?,gju=\\t?,gju=\\tfpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9\\t?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm=\\t?lswjlm#ubov?\\\"GL@WZSF#kwno=\\t?\\\"..XJmwfqmbwjlmbo#Bjqslqw=\\t?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\\fTL\\fT^\\fTE\\fT^\\fUh\\fT{\\fTN\\roI\\ro|\\roL\\ro{\\roO\\rov\\rot\\nAO\\x05Gx\\bTA\\nzk#+\\x0BUm\\x05Gx*\\fHD\\fHS\\fH\\\\\\fIa\\fHJ\\fIk\\fHZ\\fHM\\fHR\\fHe\\fHD\\fH^\\fIg\\fHM\\fHy\\fIa\\fH[\\fIk\\fHH\\fIa\\fH\\\\\\fHp\\fHR\\fHD\\fHy\\fHR\\fH\\\\\\fIl\\fHT\\fHn\\fH@\\fHn\\fHK\\fHS\\fHH\\fHT\\fIa\\fHI\\fHR\\fHF\\fHD\\fHR\\fHT\\fIa\\fHY\\fIl\\fHy\\fHR\\fH\\\\\\fHT\\fHn\\fHT\\fIa\\fHy\\fH\\\\\\fHO\\fHT\\fHR\\fHB\\fH{\\fIa\\fH\\\\\\fIl\\fHv\\fHS\\fHs\\fIa\\fHL\\fIg\\fHn\\fHY\\fHS\\fHp\\fIa\\fHr\\fHR\\fHD\\fHi\\fHB\\fIk\\fH\\\\\\fHS\\fHy\\fHR\\fHY\\fHS\\fHA\\fHS\\fHD\\fIa\\fHD\\fH{\\fHR\\fHM\\fHS\\fHC\\fHR\\fHm\\fHy\\fIa\\fHC\\fIg\\fHn\\fHy\\fHS\\fHT\\fIm\\fH\\\\\\fHy\\fIa\\fH[\\fHR\\fHF\\fHU\\fIm\\fHm\\fHv\\fHH\\fIl\\fHF\\fIa\\fH\\\\\\fH@\\fHn\\fHK\\fHD\\fHs\\fHS\\fHF\\fIa\\fHF\\fHO\\fIl\\fHy\\fIa\\fH\\\\\\fHS\\fHy\\fIk\\fHs\\fHF\\fIa\\fH\\\\\\fHR\\fH\\\\\\fHn\\fHA\\fHF\\fIa\\fH\\\\\\fHR\\fHF\\fIa\\fHH\\fHB\\fHR\\fH^\\fHS\\fHy\\fIg\\fHn\\fH\\\\\\fHG\\fHP\\fIa\\fHH\\fHR\\fH\\\\\\fHD\\fHS\\fH\\\\\\fIa\\fHB\\fHR\\fHO\\fH^\\fHS\\fHB\\fHS\\fHs\\fIk\\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?\\\"GL@WZSF#kwno=\\t?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p\\t?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!#\\talgz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!=\\t?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8\\t+evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\\n\\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm=\\t?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,=\\tojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw=\\t?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!=\\t?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!=\\t\\t?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!=\\t?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,=\\t#pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=&*&'&^&\\x88\\u0178\\u0C3E&\\u01AD&\\u0192&)&^&%&'&\\x82&P&1&\\xB1&3&]&m&u&E&t&C&\\xCF&V&V&/&>&6&\\u0F76\\u177Co&p&@&E&M&P&x&@&F&e&\\xCC&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1\\u025E*\\u03EA\\u21F3&\\u1372&K&;&)&E&H&P&0&?&9&V&\\x81&-&v&a&,&E&)&?&=&'&'&B&\\u0D2E&\\u0503&\\u0316*&*8&%&%&&&%,)&\\x9A&>&\\x86&7&]&F&2&>&J&6&n&2&%&?&\\x8E&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%\\u053C\\x84(,(<&,&\\u03DA&\\u18C7&-&,(%&(&%&(\\u013B0&X&D&\\x81&j&'&J&(&.&B&3&Z&R&h&3&E&E&<\\xC6-\\u0360\\u1EF3&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&C\\u072C\\u2A25&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&\\u1E78\\xCC-&7&1&F&7&t&W&7&I&.&.&^&=\\u0F9C\\u19D3&8(>&/&/&\\u077B')'\\u1065')'%@/&0&%\\u043E\\u09C0*&*@&C\\u053D\\u05D4\\u0274\\u05EB4\\u0DD7\\u071A\\u04D16\\u0D84&/\\u0178\\u0303Z&*%\\u0246\\u03FF&\\u0134&1\\xA8\\u04B4\\u0174\", dictionarySizeBits, \"AAAAKKLLKKKKKJJIHHIHHGGFF\");\n setData(dictionaryData, dictionarySizeBits);\n function InputStream(data) {\n this.data = new Int8Array(0);\n this.offset = 0;\n this.data = data;\n }\n function readInput(s, dst, offset, length) {\n if (s.input === null) {\n return -1;\n }\n const src = s.input;\n const end = Math.min(src.offset + length, src.data.length);\n const bytesRead = end - src.offset;\n dst.set(src.data.subarray(src.offset, end), offset);\n src.offset += bytesRead;\n return bytesRead;\n }\n function closeInput(s) {\n s.input = new InputStream(new Int8Array(0));\n }\n function toUsAsciiBytes(src) {\n const n = src.length;\n const result = new Int8Array(n);\n for (let i = 0; i < n; ++i) {\n result[i] = src.charCodeAt(i);\n }\n return result;\n }\n function toUtf8Runes(src) {\n const n = src.length;\n const result = new Int32Array(n);\n for (let i = 0; i < n; ++i) {\n result[i] = src.charCodeAt(i);\n }\n return result;\n }\n function makeError(s, code) {\n if (code >= 0) {\n return code;\n }\n if (s.runningState >= 0) {\n s.runningState = code;\n }\n throw new Error(\"Brotli error code: \" + code);\n }\n let ByteBuffer;\n function decode(bytes, options) {\n let s = new State();\n s.input = new InputStream(bytes);\n initState(s);\n if (options) {\n let customDictionary = options[\"customDictionary\"];\n if (customDictionary) attachDictionaryChunk(s, customDictionary);\n }\n let totalOutput = 0;\n let chunks = [];\n while (true) {\n let chunk = new Int8Array(16384);\n chunks.push(chunk);\n s.output = chunk;\n s.outputOffset = 0;\n s.outputLength = 16384;\n s.outputUsed = 0;\n decompress(s);\n totalOutput += s.outputUsed;\n if (s.outputUsed < 16384) break;\n }\n close(s);\n closeInput(s);\n let result = new Int8Array(totalOutput);\n let offset = 0;\n for (let i = 0; i < chunks.length; ++i) {\n let chunk = chunks[i];\n let end = Math.min(totalOutput, offset + 16384);\n let len = end - offset;\n if (len < 16384) {\n result.set(chunk.subarray(0, len), offset);\n } else {\n result.set(chunk, offset);\n }\n offset += len;\n }\n return result;\n }\n return decode;\n};\nlet BrotliDecode = makeBrotliDecode();\n;// ./src/core/brotli_stream.js\n\n\n\nclass BrotliStream extends DecodeStream {\n #isAsync = true;\n constructor(stream, maybeLength) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n }\n readBlock() {\n const bytes = this.stream.getBytes();\n const decodedData = BrotliDecode(new Int8Array(bytes.buffer, bytes.byteOffset, bytes.length));\n this.buffer = new Uint8Array(decodedData.buffer, decodedData.byteOffset, decodedData.length);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n async getImageData(length, _decoderOptions) {\n const data = await this.asyncGetBytes();\n if (!data) {\n return this.getBytes(length);\n }\n if (data.length <= length) {\n return data;\n }\n return data.subarray(0, length);\n }\n async asyncGetBytes() {\n const {\n decompressed,\n compressed\n } = await this.asyncGetBytesFromDecompressionStream(\"brotli\");\n if (decompressed) {\n return decompressed;\n }\n this.#isAsync = false;\n this.stream = new Stream(compressed, 0, compressed.length, this.stream.dict);\n this.reset();\n return null;\n }\n get isAsync() {\n return this.#isAsync;\n }\n}\n\n;// ./external/jbig2/jbig2.js\nasync function JBig2(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var _scriptName = import.meta.url;\n var scriptDirectory = \"\";\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(\".\", _scriptName).href;\n } catch {}\n readAsync = async url => {\n var response = await fetch(url, {\n credentials: \"same-origin\"\n });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + \" : \" + response.url);\n };\n } else {}\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n var readyPromiseResolve, readyPromiseReject;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n var HEAP64, HEAPU64;\n var runtimeInitialized = false;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n function initRuntime() {\n runtimeInitialized = true;\n wasmExports[\"j\"]();\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n var wasmBinaryFile;\n function getWasmImports() {\n var imports = {\n a: wasmImports\n };\n return imports;\n }\n async function createWasm() {\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n updateMemoryViews();\n return wasmExports;\n }\n var info = getWasmImports();\n return new Promise((resolve, reject) => {\n Module[\"instantiateWasm\"](info, (inst, mod) => {\n resolve(receiveInstance(inst, mod));\n });\n });\n }\n class ExitStatus {\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var callRuntimeCallbacks = callbacks => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var onPostRuns = [];\n var addOnPostRun = cb => onPostRuns.push(cb);\n var onPreRuns = [];\n var addOnPreRun = cb => onPreRuns.push(cb);\n var noExitRuntime = true;\n var __abort_js = () => abort(\"\");\n var runtimeKeepaliveCounter = 0;\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n var timers = {};\n var handleException = e => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = code => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n };\n var _exit = exitJS;\n var maybeExit = () => {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = func => {\n if (ABORT) {\n return;\n }\n try {\n return func();\n } catch (e) {\n handleException(e);\n } finally {\n maybeExit();\n }\n };\n var _emscripten_get_now = () => performance.now();\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n };\n function _createImageData(size) {\n Module.imageData = new Uint8Array(size);\n }\n var getHeapMax = () => 2147483648;\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var growMemory = size => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n function _setImageData(array_ptr, pitch8, pitch32, height) {\n if (pitch32 === pitch8) {\n Module.imageData = new Uint8ClampedArray(HEAPU8.subarray(array_ptr, array_ptr + pitch32 * height));\n return;\n }\n const destSize = pitch8 * height;\n const imageData = Module.imageData = new Uint8ClampedArray(destSize);\n for (let srcStart = array_ptr, destStart = 0; destStart < destSize; srcStart += pitch32, destStart += pitch8) {\n imageData.set(HEAPU8.subarray(srcStart, srcStart + pitch8), destStart);\n }\n }\n function _setLineData(line_ptr, pitch8, offset) {\n Module.imageData.set(HEAPU8.subarray(line_ptr, line_ptr + pitch8), offset);\n }\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (Module[\"print\"]) out = Module[\"print\"];\n if (Module[\"printErr\"]) err = Module[\"printErr\"];\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].shift()();\n }\n }\n Module[\"writeArrayToMemory\"] = writeArrayToMemory;\n var _malloc, _free, _jbig2_decode, _ccitt_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;\n function assignWasmExports(wasmExports) {\n _malloc = Module[\"_malloc\"] = wasmExports[\"k\"];\n _free = Module[\"_free\"] = wasmExports[\"l\"];\n _jbig2_decode = Module[\"_jbig2_decode\"] = wasmExports[\"m\"];\n _ccitt_decode = Module[\"_ccitt_decode\"] = wasmExports[\"n\"];\n __emscripten_timeout = wasmExports[\"o\"];\n memory = wasmMemory = wasmExports[\"i\"];\n __indirect_function_table = wasmExports[\"__indirect_function_table\"];\n }\n var wasmImports = {\n e: __abort_js,\n b: __emscripten_runtime_keepalive_clear,\n c: __setitimer_js,\n g: _createImageData,\n d: _emscripten_resize_heap,\n a: _proc_exit,\n h: _setImageData,\n f: _setLineData\n };\n function run() {\n preRun();\n function doRun() {\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve?.(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n var wasmExports;\n wasmExports = await createWasm();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n return moduleRtn;\n}\n/* harmony default export */ const jbig2 = (JBig2);\n;// ./src/core/wasm_image.js\n\n\nclass WasmImage {\n static #handler = null;\n static #instances = new Set();\n static #useWasm = true;\n static #useWorkerFetch = true;\n static #wasmUrl = null;\n #buffer = null;\n #modulePromise = null;\n _filename = null;\n _noWasmFilename = null;\n static setOptions({\n handler,\n useWasm,\n useWorkerFetch,\n wasmUrl\n }) {\n WasmImage.#useWasm = useWasm;\n WasmImage.#useWorkerFetch = useWorkerFetch;\n WasmImage.#wasmUrl = wasmUrl;\n if (!useWorkerFetch) {\n WasmImage.#handler = handler;\n }\n }\n static get instance() {\n unreachable(\"Abstract getter `instance` accessed\");\n }\n static cleanup() {\n for (const instance of WasmImage.#instances) {\n instance.#modulePromise = null;\n }\n }\n constructor(trackInstance = false) {\n if (trackInstance) {\n WasmImage.#instances.add(this);\n }\n }\n async #getJsModule(fallbackCallback) {\n let instance = null;\n try {\n const mod = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n `${WasmImage.#wasmUrl}${this._noWasmFilename}`);\n instance = mod.default();\n } catch (ex) {\n warn(`#getJsModule: ${ex}`);\n }\n fallbackCallback(instance);\n }\n async #instantiateWasm(fallbackCallback, imports, successCallback) {\n try {\n if (!this.#buffer) {\n if (WasmImage.#useWorkerFetch) {\n this.#buffer = await fetchBinaryData(`${WasmImage.#wasmUrl}${this._filename}`);\n } else {\n this.#buffer = await WasmImage.#handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"wasmUrl\",\n filename: this._filename\n });\n }\n }\n const results = await WebAssembly.instantiate(this.#buffer, imports);\n return successCallback(results.instance);\n } catch (ex) {\n warn(`#instantiateWasm: ${ex}`);\n this.#getJsModule(fallbackCallback);\n return null;\n }\n }\n _getModule(ImageDecoder) {\n if (!this.#modulePromise) {\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n const promises = [promise];\n if (!WasmImage.#useWasm) {\n this.#getJsModule(resolve);\n } else {\n promises.push(ImageDecoder({\n warn: warn,\n instantiateWasm: this.#instantiateWasm.bind(this, resolve)\n }));\n }\n this.#modulePromise = Promise.race(promises);\n }\n return this.#modulePromise;\n }\n async decode(bytes, _params) {\n unreachable(\"Abstract method `decode` called\");\n }\n}\n\n;// ./src/core/jbig2_ccittFax.js\n\n\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(msg, \"Jbig2Error\");\n }\n}\nclass JBig2CCITTFaxImage extends WasmImage {\n _filename = \"jbig2.wasm\";\n _noWasmFilename = \"jbig2_nowasm_fallback.js\";\n static get instance() {\n return shadow(this, \"instance\", new JBig2CCITTFaxImage(true));\n }\n async decode(bytes, width, height, globals, CCITTOptions) {\n const module = await this._getModule(jbig2);\n if (!module) {\n throw new Jbig2Error(\"JBig2 failed to initialize\");\n }\n let ptr, globalsPtr;\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n if (CCITTOptions) {\n module._ccitt_decode(ptr, size, width, height, CCITTOptions.K, CCITTOptions.EndOfLine ? 1 : 0, CCITTOptions.EncodedByteAlign ? 1 : 0, CCITTOptions.BlackIs1 ? 1 : 0, CCITTOptions.Columns, CCITTOptions.Rows);\n } else {\n const globalsSize = globals ? globals.length : 0;\n if (globalsSize > 0) {\n globalsPtr = module._malloc(globalsSize);\n module.writeArrayToMemory(globals, globalsPtr);\n }\n module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize);\n }\n if (!module.imageData) {\n throw new Jbig2Error(\"Unknown error\");\n }\n const {\n imageData\n } = module;\n module.imageData = null;\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n if (globalsPtr) {\n module._free(globalsPtr);\n }\n }\n }\n}\n\n;// ./src/core/ccitt_stream.js\n\n\n\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n this.stream = str;\n this.maybeLength = maybeLength;\n this.dict = str.dict;\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n this.params = {\n K: params.get(\"K\") || 0,\n EndOfLine: !!params.get(\"EndOfLine\"),\n EncodedByteAlign: !!params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\") || 1728,\n Rows: params.get(\"Rows\") || 0,\n EndOfBlock: !!(params.get(\"EndOfBlock\") ?? true),\n BlackIs1: !!params.get(\"BlackIs1\")\n };\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n get isImageStream() {\n return true;\n }\n get isAsyncDecoder() {\n return true;\n }\n async decodeImage(bytes, length, _decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ??= this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes;\n this.buffer = await JBig2CCITTFaxImage.instance.decode(bytes, this.dict.get(\"W\", \"Width\"), this.dict.get(\"H\", \"Height\"), null, this.params);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n}\n\n;// ./src/core/flate_stream.js\n\n\n\nconst codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\nconst distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\nconst fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\nconst fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\nclass FlateStream extends DecodeStream {\n #isAsync = true;\n constructor(str, maybeLength) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n async getImageData(length, _decoderOptions) {\n const data = await this.asyncGetBytes();\n if (!data) {\n return this.getBytes(length);\n }\n if (data.length <= length) {\n return data;\n }\n return data.subarray(0, length);\n }\n async asyncGetBytes() {\n const {\n decompressed,\n compressed\n } = await this.asyncGetBytesFromDecompressionStream(\"deflate\");\n if (decompressed) {\n return decompressed;\n }\n this.#isAsync = false;\n this.stream = new Stream(compressed, 2, compressed.length, this.stream.dict);\n this.reset();\n return null;\n }\n get isAsync() {\n return this.#isAsync;\n }\n getBits(bits) {\n const str = this.stream;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & (1 << bits) - 1;\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n }\n getCode(table) {\n const str = this.stream;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & (1 << maxLen) - 1];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = code2 << 1 | t & 1;\n t >>= 1;\n }\n for (i = code2; i < size; i += skip) {\n codes[i] = len << 16 | val;\n }\n ++code;\n }\n }\n }\n return [codes, maxLen];\n }\n #endsStreamOnError(err) {\n info(err);\n this.eof = true;\n }\n readBlock() {\n let buffer, hdr, len;\n const str = this.stream;\n try {\n hdr = this.getBits(3);\n } catch (ex) {\n this.#endsStreamOnError(ex.message);\n return;\n }\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n let b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n this.codeBuf = 0;\n this.codeSize = 0;\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\n;// ./src/core/jbig2_stream.js\n\n\n\n\n\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n get isAsyncDecoder() {\n return true;\n }\n get isImageStream() {\n return true;\n }\n static stripFileHeader(bytes) {\n if (bytes.length >= 9 && bytes[0] === 0x97 && bytes[1] === 0x4a && bytes[2] === 0x42 && bytes[3] === 0x32 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a) {\n const headerLength = (bytes[8] & 2) === 0 ? 13 : 9;\n return bytes.subarray(headerLength);\n }\n return bytes;\n }\n async decodeImage(bytes, length, _decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes = Jbig2Stream.stripFileHeader(bytes || this.bytes);\n let globals = null;\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n globals = Jbig2Stream.stripFileHeader(globalsStream.getBytes());\n }\n }\n this.buffer = await JBig2CCITTFaxImage.instance.decode(bytes, this.dict.get(\"Width\"), this.dict.get(\"Height\"), globals);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n}\n\n;// ./external/openjpeg/openjpeg.js\nasync function OpenJPEG(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var _scriptName = import.meta.url;\n var scriptDirectory = \"\";\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(\".\", _scriptName).href;\n } catch {}\n readAsync = async url => {\n var response = await fetch(url, {\n credentials: \"same-origin\"\n });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + \" : \" + response.url);\n };\n } else {}\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n class EmscriptenEH {}\n class EmscriptenSjLj extends EmscriptenEH {}\n var readyPromiseResolve, readyPromiseReject;\n var runtimeInitialized = false;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n HEAP64 = new BigInt64Array(b);\n HEAPU64 = new BigUint64Array(b);\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n function initRuntime() {\n runtimeInitialized = true;\n wasmExports[\"s\"]();\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = `Aborted(${what})`;\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n var wasmBinaryFile;\n function getWasmImports() {\n var imports = {\n a: wasmImports\n };\n return imports;\n }\n async function createWasm() {\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n assignWasmExports(wasmExports);\n updateMemoryViews();\n return wasmExports;\n }\n var info = getWasmImports();\n return new Promise((resolve, reject) => {\n Module[\"instantiateWasm\"](info, (inst, mod) => {\n resolve(receiveInstance(inst, mod));\n });\n });\n }\n class ExitStatus {\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var HEAP16;\n var HEAP32;\n var HEAP64;\n var HEAP8;\n var HEAPF32;\n var HEAPF64;\n var HEAPU16;\n var HEAPU32;\n var HEAPU64;\n var HEAPU8;\n var callRuntimeCallbacks = callbacks => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var onPostRuns = [];\n var addOnPostRun = cb => onPostRuns.push(cb);\n var onPreRuns = [];\n var addOnPreRun = cb => onPreRuns.push(cb);\n var noExitRuntime = true;\n var __abort_js = () => abort(\"\");\n var runtimeKeepaliveCounter = 0;\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n var timers = {};\n var handleException = e => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = code => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n };\n var _exit = exitJS;\n var maybeExit = () => {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = func => {\n if (ABORT) {\n return;\n }\n try {\n return func();\n } catch (e) {\n handleException(e);\n } finally {\n maybeExit();\n }\n };\n var _emscripten_get_now = () => performance.now();\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n };\n function _copy_pixels_1(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n imageData.set(compG);\n }\n function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[3 * i] = compR[i];\n imageData[3 * i + 1] = compG[i];\n imageData[3 * i + 2] = compB[i];\n }\n }\n function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n var getHeapMax = () => 2147483648;\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var growMemory = size => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n var ENV = {};\n var getExecutableName = () => thisProgram || \"./this.program\";\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (globalThis.navigator?.language ?? \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: lang,\n _: getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(`${x}=${env[x]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.codePointAt(i);\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n i++;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n };\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n var envp = 0;\n for (var string of getEnvStrings()) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + envp >> 2] = ptr;\n bufSize += stringToUTF8(string, ptr, Infinity) + 1;\n envp += 4;\n }\n return 0;\n };\n var lengthBytesUTF8 = str => {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n for (var string of strings) {\n bufSize += lengthBytesUTF8(string) + 1;\n }\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n };\n var INT53_MAX = 9007199254740992;\n var INT53_MIN = -9007199254740992;\n var bigintToI53Checked = num => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n function _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n return 70;\n }\n var printCharBuffers = [null, [], []];\n var UTF8Decoder = globalThis.TextDecoder && new TextDecoder();\n var findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n var maxIdx = idx + maxBytesToRead;\n if (ignoreNul) return maxIdx;\n while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n return idx;\n };\n var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n };\n var UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead, ignoreNul) : \"\";\n var _fd_write = (fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[pnum >> 2] = num;\n return 0;\n };\n function _gray_to_rgba(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) {\n compG_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n function _jsPrintWarning(message_ptr) {\n const message = UTF8ToString(message_ptr);\n (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n }\n function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _storeErrorMessage(message_ptr) {\n const message = UTF8ToString(message_ptr);\n if (!Module.errorMessages) {\n Module.errorMessages = message;\n } else {\n Module.errorMessages += \"\\n\" + message;\n }\n }\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (Module[\"print\"]) out = Module[\"print\"];\n if (Module[\"printErr\"]) err = Module[\"printErr\"];\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].shift()();\n }\n }\n Module[\"writeArrayToMemory\"] = writeArrayToMemory;\n var _malloc, _free, _jp2_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;\n function assignWasmExports(wasmExports) {\n _malloc = Module[\"_malloc\"] = wasmExports[\"t\"];\n _free = Module[\"_free\"] = wasmExports[\"u\"];\n _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"v\"];\n __emscripten_timeout = wasmExports[\"w\"];\n memory = wasmMemory = wasmExports[\"r\"];\n __indirect_function_table = wasmExports[\"__indirect_function_table\"];\n }\n var wasmImports = {\n m: __abort_js,\n l: __emscripten_runtime_keepalive_clear,\n i: __setitimer_js,\n f: _copy_pixels_1,\n e: _copy_pixels_3,\n d: _copy_pixels_4,\n j: _emscripten_resize_heap,\n o: _environ_get,\n p: _environ_sizes_get,\n n: _fd_seek,\n b: _fd_write,\n q: _gray_to_rgba,\n h: _graya_to_rgba,\n c: _jsPrintWarning,\n k: _proc_exit,\n g: _rgb_to_rgba,\n a: _storeErrorMessage\n };\n function run() {\n preRun();\n function doRun() {\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve?.(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n var wasmExports;\n wasmExports = await createWasm();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n return moduleRtn;\n}\n/* harmony default export */ const openjpeg = (OpenJPEG);\n;// ./src/core/jpx.js\n\n\n\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(msg, \"JpxError\");\n }\n}\nclass JpxImage extends WasmImage {\n _filename = \"openjpeg.wasm\";\n _noWasmFilename = \"openjpeg_nowasm_fallback.js\";\n static get instance() {\n return shadow(this, \"instance\", new JpxImage(true));\n }\n async decode(bytes, {\n numComponents = 4,\n isIndexedColormap = false,\n smaskInData = false,\n reducePower = 0\n } = {}) {\n const module = await this._getModule(openjpeg);\n if (!module) {\n throw new JpxError(\"OpenJPEG failed to initialize\");\n }\n let ptr;\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n const ret = module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData, reducePower);\n if (ret) {\n const {\n errorMessages\n } = module;\n if (errorMessages) {\n delete module.errorMessages;\n throw new JpxError(errorMessages);\n }\n throw new JpxError(\"Unknown error\");\n }\n const {\n imageData\n } = module;\n module.imageData = null;\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n }\n }\n static parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = oldByte << 8 | newByte;\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0;\n const Ysiz = stream.getInt32() >>> 0;\n const XOsiz = stream.getInt32() >>> 0;\n const YOsiz = stream.getInt32() >>> 0;\n stream.skip(16);\n const Csiz = stream.getUint16();\n return {\n width: Xsiz - XOsiz,\n height: Ysiz - YOsiz,\n bitsPerComponent: 8,\n componentsCount: Csiz\n };\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n}\n\n;// ./src/core/jpx_stream.js\n\n\n\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n get isAsyncDecoder() {\n return true;\n }\n async decodeImage(bytes, _length, decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ||= this.bytes;\n this.buffer = await JpxImage.instance.decode(bytes, decoderOptions);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n get isImageStream() {\n return true;\n }\n}\n\n;// ./src/core/lzw_stream.js\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.stream.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = cachedData << 8 | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n return cachedData >>> bitsCached & (1 << n) - 1;\n }\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n const {\n lzwState\n } = this;\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n this.bufferLength = currentBufferLength;\n }\n}\n\n;// ./src/core/predictor_stream.js\n\n\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n if (!(params instanceof Dict)) {\n return str;\n }\n const predictor = this.predictor = params.get(\"Predictor\") || 1;\n if (predictor <= 1) {\n return str;\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\n this.stream = str;\n this.dict = str.dict;\n const colors = this.colors = params.get(\"Colors\") || 1;\n const bits = this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8;\n const columns = this.columns = params.get(\"Columns\") || 1;\n this.pixBytes = colors * bits + 7 >> 3;\n this.rowBytes = columns * colors * bits + 7 >> 3;\n return this;\n }\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n const bits = this.bits;\n const colors = this.colors;\n const rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n if (bits === 1 && colors === 1) {\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = sum >> 8 & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n inbits += 8;\n }\n compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n inbits -= bits;\n outbuf = outbuf << bits | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = outbuf >> outbits - 8 & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n }\n }\n this.bufferLength += rowBytes;\n }\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n const predictor = this.stream.getByte();\n const rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n j++;\n }\n break;\n case 4:\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\n;// ./src/core/run_length_stream.js\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n }\n readBlock() {\n const repeatHeader = this.stream.getBytes(2);\n if (repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.stream.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer.fill(repeatHeader[1], bufferLength, bufferLength + n);\n bufferLength += n;\n }\n this.bufferLength = bufferLength;\n }\n}\n\n;// ./src/core/parser.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nfunction getInlineImageCacheKey(bytes) {\n const strBuf = [],\n ii = bytes.length;\n let i = 0;\n while (i < ii - 1) {\n strBuf.push(bytes[i++] << 8 | bytes[i++]);\n }\n if (i < ii) {\n strBuf.push(bytes[i]);\n }\n return ii + \"_\" + String.fromCharCode.apply(null, strBuf);\n}\nclass Parser {\n #imageCache = null;\n #imageId = 0;\n constructor({\n lexer,\n xref,\n allowStreams = false,\n recoveryMode = false\n }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.refill();\n }\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n return false;\n }\n }\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\":\n return this.makeInlineImage(cipherTransform);\n case \"[\":\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\":\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n }\n this.shift();\n return dict;\n default:\n return buf1;\n }\n }\n if (Number.isInteger(buf1)) {\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n if (typeof buf1 === \"string\") {\n return cipherTransform ? cipherTransform.decryptString(buf1) : buf1;\n }\n return buf1;\n }\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const {\n knownCommands\n } = this.lexer,\n startPos = stream.pos,\n n = 15;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n const followingBytes = stream.peekBytes(n);\n const ii = followingBytes.length;\n if (ii === 0) {\n break;\n }\n for (let i = 0; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n if (state !== 2) {\n continue;\n }\n if (!knownCommands) {\n warn(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n continue;\n }\n const tmpLexer = new Lexer(new Stream(stream.peekBytes(5 * n)), knownCommands);\n tmpLexer._hexStringWarn = () => {};\n let numArgs = 0;\n while (true) {\n const nextObj = tmpLexer.getObj();\n if (nextObj === EOF) {\n state = 0;\n break;\n }\n if (nextObj instanceof Cmd) {\n const knownCommand = knownCommands[nextObj.cmd];\n if (!knownCommand) {\n state = 0;\n break;\n } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) {\n break;\n }\n numArgs = 0;\n continue;\n }\n numArgs++;\n }\n if (state === 2) {\n break;\n }\n } else {\n state = 0;\n }\n }\n }\n if (ch === -1) {\n warn(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos));\n }\n }\n let endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n continue;\n }\n switch (stream.getByte()) {\n case 0x00:\n break;\n case 0xff:\n stream.skip(-1);\n break;\n case 0xd9:\n foundEOI = true;\n break;\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n } else {\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.#fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) {\n const initialStreamPos = stream.pos;\n stream.pos = lexer.beginInlineImagePos;\n cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\n stream.pos = initialStreamPos;\n const cacheEntry = this.#imageCache?.get(cacheKey);\n if (cacheEntry) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform && !this.#hasCryptFilter(filter)) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n imageStream = this.filter(imageStream, dict, length, cipherTransform);\n imageStream.dict = dict;\n if (cacheKey) {\n imageStream.cacheKey = `inline_img_${++this.#imageId}`;\n (this.#imageCache ??= new Map()).set(cacheKey, imageStream);\n }\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n return imageStream;\n }\n #fetchIfRef(obj) {\n return this.xref ? this.xref.fetchIfRef(obj) : obj;\n }\n #hasCryptFilter(filter) {\n return Array.isArray(filter) ? filter.some(f => isName(this.#fetchIfRef(f), \"Crypt\")) : isName(filter, \"Crypt\");\n }\n #findStreamLength(startPos) {\n const {\n stream\n } = this.lexer;\n stream.pos = startPos;\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = \"endstream\".length;\n const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\n const endLength = END_SIGNATURE.length;\n const PARTIAL_SIGNATURE = [new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61])];\n const normalLength = signatureLength - endLength;\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\n j++;\n }\n if (j >= endLength) {\n let found = false;\n for (const part of PARTIAL_SIGNATURE) {\n const partLen = part.length;\n let k = 0;\n while (k < partLen && scanBytes[pos + j + k] === part[k]) {\n k++;\n }\n if (k >= normalLength) {\n found = true;\n break;\n }\n if (k >= partLen) {\n const lastByte = scanBytes[pos + j + k];\n if (isWhiteSpace(lastByte)) {\n info(`Found \"${bytesToString([...END_SIGNATURE, ...part])}\" when ` + \"searching for endstream command.\");\n found = true;\n }\n break;\n }\n }\n if (found) {\n stream.pos += pos;\n return stream.pos - startPos;\n }\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n stream.pos = startPos + length;\n lexer.nextChar();\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift();\n } else {\n length = this.#findStreamLength(startPos);\n if (length < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift();\n stream = stream.makeSubStream(startPos, length, dict);\n const filter = dict.get(\"F\", \"Filter\");\n if (cipherTransform && !this.#hasCryptFilter(filter)) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length, cipherTransform);\n stream.dict = dict;\n return stream;\n }\n filter(stream, dict, length, cipherTransform = null) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params, cipherTransform);\n }\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.#fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.#fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params, cipherTransform);\n maybeLength = null;\n }\n }\n return stream;\n }\n makeFilter(stream, name, maybeLength, params, cipherTransform = null) {\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n if (params) {\n return new PredictorStream(new FlateStream(stream, maybeLength), maybeLength, params);\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(new LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n return new JpxStream(stream, maybeLength);\n case \"A85\":\n case \"ASCII85Decode\":\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n return new Jbig2Stream(stream, maybeLength, params);\n case \"BrotliDecode\":\n return new BrotliStream(stream, maybeLength);\n case \"Crypt\":\n {\n if (!cipherTransform) {\n warn('Filter \"Crypt\" is missing a cipher transform.');\n return stream;\n }\n const param = params instanceof Dict ? params.get(\"Name\") : null;\n const cryptName = param instanceof Name ? param : Name.get(\"Identity\");\n return cipherTransform.createStream(stream, maybeLength, cryptName);\n }\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\nconst specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\nfunction toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n this.knownCommands = knownCommands;\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n peekChar() {\n return this.stream.peekByte();\n }\n getNumber() {\n let ch = this.currentChar;\n let divideBy = 0;\n let sign = 1;\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n } else if (ch === 0x2b) {\n ch = this.nextChar();\n }\n if (ch === 0x0a || ch === 0x0d) {\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < 0x30 || ch > 0x39) {\n const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n if (isWhiteSpace(ch) || ch === 0x28 || ch === 0x3c || ch === -1) {\n info(`Lexer.getNumber - \"${msg}\".`);\n return 0;\n }\n throw new FormatError(msg);\n }\n let baseValue = ch - 0x30;\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n const currentDigit = ch - 0x30;\n if (divideBy !== 0) {\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n } else if (ch === 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n break;\n }\n } else if (ch === 0x2d) {\n warn(\"Badly formatted number: minus sign in the middle\");\n } else {\n break;\n }\n }\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n return sign * baseValue;\n }\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28:\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29:\n if (--numParen === 0) {\n this.nextChar();\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c:\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e:\n strBuf.push(\"\\n\");\n break;\n case 0x72:\n strBuf.push(\"\\r\");\n break;\n case 0x74:\n strBuf.push(\"\\t\");\n break;\n case 0x62:\n strBuf.push(\"\\b\");\n break;\n case 0x66:\n strBuf.push(\"\\f\");\n break;\n case 0x5c:\n case 0x28:\n case 0x29:\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a:\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode(x << 4 | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let firstDigit = -1,\n digit = -1;\n this._hexStringNumWarn = 0;\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n digit = toHexDigit(ch);\n if (digit === -1) {\n this._hexStringWarn(ch);\n } else if (firstDigit === -1) {\n firstDigit = digit;\n } else {\n strBuf.push(String.fromCharCode(firstDigit << 4 | digit));\n firstDigit = -1;\n }\n ch = this.nextChar();\n }\n }\n if (firstDigit !== -1) {\n strBuf.push(String.fromCharCode(firstDigit << 4));\n }\n return strBuf.join(\"\");\n }\n getObj() {\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return this.getNumber();\n case 0x28:\n return this.getString();\n case 0x2f:\n return this.getName();\n case 0x5b:\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d:\n this.nextChar();\n return Cmd.get(\"]\");\n case 0x3c:\n ch = this.nextChar();\n if (ch === 0x3c) {\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n case 0x3e:\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b:\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d:\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29:\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n let str = String.fromCharCode(ch);\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands?.[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands?.[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n if (str === \"BI\") {\n this.beginInlineImagePos = this.stream.pos;\n }\n return Cmd.get(str);\n }\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n if (ch === 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n }\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && isCmd(obj3, \"obj\") && linDict instanceof Dict && typeof (obj = linDict.get(\"Linearized\")) === \"number\" && obj > 0)) {\n return null;\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\") ? getInt(linDict, \"P\", true) : 0\n };\n }\n}\n\n;// ./src/core/cmap.js\n\n\n\n\n\n\n\nconst BUILT_IN_CMAPS = [\"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\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\nclass CMap {\n constructor(builtInCMap = false) {\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + \"\\x00\";\n continue;\n }\n dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n lookup(code) {\n return this._map[code];\n }\n contains(code) {\n return this._map[code] !== undefined;\n }\n forEach(callback) {\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n charCodeOf(value) {\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n getMap() {\n return this._map;\n }\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk;) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk;) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n get length() {\n return this._map.length;\n }\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n getMap() {\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n get length() {\n return 0x10000;\n }\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\nfunction strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = a << 8 | str.charCodeAt(i);\n }\n return a >>> 0;\n}\nfunction expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n}\nfunction expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n}\nfunction parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n}\nfunction parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n}\nfunction parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n}\nfunction parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n}\nfunction parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n}\nfunction parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n}\nfunction parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n}\nasync function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n if (!useCMap && embeddedUseCMap) {\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n}\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, value);\n }\n });\n return cMap;\n}\nasync function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n const {\n cMapData,\n isCompressed\n } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n if (isCompressed) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap));\n }\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n}\nclass CMapFactory {\n static async create({\n encoding,\n fetchBuiltInCMap,\n useCMap\n }) {\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n if (encoding.isAsync) {\n const bytes = await encoding.asyncGetBytes();\n if (bytes) {\n encoding = new Stream(bytes, 0, bytes.length, encoding.dict);\n }\n }\n const parsedCMap = await parseCMap(new CMap(), new Lexer(encoding), fetchBuiltInCMap, useCMap);\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n }\n}\n\n;// ./src/core/encodings.js\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\", \"\", \"\", \"\"];\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\"];\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\"];\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"\"];\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\n;// ./src/core/glyphlist.js\n\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\n t.A = 0x0041;\n t.AE = 0x00c6;\n t.AEacute = 0x01fc;\n t.AEmacron = 0x01e2;\n t.AEsmall = 0xf7e6;\n t.Aacute = 0x00c1;\n t.Aacutesmall = 0xf7e1;\n t.Abreve = 0x0102;\n t.Abreveacute = 0x1eae;\n t.Abrevecyrillic = 0x04d0;\n t.Abrevedotbelow = 0x1eb6;\n t.Abrevegrave = 0x1eb0;\n t.Abrevehookabove = 0x1eb2;\n t.Abrevetilde = 0x1eb4;\n t.Acaron = 0x01cd;\n t.Acircle = 0x24b6;\n t.Acircumflex = 0x00c2;\n t.Acircumflexacute = 0x1ea4;\n t.Acircumflexdotbelow = 0x1eac;\n t.Acircumflexgrave = 0x1ea6;\n t.Acircumflexhookabove = 0x1ea8;\n t.Acircumflexsmall = 0xf7e2;\n t.Acircumflextilde = 0x1eaa;\n t.Acute = 0xf6c9;\n t.Acutesmall = 0xf7b4;\n t.Acyrillic = 0x0410;\n t.Adblgrave = 0x0200;\n t.Adieresis = 0x00c4;\n t.Adieresiscyrillic = 0x04d2;\n t.Adieresismacron = 0x01de;\n t.Adieresissmall = 0xf7e4;\n t.Adotbelow = 0x1ea0;\n t.Adotmacron = 0x01e0;\n t.Agrave = 0x00c0;\n t.Agravesmall = 0xf7e0;\n t.Ahookabove = 0x1ea2;\n t.Aiecyrillic = 0x04d4;\n t.Ainvertedbreve = 0x0202;\n t.Alpha = 0x0391;\n t.Alphatonos = 0x0386;\n t.Amacron = 0x0100;\n t.Amonospace = 0xff21;\n t.Aogonek = 0x0104;\n t.Aring = 0x00c5;\n t.Aringacute = 0x01fa;\n t.Aringbelow = 0x1e00;\n t.Aringsmall = 0xf7e5;\n t.Asmall = 0xf761;\n t.Atilde = 0x00c3;\n t.Atildesmall = 0xf7e3;\n t.Aybarmenian = 0x0531;\n t.B = 0x0042;\n t.Bcircle = 0x24b7;\n t.Bdotaccent = 0x1e02;\n t.Bdotbelow = 0x1e04;\n t.Becyrillic = 0x0411;\n t.Benarmenian = 0x0532;\n t.Beta = 0x0392;\n t.Bhook = 0x0181;\n t.Blinebelow = 0x1e06;\n t.Bmonospace = 0xff22;\n t.Brevesmall = 0xf6f4;\n t.Bsmall = 0xf762;\n t.Btopbar = 0x0182;\n t.C = 0x0043;\n t.Caarmenian = 0x053e;\n t.Cacute = 0x0106;\n t.Caron = 0xf6ca;\n t.Caronsmall = 0xf6f5;\n t.Ccaron = 0x010c;\n t.Ccedilla = 0x00c7;\n t.Ccedillaacute = 0x1e08;\n t.Ccedillasmall = 0xf7e7;\n t.Ccircle = 0x24b8;\n t.Ccircumflex = 0x0108;\n t.Cdot = 0x010a;\n t.Cdotaccent = 0x010a;\n t.Cedillasmall = 0xf7b8;\n t.Chaarmenian = 0x0549;\n t.Cheabkhasiancyrillic = 0x04bc;\n t.Checyrillic = 0x0427;\n t.Chedescenderabkhasiancyrillic = 0x04be;\n t.Chedescendercyrillic = 0x04b6;\n t.Chedieresiscyrillic = 0x04f4;\n t.Cheharmenian = 0x0543;\n t.Chekhakassiancyrillic = 0x04cb;\n t.Cheverticalstrokecyrillic = 0x04b8;\n t.Chi = 0x03a7;\n t.Chook = 0x0187;\n t.Circumflexsmall = 0xf6f6;\n t.Cmonospace = 0xff23;\n t.Coarmenian = 0x0551;\n t.Csmall = 0xf763;\n t.D = 0x0044;\n t.DZ = 0x01f1;\n t.DZcaron = 0x01c4;\n t.Daarmenian = 0x0534;\n t.Dafrican = 0x0189;\n t.Dcaron = 0x010e;\n t.Dcedilla = 0x1e10;\n t.Dcircle = 0x24b9;\n t.Dcircumflexbelow = 0x1e12;\n t.Dcroat = 0x0110;\n t.Ddotaccent = 0x1e0a;\n t.Ddotbelow = 0x1e0c;\n t.Decyrillic = 0x0414;\n t.Deicoptic = 0x03ee;\n t.Delta = 0x2206;\n t.Deltagreek = 0x0394;\n t.Dhook = 0x018a;\n t.Dieresis = 0xf6cb;\n t.DieresisAcute = 0xf6cc;\n t.DieresisGrave = 0xf6cd;\n t.Dieresissmall = 0xf7a8;\n t.Digammagreek = 0x03dc;\n t.Djecyrillic = 0x0402;\n t.Dlinebelow = 0x1e0e;\n t.Dmonospace = 0xff24;\n t.Dotaccentsmall = 0xf6f7;\n t.Dslash = 0x0110;\n t.Dsmall = 0xf764;\n t.Dtopbar = 0x018b;\n t.Dz = 0x01f2;\n t.Dzcaron = 0x01c5;\n t.Dzeabkhasiancyrillic = 0x04e0;\n t.Dzecyrillic = 0x0405;\n t.Dzhecyrillic = 0x040f;\n t.E = 0x0045;\n t.Eacute = 0x00c9;\n t.Eacutesmall = 0xf7e9;\n t.Ebreve = 0x0114;\n t.Ecaron = 0x011a;\n t.Ecedillabreve = 0x1e1c;\n t.Echarmenian = 0x0535;\n t.Ecircle = 0x24ba;\n t.Ecircumflex = 0x00ca;\n t.Ecircumflexacute = 0x1ebe;\n t.Ecircumflexbelow = 0x1e18;\n t.Ecircumflexdotbelow = 0x1ec6;\n t.Ecircumflexgrave = 0x1ec0;\n t.Ecircumflexhookabove = 0x1ec2;\n t.Ecircumflexsmall = 0xf7ea;\n t.Ecircumflextilde = 0x1ec4;\n t.Ecyrillic = 0x0404;\n t.Edblgrave = 0x0204;\n t.Edieresis = 0x00cb;\n t.Edieresissmall = 0xf7eb;\n t.Edot = 0x0116;\n t.Edotaccent = 0x0116;\n t.Edotbelow = 0x1eb8;\n t.Efcyrillic = 0x0424;\n t.Egrave = 0x00c8;\n t.Egravesmall = 0xf7e8;\n t.Eharmenian = 0x0537;\n t.Ehookabove = 0x1eba;\n t.Eightroman = 0x2167;\n t.Einvertedbreve = 0x0206;\n t.Eiotifiedcyrillic = 0x0464;\n t.Elcyrillic = 0x041b;\n t.Elevenroman = 0x216a;\n t.Emacron = 0x0112;\n t.Emacronacute = 0x1e16;\n t.Emacrongrave = 0x1e14;\n t.Emcyrillic = 0x041c;\n t.Emonospace = 0xff25;\n t.Encyrillic = 0x041d;\n t.Endescendercyrillic = 0x04a2;\n t.Eng = 0x014a;\n t.Enghecyrillic = 0x04a4;\n t.Enhookcyrillic = 0x04c7;\n t.Eogonek = 0x0118;\n t.Eopen = 0x0190;\n t.Epsilon = 0x0395;\n t.Epsilontonos = 0x0388;\n t.Ercyrillic = 0x0420;\n t.Ereversed = 0x018e;\n t.Ereversedcyrillic = 0x042d;\n t.Escyrillic = 0x0421;\n t.Esdescendercyrillic = 0x04aa;\n t.Esh = 0x01a9;\n t.Esmall = 0xf765;\n t.Eta = 0x0397;\n t.Etarmenian = 0x0538;\n t.Etatonos = 0x0389;\n t.Eth = 0x00d0;\n t.Ethsmall = 0xf7f0;\n t.Etilde = 0x1ebc;\n t.Etildebelow = 0x1e1a;\n t.Euro = 0x20ac;\n t.Ezh = 0x01b7;\n t.Ezhcaron = 0x01ee;\n t.Ezhreversed = 0x01b8;\n t.F = 0x0046;\n t.Fcircle = 0x24bb;\n t.Fdotaccent = 0x1e1e;\n t.Feharmenian = 0x0556;\n t.Feicoptic = 0x03e4;\n t.Fhook = 0x0191;\n t.Fitacyrillic = 0x0472;\n t.Fiveroman = 0x2164;\n t.Fmonospace = 0xff26;\n t.Fourroman = 0x2163;\n t.Fsmall = 0xf766;\n t.G = 0x0047;\n t.GBsquare = 0x3387;\n t.Gacute = 0x01f4;\n t.Gamma = 0x0393;\n t.Gammaafrican = 0x0194;\n t.Gangiacoptic = 0x03ea;\n t.Gbreve = 0x011e;\n t.Gcaron = 0x01e6;\n t.Gcedilla = 0x0122;\n t.Gcircle = 0x24bc;\n t.Gcircumflex = 0x011c;\n t.Gcommaaccent = 0x0122;\n t.Gdot = 0x0120;\n t.Gdotaccent = 0x0120;\n t.Gecyrillic = 0x0413;\n t.Ghadarmenian = 0x0542;\n t.Ghemiddlehookcyrillic = 0x0494;\n t.Ghestrokecyrillic = 0x0492;\n t.Gheupturncyrillic = 0x0490;\n t.Ghook = 0x0193;\n t.Gimarmenian = 0x0533;\n t.Gjecyrillic = 0x0403;\n t.Gmacron = 0x1e20;\n t.Gmonospace = 0xff27;\n t.Grave = 0xf6ce;\n t.Gravesmall = 0xf760;\n t.Gsmall = 0xf767;\n t.Gsmallhook = 0x029b;\n t.Gstroke = 0x01e4;\n t.H = 0x0048;\n t.H18533 = 0x25cf;\n t.H18543 = 0x25aa;\n t.H18551 = 0x25ab;\n t.H22073 = 0x25a1;\n t.HPsquare = 0x33cb;\n t.Haabkhasiancyrillic = 0x04a8;\n t.Hadescendercyrillic = 0x04b2;\n t.Hardsigncyrillic = 0x042a;\n t.Hbar = 0x0126;\n t.Hbrevebelow = 0x1e2a;\n t.Hcedilla = 0x1e28;\n t.Hcircle = 0x24bd;\n t.Hcircumflex = 0x0124;\n t.Hdieresis = 0x1e26;\n t.Hdotaccent = 0x1e22;\n t.Hdotbelow = 0x1e24;\n t.Hmonospace = 0xff28;\n t.Hoarmenian = 0x0540;\n t.Horicoptic = 0x03e8;\n t.Hsmall = 0xf768;\n t.Hungarumlaut = 0xf6cf;\n t.Hungarumlautsmall = 0xf6f8;\n t.Hzsquare = 0x3390;\n t.I = 0x0049;\n t.IAcyrillic = 0x042f;\n t.IJ = 0x0132;\n t.IUcyrillic = 0x042e;\n t.Iacute = 0x00cd;\n t.Iacutesmall = 0xf7ed;\n t.Ibreve = 0x012c;\n t.Icaron = 0x01cf;\n t.Icircle = 0x24be;\n t.Icircumflex = 0x00ce;\n t.Icircumflexsmall = 0xf7ee;\n t.Icyrillic = 0x0406;\n t.Idblgrave = 0x0208;\n t.Idieresis = 0x00cf;\n t.Idieresisacute = 0x1e2e;\n t.Idieresiscyrillic = 0x04e4;\n t.Idieresissmall = 0xf7ef;\n t.Idot = 0x0130;\n t.Idotaccent = 0x0130;\n t.Idotbelow = 0x1eca;\n t.Iebrevecyrillic = 0x04d6;\n t.Iecyrillic = 0x0415;\n t.Ifraktur = 0x2111;\n t.Igrave = 0x00cc;\n t.Igravesmall = 0xf7ec;\n t.Ihookabove = 0x1ec8;\n t.Iicyrillic = 0x0418;\n t.Iinvertedbreve = 0x020a;\n t.Iishortcyrillic = 0x0419;\n t.Imacron = 0x012a;\n t.Imacroncyrillic = 0x04e2;\n t.Imonospace = 0xff29;\n t.Iniarmenian = 0x053b;\n t.Iocyrillic = 0x0401;\n t.Iogonek = 0x012e;\n t.Iota = 0x0399;\n t.Iotaafrican = 0x0196;\n t.Iotadieresis = 0x03aa;\n t.Iotatonos = 0x038a;\n t.Ismall = 0xf769;\n t.Istroke = 0x0197;\n t.Itilde = 0x0128;\n t.Itildebelow = 0x1e2c;\n t.Izhitsacyrillic = 0x0474;\n t.Izhitsadblgravecyrillic = 0x0476;\n t.J = 0x004a;\n t.Jaarmenian = 0x0541;\n t.Jcircle = 0x24bf;\n t.Jcircumflex = 0x0134;\n t.Jecyrillic = 0x0408;\n t.Jheharmenian = 0x054b;\n t.Jmonospace = 0xff2a;\n t.Jsmall = 0xf76a;\n t.K = 0x004b;\n t.KBsquare = 0x3385;\n t.KKsquare = 0x33cd;\n t.Kabashkircyrillic = 0x04a0;\n t.Kacute = 0x1e30;\n t.Kacyrillic = 0x041a;\n t.Kadescendercyrillic = 0x049a;\n t.Kahookcyrillic = 0x04c3;\n t.Kappa = 0x039a;\n t.Kastrokecyrillic = 0x049e;\n t.Kaverticalstrokecyrillic = 0x049c;\n t.Kcaron = 0x01e8;\n t.Kcedilla = 0x0136;\n t.Kcircle = 0x24c0;\n t.Kcommaaccent = 0x0136;\n t.Kdotbelow = 0x1e32;\n t.Keharmenian = 0x0554;\n t.Kenarmenian = 0x053f;\n t.Khacyrillic = 0x0425;\n t.Kheicoptic = 0x03e6;\n t.Khook = 0x0198;\n t.Kjecyrillic = 0x040c;\n t.Klinebelow = 0x1e34;\n t.Kmonospace = 0xff2b;\n t.Koppacyrillic = 0x0480;\n t.Koppagreek = 0x03de;\n t.Ksicyrillic = 0x046e;\n t.Ksmall = 0xf76b;\n t.L = 0x004c;\n t.LJ = 0x01c7;\n t.LL = 0xf6bf;\n t.Lacute = 0x0139;\n t.Lambda = 0x039b;\n t.Lcaron = 0x013d;\n t.Lcedilla = 0x013b;\n t.Lcircle = 0x24c1;\n t.Lcircumflexbelow = 0x1e3c;\n t.Lcommaaccent = 0x013b;\n t.Ldot = 0x013f;\n t.Ldotaccent = 0x013f;\n t.Ldotbelow = 0x1e36;\n t.Ldotbelowmacron = 0x1e38;\n t.Liwnarmenian = 0x053c;\n t.Lj = 0x01c8;\n t.Ljecyrillic = 0x0409;\n t.Llinebelow = 0x1e3a;\n t.Lmonospace = 0xff2c;\n t.Lslash = 0x0141;\n t.Lslashsmall = 0xf6f9;\n t.Lsmall = 0xf76c;\n t.M = 0x004d;\n t.MBsquare = 0x3386;\n t.Macron = 0xf6d0;\n t.Macronsmall = 0xf7af;\n t.Macute = 0x1e3e;\n t.Mcircle = 0x24c2;\n t.Mdotaccent = 0x1e40;\n t.Mdotbelow = 0x1e42;\n t.Menarmenian = 0x0544;\n t.Mmonospace = 0xff2d;\n t.Msmall = 0xf76d;\n t.Mturned = 0x019c;\n t.Mu = 0x039c;\n t.N = 0x004e;\n t.NJ = 0x01ca;\n t.Nacute = 0x0143;\n t.Ncaron = 0x0147;\n t.Ncedilla = 0x0145;\n t.Ncircle = 0x24c3;\n t.Ncircumflexbelow = 0x1e4a;\n t.Ncommaaccent = 0x0145;\n t.Ndotaccent = 0x1e44;\n t.Ndotbelow = 0x1e46;\n t.Nhookleft = 0x019d;\n t.Nineroman = 0x2168;\n t.Nj = 0x01cb;\n t.Njecyrillic = 0x040a;\n t.Nlinebelow = 0x1e48;\n t.Nmonospace = 0xff2e;\n t.Nowarmenian = 0x0546;\n t.Nsmall = 0xf76e;\n t.Ntilde = 0x00d1;\n t.Ntildesmall = 0xf7f1;\n t.Nu = 0x039d;\n t.O = 0x004f;\n t.OE = 0x0152;\n t.OEsmall = 0xf6fa;\n t.Oacute = 0x00d3;\n t.Oacutesmall = 0xf7f3;\n t.Obarredcyrillic = 0x04e8;\n t.Obarreddieresiscyrillic = 0x04ea;\n t.Obreve = 0x014e;\n t.Ocaron = 0x01d1;\n t.Ocenteredtilde = 0x019f;\n t.Ocircle = 0x24c4;\n t.Ocircumflex = 0x00d4;\n t.Ocircumflexacute = 0x1ed0;\n t.Ocircumflexdotbelow = 0x1ed8;\n t.Ocircumflexgrave = 0x1ed2;\n t.Ocircumflexhookabove = 0x1ed4;\n t.Ocircumflexsmall = 0xf7f4;\n t.Ocircumflextilde = 0x1ed6;\n t.Ocyrillic = 0x041e;\n t.Odblacute = 0x0150;\n t.Odblgrave = 0x020c;\n t.Odieresis = 0x00d6;\n t.Odieresiscyrillic = 0x04e6;\n t.Odieresissmall = 0xf7f6;\n t.Odotbelow = 0x1ecc;\n t.Ogoneksmall = 0xf6fb;\n t.Ograve = 0x00d2;\n t.Ogravesmall = 0xf7f2;\n t.Oharmenian = 0x0555;\n t.Ohm = 0x2126;\n t.Ohookabove = 0x1ece;\n t.Ohorn = 0x01a0;\n t.Ohornacute = 0x1eda;\n t.Ohorndotbelow = 0x1ee2;\n t.Ohorngrave = 0x1edc;\n t.Ohornhookabove = 0x1ede;\n t.Ohorntilde = 0x1ee0;\n t.Ohungarumlaut = 0x0150;\n t.Oi = 0x01a2;\n t.Oinvertedbreve = 0x020e;\n t.Omacron = 0x014c;\n t.Omacronacute = 0x1e52;\n t.Omacrongrave = 0x1e50;\n t.Omega = 0x2126;\n t.Omegacyrillic = 0x0460;\n t.Omegagreek = 0x03a9;\n t.Omegaroundcyrillic = 0x047a;\n t.Omegatitlocyrillic = 0x047c;\n t.Omegatonos = 0x038f;\n t.Omicron = 0x039f;\n t.Omicrontonos = 0x038c;\n t.Omonospace = 0xff2f;\n t.Oneroman = 0x2160;\n t.Oogonek = 0x01ea;\n t.Oogonekmacron = 0x01ec;\n t.Oopen = 0x0186;\n t.Oslash = 0x00d8;\n t.Oslashacute = 0x01fe;\n t.Oslashsmall = 0xf7f8;\n t.Osmall = 0xf76f;\n t.Ostrokeacute = 0x01fe;\n t.Otcyrillic = 0x047e;\n t.Otilde = 0x00d5;\n t.Otildeacute = 0x1e4c;\n t.Otildedieresis = 0x1e4e;\n t.Otildesmall = 0xf7f5;\n t.P = 0x0050;\n t.Pacute = 0x1e54;\n t.Pcircle = 0x24c5;\n t.Pdotaccent = 0x1e56;\n t.Pecyrillic = 0x041f;\n t.Peharmenian = 0x054a;\n t.Pemiddlehookcyrillic = 0x04a6;\n t.Phi = 0x03a6;\n t.Phook = 0x01a4;\n t.Pi = 0x03a0;\n t.Piwrarmenian = 0x0553;\n t.Pmonospace = 0xff30;\n t.Psi = 0x03a8;\n t.Psicyrillic = 0x0470;\n t.Psmall = 0xf770;\n t.Q = 0x0051;\n t.Qcircle = 0x24c6;\n t.Qmonospace = 0xff31;\n t.Qsmall = 0xf771;\n t.R = 0x0052;\n t.Raarmenian = 0x054c;\n t.Racute = 0x0154;\n t.Rcaron = 0x0158;\n t.Rcedilla = 0x0156;\n t.Rcircle = 0x24c7;\n t.Rcommaaccent = 0x0156;\n t.Rdblgrave = 0x0210;\n t.Rdotaccent = 0x1e58;\n t.Rdotbelow = 0x1e5a;\n t.Rdotbelowmacron = 0x1e5c;\n t.Reharmenian = 0x0550;\n t.Rfraktur = 0x211c;\n t.Rho = 0x03a1;\n t.Ringsmall = 0xf6fc;\n t.Rinvertedbreve = 0x0212;\n t.Rlinebelow = 0x1e5e;\n t.Rmonospace = 0xff32;\n t.Rsmall = 0xf772;\n t.Rsmallinverted = 0x0281;\n t.Rsmallinvertedsuperior = 0x02b6;\n t.S = 0x0053;\n t.SF010000 = 0x250c;\n t.SF020000 = 0x2514;\n t.SF030000 = 0x2510;\n t.SF040000 = 0x2518;\n t.SF050000 = 0x253c;\n t.SF060000 = 0x252c;\n t.SF070000 = 0x2534;\n t.SF080000 = 0x251c;\n t.SF090000 = 0x2524;\n t.SF100000 = 0x2500;\n t.SF110000 = 0x2502;\n t.SF190000 = 0x2561;\n t.SF200000 = 0x2562;\n t.SF210000 = 0x2556;\n t.SF220000 = 0x2555;\n t.SF230000 = 0x2563;\n t.SF240000 = 0x2551;\n t.SF250000 = 0x2557;\n t.SF260000 = 0x255d;\n t.SF270000 = 0x255c;\n t.SF280000 = 0x255b;\n t.SF360000 = 0x255e;\n t.SF370000 = 0x255f;\n t.SF380000 = 0x255a;\n t.SF390000 = 0x2554;\n t.SF400000 = 0x2569;\n t.SF410000 = 0x2566;\n t.SF420000 = 0x2560;\n t.SF430000 = 0x2550;\n t.SF440000 = 0x256c;\n t.SF450000 = 0x2567;\n t.SF460000 = 0x2568;\n t.SF470000 = 0x2564;\n t.SF480000 = 0x2565;\n t.SF490000 = 0x2559;\n t.SF500000 = 0x2558;\n t.SF510000 = 0x2552;\n t.SF520000 = 0x2553;\n t.SF530000 = 0x256b;\n t.SF540000 = 0x256a;\n t.Sacute = 0x015a;\n t.Sacutedotaccent = 0x1e64;\n t.Sampigreek = 0x03e0;\n t.Scaron = 0x0160;\n t.Scarondotaccent = 0x1e66;\n t.Scaronsmall = 0xf6fd;\n t.Scedilla = 0x015e;\n t.Schwa = 0x018f;\n t.Schwacyrillic = 0x04d8;\n t.Schwadieresiscyrillic = 0x04da;\n t.Scircle = 0x24c8;\n t.Scircumflex = 0x015c;\n t.Scommaaccent = 0x0218;\n t.Sdotaccent = 0x1e60;\n t.Sdotbelow = 0x1e62;\n t.Sdotbelowdotaccent = 0x1e68;\n t.Seharmenian = 0x054d;\n t.Sevenroman = 0x2166;\n t.Shaarmenian = 0x0547;\n t.Shacyrillic = 0x0428;\n t.Shchacyrillic = 0x0429;\n t.Sheicoptic = 0x03e2;\n t.Shhacyrillic = 0x04ba;\n t.Shimacoptic = 0x03ec;\n t.Sigma = 0x03a3;\n t.Sixroman = 0x2165;\n t.Smonospace = 0xff33;\n t.Softsigncyrillic = 0x042c;\n t.Ssmall = 0xf773;\n t.Stigmagreek = 0x03da;\n t.T = 0x0054;\n t.Tau = 0x03a4;\n t.Tbar = 0x0166;\n t.Tcaron = 0x0164;\n t.Tcedilla = 0x0162;\n t.Tcircle = 0x24c9;\n t.Tcircumflexbelow = 0x1e70;\n t.Tcommaaccent = 0x0162;\n t.Tdotaccent = 0x1e6a;\n t.Tdotbelow = 0x1e6c;\n t.Tecyrillic = 0x0422;\n t.Tedescendercyrillic = 0x04ac;\n t.Tenroman = 0x2169;\n t.Tetsecyrillic = 0x04b4;\n t.Theta = 0x0398;\n t.Thook = 0x01ac;\n t.Thorn = 0x00de;\n t.Thornsmall = 0xf7fe;\n t.Threeroman = 0x2162;\n t.Tildesmall = 0xf6fe;\n t.Tiwnarmenian = 0x054f;\n t.Tlinebelow = 0x1e6e;\n t.Tmonospace = 0xff34;\n t.Toarmenian = 0x0539;\n t.Tonefive = 0x01bc;\n t.Tonesix = 0x0184;\n t.Tonetwo = 0x01a7;\n t.Tretroflexhook = 0x01ae;\n t.Tsecyrillic = 0x0426;\n t.Tshecyrillic = 0x040b;\n t.Tsmall = 0xf774;\n t.Twelveroman = 0x216b;\n t.Tworoman = 0x2161;\n t.U = 0x0055;\n t.Uacute = 0x00da;\n t.Uacutesmall = 0xf7fa;\n t.Ubreve = 0x016c;\n t.Ucaron = 0x01d3;\n t.Ucircle = 0x24ca;\n t.Ucircumflex = 0x00db;\n t.Ucircumflexbelow = 0x1e76;\n t.Ucircumflexsmall = 0xf7fb;\n t.Ucyrillic = 0x0423;\n t.Udblacute = 0x0170;\n t.Udblgrave = 0x0214;\n t.Udieresis = 0x00dc;\n t.Udieresisacute = 0x01d7;\n t.Udieresisbelow = 0x1e72;\n t.Udieresiscaron = 0x01d9;\n t.Udieresiscyrillic = 0x04f0;\n t.Udieresisgrave = 0x01db;\n t.Udieresismacron = 0x01d5;\n t.Udieresissmall = 0xf7fc;\n t.Udotbelow = 0x1ee4;\n t.Ugrave = 0x00d9;\n t.Ugravesmall = 0xf7f9;\n t.Uhookabove = 0x1ee6;\n t.Uhorn = 0x01af;\n t.Uhornacute = 0x1ee8;\n t.Uhorndotbelow = 0x1ef0;\n t.Uhorngrave = 0x1eea;\n t.Uhornhookabove = 0x1eec;\n t.Uhorntilde = 0x1eee;\n t.Uhungarumlaut = 0x0170;\n t.Uhungarumlautcyrillic = 0x04f2;\n t.Uinvertedbreve = 0x0216;\n t.Ukcyrillic = 0x0478;\n t.Umacron = 0x016a;\n t.Umacroncyrillic = 0x04ee;\n t.Umacrondieresis = 0x1e7a;\n t.Umonospace = 0xff35;\n t.Uogonek = 0x0172;\n t.Upsilon = 0x03a5;\n t.Upsilon1 = 0x03d2;\n t.Upsilonacutehooksymbolgreek = 0x03d3;\n t.Upsilonafrican = 0x01b1;\n t.Upsilondieresis = 0x03ab;\n t.Upsilondieresishooksymbolgreek = 0x03d4;\n t.Upsilonhooksymbol = 0x03d2;\n t.Upsilontonos = 0x038e;\n t.Uring = 0x016e;\n t.Ushortcyrillic = 0x040e;\n t.Usmall = 0xf775;\n t.Ustraightcyrillic = 0x04ae;\n t.Ustraightstrokecyrillic = 0x04b0;\n t.Utilde = 0x0168;\n t.Utildeacute = 0x1e78;\n t.Utildebelow = 0x1e74;\n t.V = 0x0056;\n t.Vcircle = 0x24cb;\n t.Vdotbelow = 0x1e7e;\n t.Vecyrillic = 0x0412;\n t.Vewarmenian = 0x054e;\n t.Vhook = 0x01b2;\n t.Vmonospace = 0xff36;\n t.Voarmenian = 0x0548;\n t.Vsmall = 0xf776;\n t.Vtilde = 0x1e7c;\n t.W = 0x0057;\n t.Wacute = 0x1e82;\n t.Wcircle = 0x24cc;\n t.Wcircumflex = 0x0174;\n t.Wdieresis = 0x1e84;\n t.Wdotaccent = 0x1e86;\n t.Wdotbelow = 0x1e88;\n t.Wgrave = 0x1e80;\n t.Wmonospace = 0xff37;\n t.Wsmall = 0xf777;\n t.X = 0x0058;\n t.Xcircle = 0x24cd;\n t.Xdieresis = 0x1e8c;\n t.Xdotaccent = 0x1e8a;\n t.Xeharmenian = 0x053d;\n t.Xi = 0x039e;\n t.Xmonospace = 0xff38;\n t.Xsmall = 0xf778;\n t.Y = 0x0059;\n t.Yacute = 0x00dd;\n t.Yacutesmall = 0xf7fd;\n t.Yatcyrillic = 0x0462;\n t.Ycircle = 0x24ce;\n t.Ycircumflex = 0x0176;\n t.Ydieresis = 0x0178;\n t.Ydieresissmall = 0xf7ff;\n t.Ydotaccent = 0x1e8e;\n t.Ydotbelow = 0x1ef4;\n t.Yericyrillic = 0x042b;\n t.Yerudieresiscyrillic = 0x04f8;\n t.Ygrave = 0x1ef2;\n t.Yhook = 0x01b3;\n t.Yhookabove = 0x1ef6;\n t.Yiarmenian = 0x0545;\n t.Yicyrillic = 0x0407;\n t.Yiwnarmenian = 0x0552;\n t.Ymonospace = 0xff39;\n t.Ysmall = 0xf779;\n t.Ytilde = 0x1ef8;\n t.Yusbigcyrillic = 0x046a;\n t.Yusbigiotifiedcyrillic = 0x046c;\n t.Yuslittlecyrillic = 0x0466;\n t.Yuslittleiotifiedcyrillic = 0x0468;\n t.Z = 0x005a;\n t.Zaarmenian = 0x0536;\n t.Zacute = 0x0179;\n t.Zcaron = 0x017d;\n t.Zcaronsmall = 0xf6ff;\n t.Zcircle = 0x24cf;\n t.Zcircumflex = 0x1e90;\n t.Zdot = 0x017b;\n t.Zdotaccent = 0x017b;\n t.Zdotbelow = 0x1e92;\n t.Zecyrillic = 0x0417;\n t.Zedescendercyrillic = 0x0498;\n t.Zedieresiscyrillic = 0x04de;\n t.Zeta = 0x0396;\n t.Zhearmenian = 0x053a;\n t.Zhebrevecyrillic = 0x04c1;\n t.Zhecyrillic = 0x0416;\n t.Zhedescendercyrillic = 0x0496;\n t.Zhedieresiscyrillic = 0x04dc;\n t.Zlinebelow = 0x1e94;\n t.Zmonospace = 0xff3a;\n t.Zsmall = 0xf77a;\n t.Zstroke = 0x01b5;\n t.a = 0x0061;\n t.aabengali = 0x0986;\n t.aacute = 0x00e1;\n t.aadeva = 0x0906;\n t.aagujarati = 0x0a86;\n t.aagurmukhi = 0x0a06;\n t.aamatragurmukhi = 0x0a3e;\n t.aarusquare = 0x3303;\n t.aavowelsignbengali = 0x09be;\n t.aavowelsigndeva = 0x093e;\n t.aavowelsigngujarati = 0x0abe;\n t.abbreviationmarkarmenian = 0x055f;\n t.abbreviationsigndeva = 0x0970;\n t.abengali = 0x0985;\n t.abopomofo = 0x311a;\n t.abreve = 0x0103;\n t.abreveacute = 0x1eaf;\n t.abrevecyrillic = 0x04d1;\n t.abrevedotbelow = 0x1eb7;\n t.abrevegrave = 0x1eb1;\n t.abrevehookabove = 0x1eb3;\n t.abrevetilde = 0x1eb5;\n t.acaron = 0x01ce;\n t.acircle = 0x24d0;\n t.acircumflex = 0x00e2;\n t.acircumflexacute = 0x1ea5;\n t.acircumflexdotbelow = 0x1ead;\n t.acircumflexgrave = 0x1ea7;\n t.acircumflexhookabove = 0x1ea9;\n t.acircumflextilde = 0x1eab;\n t.acute = 0x00b4;\n t.acutebelowcmb = 0x0317;\n t.acutecmb = 0x0301;\n t.acutecomb = 0x0301;\n t.acutedeva = 0x0954;\n t.acutelowmod = 0x02cf;\n t.acutetonecmb = 0x0341;\n t.acyrillic = 0x0430;\n t.adblgrave = 0x0201;\n t.addakgurmukhi = 0x0a71;\n t.adeva = 0x0905;\n t.adieresis = 0x00e4;\n t.adieresiscyrillic = 0x04d3;\n t.adieresismacron = 0x01df;\n t.adotbelow = 0x1ea1;\n t.adotmacron = 0x01e1;\n t.ae = 0x00e6;\n t.aeacute = 0x01fd;\n t.aekorean = 0x3150;\n t.aemacron = 0x01e3;\n t.afii00208 = 0x2015;\n t.afii08941 = 0x20a4;\n t.afii10017 = 0x0410;\n t.afii10018 = 0x0411;\n t.afii10019 = 0x0412;\n t.afii10020 = 0x0413;\n t.afii10021 = 0x0414;\n t.afii10022 = 0x0415;\n t.afii10023 = 0x0401;\n t.afii10024 = 0x0416;\n t.afii10025 = 0x0417;\n t.afii10026 = 0x0418;\n t.afii10027 = 0x0419;\n t.afii10028 = 0x041a;\n t.afii10029 = 0x041b;\n t.afii10030 = 0x041c;\n t.afii10031 = 0x041d;\n t.afii10032 = 0x041e;\n t.afii10033 = 0x041f;\n t.afii10034 = 0x0420;\n t.afii10035 = 0x0421;\n t.afii10036 = 0x0422;\n t.afii10037 = 0x0423;\n t.afii10038 = 0x0424;\n t.afii10039 = 0x0425;\n t.afii10040 = 0x0426;\n t.afii10041 = 0x0427;\n t.afii10042 = 0x0428;\n t.afii10043 = 0x0429;\n t.afii10044 = 0x042a;\n t.afii10045 = 0x042b;\n t.afii10046 = 0x042c;\n t.afii10047 = 0x042d;\n t.afii10048 = 0x042e;\n t.afii10049 = 0x042f;\n t.afii10050 = 0x0490;\n t.afii10051 = 0x0402;\n t.afii10052 = 0x0403;\n t.afii10053 = 0x0404;\n t.afii10054 = 0x0405;\n t.afii10055 = 0x0406;\n t.afii10056 = 0x0407;\n t.afii10057 = 0x0408;\n t.afii10058 = 0x0409;\n t.afii10059 = 0x040a;\n t.afii10060 = 0x040b;\n t.afii10061 = 0x040c;\n t.afii10062 = 0x040e;\n t.afii10063 = 0xf6c4;\n t.afii10064 = 0xf6c5;\n t.afii10065 = 0x0430;\n t.afii10066 = 0x0431;\n t.afii10067 = 0x0432;\n t.afii10068 = 0x0433;\n t.afii10069 = 0x0434;\n t.afii10070 = 0x0435;\n t.afii10071 = 0x0451;\n t.afii10072 = 0x0436;\n t.afii10073 = 0x0437;\n t.afii10074 = 0x0438;\n t.afii10075 = 0x0439;\n t.afii10076 = 0x043a;\n t.afii10077 = 0x043b;\n t.afii10078 = 0x043c;\n t.afii10079 = 0x043d;\n t.afii10080 = 0x043e;\n t.afii10081 = 0x043f;\n t.afii10082 = 0x0440;\n t.afii10083 = 0x0441;\n t.afii10084 = 0x0442;\n t.afii10085 = 0x0443;\n t.afii10086 = 0x0444;\n t.afii10087 = 0x0445;\n t.afii10088 = 0x0446;\n t.afii10089 = 0x0447;\n t.afii10090 = 0x0448;\n t.afii10091 = 0x0449;\n t.afii10092 = 0x044a;\n t.afii10093 = 0x044b;\n t.afii10094 = 0x044c;\n t.afii10095 = 0x044d;\n t.afii10096 = 0x044e;\n t.afii10097 = 0x044f;\n t.afii10098 = 0x0491;\n t.afii10099 = 0x0452;\n t.afii10100 = 0x0453;\n t.afii10101 = 0x0454;\n t.afii10102 = 0x0455;\n t.afii10103 = 0x0456;\n t.afii10104 = 0x0457;\n t.afii10105 = 0x0458;\n t.afii10106 = 0x0459;\n t.afii10107 = 0x045a;\n t.afii10108 = 0x045b;\n t.afii10109 = 0x045c;\n t.afii10110 = 0x045e;\n t.afii10145 = 0x040f;\n t.afii10146 = 0x0462;\n t.afii10147 = 0x0472;\n t.afii10148 = 0x0474;\n t.afii10192 = 0xf6c6;\n t.afii10193 = 0x045f;\n t.afii10194 = 0x0463;\n t.afii10195 = 0x0473;\n t.afii10196 = 0x0475;\n t.afii10831 = 0xf6c7;\n t.afii10832 = 0xf6c8;\n t.afii10846 = 0x04d9;\n t.afii299 = 0x200e;\n t.afii300 = 0x200f;\n t.afii301 = 0x200d;\n t.afii57381 = 0x066a;\n t.afii57388 = 0x060c;\n t.afii57392 = 0x0660;\n t.afii57393 = 0x0661;\n t.afii57394 = 0x0662;\n t.afii57395 = 0x0663;\n t.afii57396 = 0x0664;\n t.afii57397 = 0x0665;\n t.afii57398 = 0x0666;\n t.afii57399 = 0x0667;\n t.afii57400 = 0x0668;\n t.afii57401 = 0x0669;\n t.afii57403 = 0x061b;\n t.afii57407 = 0x061f;\n t.afii57409 = 0x0621;\n t.afii57410 = 0x0622;\n t.afii57411 = 0x0623;\n t.afii57412 = 0x0624;\n t.afii57413 = 0x0625;\n t.afii57414 = 0x0626;\n t.afii57415 = 0x0627;\n t.afii57416 = 0x0628;\n t.afii57417 = 0x0629;\n t.afii57418 = 0x062a;\n t.afii57419 = 0x062b;\n t.afii57420 = 0x062c;\n t.afii57421 = 0x062d;\n t.afii57422 = 0x062e;\n t.afii57423 = 0x062f;\n t.afii57424 = 0x0630;\n t.afii57425 = 0x0631;\n t.afii57426 = 0x0632;\n t.afii57427 = 0x0633;\n t.afii57428 = 0x0634;\n t.afii57429 = 0x0635;\n t.afii57430 = 0x0636;\n t.afii57431 = 0x0637;\n t.afii57432 = 0x0638;\n t.afii57433 = 0x0639;\n t.afii57434 = 0x063a;\n t.afii57440 = 0x0640;\n t.afii57441 = 0x0641;\n t.afii57442 = 0x0642;\n t.afii57443 = 0x0643;\n t.afii57444 = 0x0644;\n t.afii57445 = 0x0645;\n t.afii57446 = 0x0646;\n t.afii57448 = 0x0648;\n t.afii57449 = 0x0649;\n t.afii57450 = 0x064a;\n t.afii57451 = 0x064b;\n t.afii57452 = 0x064c;\n t.afii57453 = 0x064d;\n t.afii57454 = 0x064e;\n t.afii57455 = 0x064f;\n t.afii57456 = 0x0650;\n t.afii57457 = 0x0651;\n t.afii57458 = 0x0652;\n t.afii57470 = 0x0647;\n t.afii57505 = 0x06a4;\n t.afii57506 = 0x067e;\n t.afii57507 = 0x0686;\n t.afii57508 = 0x0698;\n t.afii57509 = 0x06af;\n t.afii57511 = 0x0679;\n t.afii57512 = 0x0688;\n t.afii57513 = 0x0691;\n t.afii57514 = 0x06ba;\n t.afii57519 = 0x06d2;\n t.afii57534 = 0x06d5;\n t.afii57636 = 0x20aa;\n t.afii57645 = 0x05be;\n t.afii57658 = 0x05c3;\n t.afii57664 = 0x05d0;\n t.afii57665 = 0x05d1;\n t.afii57666 = 0x05d2;\n t.afii57667 = 0x05d3;\n t.afii57668 = 0x05d4;\n t.afii57669 = 0x05d5;\n t.afii57670 = 0x05d6;\n t.afii57671 = 0x05d7;\n t.afii57672 = 0x05d8;\n t.afii57673 = 0x05d9;\n t.afii57674 = 0x05da;\n t.afii57675 = 0x05db;\n t.afii57676 = 0x05dc;\n t.afii57677 = 0x05dd;\n t.afii57678 = 0x05de;\n t.afii57679 = 0x05df;\n t.afii57680 = 0x05e0;\n t.afii57681 = 0x05e1;\n t.afii57682 = 0x05e2;\n t.afii57683 = 0x05e3;\n t.afii57684 = 0x05e4;\n t.afii57685 = 0x05e5;\n t.afii57686 = 0x05e6;\n t.afii57687 = 0x05e7;\n t.afii57688 = 0x05e8;\n t.afii57689 = 0x05e9;\n t.afii57690 = 0x05ea;\n t.afii57694 = 0xfb2a;\n t.afii57695 = 0xfb2b;\n t.afii57700 = 0xfb4b;\n t.afii57705 = 0xfb1f;\n t.afii57716 = 0x05f0;\n t.afii57717 = 0x05f1;\n t.afii57718 = 0x05f2;\n t.afii57723 = 0xfb35;\n t.afii57793 = 0x05b4;\n t.afii57794 = 0x05b5;\n t.afii57795 = 0x05b6;\n t.afii57796 = 0x05bb;\n t.afii57797 = 0x05b8;\n t.afii57798 = 0x05b7;\n t.afii57799 = 0x05b0;\n t.afii57800 = 0x05b2;\n t.afii57801 = 0x05b1;\n t.afii57802 = 0x05b3;\n t.afii57803 = 0x05c2;\n t.afii57804 = 0x05c1;\n t.afii57806 = 0x05b9;\n t.afii57807 = 0x05bc;\n t.afii57839 = 0x05bd;\n t.afii57841 = 0x05bf;\n t.afii57842 = 0x05c0;\n t.afii57929 = 0x02bc;\n t.afii61248 = 0x2105;\n t.afii61289 = 0x2113;\n t.afii61352 = 0x2116;\n t.afii61573 = 0x202c;\n t.afii61574 = 0x202d;\n t.afii61575 = 0x202e;\n t.afii61664 = 0x200c;\n t.afii63167 = 0x066d;\n t.afii64937 = 0x02bd;\n t.agrave = 0x00e0;\n t.agujarati = 0x0a85;\n t.agurmukhi = 0x0a05;\n t.ahiragana = 0x3042;\n t.ahookabove = 0x1ea3;\n t.aibengali = 0x0990;\n t.aibopomofo = 0x311e;\n t.aideva = 0x0910;\n t.aiecyrillic = 0x04d5;\n t.aigujarati = 0x0a90;\n t.aigurmukhi = 0x0a10;\n t.aimatragurmukhi = 0x0a48;\n t.ainarabic = 0x0639;\n t.ainfinalarabic = 0xfeca;\n t.aininitialarabic = 0xfecb;\n t.ainmedialarabic = 0xfecc;\n t.ainvertedbreve = 0x0203;\n t.aivowelsignbengali = 0x09c8;\n t.aivowelsigndeva = 0x0948;\n t.aivowelsigngujarati = 0x0ac8;\n t.akatakana = 0x30a2;\n t.akatakanahalfwidth = 0xff71;\n t.akorean = 0x314f;\n t.alef = 0x05d0;\n t.alefarabic = 0x0627;\n t.alefdageshhebrew = 0xfb30;\n t.aleffinalarabic = 0xfe8e;\n t.alefhamzaabovearabic = 0x0623;\n t.alefhamzaabovefinalarabic = 0xfe84;\n t.alefhamzabelowarabic = 0x0625;\n t.alefhamzabelowfinalarabic = 0xfe88;\n t.alefhebrew = 0x05d0;\n t.aleflamedhebrew = 0xfb4f;\n t.alefmaddaabovearabic = 0x0622;\n t.alefmaddaabovefinalarabic = 0xfe82;\n t.alefmaksuraarabic = 0x0649;\n t.alefmaksurafinalarabic = 0xfef0;\n t.alefmaksurainitialarabic = 0xfef3;\n t.alefmaksuramedialarabic = 0xfef4;\n t.alefpatahhebrew = 0xfb2e;\n t.alefqamatshebrew = 0xfb2f;\n t.aleph = 0x2135;\n t.allequal = 0x224c;\n t.alpha = 0x03b1;\n t.alphatonos = 0x03ac;\n t.amacron = 0x0101;\n t.amonospace = 0xff41;\n t.ampersand = 0x0026;\n t.ampersandmonospace = 0xff06;\n t.ampersandsmall = 0xf726;\n t.amsquare = 0x33c2;\n t.anbopomofo = 0x3122;\n t.angbopomofo = 0x3124;\n t.angbracketleft = 0x3008;\n t.angbracketright = 0x3009;\n t.angkhankhuthai = 0x0e5a;\n t.angle = 0x2220;\n t.anglebracketleft = 0x3008;\n t.anglebracketleftvertical = 0xfe3f;\n t.anglebracketright = 0x3009;\n t.anglebracketrightvertical = 0xfe40;\n t.angleleft = 0x2329;\n t.angleright = 0x232a;\n t.angstrom = 0x212b;\n t.anoteleia = 0x0387;\n t.anudattadeva = 0x0952;\n t.anusvarabengali = 0x0982;\n t.anusvaradeva = 0x0902;\n t.anusvaragujarati = 0x0a82;\n t.aogonek = 0x0105;\n t.apaatosquare = 0x3300;\n t.aparen = 0x249c;\n t.apostrophearmenian = 0x055a;\n t.apostrophemod = 0x02bc;\n t.apple = 0xf8ff;\n t.approaches = 0x2250;\n t.approxequal = 0x2248;\n t.approxequalorimage = 0x2252;\n t.approximatelyequal = 0x2245;\n t.araeaekorean = 0x318e;\n t.araeakorean = 0x318d;\n t.arc = 0x2312;\n t.arighthalfring = 0x1e9a;\n t.aring = 0x00e5;\n t.aringacute = 0x01fb;\n t.aringbelow = 0x1e01;\n t.arrowboth = 0x2194;\n t.arrowdashdown = 0x21e3;\n t.arrowdashleft = 0x21e0;\n t.arrowdashright = 0x21e2;\n t.arrowdashup = 0x21e1;\n t.arrowdblboth = 0x21d4;\n t.arrowdbldown = 0x21d3;\n t.arrowdblleft = 0x21d0;\n t.arrowdblright = 0x21d2;\n t.arrowdblup = 0x21d1;\n t.arrowdown = 0x2193;\n t.arrowdownleft = 0x2199;\n t.arrowdownright = 0x2198;\n t.arrowdownwhite = 0x21e9;\n t.arrowheaddownmod = 0x02c5;\n t.arrowheadleftmod = 0x02c2;\n t.arrowheadrightmod = 0x02c3;\n t.arrowheadupmod = 0x02c4;\n t.arrowhorizex = 0xf8e7;\n t.arrowleft = 0x2190;\n t.arrowleftdbl = 0x21d0;\n t.arrowleftdblstroke = 0x21cd;\n t.arrowleftoverright = 0x21c6;\n t.arrowleftwhite = 0x21e6;\n t.arrowright = 0x2192;\n t.arrowrightdblstroke = 0x21cf;\n t.arrowrightheavy = 0x279e;\n t.arrowrightoverleft = 0x21c4;\n t.arrowrightwhite = 0x21e8;\n t.arrowtableft = 0x21e4;\n t.arrowtabright = 0x21e5;\n t.arrowup = 0x2191;\n t.arrowupdn = 0x2195;\n t.arrowupdnbse = 0x21a8;\n t.arrowupdownbase = 0x21a8;\n t.arrowupleft = 0x2196;\n t.arrowupleftofdown = 0x21c5;\n t.arrowupright = 0x2197;\n t.arrowupwhite = 0x21e7;\n t.arrowvertex = 0xf8e6;\n t.asciicircum = 0x005e;\n t.asciicircummonospace = 0xff3e;\n t.asciitilde = 0x007e;\n t.asciitildemonospace = 0xff5e;\n t.ascript = 0x0251;\n t.ascriptturned = 0x0252;\n t.asmallhiragana = 0x3041;\n t.asmallkatakana = 0x30a1;\n t.asmallkatakanahalfwidth = 0xff67;\n t.asterisk = 0x002a;\n t.asteriskaltonearabic = 0x066d;\n t.asteriskarabic = 0x066d;\n t.asteriskmath = 0x2217;\n t.asteriskmonospace = 0xff0a;\n t.asterisksmall = 0xfe61;\n t.asterism = 0x2042;\n t.asuperior = 0xf6e9;\n t.asymptoticallyequal = 0x2243;\n t.at = 0x0040;\n t.atilde = 0x00e3;\n t.atmonospace = 0xff20;\n t.atsmall = 0xfe6b;\n t.aturned = 0x0250;\n t.aubengali = 0x0994;\n t.aubopomofo = 0x3120;\n t.audeva = 0x0914;\n t.augujarati = 0x0a94;\n t.augurmukhi = 0x0a14;\n t.aulengthmarkbengali = 0x09d7;\n t.aumatragurmukhi = 0x0a4c;\n t.auvowelsignbengali = 0x09cc;\n t.auvowelsigndeva = 0x094c;\n t.auvowelsigngujarati = 0x0acc;\n t.avagrahadeva = 0x093d;\n t.aybarmenian = 0x0561;\n t.ayin = 0x05e2;\n t.ayinaltonehebrew = 0xfb20;\n t.ayinhebrew = 0x05e2;\n t.b = 0x0062;\n t.babengali = 0x09ac;\n t.backslash = 0x005c;\n t.backslashmonospace = 0xff3c;\n t.badeva = 0x092c;\n t.bagujarati = 0x0aac;\n t.bagurmukhi = 0x0a2c;\n t.bahiragana = 0x3070;\n t.bahtthai = 0x0e3f;\n t.bakatakana = 0x30d0;\n t.bar = 0x007c;\n t.barmonospace = 0xff5c;\n t.bbopomofo = 0x3105;\n t.bcircle = 0x24d1;\n t.bdotaccent = 0x1e03;\n t.bdotbelow = 0x1e05;\n t.beamedsixteenthnotes = 0x266c;\n t.because = 0x2235;\n t.becyrillic = 0x0431;\n t.beharabic = 0x0628;\n t.behfinalarabic = 0xfe90;\n t.behinitialarabic = 0xfe91;\n t.behiragana = 0x3079;\n t.behmedialarabic = 0xfe92;\n t.behmeeminitialarabic = 0xfc9f;\n t.behmeemisolatedarabic = 0xfc08;\n t.behnoonfinalarabic = 0xfc6d;\n t.bekatakana = 0x30d9;\n t.benarmenian = 0x0562;\n t.bet = 0x05d1;\n t.beta = 0x03b2;\n t.betasymbolgreek = 0x03d0;\n t.betdagesh = 0xfb31;\n t.betdageshhebrew = 0xfb31;\n t.bethebrew = 0x05d1;\n t.betrafehebrew = 0xfb4c;\n t.bhabengali = 0x09ad;\n t.bhadeva = 0x092d;\n t.bhagujarati = 0x0aad;\n t.bhagurmukhi = 0x0a2d;\n t.bhook = 0x0253;\n t.bihiragana = 0x3073;\n t.bikatakana = 0x30d3;\n t.bilabialclick = 0x0298;\n t.bindigurmukhi = 0x0a02;\n t.birusquare = 0x3331;\n t.blackcircle = 0x25cf;\n t.blackdiamond = 0x25c6;\n t.blackdownpointingtriangle = 0x25bc;\n t.blackleftpointingpointer = 0x25c4;\n t.blackleftpointingtriangle = 0x25c0;\n t.blacklenticularbracketleft = 0x3010;\n t.blacklenticularbracketleftvertical = 0xfe3b;\n t.blacklenticularbracketright = 0x3011;\n t.blacklenticularbracketrightvertical = 0xfe3c;\n t.blacklowerlefttriangle = 0x25e3;\n t.blacklowerrighttriangle = 0x25e2;\n t.blackrectangle = 0x25ac;\n t.blackrightpointingpointer = 0x25ba;\n t.blackrightpointingtriangle = 0x25b6;\n t.blacksmallsquare = 0x25aa;\n t.blacksmilingface = 0x263b;\n t.blacksquare = 0x25a0;\n t.blackstar = 0x2605;\n t.blackupperlefttriangle = 0x25e4;\n t.blackupperrighttriangle = 0x25e5;\n t.blackuppointingsmalltriangle = 0x25b4;\n t.blackuppointingtriangle = 0x25b2;\n t.blank = 0x2423;\n t.blinebelow = 0x1e07;\n t.block = 0x2588;\n t.bmonospace = 0xff42;\n t.bobaimaithai = 0x0e1a;\n t.bohiragana = 0x307c;\n t.bokatakana = 0x30dc;\n t.bparen = 0x249d;\n t.bqsquare = 0x33c3;\n t.braceex = 0xf8f4;\n t.braceleft = 0x007b;\n t.braceleftbt = 0xf8f3;\n t.braceleftmid = 0xf8f2;\n t.braceleftmonospace = 0xff5b;\n t.braceleftsmall = 0xfe5b;\n t.bracelefttp = 0xf8f1;\n t.braceleftvertical = 0xfe37;\n t.braceright = 0x007d;\n t.bracerightbt = 0xf8fe;\n t.bracerightmid = 0xf8fd;\n t.bracerightmonospace = 0xff5d;\n t.bracerightsmall = 0xfe5c;\n t.bracerighttp = 0xf8fc;\n t.bracerightvertical = 0xfe38;\n t.bracketleft = 0x005b;\n t.bracketleftbt = 0xf8f0;\n t.bracketleftex = 0xf8ef;\n t.bracketleftmonospace = 0xff3b;\n t.bracketlefttp = 0xf8ee;\n t.bracketright = 0x005d;\n t.bracketrightbt = 0xf8fb;\n t.bracketrightex = 0xf8fa;\n t.bracketrightmonospace = 0xff3d;\n t.bracketrighttp = 0xf8f9;\n t.breve = 0x02d8;\n t.brevebelowcmb = 0x032e;\n t.brevecmb = 0x0306;\n t.breveinvertedbelowcmb = 0x032f;\n t.breveinvertedcmb = 0x0311;\n t.breveinverteddoublecmb = 0x0361;\n t.bridgebelowcmb = 0x032a;\n t.bridgeinvertedbelowcmb = 0x033a;\n t.brokenbar = 0x00a6;\n t.bstroke = 0x0180;\n t.bsuperior = 0xf6ea;\n t.btopbar = 0x0183;\n t.buhiragana = 0x3076;\n t.bukatakana = 0x30d6;\n t.bullet = 0x2022;\n t.bulletinverse = 0x25d8;\n t.bulletoperator = 0x2219;\n t.bullseye = 0x25ce;\n t.c = 0x0063;\n t.caarmenian = 0x056e;\n t.cabengali = 0x099a;\n t.cacute = 0x0107;\n t.cadeva = 0x091a;\n t.cagujarati = 0x0a9a;\n t.cagurmukhi = 0x0a1a;\n t.calsquare = 0x3388;\n t.candrabindubengali = 0x0981;\n t.candrabinducmb = 0x0310;\n t.candrabindudeva = 0x0901;\n t.candrabindugujarati = 0x0a81;\n t.capslock = 0x21ea;\n t.careof = 0x2105;\n t.caron = 0x02c7;\n t.caronbelowcmb = 0x032c;\n t.caroncmb = 0x030c;\n t.carriagereturn = 0x21b5;\n t.cbopomofo = 0x3118;\n t.ccaron = 0x010d;\n t.ccedilla = 0x00e7;\n t.ccedillaacute = 0x1e09;\n t.ccircle = 0x24d2;\n t.ccircumflex = 0x0109;\n t.ccurl = 0x0255;\n t.cdot = 0x010b;\n t.cdotaccent = 0x010b;\n t.cdsquare = 0x33c5;\n t.cedilla = 0x00b8;\n t.cedillacmb = 0x0327;\n t.cent = 0x00a2;\n t.centigrade = 0x2103;\n t.centinferior = 0xf6df;\n t.centmonospace = 0xffe0;\n t.centoldstyle = 0xf7a2;\n t.centsuperior = 0xf6e0;\n t.chaarmenian = 0x0579;\n t.chabengali = 0x099b;\n t.chadeva = 0x091b;\n t.chagujarati = 0x0a9b;\n t.chagurmukhi = 0x0a1b;\n t.chbopomofo = 0x3114;\n t.cheabkhasiancyrillic = 0x04bd;\n t.checkmark = 0x2713;\n t.checyrillic = 0x0447;\n t.chedescenderabkhasiancyrillic = 0x04bf;\n t.chedescendercyrillic = 0x04b7;\n t.chedieresiscyrillic = 0x04f5;\n t.cheharmenian = 0x0573;\n t.chekhakassiancyrillic = 0x04cc;\n t.cheverticalstrokecyrillic = 0x04b9;\n t.chi = 0x03c7;\n t.chieuchacirclekorean = 0x3277;\n t.chieuchaparenkorean = 0x3217;\n t.chieuchcirclekorean = 0x3269;\n t.chieuchkorean = 0x314a;\n t.chieuchparenkorean = 0x3209;\n t.chochangthai = 0x0e0a;\n t.chochanthai = 0x0e08;\n t.chochingthai = 0x0e09;\n t.chochoethai = 0x0e0c;\n t.chook = 0x0188;\n t.cieucacirclekorean = 0x3276;\n t.cieucaparenkorean = 0x3216;\n t.cieuccirclekorean = 0x3268;\n t.cieuckorean = 0x3148;\n t.cieucparenkorean = 0x3208;\n t.cieucuparenkorean = 0x321c;\n t.circle = 0x25cb;\n t.circlecopyrt = 0x00a9;\n t.circlemultiply = 0x2297;\n t.circleot = 0x2299;\n t.circleplus = 0x2295;\n t.circlepostalmark = 0x3036;\n t.circlewithlefthalfblack = 0x25d0;\n t.circlewithrighthalfblack = 0x25d1;\n t.circumflex = 0x02c6;\n t.circumflexbelowcmb = 0x032d;\n t.circumflexcmb = 0x0302;\n t.clear = 0x2327;\n t.clickalveolar = 0x01c2;\n t.clickdental = 0x01c0;\n t.clicklateral = 0x01c1;\n t.clickretroflex = 0x01c3;\n t.club = 0x2663;\n t.clubsuitblack = 0x2663;\n t.clubsuitwhite = 0x2667;\n t.cmcubedsquare = 0x33a4;\n t.cmonospace = 0xff43;\n t.cmsquaredsquare = 0x33a0;\n t.coarmenian = 0x0581;\n t.colon = 0x003a;\n t.colonmonetary = 0x20a1;\n t.colonmonospace = 0xff1a;\n t.colonsign = 0x20a1;\n t.colonsmall = 0xfe55;\n t.colontriangularhalfmod = 0x02d1;\n t.colontriangularmod = 0x02d0;\n t.comma = 0x002c;\n t.commaabovecmb = 0x0313;\n t.commaaboverightcmb = 0x0315;\n t.commaaccent = 0xf6c3;\n t.commaarabic = 0x060c;\n t.commaarmenian = 0x055d;\n t.commainferior = 0xf6e1;\n t.commamonospace = 0xff0c;\n t.commareversedabovecmb = 0x0314;\n t.commareversedmod = 0x02bd;\n t.commasmall = 0xfe50;\n t.commasuperior = 0xf6e2;\n t.commaturnedabovecmb = 0x0312;\n t.commaturnedmod = 0x02bb;\n t.compass = 0x263c;\n t.congruent = 0x2245;\n t.contourintegral = 0x222e;\n t.control = 0x2303;\n t.controlACK = 0x0006;\n t.controlBEL = 0x0007;\n t.controlBS = 0x0008;\n t.controlCAN = 0x0018;\n t.controlCR = 0x000d;\n t.controlDC1 = 0x0011;\n t.controlDC2 = 0x0012;\n t.controlDC3 = 0x0013;\n t.controlDC4 = 0x0014;\n t.controlDEL = 0x007f;\n t.controlDLE = 0x0010;\n t.controlEM = 0x0019;\n t.controlENQ = 0x0005;\n t.controlEOT = 0x0004;\n t.controlESC = 0x001b;\n t.controlETB = 0x0017;\n t.controlETX = 0x0003;\n t.controlFF = 0x000c;\n t.controlFS = 0x001c;\n t.controlGS = 0x001d;\n t.controlHT = 0x0009;\n t.controlLF = 0x000a;\n t.controlNAK = 0x0015;\n t.controlNULL = 0x0000;\n t.controlRS = 0x001e;\n t.controlSI = 0x000f;\n t.controlSO = 0x000e;\n t.controlSOT = 0x0002;\n t.controlSTX = 0x0001;\n t.controlSUB = 0x001a;\n t.controlSYN = 0x0016;\n t.controlUS = 0x001f;\n t.controlVT = 0x000b;\n t.copyright = 0x00a9;\n t.copyrightsans = 0xf8e9;\n t.copyrightserif = 0xf6d9;\n t.cornerbracketleft = 0x300c;\n t.cornerbracketlefthalfwidth = 0xff62;\n t.cornerbracketleftvertical = 0xfe41;\n t.cornerbracketright = 0x300d;\n t.cornerbracketrighthalfwidth = 0xff63;\n t.cornerbracketrightvertical = 0xfe42;\n t.corporationsquare = 0x337f;\n t.cosquare = 0x33c7;\n t.coverkgsquare = 0x33c6;\n t.cparen = 0x249e;\n t.cruzeiro = 0x20a2;\n t.cstretched = 0x0297;\n t.curlyand = 0x22cf;\n t.curlyor = 0x22ce;\n t.currency = 0x00a4;\n t.cyrBreve = 0xf6d1;\n t.cyrFlex = 0xf6d2;\n t.cyrbreve = 0xf6d4;\n t.cyrflex = 0xf6d5;\n t.d = 0x0064;\n t.daarmenian = 0x0564;\n t.dabengali = 0x09a6;\n t.dadarabic = 0x0636;\n t.dadeva = 0x0926;\n t.dadfinalarabic = 0xfebe;\n t.dadinitialarabic = 0xfebf;\n t.dadmedialarabic = 0xfec0;\n t.dagesh = 0x05bc;\n t.dageshhebrew = 0x05bc;\n t.dagger = 0x2020;\n t.daggerdbl = 0x2021;\n t.dagujarati = 0x0aa6;\n t.dagurmukhi = 0x0a26;\n t.dahiragana = 0x3060;\n t.dakatakana = 0x30c0;\n t.dalarabic = 0x062f;\n t.dalet = 0x05d3;\n t.daletdagesh = 0xfb33;\n t.daletdageshhebrew = 0xfb33;\n t.dalethebrew = 0x05d3;\n t.dalfinalarabic = 0xfeaa;\n t.dammaarabic = 0x064f;\n t.dammalowarabic = 0x064f;\n t.dammatanaltonearabic = 0x064c;\n t.dammatanarabic = 0x064c;\n t.danda = 0x0964;\n t.dargahebrew = 0x05a7;\n t.dargalefthebrew = 0x05a7;\n t.dasiapneumatacyrilliccmb = 0x0485;\n t.dblGrave = 0xf6d3;\n t.dblanglebracketleft = 0x300a;\n t.dblanglebracketleftvertical = 0xfe3d;\n t.dblanglebracketright = 0x300b;\n t.dblanglebracketrightvertical = 0xfe3e;\n t.dblarchinvertedbelowcmb = 0x032b;\n t.dblarrowleft = 0x21d4;\n t.dblarrowright = 0x21d2;\n t.dbldanda = 0x0965;\n t.dblgrave = 0xf6d6;\n t.dblgravecmb = 0x030f;\n t.dblintegral = 0x222c;\n t.dbllowline = 0x2017;\n t.dbllowlinecmb = 0x0333;\n t.dbloverlinecmb = 0x033f;\n t.dblprimemod = 0x02ba;\n t.dblverticalbar = 0x2016;\n t.dblverticallineabovecmb = 0x030e;\n t.dbopomofo = 0x3109;\n t.dbsquare = 0x33c8;\n t.dcaron = 0x010f;\n t.dcedilla = 0x1e11;\n t.dcircle = 0x24d3;\n t.dcircumflexbelow = 0x1e13;\n t.dcroat = 0x0111;\n t.ddabengali = 0x09a1;\n t.ddadeva = 0x0921;\n t.ddagujarati = 0x0aa1;\n t.ddagurmukhi = 0x0a21;\n t.ddalarabic = 0x0688;\n t.ddalfinalarabic = 0xfb89;\n t.dddhadeva = 0x095c;\n t.ddhabengali = 0x09a2;\n t.ddhadeva = 0x0922;\n t.ddhagujarati = 0x0aa2;\n t.ddhagurmukhi = 0x0a22;\n t.ddotaccent = 0x1e0b;\n t.ddotbelow = 0x1e0d;\n t.decimalseparatorarabic = 0x066b;\n t.decimalseparatorpersian = 0x066b;\n t.decyrillic = 0x0434;\n t.degree = 0x00b0;\n t.dehihebrew = 0x05ad;\n t.dehiragana = 0x3067;\n t.deicoptic = 0x03ef;\n t.dekatakana = 0x30c7;\n t.deleteleft = 0x232b;\n t.deleteright = 0x2326;\n t.delta = 0x03b4;\n t.deltaturned = 0x018d;\n t.denominatorminusonenumeratorbengali = 0x09f8;\n t.dezh = 0x02a4;\n t.dhabengali = 0x09a7;\n t.dhadeva = 0x0927;\n t.dhagujarati = 0x0aa7;\n t.dhagurmukhi = 0x0a27;\n t.dhook = 0x0257;\n t.dialytikatonos = 0x0385;\n t.dialytikatonoscmb = 0x0344;\n t.diamond = 0x2666;\n t.diamondsuitwhite = 0x2662;\n t.dieresis = 0x00a8;\n t.dieresisacute = 0xf6d7;\n t.dieresisbelowcmb = 0x0324;\n t.dieresiscmb = 0x0308;\n t.dieresisgrave = 0xf6d8;\n t.dieresistonos = 0x0385;\n t.dihiragana = 0x3062;\n t.dikatakana = 0x30c2;\n t.dittomark = 0x3003;\n t.divide = 0x00f7;\n t.divides = 0x2223;\n t.divisionslash = 0x2215;\n t.djecyrillic = 0x0452;\n t.dkshade = 0x2593;\n t.dlinebelow = 0x1e0f;\n t.dlsquare = 0x3397;\n t.dmacron = 0x0111;\n t.dmonospace = 0xff44;\n t.dnblock = 0x2584;\n t.dochadathai = 0x0e0e;\n t.dodekthai = 0x0e14;\n t.dohiragana = 0x3069;\n t.dokatakana = 0x30c9;\n t.dollar = 0x0024;\n t.dollarinferior = 0xf6e3;\n t.dollarmonospace = 0xff04;\n t.dollaroldstyle = 0xf724;\n t.dollarsmall = 0xfe69;\n t.dollarsuperior = 0xf6e4;\n t.dong = 0x20ab;\n t.dorusquare = 0x3326;\n t.dotaccent = 0x02d9;\n t.dotaccentcmb = 0x0307;\n t.dotbelowcmb = 0x0323;\n t.dotbelowcomb = 0x0323;\n t.dotkatakana = 0x30fb;\n t.dotlessi = 0x0131;\n t.dotlessj = 0xf6be;\n t.dotlessjstrokehook = 0x0284;\n t.dotmath = 0x22c5;\n t.dottedcircle = 0x25cc;\n t.doubleyodpatah = 0xfb1f;\n t.doubleyodpatahhebrew = 0xfb1f;\n t.downtackbelowcmb = 0x031e;\n t.downtackmod = 0x02d5;\n t.dparen = 0x249f;\n t.dsuperior = 0xf6eb;\n t.dtail = 0x0256;\n t.dtopbar = 0x018c;\n t.duhiragana = 0x3065;\n t.dukatakana = 0x30c5;\n t.dz = 0x01f3;\n t.dzaltone = 0x02a3;\n t.dzcaron = 0x01c6;\n t.dzcurl = 0x02a5;\n t.dzeabkhasiancyrillic = 0x04e1;\n t.dzecyrillic = 0x0455;\n t.dzhecyrillic = 0x045f;\n t.e = 0x0065;\n t.eacute = 0x00e9;\n t.earth = 0x2641;\n t.ebengali = 0x098f;\n t.ebopomofo = 0x311c;\n t.ebreve = 0x0115;\n t.ecandradeva = 0x090d;\n t.ecandragujarati = 0x0a8d;\n t.ecandravowelsigndeva = 0x0945;\n t.ecandravowelsigngujarati = 0x0ac5;\n t.ecaron = 0x011b;\n t.ecedillabreve = 0x1e1d;\n t.echarmenian = 0x0565;\n t.echyiwnarmenian = 0x0587;\n t.ecircle = 0x24d4;\n t.ecircumflex = 0x00ea;\n t.ecircumflexacute = 0x1ebf;\n t.ecircumflexbelow = 0x1e19;\n t.ecircumflexdotbelow = 0x1ec7;\n t.ecircumflexgrave = 0x1ec1;\n t.ecircumflexhookabove = 0x1ec3;\n t.ecircumflextilde = 0x1ec5;\n t.ecyrillic = 0x0454;\n t.edblgrave = 0x0205;\n t.edeva = 0x090f;\n t.edieresis = 0x00eb;\n t.edot = 0x0117;\n t.edotaccent = 0x0117;\n t.edotbelow = 0x1eb9;\n t.eegurmukhi = 0x0a0f;\n t.eematragurmukhi = 0x0a47;\n t.efcyrillic = 0x0444;\n t.egrave = 0x00e8;\n t.egujarati = 0x0a8f;\n t.eharmenian = 0x0567;\n t.ehbopomofo = 0x311d;\n t.ehiragana = 0x3048;\n t.ehookabove = 0x1ebb;\n t.eibopomofo = 0x311f;\n t.eight = 0x0038;\n t.eightarabic = 0x0668;\n t.eightbengali = 0x09ee;\n t.eightcircle = 0x2467;\n t.eightcircleinversesansserif = 0x2791;\n t.eightdeva = 0x096e;\n t.eighteencircle = 0x2471;\n t.eighteenparen = 0x2485;\n t.eighteenperiod = 0x2499;\n t.eightgujarati = 0x0aee;\n t.eightgurmukhi = 0x0a6e;\n t.eighthackarabic = 0x0668;\n t.eighthangzhou = 0x3028;\n t.eighthnotebeamed = 0x266b;\n t.eightideographicparen = 0x3227;\n t.eightinferior = 0x2088;\n t.eightmonospace = 0xff18;\n t.eightoldstyle = 0xf738;\n t.eightparen = 0x247b;\n t.eightperiod = 0x248f;\n t.eightpersian = 0x06f8;\n t.eightroman = 0x2177;\n t.eightsuperior = 0x2078;\n t.eightthai = 0x0e58;\n t.einvertedbreve = 0x0207;\n t.eiotifiedcyrillic = 0x0465;\n t.ekatakana = 0x30a8;\n t.ekatakanahalfwidth = 0xff74;\n t.ekonkargurmukhi = 0x0a74;\n t.ekorean = 0x3154;\n t.elcyrillic = 0x043b;\n t.element = 0x2208;\n t.elevencircle = 0x246a;\n t.elevenparen = 0x247e;\n t.elevenperiod = 0x2492;\n t.elevenroman = 0x217a;\n t.ellipsis = 0x2026;\n t.ellipsisvertical = 0x22ee;\n t.emacron = 0x0113;\n t.emacronacute = 0x1e17;\n t.emacrongrave = 0x1e15;\n t.emcyrillic = 0x043c;\n t.emdash = 0x2014;\n t.emdashvertical = 0xfe31;\n t.emonospace = 0xff45;\n t.emphasismarkarmenian = 0x055b;\n t.emptyset = 0x2205;\n t.enbopomofo = 0x3123;\n t.encyrillic = 0x043d;\n t.endash = 0x2013;\n t.endashvertical = 0xfe32;\n t.endescendercyrillic = 0x04a3;\n t.eng = 0x014b;\n t.engbopomofo = 0x3125;\n t.enghecyrillic = 0x04a5;\n t.enhookcyrillic = 0x04c8;\n t.enspace = 0x2002;\n t.eogonek = 0x0119;\n t.eokorean = 0x3153;\n t.eopen = 0x025b;\n t.eopenclosed = 0x029a;\n t.eopenreversed = 0x025c;\n t.eopenreversedclosed = 0x025e;\n t.eopenreversedhook = 0x025d;\n t.eparen = 0x24a0;\n t.epsilon = 0x03b5;\n t.epsilontonos = 0x03ad;\n t.equal = 0x003d;\n t.equalmonospace = 0xff1d;\n t.equalsmall = 0xfe66;\n t.equalsuperior = 0x207c;\n t.equivalence = 0x2261;\n t.erbopomofo = 0x3126;\n t.ercyrillic = 0x0440;\n t.ereversed = 0x0258;\n t.ereversedcyrillic = 0x044d;\n t.escyrillic = 0x0441;\n t.esdescendercyrillic = 0x04ab;\n t.esh = 0x0283;\n t.eshcurl = 0x0286;\n t.eshortdeva = 0x090e;\n t.eshortvowelsigndeva = 0x0946;\n t.eshreversedloop = 0x01aa;\n t.eshsquatreversed = 0x0285;\n t.esmallhiragana = 0x3047;\n t.esmallkatakana = 0x30a7;\n t.esmallkatakanahalfwidth = 0xff6a;\n t.estimated = 0x212e;\n t.esuperior = 0xf6ec;\n t.eta = 0x03b7;\n t.etarmenian = 0x0568;\n t.etatonos = 0x03ae;\n t.eth = 0x00f0;\n t.etilde = 0x1ebd;\n t.etildebelow = 0x1e1b;\n t.etnahtafoukhhebrew = 0x0591;\n t.etnahtafoukhlefthebrew = 0x0591;\n t.etnahtahebrew = 0x0591;\n t.etnahtalefthebrew = 0x0591;\n t.eturned = 0x01dd;\n t.eukorean = 0x3161;\n t.euro = 0x20ac;\n t.evowelsignbengali = 0x09c7;\n t.evowelsigndeva = 0x0947;\n t.evowelsigngujarati = 0x0ac7;\n t.exclam = 0x0021;\n t.exclamarmenian = 0x055c;\n t.exclamdbl = 0x203c;\n t.exclamdown = 0x00a1;\n t.exclamdownsmall = 0xf7a1;\n t.exclammonospace = 0xff01;\n t.exclamsmall = 0xf721;\n t.existential = 0x2203;\n t.ezh = 0x0292;\n t.ezhcaron = 0x01ef;\n t.ezhcurl = 0x0293;\n t.ezhreversed = 0x01b9;\n t.ezhtail = 0x01ba;\n t.f = 0x0066;\n t.fadeva = 0x095e;\n t.fagurmukhi = 0x0a5e;\n t.fahrenheit = 0x2109;\n t.fathaarabic = 0x064e;\n t.fathalowarabic = 0x064e;\n t.fathatanarabic = 0x064b;\n t.fbopomofo = 0x3108;\n t.fcircle = 0x24d5;\n t.fdotaccent = 0x1e1f;\n t.feharabic = 0x0641;\n t.feharmenian = 0x0586;\n t.fehfinalarabic = 0xfed2;\n t.fehinitialarabic = 0xfed3;\n t.fehmedialarabic = 0xfed4;\n t.feicoptic = 0x03e5;\n t.female = 0x2640;\n t.ff = 0xfb00;\n t.f_f = 0xfb00;\n t.ffi = 0xfb03;\n t.f_f_i = 0xfb03;\n t.ffl = 0xfb04;\n t.f_f_l = 0xfb04;\n t.fi = 0xfb01;\n t.f_i = 0xfb01;\n t.fifteencircle = 0x246e;\n t.fifteenparen = 0x2482;\n t.fifteenperiod = 0x2496;\n t.figuredash = 0x2012;\n t.filledbox = 0x25a0;\n t.filledrect = 0x25ac;\n t.finalkaf = 0x05da;\n t.finalkafdagesh = 0xfb3a;\n t.finalkafdageshhebrew = 0xfb3a;\n t.finalkafhebrew = 0x05da;\n t.finalmem = 0x05dd;\n t.finalmemhebrew = 0x05dd;\n t.finalnun = 0x05df;\n t.finalnunhebrew = 0x05df;\n t.finalpe = 0x05e3;\n t.finalpehebrew = 0x05e3;\n t.finaltsadi = 0x05e5;\n t.finaltsadihebrew = 0x05e5;\n t.firsttonechinese = 0x02c9;\n t.fisheye = 0x25c9;\n t.fitacyrillic = 0x0473;\n t.five = 0x0035;\n t.fivearabic = 0x0665;\n t.fivebengali = 0x09eb;\n t.fivecircle = 0x2464;\n t.fivecircleinversesansserif = 0x278e;\n t.fivedeva = 0x096b;\n t.fiveeighths = 0x215d;\n t.fivegujarati = 0x0aeb;\n t.fivegurmukhi = 0x0a6b;\n t.fivehackarabic = 0x0665;\n t.fivehangzhou = 0x3025;\n t.fiveideographicparen = 0x3224;\n t.fiveinferior = 0x2085;\n t.fivemonospace = 0xff15;\n t.fiveoldstyle = 0xf735;\n t.fiveparen = 0x2478;\n t.fiveperiod = 0x248c;\n t.fivepersian = 0x06f5;\n t.fiveroman = 0x2174;\n t.fivesuperior = 0x2075;\n t.fivethai = 0x0e55;\n t.fl = 0xfb02;\n t.f_l = 0xfb02;\n t.florin = 0x0192;\n t.fmonospace = 0xff46;\n t.fmsquare = 0x3399;\n t.fofanthai = 0x0e1f;\n t.fofathai = 0x0e1d;\n t.fongmanthai = 0x0e4f;\n t.forall = 0x2200;\n t.four = 0x0034;\n t.fourarabic = 0x0664;\n t.fourbengali = 0x09ea;\n t.fourcircle = 0x2463;\n t.fourcircleinversesansserif = 0x278d;\n t.fourdeva = 0x096a;\n t.fourgujarati = 0x0aea;\n t.fourgurmukhi = 0x0a6a;\n t.fourhackarabic = 0x0664;\n t.fourhangzhou = 0x3024;\n t.fourideographicparen = 0x3223;\n t.fourinferior = 0x2084;\n t.fourmonospace = 0xff14;\n t.fournumeratorbengali = 0x09f7;\n t.fouroldstyle = 0xf734;\n t.fourparen = 0x2477;\n t.fourperiod = 0x248b;\n t.fourpersian = 0x06f4;\n t.fourroman = 0x2173;\n t.foursuperior = 0x2074;\n t.fourteencircle = 0x246d;\n t.fourteenparen = 0x2481;\n t.fourteenperiod = 0x2495;\n t.fourthai = 0x0e54;\n t.fourthtonechinese = 0x02cb;\n t.fparen = 0x24a1;\n t.fraction = 0x2044;\n t.franc = 0x20a3;\n t.g = 0x0067;\n t.gabengali = 0x0997;\n t.gacute = 0x01f5;\n t.gadeva = 0x0917;\n t.gafarabic = 0x06af;\n t.gaffinalarabic = 0xfb93;\n t.gafinitialarabic = 0xfb94;\n t.gafmedialarabic = 0xfb95;\n t.gagujarati = 0x0a97;\n t.gagurmukhi = 0x0a17;\n t.gahiragana = 0x304c;\n t.gakatakana = 0x30ac;\n t.gamma = 0x03b3;\n t.gammalatinsmall = 0x0263;\n t.gammasuperior = 0x02e0;\n t.gangiacoptic = 0x03eb;\n t.gbopomofo = 0x310d;\n t.gbreve = 0x011f;\n t.gcaron = 0x01e7;\n t.gcedilla = 0x0123;\n t.gcircle = 0x24d6;\n t.gcircumflex = 0x011d;\n t.gcommaaccent = 0x0123;\n t.gdot = 0x0121;\n t.gdotaccent = 0x0121;\n t.gecyrillic = 0x0433;\n t.gehiragana = 0x3052;\n t.gekatakana = 0x30b2;\n t.geometricallyequal = 0x2251;\n t.gereshaccenthebrew = 0x059c;\n t.gereshhebrew = 0x05f3;\n t.gereshmuqdamhebrew = 0x059d;\n t.germandbls = 0x00df;\n t.gershayimaccenthebrew = 0x059e;\n t.gershayimhebrew = 0x05f4;\n t.getamark = 0x3013;\n t.ghabengali = 0x0998;\n t.ghadarmenian = 0x0572;\n t.ghadeva = 0x0918;\n t.ghagujarati = 0x0a98;\n t.ghagurmukhi = 0x0a18;\n t.ghainarabic = 0x063a;\n t.ghainfinalarabic = 0xfece;\n t.ghaininitialarabic = 0xfecf;\n t.ghainmedialarabic = 0xfed0;\n t.ghemiddlehookcyrillic = 0x0495;\n t.ghestrokecyrillic = 0x0493;\n t.gheupturncyrillic = 0x0491;\n t.ghhadeva = 0x095a;\n t.ghhagurmukhi = 0x0a5a;\n t.ghook = 0x0260;\n t.ghzsquare = 0x3393;\n t.gihiragana = 0x304e;\n t.gikatakana = 0x30ae;\n t.gimarmenian = 0x0563;\n t.gimel = 0x05d2;\n t.gimeldagesh = 0xfb32;\n t.gimeldageshhebrew = 0xfb32;\n t.gimelhebrew = 0x05d2;\n t.gjecyrillic = 0x0453;\n t.glottalinvertedstroke = 0x01be;\n t.glottalstop = 0x0294;\n t.glottalstopinverted = 0x0296;\n t.glottalstopmod = 0x02c0;\n t.glottalstopreversed = 0x0295;\n t.glottalstopreversedmod = 0x02c1;\n t.glottalstopreversedsuperior = 0x02e4;\n t.glottalstopstroke = 0x02a1;\n t.glottalstopstrokereversed = 0x02a2;\n t.gmacron = 0x1e21;\n t.gmonospace = 0xff47;\n t.gohiragana = 0x3054;\n t.gokatakana = 0x30b4;\n t.gparen = 0x24a2;\n t.gpasquare = 0x33ac;\n t.gradient = 0x2207;\n t.grave = 0x0060;\n t.gravebelowcmb = 0x0316;\n t.gravecmb = 0x0300;\n t.gravecomb = 0x0300;\n t.gravedeva = 0x0953;\n t.gravelowmod = 0x02ce;\n t.gravemonospace = 0xff40;\n t.gravetonecmb = 0x0340;\n t.greater = 0x003e;\n t.greaterequal = 0x2265;\n t.greaterequalorless = 0x22db;\n t.greatermonospace = 0xff1e;\n t.greaterorequivalent = 0x2273;\n t.greaterorless = 0x2277;\n t.greateroverequal = 0x2267;\n t.greatersmall = 0xfe65;\n t.gscript = 0x0261;\n t.gstroke = 0x01e5;\n t.guhiragana = 0x3050;\n t.guillemotleft = 0x00ab;\n t.guillemotright = 0x00bb;\n t.guilsinglleft = 0x2039;\n t.guilsinglright = 0x203a;\n t.gukatakana = 0x30b0;\n t.guramusquare = 0x3318;\n t.gysquare = 0x33c9;\n t.h = 0x0068;\n t.haabkhasiancyrillic = 0x04a9;\n t.haaltonearabic = 0x06c1;\n t.habengali = 0x09b9;\n t.hadescendercyrillic = 0x04b3;\n t.hadeva = 0x0939;\n t.hagujarati = 0x0ab9;\n t.hagurmukhi = 0x0a39;\n t.haharabic = 0x062d;\n t.hahfinalarabic = 0xfea2;\n t.hahinitialarabic = 0xfea3;\n t.hahiragana = 0x306f;\n t.hahmedialarabic = 0xfea4;\n t.haitusquare = 0x332a;\n t.hakatakana = 0x30cf;\n t.hakatakanahalfwidth = 0xff8a;\n t.halantgurmukhi = 0x0a4d;\n t.hamzaarabic = 0x0621;\n t.hamzalowarabic = 0x0621;\n t.hangulfiller = 0x3164;\n t.hardsigncyrillic = 0x044a;\n t.harpoonleftbarbup = 0x21bc;\n t.harpoonrightbarbup = 0x21c0;\n t.hasquare = 0x33ca;\n t.hatafpatah = 0x05b2;\n t.hatafpatah16 = 0x05b2;\n t.hatafpatah23 = 0x05b2;\n t.hatafpatah2f = 0x05b2;\n t.hatafpatahhebrew = 0x05b2;\n t.hatafpatahnarrowhebrew = 0x05b2;\n t.hatafpatahquarterhebrew = 0x05b2;\n t.hatafpatahwidehebrew = 0x05b2;\n t.hatafqamats = 0x05b3;\n t.hatafqamats1b = 0x05b3;\n t.hatafqamats28 = 0x05b3;\n t.hatafqamats34 = 0x05b3;\n t.hatafqamatshebrew = 0x05b3;\n t.hatafqamatsnarrowhebrew = 0x05b3;\n t.hatafqamatsquarterhebrew = 0x05b3;\n t.hatafqamatswidehebrew = 0x05b3;\n t.hatafsegol = 0x05b1;\n t.hatafsegol17 = 0x05b1;\n t.hatafsegol24 = 0x05b1;\n t.hatafsegol30 = 0x05b1;\n t.hatafsegolhebrew = 0x05b1;\n t.hatafsegolnarrowhebrew = 0x05b1;\n t.hatafsegolquarterhebrew = 0x05b1;\n t.hatafsegolwidehebrew = 0x05b1;\n t.hbar = 0x0127;\n t.hbopomofo = 0x310f;\n t.hbrevebelow = 0x1e2b;\n t.hcedilla = 0x1e29;\n t.hcircle = 0x24d7;\n t.hcircumflex = 0x0125;\n t.hdieresis = 0x1e27;\n t.hdotaccent = 0x1e23;\n t.hdotbelow = 0x1e25;\n t.he = 0x05d4;\n t.heart = 0x2665;\n t.heartsuitblack = 0x2665;\n t.heartsuitwhite = 0x2661;\n t.hedagesh = 0xfb34;\n t.hedageshhebrew = 0xfb34;\n t.hehaltonearabic = 0x06c1;\n t.heharabic = 0x0647;\n t.hehebrew = 0x05d4;\n t.hehfinalaltonearabic = 0xfba7;\n t.hehfinalalttwoarabic = 0xfeea;\n t.hehfinalarabic = 0xfeea;\n t.hehhamzaabovefinalarabic = 0xfba5;\n t.hehhamzaaboveisolatedarabic = 0xfba4;\n t.hehinitialaltonearabic = 0xfba8;\n t.hehinitialarabic = 0xfeeb;\n t.hehiragana = 0x3078;\n t.hehmedialaltonearabic = 0xfba9;\n t.hehmedialarabic = 0xfeec;\n t.heiseierasquare = 0x337b;\n t.hekatakana = 0x30d8;\n t.hekatakanahalfwidth = 0xff8d;\n t.hekutaarusquare = 0x3336;\n t.henghook = 0x0267;\n t.herutusquare = 0x3339;\n t.het = 0x05d7;\n t.hethebrew = 0x05d7;\n t.hhook = 0x0266;\n t.hhooksuperior = 0x02b1;\n t.hieuhacirclekorean = 0x327b;\n t.hieuhaparenkorean = 0x321b;\n t.hieuhcirclekorean = 0x326d;\n t.hieuhkorean = 0x314e;\n t.hieuhparenkorean = 0x320d;\n t.hihiragana = 0x3072;\n t.hikatakana = 0x30d2;\n t.hikatakanahalfwidth = 0xff8b;\n t.hiriq = 0x05b4;\n t.hiriq14 = 0x05b4;\n t.hiriq21 = 0x05b4;\n t.hiriq2d = 0x05b4;\n t.hiriqhebrew = 0x05b4;\n t.hiriqnarrowhebrew = 0x05b4;\n t.hiriqquarterhebrew = 0x05b4;\n t.hiriqwidehebrew = 0x05b4;\n t.hlinebelow = 0x1e96;\n t.hmonospace = 0xff48;\n t.hoarmenian = 0x0570;\n t.hohipthai = 0x0e2b;\n t.hohiragana = 0x307b;\n t.hokatakana = 0x30db;\n t.hokatakanahalfwidth = 0xff8e;\n t.holam = 0x05b9;\n t.holam19 = 0x05b9;\n t.holam26 = 0x05b9;\n t.holam32 = 0x05b9;\n t.holamhebrew = 0x05b9;\n t.holamnarrowhebrew = 0x05b9;\n t.holamquarterhebrew = 0x05b9;\n t.holamwidehebrew = 0x05b9;\n t.honokhukthai = 0x0e2e;\n t.hookabovecomb = 0x0309;\n t.hookcmb = 0x0309;\n t.hookpalatalizedbelowcmb = 0x0321;\n t.hookretroflexbelowcmb = 0x0322;\n t.hoonsquare = 0x3342;\n t.horicoptic = 0x03e9;\n t.horizontalbar = 0x2015;\n t.horncmb = 0x031b;\n t.hotsprings = 0x2668;\n t.house = 0x2302;\n t.hparen = 0x24a3;\n t.hsuperior = 0x02b0;\n t.hturned = 0x0265;\n t.huhiragana = 0x3075;\n t.huiitosquare = 0x3333;\n t.hukatakana = 0x30d5;\n t.hukatakanahalfwidth = 0xff8c;\n t.hungarumlaut = 0x02dd;\n t.hungarumlautcmb = 0x030b;\n t.hv = 0x0195;\n t.hyphen = 0x002d;\n t.hypheninferior = 0xf6e5;\n t.hyphenmonospace = 0xff0d;\n t.hyphensmall = 0xfe63;\n t.hyphensuperior = 0xf6e6;\n t.hyphentwo = 0x2010;\n t.i = 0x0069;\n t.iacute = 0x00ed;\n t.iacyrillic = 0x044f;\n t.ibengali = 0x0987;\n t.ibopomofo = 0x3127;\n t.ibreve = 0x012d;\n t.icaron = 0x01d0;\n t.icircle = 0x24d8;\n t.icircumflex = 0x00ee;\n t.icyrillic = 0x0456;\n t.idblgrave = 0x0209;\n t.ideographearthcircle = 0x328f;\n t.ideographfirecircle = 0x328b;\n t.ideographicallianceparen = 0x323f;\n t.ideographiccallparen = 0x323a;\n t.ideographiccentrecircle = 0x32a5;\n t.ideographicclose = 0x3006;\n t.ideographiccomma = 0x3001;\n t.ideographiccommaleft = 0xff64;\n t.ideographiccongratulationparen = 0x3237;\n t.ideographiccorrectcircle = 0x32a3;\n t.ideographicearthparen = 0x322f;\n t.ideographicenterpriseparen = 0x323d;\n t.ideographicexcellentcircle = 0x329d;\n t.ideographicfestivalparen = 0x3240;\n t.ideographicfinancialcircle = 0x3296;\n t.ideographicfinancialparen = 0x3236;\n t.ideographicfireparen = 0x322b;\n t.ideographichaveparen = 0x3232;\n t.ideographichighcircle = 0x32a4;\n t.ideographiciterationmark = 0x3005;\n t.ideographiclaborcircle = 0x3298;\n t.ideographiclaborparen = 0x3238;\n t.ideographicleftcircle = 0x32a7;\n t.ideographiclowcircle = 0x32a6;\n t.ideographicmedicinecircle = 0x32a9;\n t.ideographicmetalparen = 0x322e;\n t.ideographicmoonparen = 0x322a;\n t.ideographicnameparen = 0x3234;\n t.ideographicperiod = 0x3002;\n t.ideographicprintcircle = 0x329e;\n t.ideographicreachparen = 0x3243;\n t.ideographicrepresentparen = 0x3239;\n t.ideographicresourceparen = 0x323e;\n t.ideographicrightcircle = 0x32a8;\n t.ideographicsecretcircle = 0x3299;\n t.ideographicselfparen = 0x3242;\n t.ideographicsocietyparen = 0x3233;\n t.ideographicspace = 0x3000;\n t.ideographicspecialparen = 0x3235;\n t.ideographicstockparen = 0x3231;\n t.ideographicstudyparen = 0x323b;\n t.ideographicsunparen = 0x3230;\n t.ideographicsuperviseparen = 0x323c;\n t.ideographicwaterparen = 0x322c;\n t.ideographicwoodparen = 0x322d;\n t.ideographiczero = 0x3007;\n t.ideographmetalcircle = 0x328e;\n t.ideographmooncircle = 0x328a;\n t.ideographnamecircle = 0x3294;\n t.ideographsuncircle = 0x3290;\n t.ideographwatercircle = 0x328c;\n t.ideographwoodcircle = 0x328d;\n t.ideva = 0x0907;\n t.idieresis = 0x00ef;\n t.idieresisacute = 0x1e2f;\n t.idieresiscyrillic = 0x04e5;\n t.idotbelow = 0x1ecb;\n t.iebrevecyrillic = 0x04d7;\n t.iecyrillic = 0x0435;\n t.ieungacirclekorean = 0x3275;\n t.ieungaparenkorean = 0x3215;\n t.ieungcirclekorean = 0x3267;\n t.ieungkorean = 0x3147;\n t.ieungparenkorean = 0x3207;\n t.igrave = 0x00ec;\n t.igujarati = 0x0a87;\n t.igurmukhi = 0x0a07;\n t.ihiragana = 0x3044;\n t.ihookabove = 0x1ec9;\n t.iibengali = 0x0988;\n t.iicyrillic = 0x0438;\n t.iideva = 0x0908;\n t.iigujarati = 0x0a88;\n t.iigurmukhi = 0x0a08;\n t.iimatragurmukhi = 0x0a40;\n t.iinvertedbreve = 0x020b;\n t.iishortcyrillic = 0x0439;\n t.iivowelsignbengali = 0x09c0;\n t.iivowelsigndeva = 0x0940;\n t.iivowelsigngujarati = 0x0ac0;\n t.ij = 0x0133;\n t.ikatakana = 0x30a4;\n t.ikatakanahalfwidth = 0xff72;\n t.ikorean = 0x3163;\n t.ilde = 0x02dc;\n t.iluyhebrew = 0x05ac;\n t.imacron = 0x012b;\n t.imacroncyrillic = 0x04e3;\n t.imageorapproximatelyequal = 0x2253;\n t.imatragurmukhi = 0x0a3f;\n t.imonospace = 0xff49;\n t.increment = 0x2206;\n t.infinity = 0x221e;\n t.iniarmenian = 0x056b;\n t.integral = 0x222b;\n t.integralbottom = 0x2321;\n t.integralbt = 0x2321;\n t.integralex = 0xf8f5;\n t.integraltop = 0x2320;\n t.integraltp = 0x2320;\n t.intersection = 0x2229;\n t.intisquare = 0x3305;\n t.invbullet = 0x25d8;\n t.invcircle = 0x25d9;\n t.invsmileface = 0x263b;\n t.iocyrillic = 0x0451;\n t.iogonek = 0x012f;\n t.iota = 0x03b9;\n t.iotadieresis = 0x03ca;\n t.iotadieresistonos = 0x0390;\n t.iotalatin = 0x0269;\n t.iotatonos = 0x03af;\n t.iparen = 0x24a4;\n t.irigurmukhi = 0x0a72;\n t.ismallhiragana = 0x3043;\n t.ismallkatakana = 0x30a3;\n t.ismallkatakanahalfwidth = 0xff68;\n t.issharbengali = 0x09fa;\n t.istroke = 0x0268;\n t.isuperior = 0xf6ed;\n t.iterationhiragana = 0x309d;\n t.iterationkatakana = 0x30fd;\n t.itilde = 0x0129;\n t.itildebelow = 0x1e2d;\n t.iubopomofo = 0x3129;\n t.iucyrillic = 0x044e;\n t.ivowelsignbengali = 0x09bf;\n t.ivowelsigndeva = 0x093f;\n t.ivowelsigngujarati = 0x0abf;\n t.izhitsacyrillic = 0x0475;\n t.izhitsadblgravecyrillic = 0x0477;\n t.j = 0x006a;\n t.jaarmenian = 0x0571;\n t.jabengali = 0x099c;\n t.jadeva = 0x091c;\n t.jagujarati = 0x0a9c;\n t.jagurmukhi = 0x0a1c;\n t.jbopomofo = 0x3110;\n t.jcaron = 0x01f0;\n t.jcircle = 0x24d9;\n t.jcircumflex = 0x0135;\n t.jcrossedtail = 0x029d;\n t.jdotlessstroke = 0x025f;\n t.jecyrillic = 0x0458;\n t.jeemarabic = 0x062c;\n t.jeemfinalarabic = 0xfe9e;\n t.jeeminitialarabic = 0xfe9f;\n t.jeemmedialarabic = 0xfea0;\n t.jeharabic = 0x0698;\n t.jehfinalarabic = 0xfb8b;\n t.jhabengali = 0x099d;\n t.jhadeva = 0x091d;\n t.jhagujarati = 0x0a9d;\n t.jhagurmukhi = 0x0a1d;\n t.jheharmenian = 0x057b;\n t.jis = 0x3004;\n t.jmonospace = 0xff4a;\n t.jparen = 0x24a5;\n t.jsuperior = 0x02b2;\n t.k = 0x006b;\n t.kabashkircyrillic = 0x04a1;\n t.kabengali = 0x0995;\n t.kacute = 0x1e31;\n t.kacyrillic = 0x043a;\n t.kadescendercyrillic = 0x049b;\n t.kadeva = 0x0915;\n t.kaf = 0x05db;\n t.kafarabic = 0x0643;\n t.kafdagesh = 0xfb3b;\n t.kafdageshhebrew = 0xfb3b;\n t.kaffinalarabic = 0xfeda;\n t.kafhebrew = 0x05db;\n t.kafinitialarabic = 0xfedb;\n t.kafmedialarabic = 0xfedc;\n t.kafrafehebrew = 0xfb4d;\n t.kagujarati = 0x0a95;\n t.kagurmukhi = 0x0a15;\n t.kahiragana = 0x304b;\n t.kahookcyrillic = 0x04c4;\n t.kakatakana = 0x30ab;\n t.kakatakanahalfwidth = 0xff76;\n t.kappa = 0x03ba;\n t.kappasymbolgreek = 0x03f0;\n t.kapyeounmieumkorean = 0x3171;\n t.kapyeounphieuphkorean = 0x3184;\n t.kapyeounpieupkorean = 0x3178;\n t.kapyeounssangpieupkorean = 0x3179;\n t.karoriisquare = 0x330d;\n t.kashidaautoarabic = 0x0640;\n t.kashidaautonosidebearingarabic = 0x0640;\n t.kasmallkatakana = 0x30f5;\n t.kasquare = 0x3384;\n t.kasraarabic = 0x0650;\n t.kasratanarabic = 0x064d;\n t.kastrokecyrillic = 0x049f;\n t.katahiraprolongmarkhalfwidth = 0xff70;\n t.kaverticalstrokecyrillic = 0x049d;\n t.kbopomofo = 0x310e;\n t.kcalsquare = 0x3389;\n t.kcaron = 0x01e9;\n t.kcedilla = 0x0137;\n t.kcircle = 0x24da;\n t.kcommaaccent = 0x0137;\n t.kdotbelow = 0x1e33;\n t.keharmenian = 0x0584;\n t.kehiragana = 0x3051;\n t.kekatakana = 0x30b1;\n t.kekatakanahalfwidth = 0xff79;\n t.kenarmenian = 0x056f;\n t.kesmallkatakana = 0x30f6;\n t.kgreenlandic = 0x0138;\n t.khabengali = 0x0996;\n t.khacyrillic = 0x0445;\n t.khadeva = 0x0916;\n t.khagujarati = 0x0a96;\n t.khagurmukhi = 0x0a16;\n t.khaharabic = 0x062e;\n t.khahfinalarabic = 0xfea6;\n t.khahinitialarabic = 0xfea7;\n t.khahmedialarabic = 0xfea8;\n t.kheicoptic = 0x03e7;\n t.khhadeva = 0x0959;\n t.khhagurmukhi = 0x0a59;\n t.khieukhacirclekorean = 0x3278;\n t.khieukhaparenkorean = 0x3218;\n t.khieukhcirclekorean = 0x326a;\n t.khieukhkorean = 0x314b;\n t.khieukhparenkorean = 0x320a;\n t.khokhaithai = 0x0e02;\n t.khokhonthai = 0x0e05;\n t.khokhuatthai = 0x0e03;\n t.khokhwaithai = 0x0e04;\n t.khomutthai = 0x0e5b;\n t.khook = 0x0199;\n t.khorakhangthai = 0x0e06;\n t.khzsquare = 0x3391;\n t.kihiragana = 0x304d;\n t.kikatakana = 0x30ad;\n t.kikatakanahalfwidth = 0xff77;\n t.kiroguramusquare = 0x3315;\n t.kiromeetorusquare = 0x3316;\n t.kirosquare = 0x3314;\n t.kiyeokacirclekorean = 0x326e;\n t.kiyeokaparenkorean = 0x320e;\n t.kiyeokcirclekorean = 0x3260;\n t.kiyeokkorean = 0x3131;\n t.kiyeokparenkorean = 0x3200;\n t.kiyeoksioskorean = 0x3133;\n t.kjecyrillic = 0x045c;\n t.klinebelow = 0x1e35;\n t.klsquare = 0x3398;\n t.kmcubedsquare = 0x33a6;\n t.kmonospace = 0xff4b;\n t.kmsquaredsquare = 0x33a2;\n t.kohiragana = 0x3053;\n t.kohmsquare = 0x33c0;\n t.kokaithai = 0x0e01;\n t.kokatakana = 0x30b3;\n t.kokatakanahalfwidth = 0xff7a;\n t.kooposquare = 0x331e;\n t.koppacyrillic = 0x0481;\n t.koreanstandardsymbol = 0x327f;\n t.koroniscmb = 0x0343;\n t.kparen = 0x24a6;\n t.kpasquare = 0x33aa;\n t.ksicyrillic = 0x046f;\n t.ktsquare = 0x33cf;\n t.kturned = 0x029e;\n t.kuhiragana = 0x304f;\n t.kukatakana = 0x30af;\n t.kukatakanahalfwidth = 0xff78;\n t.kvsquare = 0x33b8;\n t.kwsquare = 0x33be;\n t.l = 0x006c;\n t.labengali = 0x09b2;\n t.lacute = 0x013a;\n t.ladeva = 0x0932;\n t.lagujarati = 0x0ab2;\n t.lagurmukhi = 0x0a32;\n t.lakkhangyaothai = 0x0e45;\n t.lamaleffinalarabic = 0xfefc;\n t.lamalefhamzaabovefinalarabic = 0xfef8;\n t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n t.lamalefhamzabelowfinalarabic = 0xfefa;\n t.lamalefhamzabelowisolatedarabic = 0xfef9;\n t.lamalefisolatedarabic = 0xfefb;\n t.lamalefmaddaabovefinalarabic = 0xfef6;\n t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n t.lamarabic = 0x0644;\n t.lambda = 0x03bb;\n t.lambdastroke = 0x019b;\n t.lamed = 0x05dc;\n t.lameddagesh = 0xfb3c;\n t.lameddageshhebrew = 0xfb3c;\n t.lamedhebrew = 0x05dc;\n t.lamfinalarabic = 0xfede;\n t.lamhahinitialarabic = 0xfcca;\n t.laminitialarabic = 0xfedf;\n t.lamjeeminitialarabic = 0xfcc9;\n t.lamkhahinitialarabic = 0xfccb;\n t.lamlamhehisolatedarabic = 0xfdf2;\n t.lammedialarabic = 0xfee0;\n t.lammeemhahinitialarabic = 0xfd88;\n t.lammeeminitialarabic = 0xfccc;\n t.largecircle = 0x25ef;\n t.lbar = 0x019a;\n t.lbelt = 0x026c;\n t.lbopomofo = 0x310c;\n t.lcaron = 0x013e;\n t.lcedilla = 0x013c;\n t.lcircle = 0x24db;\n t.lcircumflexbelow = 0x1e3d;\n t.lcommaaccent = 0x013c;\n t.ldot = 0x0140;\n t.ldotaccent = 0x0140;\n t.ldotbelow = 0x1e37;\n t.ldotbelowmacron = 0x1e39;\n t.leftangleabovecmb = 0x031a;\n t.lefttackbelowcmb = 0x0318;\n t.less = 0x003c;\n t.lessequal = 0x2264;\n t.lessequalorgreater = 0x22da;\n t.lessmonospace = 0xff1c;\n t.lessorequivalent = 0x2272;\n t.lessorgreater = 0x2276;\n t.lessoverequal = 0x2266;\n t.lesssmall = 0xfe64;\n t.lezh = 0x026e;\n t.lfblock = 0x258c;\n t.lhookretroflex = 0x026d;\n t.lira = 0x20a4;\n t.liwnarmenian = 0x056c;\n t.lj = 0x01c9;\n t.ljecyrillic = 0x0459;\n t.ll = 0xf6c0;\n t.lladeva = 0x0933;\n t.llagujarati = 0x0ab3;\n t.llinebelow = 0x1e3b;\n t.llladeva = 0x0934;\n t.llvocalicbengali = 0x09e1;\n t.llvocalicdeva = 0x0961;\n t.llvocalicvowelsignbengali = 0x09e3;\n t.llvocalicvowelsigndeva = 0x0963;\n t.lmiddletilde = 0x026b;\n t.lmonospace = 0xff4c;\n t.lmsquare = 0x33d0;\n t.lochulathai = 0x0e2c;\n t.logicaland = 0x2227;\n t.logicalnot = 0x00ac;\n t.logicalnotreversed = 0x2310;\n t.logicalor = 0x2228;\n t.lolingthai = 0x0e25;\n t.longs = 0x017f;\n t.lowlinecenterline = 0xfe4e;\n t.lowlinecmb = 0x0332;\n t.lowlinedashed = 0xfe4d;\n t.lozenge = 0x25ca;\n t.lparen = 0x24a7;\n t.lslash = 0x0142;\n t.lsquare = 0x2113;\n t.lsuperior = 0xf6ee;\n t.ltshade = 0x2591;\n t.luthai = 0x0e26;\n t.lvocalicbengali = 0x098c;\n t.lvocalicdeva = 0x090c;\n t.lvocalicvowelsignbengali = 0x09e2;\n t.lvocalicvowelsigndeva = 0x0962;\n t.lxsquare = 0x33d3;\n t.m = 0x006d;\n t.mabengali = 0x09ae;\n t.macron = 0x00af;\n t.macronbelowcmb = 0x0331;\n t.macroncmb = 0x0304;\n t.macronlowmod = 0x02cd;\n t.macronmonospace = 0xffe3;\n t.macute = 0x1e3f;\n t.madeva = 0x092e;\n t.magujarati = 0x0aae;\n t.magurmukhi = 0x0a2e;\n t.mahapakhhebrew = 0x05a4;\n t.mahapakhlefthebrew = 0x05a4;\n t.mahiragana = 0x307e;\n t.maichattawalowleftthai = 0xf895;\n t.maichattawalowrightthai = 0xf894;\n t.maichattawathai = 0x0e4b;\n t.maichattawaupperleftthai = 0xf893;\n t.maieklowleftthai = 0xf88c;\n t.maieklowrightthai = 0xf88b;\n t.maiekthai = 0x0e48;\n t.maiekupperleftthai = 0xf88a;\n t.maihanakatleftthai = 0xf884;\n t.maihanakatthai = 0x0e31;\n t.maitaikhuleftthai = 0xf889;\n t.maitaikhuthai = 0x0e47;\n t.maitholowleftthai = 0xf88f;\n t.maitholowrightthai = 0xf88e;\n t.maithothai = 0x0e49;\n t.maithoupperleftthai = 0xf88d;\n t.maitrilowleftthai = 0xf892;\n t.maitrilowrightthai = 0xf891;\n t.maitrithai = 0x0e4a;\n t.maitriupperleftthai = 0xf890;\n t.maiyamokthai = 0x0e46;\n t.makatakana = 0x30de;\n t.makatakanahalfwidth = 0xff8f;\n t.male = 0x2642;\n t.mansyonsquare = 0x3347;\n t.maqafhebrew = 0x05be;\n t.mars = 0x2642;\n t.masoracirclehebrew = 0x05af;\n t.masquare = 0x3383;\n t.mbopomofo = 0x3107;\n t.mbsquare = 0x33d4;\n t.mcircle = 0x24dc;\n t.mcubedsquare = 0x33a5;\n t.mdotaccent = 0x1e41;\n t.mdotbelow = 0x1e43;\n t.meemarabic = 0x0645;\n t.meemfinalarabic = 0xfee2;\n t.meeminitialarabic = 0xfee3;\n t.meemmedialarabic = 0xfee4;\n t.meemmeeminitialarabic = 0xfcd1;\n t.meemmeemisolatedarabic = 0xfc48;\n t.meetorusquare = 0x334d;\n t.mehiragana = 0x3081;\n t.meizierasquare = 0x337e;\n t.mekatakana = 0x30e1;\n t.mekatakanahalfwidth = 0xff92;\n t.mem = 0x05de;\n t.memdagesh = 0xfb3e;\n t.memdageshhebrew = 0xfb3e;\n t.memhebrew = 0x05de;\n t.menarmenian = 0x0574;\n t.merkhahebrew = 0x05a5;\n t.merkhakefulahebrew = 0x05a6;\n t.merkhakefulalefthebrew = 0x05a6;\n t.merkhalefthebrew = 0x05a5;\n t.mhook = 0x0271;\n t.mhzsquare = 0x3392;\n t.middledotkatakanahalfwidth = 0xff65;\n t.middot = 0x00b7;\n t.mieumacirclekorean = 0x3272;\n t.mieumaparenkorean = 0x3212;\n t.mieumcirclekorean = 0x3264;\n t.mieumkorean = 0x3141;\n t.mieumpansioskorean = 0x3170;\n t.mieumparenkorean = 0x3204;\n t.mieumpieupkorean = 0x316e;\n t.mieumsioskorean = 0x316f;\n t.mihiragana = 0x307f;\n t.mikatakana = 0x30df;\n t.mikatakanahalfwidth = 0xff90;\n t.minus = 0x2212;\n t.minusbelowcmb = 0x0320;\n t.minuscircle = 0x2296;\n t.minusmod = 0x02d7;\n t.minusplus = 0x2213;\n t.minute = 0x2032;\n t.miribaarusquare = 0x334a;\n t.mirisquare = 0x3349;\n t.mlonglegturned = 0x0270;\n t.mlsquare = 0x3396;\n t.mmcubedsquare = 0x33a3;\n t.mmonospace = 0xff4d;\n t.mmsquaredsquare = 0x339f;\n t.mohiragana = 0x3082;\n t.mohmsquare = 0x33c1;\n t.mokatakana = 0x30e2;\n t.mokatakanahalfwidth = 0xff93;\n t.molsquare = 0x33d6;\n t.momathai = 0x0e21;\n t.moverssquare = 0x33a7;\n t.moverssquaredsquare = 0x33a8;\n t.mparen = 0x24a8;\n t.mpasquare = 0x33ab;\n t.mssquare = 0x33b3;\n t.msuperior = 0xf6ef;\n t.mturned = 0x026f;\n t.mu = 0x00b5;\n t.mu1 = 0x00b5;\n t.muasquare = 0x3382;\n t.muchgreater = 0x226b;\n t.muchless = 0x226a;\n t.mufsquare = 0x338c;\n t.mugreek = 0x03bc;\n t.mugsquare = 0x338d;\n t.muhiragana = 0x3080;\n t.mukatakana = 0x30e0;\n t.mukatakanahalfwidth = 0xff91;\n t.mulsquare = 0x3395;\n t.multiply = 0x00d7;\n t.mumsquare = 0x339b;\n t.munahhebrew = 0x05a3;\n t.munahlefthebrew = 0x05a3;\n t.musicalnote = 0x266a;\n t.musicalnotedbl = 0x266b;\n t.musicflatsign = 0x266d;\n t.musicsharpsign = 0x266f;\n t.mussquare = 0x33b2;\n t.muvsquare = 0x33b6;\n t.muwsquare = 0x33bc;\n t.mvmegasquare = 0x33b9;\n t.mvsquare = 0x33b7;\n t.mwmegasquare = 0x33bf;\n t.mwsquare = 0x33bd;\n t.n = 0x006e;\n t.nabengali = 0x09a8;\n t.nabla = 0x2207;\n t.nacute = 0x0144;\n t.nadeva = 0x0928;\n t.nagujarati = 0x0aa8;\n t.nagurmukhi = 0x0a28;\n t.nahiragana = 0x306a;\n t.nakatakana = 0x30ca;\n t.nakatakanahalfwidth = 0xff85;\n t.napostrophe = 0x0149;\n t.nasquare = 0x3381;\n t.nbopomofo = 0x310b;\n t.nbspace = 0x00a0;\n t.ncaron = 0x0148;\n t.ncedilla = 0x0146;\n t.ncircle = 0x24dd;\n t.ncircumflexbelow = 0x1e4b;\n t.ncommaaccent = 0x0146;\n t.ndotaccent = 0x1e45;\n t.ndotbelow = 0x1e47;\n t.nehiragana = 0x306d;\n t.nekatakana = 0x30cd;\n t.nekatakanahalfwidth = 0xff88;\n t.newsheqelsign = 0x20aa;\n t.nfsquare = 0x338b;\n t.ngabengali = 0x0999;\n t.ngadeva = 0x0919;\n t.ngagujarati = 0x0a99;\n t.ngagurmukhi = 0x0a19;\n t.ngonguthai = 0x0e07;\n t.nhiragana = 0x3093;\n t.nhookleft = 0x0272;\n t.nhookretroflex = 0x0273;\n t.nieunacirclekorean = 0x326f;\n t.nieunaparenkorean = 0x320f;\n t.nieuncieuckorean = 0x3135;\n t.nieuncirclekorean = 0x3261;\n t.nieunhieuhkorean = 0x3136;\n t.nieunkorean = 0x3134;\n t.nieunpansioskorean = 0x3168;\n t.nieunparenkorean = 0x3201;\n t.nieunsioskorean = 0x3167;\n t.nieuntikeutkorean = 0x3166;\n t.nihiragana = 0x306b;\n t.nikatakana = 0x30cb;\n t.nikatakanahalfwidth = 0xff86;\n t.nikhahitleftthai = 0xf899;\n t.nikhahitthai = 0x0e4d;\n t.nine = 0x0039;\n t.ninearabic = 0x0669;\n t.ninebengali = 0x09ef;\n t.ninecircle = 0x2468;\n t.ninecircleinversesansserif = 0x2792;\n t.ninedeva = 0x096f;\n t.ninegujarati = 0x0aef;\n t.ninegurmukhi = 0x0a6f;\n t.ninehackarabic = 0x0669;\n t.ninehangzhou = 0x3029;\n t.nineideographicparen = 0x3228;\n t.nineinferior = 0x2089;\n t.ninemonospace = 0xff19;\n t.nineoldstyle = 0xf739;\n t.nineparen = 0x247c;\n t.nineperiod = 0x2490;\n t.ninepersian = 0x06f9;\n t.nineroman = 0x2178;\n t.ninesuperior = 0x2079;\n t.nineteencircle = 0x2472;\n t.nineteenparen = 0x2486;\n t.nineteenperiod = 0x249a;\n t.ninethai = 0x0e59;\n t.nj = 0x01cc;\n t.njecyrillic = 0x045a;\n t.nkatakana = 0x30f3;\n t.nkatakanahalfwidth = 0xff9d;\n t.nlegrightlong = 0x019e;\n t.nlinebelow = 0x1e49;\n t.nmonospace = 0xff4e;\n t.nmsquare = 0x339a;\n t.nnabengali = 0x09a3;\n t.nnadeva = 0x0923;\n t.nnagujarati = 0x0aa3;\n t.nnagurmukhi = 0x0a23;\n t.nnnadeva = 0x0929;\n t.nohiragana = 0x306e;\n t.nokatakana = 0x30ce;\n t.nokatakanahalfwidth = 0xff89;\n t.nonbreakingspace = 0x00a0;\n t.nonenthai = 0x0e13;\n t.nonuthai = 0x0e19;\n t.noonarabic = 0x0646;\n t.noonfinalarabic = 0xfee6;\n t.noonghunnaarabic = 0x06ba;\n t.noonghunnafinalarabic = 0xfb9f;\n t.nooninitialarabic = 0xfee7;\n t.noonjeeminitialarabic = 0xfcd2;\n t.noonjeemisolatedarabic = 0xfc4b;\n t.noonmedialarabic = 0xfee8;\n t.noonmeeminitialarabic = 0xfcd5;\n t.noonmeemisolatedarabic = 0xfc4e;\n t.noonnoonfinalarabic = 0xfc8d;\n t.notcontains = 0x220c;\n t.notelement = 0x2209;\n t.notelementof = 0x2209;\n t.notequal = 0x2260;\n t.notgreater = 0x226f;\n t.notgreaternorequal = 0x2271;\n t.notgreaternorless = 0x2279;\n t.notidentical = 0x2262;\n t.notless = 0x226e;\n t.notlessnorequal = 0x2270;\n t.notparallel = 0x2226;\n t.notprecedes = 0x2280;\n t.notsubset = 0x2284;\n t.notsucceeds = 0x2281;\n t.notsuperset = 0x2285;\n t.nowarmenian = 0x0576;\n t.nparen = 0x24a9;\n t.nssquare = 0x33b1;\n t.nsuperior = 0x207f;\n t.ntilde = 0x00f1;\n t.nu = 0x03bd;\n t.nuhiragana = 0x306c;\n t.nukatakana = 0x30cc;\n t.nukatakanahalfwidth = 0xff87;\n t.nuktabengali = 0x09bc;\n t.nuktadeva = 0x093c;\n t.nuktagujarati = 0x0abc;\n t.nuktagurmukhi = 0x0a3c;\n t.numbersign = 0x0023;\n t.numbersignmonospace = 0xff03;\n t.numbersignsmall = 0xfe5f;\n t.numeralsigngreek = 0x0374;\n t.numeralsignlowergreek = 0x0375;\n t.numero = 0x2116;\n t.nun = 0x05e0;\n t.nundagesh = 0xfb40;\n t.nundageshhebrew = 0xfb40;\n t.nunhebrew = 0x05e0;\n t.nvsquare = 0x33b5;\n t.nwsquare = 0x33bb;\n t.nyabengali = 0x099e;\n t.nyadeva = 0x091e;\n t.nyagujarati = 0x0a9e;\n t.nyagurmukhi = 0x0a1e;\n t.o = 0x006f;\n t.oacute = 0x00f3;\n t.oangthai = 0x0e2d;\n t.obarred = 0x0275;\n t.obarredcyrillic = 0x04e9;\n t.obarreddieresiscyrillic = 0x04eb;\n t.obengali = 0x0993;\n t.obopomofo = 0x311b;\n t.obreve = 0x014f;\n t.ocandradeva = 0x0911;\n t.ocandragujarati = 0x0a91;\n t.ocandravowelsigndeva = 0x0949;\n t.ocandravowelsigngujarati = 0x0ac9;\n t.ocaron = 0x01d2;\n t.ocircle = 0x24de;\n t.ocircumflex = 0x00f4;\n t.ocircumflexacute = 0x1ed1;\n t.ocircumflexdotbelow = 0x1ed9;\n t.ocircumflexgrave = 0x1ed3;\n t.ocircumflexhookabove = 0x1ed5;\n t.ocircumflextilde = 0x1ed7;\n t.ocyrillic = 0x043e;\n t.odblacute = 0x0151;\n t.odblgrave = 0x020d;\n t.odeva = 0x0913;\n t.odieresis = 0x00f6;\n t.odieresiscyrillic = 0x04e7;\n t.odotbelow = 0x1ecd;\n t.oe = 0x0153;\n t.oekorean = 0x315a;\n t.ogonek = 0x02db;\n t.ogonekcmb = 0x0328;\n t.ograve = 0x00f2;\n t.ogujarati = 0x0a93;\n t.oharmenian = 0x0585;\n t.ohiragana = 0x304a;\n t.ohookabove = 0x1ecf;\n t.ohorn = 0x01a1;\n t.ohornacute = 0x1edb;\n t.ohorndotbelow = 0x1ee3;\n t.ohorngrave = 0x1edd;\n t.ohornhookabove = 0x1edf;\n t.ohorntilde = 0x1ee1;\n t.ohungarumlaut = 0x0151;\n t.oi = 0x01a3;\n t.oinvertedbreve = 0x020f;\n t.okatakana = 0x30aa;\n t.okatakanahalfwidth = 0xff75;\n t.okorean = 0x3157;\n t.olehebrew = 0x05ab;\n t.omacron = 0x014d;\n t.omacronacute = 0x1e53;\n t.omacrongrave = 0x1e51;\n t.omdeva = 0x0950;\n t.omega = 0x03c9;\n t.omega1 = 0x03d6;\n t.omegacyrillic = 0x0461;\n t.omegalatinclosed = 0x0277;\n t.omegaroundcyrillic = 0x047b;\n t.omegatitlocyrillic = 0x047d;\n t.omegatonos = 0x03ce;\n t.omgujarati = 0x0ad0;\n t.omicron = 0x03bf;\n t.omicrontonos = 0x03cc;\n t.omonospace = 0xff4f;\n t.one = 0x0031;\n t.onearabic = 0x0661;\n t.onebengali = 0x09e7;\n t.onecircle = 0x2460;\n t.onecircleinversesansserif = 0x278a;\n t.onedeva = 0x0967;\n t.onedotenleader = 0x2024;\n t.oneeighth = 0x215b;\n t.onefitted = 0xf6dc;\n t.onegujarati = 0x0ae7;\n t.onegurmukhi = 0x0a67;\n t.onehackarabic = 0x0661;\n t.onehalf = 0x00bd;\n t.onehangzhou = 0x3021;\n t.oneideographicparen = 0x3220;\n t.oneinferior = 0x2081;\n t.onemonospace = 0xff11;\n t.onenumeratorbengali = 0x09f4;\n t.oneoldstyle = 0xf731;\n t.oneparen = 0x2474;\n t.oneperiod = 0x2488;\n t.onepersian = 0x06f1;\n t.onequarter = 0x00bc;\n t.oneroman = 0x2170;\n t.onesuperior = 0x00b9;\n t.onethai = 0x0e51;\n t.onethird = 0x2153;\n t.oogonek = 0x01eb;\n t.oogonekmacron = 0x01ed;\n t.oogurmukhi = 0x0a13;\n t.oomatragurmukhi = 0x0a4b;\n t.oopen = 0x0254;\n t.oparen = 0x24aa;\n t.openbullet = 0x25e6;\n t.option = 0x2325;\n t.ordfeminine = 0x00aa;\n t.ordmasculine = 0x00ba;\n t.orthogonal = 0x221f;\n t.oshortdeva = 0x0912;\n t.oshortvowelsigndeva = 0x094a;\n t.oslash = 0x00f8;\n t.oslashacute = 0x01ff;\n t.osmallhiragana = 0x3049;\n t.osmallkatakana = 0x30a9;\n t.osmallkatakanahalfwidth = 0xff6b;\n t.ostrokeacute = 0x01ff;\n t.osuperior = 0xf6f0;\n t.otcyrillic = 0x047f;\n t.otilde = 0x00f5;\n t.otildeacute = 0x1e4d;\n t.otildedieresis = 0x1e4f;\n t.oubopomofo = 0x3121;\n t.overline = 0x203e;\n t.overlinecenterline = 0xfe4a;\n t.overlinecmb = 0x0305;\n t.overlinedashed = 0xfe49;\n t.overlinedblwavy = 0xfe4c;\n t.overlinewavy = 0xfe4b;\n t.overscore = 0x00af;\n t.ovowelsignbengali = 0x09cb;\n t.ovowelsigndeva = 0x094b;\n t.ovowelsigngujarati = 0x0acb;\n t.p = 0x0070;\n t.paampssquare = 0x3380;\n t.paasentosquare = 0x332b;\n t.pabengali = 0x09aa;\n t.pacute = 0x1e55;\n t.padeva = 0x092a;\n t.pagedown = 0x21df;\n t.pageup = 0x21de;\n t.pagujarati = 0x0aaa;\n t.pagurmukhi = 0x0a2a;\n t.pahiragana = 0x3071;\n t.paiyannoithai = 0x0e2f;\n t.pakatakana = 0x30d1;\n t.palatalizationcyrilliccmb = 0x0484;\n t.palochkacyrillic = 0x04c0;\n t.pansioskorean = 0x317f;\n t.paragraph = 0x00b6;\n t.parallel = 0x2225;\n t.parenleft = 0x0028;\n t.parenleftaltonearabic = 0xfd3e;\n t.parenleftbt = 0xf8ed;\n t.parenleftex = 0xf8ec;\n t.parenleftinferior = 0x208d;\n t.parenleftmonospace = 0xff08;\n t.parenleftsmall = 0xfe59;\n t.parenleftsuperior = 0x207d;\n t.parenlefttp = 0xf8eb;\n t.parenleftvertical = 0xfe35;\n t.parenright = 0x0029;\n t.parenrightaltonearabic = 0xfd3f;\n t.parenrightbt = 0xf8f8;\n t.parenrightex = 0xf8f7;\n t.parenrightinferior = 0x208e;\n t.parenrightmonospace = 0xff09;\n t.parenrightsmall = 0xfe5a;\n t.parenrightsuperior = 0x207e;\n t.parenrighttp = 0xf8f6;\n t.parenrightvertical = 0xfe36;\n t.partialdiff = 0x2202;\n t.paseqhebrew = 0x05c0;\n t.pashtahebrew = 0x0599;\n t.pasquare = 0x33a9;\n t.patah = 0x05b7;\n t.patah11 = 0x05b7;\n t.patah1d = 0x05b7;\n t.patah2a = 0x05b7;\n t.patahhebrew = 0x05b7;\n t.patahnarrowhebrew = 0x05b7;\n t.patahquarterhebrew = 0x05b7;\n t.patahwidehebrew = 0x05b7;\n t.pazerhebrew = 0x05a1;\n t.pbopomofo = 0x3106;\n t.pcircle = 0x24df;\n t.pdotaccent = 0x1e57;\n t.pe = 0x05e4;\n t.pecyrillic = 0x043f;\n t.pedagesh = 0xfb44;\n t.pedageshhebrew = 0xfb44;\n t.peezisquare = 0x333b;\n t.pefinaldageshhebrew = 0xfb43;\n t.peharabic = 0x067e;\n t.peharmenian = 0x057a;\n t.pehebrew = 0x05e4;\n t.pehfinalarabic = 0xfb57;\n t.pehinitialarabic = 0xfb58;\n t.pehiragana = 0x307a;\n t.pehmedialarabic = 0xfb59;\n t.pekatakana = 0x30da;\n t.pemiddlehookcyrillic = 0x04a7;\n t.perafehebrew = 0xfb4e;\n t.percent = 0x0025;\n t.percentarabic = 0x066a;\n t.percentmonospace = 0xff05;\n t.percentsmall = 0xfe6a;\n t.period = 0x002e;\n t.periodarmenian = 0x0589;\n t.periodcentered = 0x00b7;\n t.periodhalfwidth = 0xff61;\n t.periodinferior = 0xf6e7;\n t.periodmonospace = 0xff0e;\n t.periodsmall = 0xfe52;\n t.periodsuperior = 0xf6e8;\n t.perispomenigreekcmb = 0x0342;\n t.perpendicular = 0x22a5;\n t.perthousand = 0x2030;\n t.peseta = 0x20a7;\n t.pfsquare = 0x338a;\n t.phabengali = 0x09ab;\n t.phadeva = 0x092b;\n t.phagujarati = 0x0aab;\n t.phagurmukhi = 0x0a2b;\n t.phi = 0x03c6;\n t.phi1 = 0x03d5;\n t.phieuphacirclekorean = 0x327a;\n t.phieuphaparenkorean = 0x321a;\n t.phieuphcirclekorean = 0x326c;\n t.phieuphkorean = 0x314d;\n t.phieuphparenkorean = 0x320c;\n t.philatin = 0x0278;\n t.phinthuthai = 0x0e3a;\n t.phisymbolgreek = 0x03d5;\n t.phook = 0x01a5;\n t.phophanthai = 0x0e1e;\n t.phophungthai = 0x0e1c;\n t.phosamphaothai = 0x0e20;\n t.pi = 0x03c0;\n t.pieupacirclekorean = 0x3273;\n t.pieupaparenkorean = 0x3213;\n t.pieupcieuckorean = 0x3176;\n t.pieupcirclekorean = 0x3265;\n t.pieupkiyeokkorean = 0x3172;\n t.pieupkorean = 0x3142;\n t.pieupparenkorean = 0x3205;\n t.pieupsioskiyeokkorean = 0x3174;\n t.pieupsioskorean = 0x3144;\n t.pieupsiostikeutkorean = 0x3175;\n t.pieupthieuthkorean = 0x3177;\n t.pieuptikeutkorean = 0x3173;\n t.pihiragana = 0x3074;\n t.pikatakana = 0x30d4;\n t.pisymbolgreek = 0x03d6;\n t.piwrarmenian = 0x0583;\n t.planckover2pi = 0x210f;\n t.planckover2pi1 = 0x210f;\n t.plus = 0x002b;\n t.plusbelowcmb = 0x031f;\n t.pluscircle = 0x2295;\n t.plusminus = 0x00b1;\n t.plusmod = 0x02d6;\n t.plusmonospace = 0xff0b;\n t.plussmall = 0xfe62;\n t.plussuperior = 0x207a;\n t.pmonospace = 0xff50;\n t.pmsquare = 0x33d8;\n t.pohiragana = 0x307d;\n t.pointingindexdownwhite = 0x261f;\n t.pointingindexleftwhite = 0x261c;\n t.pointingindexrightwhite = 0x261e;\n t.pointingindexupwhite = 0x261d;\n t.pokatakana = 0x30dd;\n t.poplathai = 0x0e1b;\n t.postalmark = 0x3012;\n t.postalmarkface = 0x3020;\n t.pparen = 0x24ab;\n t.precedes = 0x227a;\n t.prescription = 0x211e;\n t.primemod = 0x02b9;\n t.primereversed = 0x2035;\n t.product = 0x220f;\n t.projective = 0x2305;\n t.prolongedkana = 0x30fc;\n t.propellor = 0x2318;\n t.propersubset = 0x2282;\n t.propersuperset = 0x2283;\n t.proportion = 0x2237;\n t.proportional = 0x221d;\n t.psi = 0x03c8;\n t.psicyrillic = 0x0471;\n t.psilipneumatacyrilliccmb = 0x0486;\n t.pssquare = 0x33b0;\n t.puhiragana = 0x3077;\n t.pukatakana = 0x30d7;\n t.pvsquare = 0x33b4;\n t.pwsquare = 0x33ba;\n t.q = 0x0071;\n t.qadeva = 0x0958;\n t.qadmahebrew = 0x05a8;\n t.qafarabic = 0x0642;\n t.qaffinalarabic = 0xfed6;\n t.qafinitialarabic = 0xfed7;\n t.qafmedialarabic = 0xfed8;\n t.qamats = 0x05b8;\n t.qamats10 = 0x05b8;\n t.qamats1a = 0x05b8;\n t.qamats1c = 0x05b8;\n t.qamats27 = 0x05b8;\n t.qamats29 = 0x05b8;\n t.qamats33 = 0x05b8;\n t.qamatsde = 0x05b8;\n t.qamatshebrew = 0x05b8;\n t.qamatsnarrowhebrew = 0x05b8;\n t.qamatsqatanhebrew = 0x05b8;\n t.qamatsqatannarrowhebrew = 0x05b8;\n t.qamatsqatanquarterhebrew = 0x05b8;\n t.qamatsqatanwidehebrew = 0x05b8;\n t.qamatsquarterhebrew = 0x05b8;\n t.qamatswidehebrew = 0x05b8;\n t.qarneyparahebrew = 0x059f;\n t.qbopomofo = 0x3111;\n t.qcircle = 0x24e0;\n t.qhook = 0x02a0;\n t.qmonospace = 0xff51;\n t.qof = 0x05e7;\n t.qofdagesh = 0xfb47;\n t.qofdageshhebrew = 0xfb47;\n t.qofhebrew = 0x05e7;\n t.qparen = 0x24ac;\n t.quarternote = 0x2669;\n t.qubuts = 0x05bb;\n t.qubuts18 = 0x05bb;\n t.qubuts25 = 0x05bb;\n t.qubuts31 = 0x05bb;\n t.qubutshebrew = 0x05bb;\n t.qubutsnarrowhebrew = 0x05bb;\n t.qubutsquarterhebrew = 0x05bb;\n t.qubutswidehebrew = 0x05bb;\n t.question = 0x003f;\n t.questionarabic = 0x061f;\n t.questionarmenian = 0x055e;\n t.questiondown = 0x00bf;\n t.questiondownsmall = 0xf7bf;\n t.questiongreek = 0x037e;\n t.questionmonospace = 0xff1f;\n t.questionsmall = 0xf73f;\n t.quotedbl = 0x0022;\n t.quotedblbase = 0x201e;\n t.quotedblleft = 0x201c;\n t.quotedblmonospace = 0xff02;\n t.quotedblprime = 0x301e;\n t.quotedblprimereversed = 0x301d;\n t.quotedblright = 0x201d;\n t.quoteleft = 0x2018;\n t.quoteleftreversed = 0x201b;\n t.quotereversed = 0x201b;\n t.quoteright = 0x2019;\n t.quoterightn = 0x0149;\n t.quotesinglbase = 0x201a;\n t.quotesingle = 0x0027;\n t.quotesinglemonospace = 0xff07;\n t.r = 0x0072;\n t.raarmenian = 0x057c;\n t.rabengali = 0x09b0;\n t.racute = 0x0155;\n t.radeva = 0x0930;\n t.radical = 0x221a;\n t.radicalex = 0xf8e5;\n t.radoverssquare = 0x33ae;\n t.radoverssquaredsquare = 0x33af;\n t.radsquare = 0x33ad;\n t.rafe = 0x05bf;\n t.rafehebrew = 0x05bf;\n t.ragujarati = 0x0ab0;\n t.ragurmukhi = 0x0a30;\n t.rahiragana = 0x3089;\n t.rakatakana = 0x30e9;\n t.rakatakanahalfwidth = 0xff97;\n t.ralowerdiagonalbengali = 0x09f1;\n t.ramiddlediagonalbengali = 0x09f0;\n t.ramshorn = 0x0264;\n t.ratio = 0x2236;\n t.rbopomofo = 0x3116;\n t.rcaron = 0x0159;\n t.rcedilla = 0x0157;\n t.rcircle = 0x24e1;\n t.rcommaaccent = 0x0157;\n t.rdblgrave = 0x0211;\n t.rdotaccent = 0x1e59;\n t.rdotbelow = 0x1e5b;\n t.rdotbelowmacron = 0x1e5d;\n t.referencemark = 0x203b;\n t.reflexsubset = 0x2286;\n t.reflexsuperset = 0x2287;\n t.registered = 0x00ae;\n t.registersans = 0xf8e8;\n t.registerserif = 0xf6da;\n t.reharabic = 0x0631;\n t.reharmenian = 0x0580;\n t.rehfinalarabic = 0xfeae;\n t.rehiragana = 0x308c;\n t.rekatakana = 0x30ec;\n t.rekatakanahalfwidth = 0xff9a;\n t.resh = 0x05e8;\n t.reshdageshhebrew = 0xfb48;\n t.reshhebrew = 0x05e8;\n t.reversedtilde = 0x223d;\n t.reviahebrew = 0x0597;\n t.reviamugrashhebrew = 0x0597;\n t.revlogicalnot = 0x2310;\n t.rfishhook = 0x027e;\n t.rfishhookreversed = 0x027f;\n t.rhabengali = 0x09dd;\n t.rhadeva = 0x095d;\n t.rho = 0x03c1;\n t.rhook = 0x027d;\n t.rhookturned = 0x027b;\n t.rhookturnedsuperior = 0x02b5;\n t.rhosymbolgreek = 0x03f1;\n t.rhotichookmod = 0x02de;\n t.rieulacirclekorean = 0x3271;\n t.rieulaparenkorean = 0x3211;\n t.rieulcirclekorean = 0x3263;\n t.rieulhieuhkorean = 0x3140;\n t.rieulkiyeokkorean = 0x313a;\n t.rieulkiyeoksioskorean = 0x3169;\n t.rieulkorean = 0x3139;\n t.rieulmieumkorean = 0x313b;\n t.rieulpansioskorean = 0x316c;\n t.rieulparenkorean = 0x3203;\n t.rieulphieuphkorean = 0x313f;\n t.rieulpieupkorean = 0x313c;\n t.rieulpieupsioskorean = 0x316b;\n t.rieulsioskorean = 0x313d;\n t.rieulthieuthkorean = 0x313e;\n t.rieultikeutkorean = 0x316a;\n t.rieulyeorinhieuhkorean = 0x316d;\n t.rightangle = 0x221f;\n t.righttackbelowcmb = 0x0319;\n t.righttriangle = 0x22bf;\n t.rihiragana = 0x308a;\n t.rikatakana = 0x30ea;\n t.rikatakanahalfwidth = 0xff98;\n t.ring = 0x02da;\n t.ringbelowcmb = 0x0325;\n t.ringcmb = 0x030a;\n t.ringhalfleft = 0x02bf;\n t.ringhalfleftarmenian = 0x0559;\n t.ringhalfleftbelowcmb = 0x031c;\n t.ringhalfleftcentered = 0x02d3;\n t.ringhalfright = 0x02be;\n t.ringhalfrightbelowcmb = 0x0339;\n t.ringhalfrightcentered = 0x02d2;\n t.rinvertedbreve = 0x0213;\n t.rittorusquare = 0x3351;\n t.rlinebelow = 0x1e5f;\n t.rlongleg = 0x027c;\n t.rlonglegturned = 0x027a;\n t.rmonospace = 0xff52;\n t.rohiragana = 0x308d;\n t.rokatakana = 0x30ed;\n t.rokatakanahalfwidth = 0xff9b;\n t.roruathai = 0x0e23;\n t.rparen = 0x24ad;\n t.rrabengali = 0x09dc;\n t.rradeva = 0x0931;\n t.rragurmukhi = 0x0a5c;\n t.rreharabic = 0x0691;\n t.rrehfinalarabic = 0xfb8d;\n t.rrvocalicbengali = 0x09e0;\n t.rrvocalicdeva = 0x0960;\n t.rrvocalicgujarati = 0x0ae0;\n t.rrvocalicvowelsignbengali = 0x09c4;\n t.rrvocalicvowelsigndeva = 0x0944;\n t.rrvocalicvowelsigngujarati = 0x0ac4;\n t.rsuperior = 0xf6f1;\n t.rtblock = 0x2590;\n t.rturned = 0x0279;\n t.rturnedsuperior = 0x02b4;\n t.ruhiragana = 0x308b;\n t.rukatakana = 0x30eb;\n t.rukatakanahalfwidth = 0xff99;\n t.rupeemarkbengali = 0x09f2;\n t.rupeesignbengali = 0x09f3;\n t.rupiah = 0xf6dd;\n t.ruthai = 0x0e24;\n t.rvocalicbengali = 0x098b;\n t.rvocalicdeva = 0x090b;\n t.rvocalicgujarati = 0x0a8b;\n t.rvocalicvowelsignbengali = 0x09c3;\n t.rvocalicvowelsigndeva = 0x0943;\n t.rvocalicvowelsigngujarati = 0x0ac3;\n t.s = 0x0073;\n t.sabengali = 0x09b8;\n t.sacute = 0x015b;\n t.sacutedotaccent = 0x1e65;\n t.sadarabic = 0x0635;\n t.sadeva = 0x0938;\n t.sadfinalarabic = 0xfeba;\n t.sadinitialarabic = 0xfebb;\n t.sadmedialarabic = 0xfebc;\n t.sagujarati = 0x0ab8;\n t.sagurmukhi = 0x0a38;\n t.sahiragana = 0x3055;\n t.sakatakana = 0x30b5;\n t.sakatakanahalfwidth = 0xff7b;\n t.sallallahoualayhewasallamarabic = 0xfdfa;\n t.samekh = 0x05e1;\n t.samekhdagesh = 0xfb41;\n t.samekhdageshhebrew = 0xfb41;\n t.samekhhebrew = 0x05e1;\n t.saraaathai = 0x0e32;\n t.saraaethai = 0x0e41;\n t.saraaimaimalaithai = 0x0e44;\n t.saraaimaimuanthai = 0x0e43;\n t.saraamthai = 0x0e33;\n t.saraathai = 0x0e30;\n t.saraethai = 0x0e40;\n t.saraiileftthai = 0xf886;\n t.saraiithai = 0x0e35;\n t.saraileftthai = 0xf885;\n t.saraithai = 0x0e34;\n t.saraothai = 0x0e42;\n t.saraueeleftthai = 0xf888;\n t.saraueethai = 0x0e37;\n t.saraueleftthai = 0xf887;\n t.sarauethai = 0x0e36;\n t.sarauthai = 0x0e38;\n t.sarauuthai = 0x0e39;\n t.sbopomofo = 0x3119;\n t.scaron = 0x0161;\n t.scarondotaccent = 0x1e67;\n t.scedilla = 0x015f;\n t.schwa = 0x0259;\n t.schwacyrillic = 0x04d9;\n t.schwadieresiscyrillic = 0x04db;\n t.schwahook = 0x025a;\n t.scircle = 0x24e2;\n t.scircumflex = 0x015d;\n t.scommaaccent = 0x0219;\n t.sdotaccent = 0x1e61;\n t.sdotbelow = 0x1e63;\n t.sdotbelowdotaccent = 0x1e69;\n t.seagullbelowcmb = 0x033c;\n t.second = 0x2033;\n t.secondtonechinese = 0x02ca;\n t.section = 0x00a7;\n t.seenarabic = 0x0633;\n t.seenfinalarabic = 0xfeb2;\n t.seeninitialarabic = 0xfeb3;\n t.seenmedialarabic = 0xfeb4;\n t.segol = 0x05b6;\n t.segol13 = 0x05b6;\n t.segol1f = 0x05b6;\n t.segol2c = 0x05b6;\n t.segolhebrew = 0x05b6;\n t.segolnarrowhebrew = 0x05b6;\n t.segolquarterhebrew = 0x05b6;\n t.segoltahebrew = 0x0592;\n t.segolwidehebrew = 0x05b6;\n t.seharmenian = 0x057d;\n t.sehiragana = 0x305b;\n t.sekatakana = 0x30bb;\n t.sekatakanahalfwidth = 0xff7e;\n t.semicolon = 0x003b;\n t.semicolonarabic = 0x061b;\n t.semicolonmonospace = 0xff1b;\n t.semicolonsmall = 0xfe54;\n t.semivoicedmarkkana = 0x309c;\n t.semivoicedmarkkanahalfwidth = 0xff9f;\n t.sentisquare = 0x3322;\n t.sentosquare = 0x3323;\n t.seven = 0x0037;\n t.sevenarabic = 0x0667;\n t.sevenbengali = 0x09ed;\n t.sevencircle = 0x2466;\n t.sevencircleinversesansserif = 0x2790;\n t.sevendeva = 0x096d;\n t.seveneighths = 0x215e;\n t.sevengujarati = 0x0aed;\n t.sevengurmukhi = 0x0a6d;\n t.sevenhackarabic = 0x0667;\n t.sevenhangzhou = 0x3027;\n t.sevenideographicparen = 0x3226;\n t.seveninferior = 0x2087;\n t.sevenmonospace = 0xff17;\n t.sevenoldstyle = 0xf737;\n t.sevenparen = 0x247a;\n t.sevenperiod = 0x248e;\n t.sevenpersian = 0x06f7;\n t.sevenroman = 0x2176;\n t.sevensuperior = 0x2077;\n t.seventeencircle = 0x2470;\n t.seventeenparen = 0x2484;\n t.seventeenperiod = 0x2498;\n t.seventhai = 0x0e57;\n t.sfthyphen = 0x00ad;\n t.shaarmenian = 0x0577;\n t.shabengali = 0x09b6;\n t.shacyrillic = 0x0448;\n t.shaddaarabic = 0x0651;\n t.shaddadammaarabic = 0xfc61;\n t.shaddadammatanarabic = 0xfc5e;\n t.shaddafathaarabic = 0xfc60;\n t.shaddakasraarabic = 0xfc62;\n t.shaddakasratanarabic = 0xfc5f;\n t.shade = 0x2592;\n t.shadedark = 0x2593;\n t.shadelight = 0x2591;\n t.shademedium = 0x2592;\n t.shadeva = 0x0936;\n t.shagujarati = 0x0ab6;\n t.shagurmukhi = 0x0a36;\n t.shalshelethebrew = 0x0593;\n t.shbopomofo = 0x3115;\n t.shchacyrillic = 0x0449;\n t.sheenarabic = 0x0634;\n t.sheenfinalarabic = 0xfeb6;\n t.sheeninitialarabic = 0xfeb7;\n t.sheenmedialarabic = 0xfeb8;\n t.sheicoptic = 0x03e3;\n t.sheqel = 0x20aa;\n t.sheqelhebrew = 0x20aa;\n t.sheva = 0x05b0;\n t.sheva115 = 0x05b0;\n t.sheva15 = 0x05b0;\n t.sheva22 = 0x05b0;\n t.sheva2e = 0x05b0;\n t.shevahebrew = 0x05b0;\n t.shevanarrowhebrew = 0x05b0;\n t.shevaquarterhebrew = 0x05b0;\n t.shevawidehebrew = 0x05b0;\n t.shhacyrillic = 0x04bb;\n t.shimacoptic = 0x03ed;\n t.shin = 0x05e9;\n t.shindagesh = 0xfb49;\n t.shindageshhebrew = 0xfb49;\n t.shindageshshindot = 0xfb2c;\n t.shindageshshindothebrew = 0xfb2c;\n t.shindageshsindot = 0xfb2d;\n t.shindageshsindothebrew = 0xfb2d;\n t.shindothebrew = 0x05c1;\n t.shinhebrew = 0x05e9;\n t.shinshindot = 0xfb2a;\n t.shinshindothebrew = 0xfb2a;\n t.shinsindot = 0xfb2b;\n t.shinsindothebrew = 0xfb2b;\n t.shook = 0x0282;\n t.sigma = 0x03c3;\n t.sigma1 = 0x03c2;\n t.sigmafinal = 0x03c2;\n t.sigmalunatesymbolgreek = 0x03f2;\n t.sihiragana = 0x3057;\n t.sikatakana = 0x30b7;\n t.sikatakanahalfwidth = 0xff7c;\n t.siluqhebrew = 0x05bd;\n t.siluqlefthebrew = 0x05bd;\n t.similar = 0x223c;\n t.sindothebrew = 0x05c2;\n t.siosacirclekorean = 0x3274;\n t.siosaparenkorean = 0x3214;\n t.sioscieuckorean = 0x317e;\n t.sioscirclekorean = 0x3266;\n t.sioskiyeokkorean = 0x317a;\n t.sioskorean = 0x3145;\n t.siosnieunkorean = 0x317b;\n t.siosparenkorean = 0x3206;\n t.siospieupkorean = 0x317d;\n t.siostikeutkorean = 0x317c;\n t.six = 0x0036;\n t.sixarabic = 0x0666;\n t.sixbengali = 0x09ec;\n t.sixcircle = 0x2465;\n t.sixcircleinversesansserif = 0x278f;\n t.sixdeva = 0x096c;\n t.sixgujarati = 0x0aec;\n t.sixgurmukhi = 0x0a6c;\n t.sixhackarabic = 0x0666;\n t.sixhangzhou = 0x3026;\n t.sixideographicparen = 0x3225;\n t.sixinferior = 0x2086;\n t.sixmonospace = 0xff16;\n t.sixoldstyle = 0xf736;\n t.sixparen = 0x2479;\n t.sixperiod = 0x248d;\n t.sixpersian = 0x06f6;\n t.sixroman = 0x2175;\n t.sixsuperior = 0x2076;\n t.sixteencircle = 0x246f;\n t.sixteencurrencydenominatorbengali = 0x09f9;\n t.sixteenparen = 0x2483;\n t.sixteenperiod = 0x2497;\n t.sixthai = 0x0e56;\n t.slash = 0x002f;\n t.slashmonospace = 0xff0f;\n t.slong = 0x017f;\n t.slongdotaccent = 0x1e9b;\n t.smileface = 0x263a;\n t.smonospace = 0xff53;\n t.sofpasuqhebrew = 0x05c3;\n t.softhyphen = 0x00ad;\n t.softsigncyrillic = 0x044c;\n t.sohiragana = 0x305d;\n t.sokatakana = 0x30bd;\n t.sokatakanahalfwidth = 0xff7f;\n t.soliduslongoverlaycmb = 0x0338;\n t.solidusshortoverlaycmb = 0x0337;\n t.sorusithai = 0x0e29;\n t.sosalathai = 0x0e28;\n t.sosothai = 0x0e0b;\n t.sosuathai = 0x0e2a;\n t.space = 0x0020;\n t.spacehackarabic = 0x0020;\n t.spade = 0x2660;\n t.spadesuitblack = 0x2660;\n t.spadesuitwhite = 0x2664;\n t.sparen = 0x24ae;\n t.squarebelowcmb = 0x033b;\n t.squarecc = 0x33c4;\n t.squarecm = 0x339d;\n t.squarediagonalcrosshatchfill = 0x25a9;\n t.squarehorizontalfill = 0x25a4;\n t.squarekg = 0x338f;\n t.squarekm = 0x339e;\n t.squarekmcapital = 0x33ce;\n t.squareln = 0x33d1;\n t.squarelog = 0x33d2;\n t.squaremg = 0x338e;\n t.squaremil = 0x33d5;\n t.squaremm = 0x339c;\n t.squaremsquared = 0x33a1;\n t.squareorthogonalcrosshatchfill = 0x25a6;\n t.squareupperlefttolowerrightfill = 0x25a7;\n t.squareupperrighttolowerleftfill = 0x25a8;\n t.squareverticalfill = 0x25a5;\n t.squarewhitewithsmallblack = 0x25a3;\n t.srsquare = 0x33db;\n t.ssabengali = 0x09b7;\n t.ssadeva = 0x0937;\n t.ssagujarati = 0x0ab7;\n t.ssangcieuckorean = 0x3149;\n t.ssanghieuhkorean = 0x3185;\n t.ssangieungkorean = 0x3180;\n t.ssangkiyeokkorean = 0x3132;\n t.ssangnieunkorean = 0x3165;\n t.ssangpieupkorean = 0x3143;\n t.ssangsioskorean = 0x3146;\n t.ssangtikeutkorean = 0x3138;\n t.ssuperior = 0xf6f2;\n t.sterling = 0x00a3;\n t.sterlingmonospace = 0xffe1;\n t.strokelongoverlaycmb = 0x0336;\n t.strokeshortoverlaycmb = 0x0335;\n t.subset = 0x2282;\n t.subsetnotequal = 0x228a;\n t.subsetorequal = 0x2286;\n t.succeeds = 0x227b;\n t.suchthat = 0x220b;\n t.suhiragana = 0x3059;\n t.sukatakana = 0x30b9;\n t.sukatakanahalfwidth = 0xff7d;\n t.sukunarabic = 0x0652;\n t.summation = 0x2211;\n t.sun = 0x263c;\n t.superset = 0x2283;\n t.supersetnotequal = 0x228b;\n t.supersetorequal = 0x2287;\n t.svsquare = 0x33dc;\n t.syouwaerasquare = 0x337c;\n t.t = 0x0074;\n t.tabengali = 0x09a4;\n t.tackdown = 0x22a4;\n t.tackleft = 0x22a3;\n t.tadeva = 0x0924;\n t.tagujarati = 0x0aa4;\n t.tagurmukhi = 0x0a24;\n t.taharabic = 0x0637;\n t.tahfinalarabic = 0xfec2;\n t.tahinitialarabic = 0xfec3;\n t.tahiragana = 0x305f;\n t.tahmedialarabic = 0xfec4;\n t.taisyouerasquare = 0x337d;\n t.takatakana = 0x30bf;\n t.takatakanahalfwidth = 0xff80;\n t.tatweelarabic = 0x0640;\n t.tau = 0x03c4;\n t.tav = 0x05ea;\n t.tavdages = 0xfb4a;\n t.tavdagesh = 0xfb4a;\n t.tavdageshhebrew = 0xfb4a;\n t.tavhebrew = 0x05ea;\n t.tbar = 0x0167;\n t.tbopomofo = 0x310a;\n t.tcaron = 0x0165;\n t.tccurl = 0x02a8;\n t.tcedilla = 0x0163;\n t.tcheharabic = 0x0686;\n t.tchehfinalarabic = 0xfb7b;\n t.tchehinitialarabic = 0xfb7c;\n t.tchehmedialarabic = 0xfb7d;\n t.tcircle = 0x24e3;\n t.tcircumflexbelow = 0x1e71;\n t.tcommaaccent = 0x0163;\n t.tdieresis = 0x1e97;\n t.tdotaccent = 0x1e6b;\n t.tdotbelow = 0x1e6d;\n t.tecyrillic = 0x0442;\n t.tedescendercyrillic = 0x04ad;\n t.teharabic = 0x062a;\n t.tehfinalarabic = 0xfe96;\n t.tehhahinitialarabic = 0xfca2;\n t.tehhahisolatedarabic = 0xfc0c;\n t.tehinitialarabic = 0xfe97;\n t.tehiragana = 0x3066;\n t.tehjeeminitialarabic = 0xfca1;\n t.tehjeemisolatedarabic = 0xfc0b;\n t.tehmarbutaarabic = 0x0629;\n t.tehmarbutafinalarabic = 0xfe94;\n t.tehmedialarabic = 0xfe98;\n t.tehmeeminitialarabic = 0xfca4;\n t.tehmeemisolatedarabic = 0xfc0e;\n t.tehnoonfinalarabic = 0xfc73;\n t.tekatakana = 0x30c6;\n t.tekatakanahalfwidth = 0xff83;\n t.telephone = 0x2121;\n t.telephoneblack = 0x260e;\n t.telishagedolahebrew = 0x05a0;\n t.telishaqetanahebrew = 0x05a9;\n t.tencircle = 0x2469;\n t.tenideographicparen = 0x3229;\n t.tenparen = 0x247d;\n t.tenperiod = 0x2491;\n t.tenroman = 0x2179;\n t.tesh = 0x02a7;\n t.tet = 0x05d8;\n t.tetdagesh = 0xfb38;\n t.tetdageshhebrew = 0xfb38;\n t.tethebrew = 0x05d8;\n t.tetsecyrillic = 0x04b5;\n t.tevirhebrew = 0x059b;\n t.tevirlefthebrew = 0x059b;\n t.thabengali = 0x09a5;\n t.thadeva = 0x0925;\n t.thagujarati = 0x0aa5;\n t.thagurmukhi = 0x0a25;\n t.thalarabic = 0x0630;\n t.thalfinalarabic = 0xfeac;\n t.thanthakhatlowleftthai = 0xf898;\n t.thanthakhatlowrightthai = 0xf897;\n t.thanthakhatthai = 0x0e4c;\n t.thanthakhatupperleftthai = 0xf896;\n t.theharabic = 0x062b;\n t.thehfinalarabic = 0xfe9a;\n t.thehinitialarabic = 0xfe9b;\n t.thehmedialarabic = 0xfe9c;\n t.thereexists = 0x2203;\n t.therefore = 0x2234;\n t.theta = 0x03b8;\n t.theta1 = 0x03d1;\n t.thetasymbolgreek = 0x03d1;\n t.thieuthacirclekorean = 0x3279;\n t.thieuthaparenkorean = 0x3219;\n t.thieuthcirclekorean = 0x326b;\n t.thieuthkorean = 0x314c;\n t.thieuthparenkorean = 0x320b;\n t.thirteencircle = 0x246c;\n t.thirteenparen = 0x2480;\n t.thirteenperiod = 0x2494;\n t.thonangmonthothai = 0x0e11;\n t.thook = 0x01ad;\n t.thophuthaothai = 0x0e12;\n t.thorn = 0x00fe;\n t.thothahanthai = 0x0e17;\n t.thothanthai = 0x0e10;\n t.thothongthai = 0x0e18;\n t.thothungthai = 0x0e16;\n t.thousandcyrillic = 0x0482;\n t.thousandsseparatorarabic = 0x066c;\n t.thousandsseparatorpersian = 0x066c;\n t.three = 0x0033;\n t.threearabic = 0x0663;\n t.threebengali = 0x09e9;\n t.threecircle = 0x2462;\n t.threecircleinversesansserif = 0x278c;\n t.threedeva = 0x0969;\n t.threeeighths = 0x215c;\n t.threegujarati = 0x0ae9;\n t.threegurmukhi = 0x0a69;\n t.threehackarabic = 0x0663;\n t.threehangzhou = 0x3023;\n t.threeideographicparen = 0x3222;\n t.threeinferior = 0x2083;\n t.threemonospace = 0xff13;\n t.threenumeratorbengali = 0x09f6;\n t.threeoldstyle = 0xf733;\n t.threeparen = 0x2476;\n t.threeperiod = 0x248a;\n t.threepersian = 0x06f3;\n t.threequarters = 0x00be;\n t.threequartersemdash = 0xf6de;\n t.threeroman = 0x2172;\n t.threesuperior = 0x00b3;\n t.threethai = 0x0e53;\n t.thzsquare = 0x3394;\n t.tihiragana = 0x3061;\n t.tikatakana = 0x30c1;\n t.tikatakanahalfwidth = 0xff81;\n t.tikeutacirclekorean = 0x3270;\n t.tikeutaparenkorean = 0x3210;\n t.tikeutcirclekorean = 0x3262;\n t.tikeutkorean = 0x3137;\n t.tikeutparenkorean = 0x3202;\n t.tilde = 0x02dc;\n t.tildebelowcmb = 0x0330;\n t.tildecmb = 0x0303;\n t.tildecomb = 0x0303;\n t.tildedoublecmb = 0x0360;\n t.tildeoperator = 0x223c;\n t.tildeoverlaycmb = 0x0334;\n t.tildeverticalcmb = 0x033e;\n t.timescircle = 0x2297;\n t.tipehahebrew = 0x0596;\n t.tipehalefthebrew = 0x0596;\n t.tippigurmukhi = 0x0a70;\n t.titlocyrilliccmb = 0x0483;\n t.tiwnarmenian = 0x057f;\n t.tlinebelow = 0x1e6f;\n t.tmonospace = 0xff54;\n t.toarmenian = 0x0569;\n t.tohiragana = 0x3068;\n t.tokatakana = 0x30c8;\n t.tokatakanahalfwidth = 0xff84;\n t.tonebarextrahighmod = 0x02e5;\n t.tonebarextralowmod = 0x02e9;\n t.tonebarhighmod = 0x02e6;\n t.tonebarlowmod = 0x02e8;\n t.tonebarmidmod = 0x02e7;\n t.tonefive = 0x01bd;\n t.tonesix = 0x0185;\n t.tonetwo = 0x01a8;\n t.tonos = 0x0384;\n t.tonsquare = 0x3327;\n t.topatakthai = 0x0e0f;\n t.tortoiseshellbracketleft = 0x3014;\n t.tortoiseshellbracketleftsmall = 0xfe5d;\n t.tortoiseshellbracketleftvertical = 0xfe39;\n t.tortoiseshellbracketright = 0x3015;\n t.tortoiseshellbracketrightsmall = 0xfe5e;\n t.tortoiseshellbracketrightvertical = 0xfe3a;\n t.totaothai = 0x0e15;\n t.tpalatalhook = 0x01ab;\n t.tparen = 0x24af;\n t.trademark = 0x2122;\n t.trademarksans = 0xf8ea;\n t.trademarkserif = 0xf6db;\n t.tretroflexhook = 0x0288;\n t.triagdn = 0x25bc;\n t.triaglf = 0x25c4;\n t.triagrt = 0x25ba;\n t.triagup = 0x25b2;\n t.ts = 0x02a6;\n t.tsadi = 0x05e6;\n t.tsadidagesh = 0xfb46;\n t.tsadidageshhebrew = 0xfb46;\n t.tsadihebrew = 0x05e6;\n t.tsecyrillic = 0x0446;\n t.tsere = 0x05b5;\n t.tsere12 = 0x05b5;\n t.tsere1e = 0x05b5;\n t.tsere2b = 0x05b5;\n t.tserehebrew = 0x05b5;\n t.tserenarrowhebrew = 0x05b5;\n t.tserequarterhebrew = 0x05b5;\n t.tserewidehebrew = 0x05b5;\n t.tshecyrillic = 0x045b;\n t.tsuperior = 0xf6f3;\n t.ttabengali = 0x099f;\n t.ttadeva = 0x091f;\n t.ttagujarati = 0x0a9f;\n t.ttagurmukhi = 0x0a1f;\n t.tteharabic = 0x0679;\n t.ttehfinalarabic = 0xfb67;\n t.ttehinitialarabic = 0xfb68;\n t.ttehmedialarabic = 0xfb69;\n t.tthabengali = 0x09a0;\n t.tthadeva = 0x0920;\n t.tthagujarati = 0x0aa0;\n t.tthagurmukhi = 0x0a20;\n t.tturned = 0x0287;\n t.tuhiragana = 0x3064;\n t.tukatakana = 0x30c4;\n t.tukatakanahalfwidth = 0xff82;\n t.tusmallhiragana = 0x3063;\n t.tusmallkatakana = 0x30c3;\n t.tusmallkatakanahalfwidth = 0xff6f;\n t.twelvecircle = 0x246b;\n t.twelveparen = 0x247f;\n t.twelveperiod = 0x2493;\n t.twelveroman = 0x217b;\n t.twentycircle = 0x2473;\n t.twentyhangzhou = 0x5344;\n t.twentyparen = 0x2487;\n t.twentyperiod = 0x249b;\n t.two = 0x0032;\n t.twoarabic = 0x0662;\n t.twobengali = 0x09e8;\n t.twocircle = 0x2461;\n t.twocircleinversesansserif = 0x278b;\n t.twodeva = 0x0968;\n t.twodotenleader = 0x2025;\n t.twodotleader = 0x2025;\n t.twodotleadervertical = 0xfe30;\n t.twogujarati = 0x0ae8;\n t.twogurmukhi = 0x0a68;\n t.twohackarabic = 0x0662;\n t.twohangzhou = 0x3022;\n t.twoideographicparen = 0x3221;\n t.twoinferior = 0x2082;\n t.twomonospace = 0xff12;\n t.twonumeratorbengali = 0x09f5;\n t.twooldstyle = 0xf732;\n t.twoparen = 0x2475;\n t.twoperiod = 0x2489;\n t.twopersian = 0x06f2;\n t.tworoman = 0x2171;\n t.twostroke = 0x01bb;\n t.twosuperior = 0x00b2;\n t.twothai = 0x0e52;\n t.twothirds = 0x2154;\n t.u = 0x0075;\n t.uacute = 0x00fa;\n t.ubar = 0x0289;\n t.ubengali = 0x0989;\n t.ubopomofo = 0x3128;\n t.ubreve = 0x016d;\n t.ucaron = 0x01d4;\n t.ucircle = 0x24e4;\n t.ucircumflex = 0x00fb;\n t.ucircumflexbelow = 0x1e77;\n t.ucyrillic = 0x0443;\n t.udattadeva = 0x0951;\n t.udblacute = 0x0171;\n t.udblgrave = 0x0215;\n t.udeva = 0x0909;\n t.udieresis = 0x00fc;\n t.udieresisacute = 0x01d8;\n t.udieresisbelow = 0x1e73;\n t.udieresiscaron = 0x01da;\n t.udieresiscyrillic = 0x04f1;\n t.udieresisgrave = 0x01dc;\n t.udieresismacron = 0x01d6;\n t.udotbelow = 0x1ee5;\n t.ugrave = 0x00f9;\n t.ugujarati = 0x0a89;\n t.ugurmukhi = 0x0a09;\n t.uhiragana = 0x3046;\n t.uhookabove = 0x1ee7;\n t.uhorn = 0x01b0;\n t.uhornacute = 0x1ee9;\n t.uhorndotbelow = 0x1ef1;\n t.uhorngrave = 0x1eeb;\n t.uhornhookabove = 0x1eed;\n t.uhorntilde = 0x1eef;\n t.uhungarumlaut = 0x0171;\n t.uhungarumlautcyrillic = 0x04f3;\n t.uinvertedbreve = 0x0217;\n t.ukatakana = 0x30a6;\n t.ukatakanahalfwidth = 0xff73;\n t.ukcyrillic = 0x0479;\n t.ukorean = 0x315c;\n t.umacron = 0x016b;\n t.umacroncyrillic = 0x04ef;\n t.umacrondieresis = 0x1e7b;\n t.umatragurmukhi = 0x0a41;\n t.umonospace = 0xff55;\n t.underscore = 0x005f;\n t.underscoredbl = 0x2017;\n t.underscoremonospace = 0xff3f;\n t.underscorevertical = 0xfe33;\n t.underscorewavy = 0xfe4f;\n t.union = 0x222a;\n t.universal = 0x2200;\n t.uogonek = 0x0173;\n t.uparen = 0x24b0;\n t.upblock = 0x2580;\n t.upperdothebrew = 0x05c4;\n t.upsilon = 0x03c5;\n t.upsilondieresis = 0x03cb;\n t.upsilondieresistonos = 0x03b0;\n t.upsilonlatin = 0x028a;\n t.upsilontonos = 0x03cd;\n t.uptackbelowcmb = 0x031d;\n t.uptackmod = 0x02d4;\n t.uragurmukhi = 0x0a73;\n t.uring = 0x016f;\n t.ushortcyrillic = 0x045e;\n t.usmallhiragana = 0x3045;\n t.usmallkatakana = 0x30a5;\n t.usmallkatakanahalfwidth = 0xff69;\n t.ustraightcyrillic = 0x04af;\n t.ustraightstrokecyrillic = 0x04b1;\n t.utilde = 0x0169;\n t.utildeacute = 0x1e79;\n t.utildebelow = 0x1e75;\n t.uubengali = 0x098a;\n t.uudeva = 0x090a;\n t.uugujarati = 0x0a8a;\n t.uugurmukhi = 0x0a0a;\n t.uumatragurmukhi = 0x0a42;\n t.uuvowelsignbengali = 0x09c2;\n t.uuvowelsigndeva = 0x0942;\n t.uuvowelsigngujarati = 0x0ac2;\n t.uvowelsignbengali = 0x09c1;\n t.uvowelsigndeva = 0x0941;\n t.uvowelsigngujarati = 0x0ac1;\n t.v = 0x0076;\n t.vadeva = 0x0935;\n t.vagujarati = 0x0ab5;\n t.vagurmukhi = 0x0a35;\n t.vakatakana = 0x30f7;\n t.vav = 0x05d5;\n t.vavdagesh = 0xfb35;\n t.vavdagesh65 = 0xfb35;\n t.vavdageshhebrew = 0xfb35;\n t.vavhebrew = 0x05d5;\n t.vavholam = 0xfb4b;\n t.vavholamhebrew = 0xfb4b;\n t.vavvavhebrew = 0x05f0;\n t.vavyodhebrew = 0x05f1;\n t.vcircle = 0x24e5;\n t.vdotbelow = 0x1e7f;\n t.vecyrillic = 0x0432;\n t.veharabic = 0x06a4;\n t.vehfinalarabic = 0xfb6b;\n t.vehinitialarabic = 0xfb6c;\n t.vehmedialarabic = 0xfb6d;\n t.vekatakana = 0x30f9;\n t.venus = 0x2640;\n t.verticalbar = 0x007c;\n t.verticallineabovecmb = 0x030d;\n t.verticallinebelowcmb = 0x0329;\n t.verticallinelowmod = 0x02cc;\n t.verticallinemod = 0x02c8;\n t.vewarmenian = 0x057e;\n t.vhook = 0x028b;\n t.vikatakana = 0x30f8;\n t.viramabengali = 0x09cd;\n t.viramadeva = 0x094d;\n t.viramagujarati = 0x0acd;\n t.visargabengali = 0x0983;\n t.visargadeva = 0x0903;\n t.visargagujarati = 0x0a83;\n t.vmonospace = 0xff56;\n t.voarmenian = 0x0578;\n t.voicediterationhiragana = 0x309e;\n t.voicediterationkatakana = 0x30fe;\n t.voicedmarkkana = 0x309b;\n t.voicedmarkkanahalfwidth = 0xff9e;\n t.vokatakana = 0x30fa;\n t.vparen = 0x24b1;\n t.vtilde = 0x1e7d;\n t.vturned = 0x028c;\n t.vuhiragana = 0x3094;\n t.vukatakana = 0x30f4;\n t.w = 0x0077;\n t.wacute = 0x1e83;\n t.waekorean = 0x3159;\n t.wahiragana = 0x308f;\n t.wakatakana = 0x30ef;\n t.wakatakanahalfwidth = 0xff9c;\n t.wakorean = 0x3158;\n t.wasmallhiragana = 0x308e;\n t.wasmallkatakana = 0x30ee;\n t.wattosquare = 0x3357;\n t.wavedash = 0x301c;\n t.wavyunderscorevertical = 0xfe34;\n t.wawarabic = 0x0648;\n t.wawfinalarabic = 0xfeee;\n t.wawhamzaabovearabic = 0x0624;\n t.wawhamzaabovefinalarabic = 0xfe86;\n t.wbsquare = 0x33dd;\n t.wcircle = 0x24e6;\n t.wcircumflex = 0x0175;\n t.wdieresis = 0x1e85;\n t.wdotaccent = 0x1e87;\n t.wdotbelow = 0x1e89;\n t.wehiragana = 0x3091;\n t.weierstrass = 0x2118;\n t.wekatakana = 0x30f1;\n t.wekorean = 0x315e;\n t.weokorean = 0x315d;\n t.wgrave = 0x1e81;\n t.whitebullet = 0x25e6;\n t.whitecircle = 0x25cb;\n t.whitecircleinverse = 0x25d9;\n t.whitecornerbracketleft = 0x300e;\n t.whitecornerbracketleftvertical = 0xfe43;\n t.whitecornerbracketright = 0x300f;\n t.whitecornerbracketrightvertical = 0xfe44;\n t.whitediamond = 0x25c7;\n t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n t.whitedownpointingsmalltriangle = 0x25bf;\n t.whitedownpointingtriangle = 0x25bd;\n t.whiteleftpointingsmalltriangle = 0x25c3;\n t.whiteleftpointingtriangle = 0x25c1;\n t.whitelenticularbracketleft = 0x3016;\n t.whitelenticularbracketright = 0x3017;\n t.whiterightpointingsmalltriangle = 0x25b9;\n t.whiterightpointingtriangle = 0x25b7;\n t.whitesmallsquare = 0x25ab;\n t.whitesmilingface = 0x263a;\n t.whitesquare = 0x25a1;\n t.whitestar = 0x2606;\n t.whitetelephone = 0x260f;\n t.whitetortoiseshellbracketleft = 0x3018;\n t.whitetortoiseshellbracketright = 0x3019;\n t.whiteuppointingsmalltriangle = 0x25b5;\n t.whiteuppointingtriangle = 0x25b3;\n t.wihiragana = 0x3090;\n t.wikatakana = 0x30f0;\n t.wikorean = 0x315f;\n t.wmonospace = 0xff57;\n t.wohiragana = 0x3092;\n t.wokatakana = 0x30f2;\n t.wokatakanahalfwidth = 0xff66;\n t.won = 0x20a9;\n t.wonmonospace = 0xffe6;\n t.wowaenthai = 0x0e27;\n t.wparen = 0x24b2;\n t.wring = 0x1e98;\n t.wsuperior = 0x02b7;\n t.wturned = 0x028d;\n t.wynn = 0x01bf;\n t.x = 0x0078;\n t.xabovecmb = 0x033d;\n t.xbopomofo = 0x3112;\n t.xcircle = 0x24e7;\n t.xdieresis = 0x1e8d;\n t.xdotaccent = 0x1e8b;\n t.xeharmenian = 0x056d;\n t.xi = 0x03be;\n t.xmonospace = 0xff58;\n t.xparen = 0x24b3;\n t.xsuperior = 0x02e3;\n t.y = 0x0079;\n t.yaadosquare = 0x334e;\n t.yabengali = 0x09af;\n t.yacute = 0x00fd;\n t.yadeva = 0x092f;\n t.yaekorean = 0x3152;\n t.yagujarati = 0x0aaf;\n t.yagurmukhi = 0x0a2f;\n t.yahiragana = 0x3084;\n t.yakatakana = 0x30e4;\n t.yakatakanahalfwidth = 0xff94;\n t.yakorean = 0x3151;\n t.yamakkanthai = 0x0e4e;\n t.yasmallhiragana = 0x3083;\n t.yasmallkatakana = 0x30e3;\n t.yasmallkatakanahalfwidth = 0xff6c;\n t.yatcyrillic = 0x0463;\n t.ycircle = 0x24e8;\n t.ycircumflex = 0x0177;\n t.ydieresis = 0x00ff;\n t.ydotaccent = 0x1e8f;\n t.ydotbelow = 0x1ef5;\n t.yeharabic = 0x064a;\n t.yehbarreearabic = 0x06d2;\n t.yehbarreefinalarabic = 0xfbaf;\n t.yehfinalarabic = 0xfef2;\n t.yehhamzaabovearabic = 0x0626;\n t.yehhamzaabovefinalarabic = 0xfe8a;\n t.yehhamzaaboveinitialarabic = 0xfe8b;\n t.yehhamzaabovemedialarabic = 0xfe8c;\n t.yehinitialarabic = 0xfef3;\n t.yehmedialarabic = 0xfef4;\n t.yehmeeminitialarabic = 0xfcdd;\n t.yehmeemisolatedarabic = 0xfc58;\n t.yehnoonfinalarabic = 0xfc94;\n t.yehthreedotsbelowarabic = 0x06d1;\n t.yekorean = 0x3156;\n t.yen = 0x00a5;\n t.yenmonospace = 0xffe5;\n t.yeokorean = 0x3155;\n t.yeorinhieuhkorean = 0x3186;\n t.yerahbenyomohebrew = 0x05aa;\n t.yerahbenyomolefthebrew = 0x05aa;\n t.yericyrillic = 0x044b;\n t.yerudieresiscyrillic = 0x04f9;\n t.yesieungkorean = 0x3181;\n t.yesieungpansioskorean = 0x3183;\n t.yesieungsioskorean = 0x3182;\n t.yetivhebrew = 0x059a;\n t.ygrave = 0x1ef3;\n t.yhook = 0x01b4;\n t.yhookabove = 0x1ef7;\n t.yiarmenian = 0x0575;\n t.yicyrillic = 0x0457;\n t.yikorean = 0x3162;\n t.yinyang = 0x262f;\n t.yiwnarmenian = 0x0582;\n t.ymonospace = 0xff59;\n t.yod = 0x05d9;\n t.yoddagesh = 0xfb39;\n t.yoddageshhebrew = 0xfb39;\n t.yodhebrew = 0x05d9;\n t.yodyodhebrew = 0x05f2;\n t.yodyodpatahhebrew = 0xfb1f;\n t.yohiragana = 0x3088;\n t.yoikorean = 0x3189;\n t.yokatakana = 0x30e8;\n t.yokatakanahalfwidth = 0xff96;\n t.yokorean = 0x315b;\n t.yosmallhiragana = 0x3087;\n t.yosmallkatakana = 0x30e7;\n t.yosmallkatakanahalfwidth = 0xff6e;\n t.yotgreek = 0x03f3;\n t.yoyaekorean = 0x3188;\n t.yoyakorean = 0x3187;\n t.yoyakthai = 0x0e22;\n t.yoyingthai = 0x0e0d;\n t.yparen = 0x24b4;\n t.ypogegrammeni = 0x037a;\n t.ypogegrammenigreekcmb = 0x0345;\n t.yr = 0x01a6;\n t.yring = 0x1e99;\n t.ysuperior = 0x02b8;\n t.ytilde = 0x1ef9;\n t.yturned = 0x028e;\n t.yuhiragana = 0x3086;\n t.yuikorean = 0x318c;\n t.yukatakana = 0x30e6;\n t.yukatakanahalfwidth = 0xff95;\n t.yukorean = 0x3160;\n t.yusbigcyrillic = 0x046b;\n t.yusbigiotifiedcyrillic = 0x046d;\n t.yuslittlecyrillic = 0x0467;\n t.yuslittleiotifiedcyrillic = 0x0469;\n t.yusmallhiragana = 0x3085;\n t.yusmallkatakana = 0x30e5;\n t.yusmallkatakanahalfwidth = 0xff6d;\n t.yuyekorean = 0x318b;\n t.yuyeokorean = 0x318a;\n t.yyabengali = 0x09df;\n t.yyadeva = 0x095f;\n t.z = 0x007a;\n t.zaarmenian = 0x0566;\n t.zacute = 0x017a;\n t.zadeva = 0x095b;\n t.zagurmukhi = 0x0a5b;\n t.zaharabic = 0x0638;\n t.zahfinalarabic = 0xfec6;\n t.zahinitialarabic = 0xfec7;\n t.zahiragana = 0x3056;\n t.zahmedialarabic = 0xfec8;\n t.zainarabic = 0x0632;\n t.zainfinalarabic = 0xfeb0;\n t.zakatakana = 0x30b6;\n t.zaqefgadolhebrew = 0x0595;\n t.zaqefqatanhebrew = 0x0594;\n t.zarqahebrew = 0x0598;\n t.zayin = 0x05d6;\n t.zayindagesh = 0xfb36;\n t.zayindageshhebrew = 0xfb36;\n t.zayinhebrew = 0x05d6;\n t.zbopomofo = 0x3117;\n t.zcaron = 0x017e;\n t.zcircle = 0x24e9;\n t.zcircumflex = 0x1e91;\n t.zcurl = 0x0291;\n t.zdot = 0x017c;\n t.zdotaccent = 0x017c;\n t.zdotbelow = 0x1e93;\n t.zecyrillic = 0x0437;\n t.zedescendercyrillic = 0x0499;\n t.zedieresiscyrillic = 0x04df;\n t.zehiragana = 0x305c;\n t.zekatakana = 0x30bc;\n t.zero = 0x0030;\n t.zeroarabic = 0x0660;\n t.zerobengali = 0x09e6;\n t.zerodeva = 0x0966;\n t.zerogujarati = 0x0ae6;\n t.zerogurmukhi = 0x0a66;\n t.zerohackarabic = 0x0660;\n t.zeroinferior = 0x2080;\n t.zeromonospace = 0xff10;\n t.zerooldstyle = 0xf730;\n t.zeropersian = 0x06f0;\n t.zerosuperior = 0x2070;\n t.zerothai = 0x0e50;\n t.zerowidthjoiner = 0xfeff;\n t.zerowidthnonjoiner = 0x200c;\n t.zerowidthspace = 0x200b;\n t.zeta = 0x03b6;\n t.zhbopomofo = 0x3113;\n t.zhearmenian = 0x056a;\n t.zhebrevecyrillic = 0x04c2;\n t.zhecyrillic = 0x0436;\n t.zhedescendercyrillic = 0x0497;\n t.zhedieresiscyrillic = 0x04dd;\n t.zihiragana = 0x3058;\n t.zikatakana = 0x30b8;\n t.zinorhebrew = 0x05ae;\n t.zlinebelow = 0x1e95;\n t.zmonospace = 0xff5a;\n t.zohiragana = 0x305e;\n t.zokatakana = 0x30be;\n t.zparen = 0x24b5;\n t.zretroflexhook = 0x0290;\n t.zstroke = 0x01b6;\n t.zuhiragana = 0x305a;\n t.zukatakana = 0x30ba;\n t[\".notdef\"] = 0x0000;\n t.angbracketleftbig = 0x2329;\n t.angbracketleftBig = 0x2329;\n t.angbracketleftbigg = 0x2329;\n t.angbracketleftBigg = 0x2329;\n t.angbracketrightBig = 0x232a;\n t.angbracketrightbig = 0x232a;\n t.angbracketrightBigg = 0x232a;\n t.angbracketrightbigg = 0x232a;\n t.arrowhookleft = 0x21aa;\n t.arrowhookright = 0x21a9;\n t.arrowlefttophalf = 0x21bc;\n t.arrowleftbothalf = 0x21bd;\n t.arrownortheast = 0x2197;\n t.arrownorthwest = 0x2196;\n t.arrowrighttophalf = 0x21c0;\n t.arrowrightbothalf = 0x21c1;\n t.arrowsoutheast = 0x2198;\n t.arrowsouthwest = 0x2199;\n t.backslashbig = 0x2216;\n t.backslashBig = 0x2216;\n t.backslashBigg = 0x2216;\n t.backslashbigg = 0x2216;\n t.bardbl = 0x2016;\n t.bracehtipdownleft = 0xfe37;\n t.bracehtipdownright = 0xfe37;\n t.bracehtipupleft = 0xfe38;\n t.bracehtipupright = 0xfe38;\n t.braceleftBig = 0x007b;\n t.braceleftbig = 0x007b;\n t.braceleftbigg = 0x007b;\n t.braceleftBigg = 0x007b;\n t.bracerightBig = 0x007d;\n t.bracerightbig = 0x007d;\n t.bracerightbigg = 0x007d;\n t.bracerightBigg = 0x007d;\n t.bracketleftbig = 0x005b;\n t.bracketleftBig = 0x005b;\n t.bracketleftbigg = 0x005b;\n t.bracketleftBigg = 0x005b;\n t.bracketrightBig = 0x005d;\n t.bracketrightbig = 0x005d;\n t.bracketrightbigg = 0x005d;\n t.bracketrightBigg = 0x005d;\n t.ceilingleftbig = 0x2308;\n t.ceilingleftBig = 0x2308;\n t.ceilingleftBigg = 0x2308;\n t.ceilingleftbigg = 0x2308;\n t.ceilingrightbig = 0x2309;\n t.ceilingrightBig = 0x2309;\n t.ceilingrightbigg = 0x2309;\n t.ceilingrightBigg = 0x2309;\n t.circledotdisplay = 0x2299;\n t.circledottext = 0x2299;\n t.circlemultiplydisplay = 0x2297;\n t.circlemultiplytext = 0x2297;\n t.circleplusdisplay = 0x2295;\n t.circleplustext = 0x2295;\n t.contintegraldisplay = 0x222e;\n t.contintegraltext = 0x222e;\n t.coproductdisplay = 0x2210;\n t.coproducttext = 0x2210;\n t.floorleftBig = 0x230a;\n t.floorleftbig = 0x230a;\n t.floorleftbigg = 0x230a;\n t.floorleftBigg = 0x230a;\n t.floorrightbig = 0x230b;\n t.floorrightBig = 0x230b;\n t.floorrightBigg = 0x230b;\n t.floorrightbigg = 0x230b;\n t.hatwide = 0x0302;\n t.hatwider = 0x0302;\n t.hatwidest = 0x0302;\n t.intercal = 0x1d40;\n t.integraldisplay = 0x222b;\n t.integraltext = 0x222b;\n t.intersectiondisplay = 0x22c2;\n t.intersectiontext = 0x22c2;\n t.logicalanddisplay = 0x2227;\n t.logicalandtext = 0x2227;\n t.logicalordisplay = 0x2228;\n t.logicalortext = 0x2228;\n t.parenleftBig = 0x0028;\n t.parenleftbig = 0x0028;\n t.parenleftBigg = 0x0028;\n t.parenleftbigg = 0x0028;\n t.parenrightBig = 0x0029;\n t.parenrightbig = 0x0029;\n t.parenrightBigg = 0x0029;\n t.parenrightbigg = 0x0029;\n t.prime = 0x2032;\n t.productdisplay = 0x220f;\n t.producttext = 0x220f;\n t.radicalbig = 0x221a;\n t.radicalBig = 0x221a;\n t.radicalBigg = 0x221a;\n t.radicalbigg = 0x221a;\n t.radicalbt = 0x221a;\n t.radicaltp = 0x221a;\n t.radicalvertex = 0x221a;\n t.slashbig = 0x002f;\n t.slashBig = 0x002f;\n t.slashBigg = 0x002f;\n t.slashbigg = 0x002f;\n t.summationdisplay = 0x2211;\n t.summationtext = 0x2211;\n t.tildewide = 0x02dc;\n t.tildewider = 0x02dc;\n t.tildewidest = 0x02dc;\n t.uniondisplay = 0x22c3;\n t.unionmultidisplay = 0x228e;\n t.unionmultitext = 0x228e;\n t.unionsqdisplay = 0x2294;\n t.unionsqtext = 0x2294;\n t.uniontext = 0x22c3;\n t.vextenddouble = 0x2225;\n t.vextendsingle = 0x2223;\n});\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t.space = 0x0020;\n t.a1 = 0x2701;\n t.a2 = 0x2702;\n t.a202 = 0x2703;\n t.a3 = 0x2704;\n t.a4 = 0x260e;\n t.a5 = 0x2706;\n t.a119 = 0x2707;\n t.a118 = 0x2708;\n t.a117 = 0x2709;\n t.a11 = 0x261b;\n t.a12 = 0x261e;\n t.a13 = 0x270c;\n t.a14 = 0x270d;\n t.a15 = 0x270e;\n t.a16 = 0x270f;\n t.a105 = 0x2710;\n t.a17 = 0x2711;\n t.a18 = 0x2712;\n t.a19 = 0x2713;\n t.a20 = 0x2714;\n t.a21 = 0x2715;\n t.a22 = 0x2716;\n t.a23 = 0x2717;\n t.a24 = 0x2718;\n t.a25 = 0x2719;\n t.a26 = 0x271a;\n t.a27 = 0x271b;\n t.a28 = 0x271c;\n t.a6 = 0x271d;\n t.a7 = 0x271e;\n t.a8 = 0x271f;\n t.a9 = 0x2720;\n t.a10 = 0x2721;\n t.a29 = 0x2722;\n t.a30 = 0x2723;\n t.a31 = 0x2724;\n t.a32 = 0x2725;\n t.a33 = 0x2726;\n t.a34 = 0x2727;\n t.a35 = 0x2605;\n t.a36 = 0x2729;\n t.a37 = 0x272a;\n t.a38 = 0x272b;\n t.a39 = 0x272c;\n t.a40 = 0x272d;\n t.a41 = 0x272e;\n t.a42 = 0x272f;\n t.a43 = 0x2730;\n t.a44 = 0x2731;\n t.a45 = 0x2732;\n t.a46 = 0x2733;\n t.a47 = 0x2734;\n t.a48 = 0x2735;\n t.a49 = 0x2736;\n t.a50 = 0x2737;\n t.a51 = 0x2738;\n t.a52 = 0x2739;\n t.a53 = 0x273a;\n t.a54 = 0x273b;\n t.a55 = 0x273c;\n t.a56 = 0x273d;\n t.a57 = 0x273e;\n t.a58 = 0x273f;\n t.a59 = 0x2740;\n t.a60 = 0x2741;\n t.a61 = 0x2742;\n t.a62 = 0x2743;\n t.a63 = 0x2744;\n t.a64 = 0x2745;\n t.a65 = 0x2746;\n t.a66 = 0x2747;\n t.a67 = 0x2748;\n t.a68 = 0x2749;\n t.a69 = 0x274a;\n t.a70 = 0x274b;\n t.a71 = 0x25cf;\n t.a72 = 0x274d;\n t.a73 = 0x25a0;\n t.a74 = 0x274f;\n t.a203 = 0x2750;\n t.a75 = 0x2751;\n t.a204 = 0x2752;\n t.a76 = 0x25b2;\n t.a77 = 0x25bc;\n t.a78 = 0x25c6;\n t.a79 = 0x2756;\n t.a81 = 0x25d7;\n t.a82 = 0x2758;\n t.a83 = 0x2759;\n t.a84 = 0x275a;\n t.a97 = 0x275b;\n t.a98 = 0x275c;\n t.a99 = 0x275d;\n t.a100 = 0x275e;\n t.a101 = 0x2761;\n t.a102 = 0x2762;\n t.a103 = 0x2763;\n t.a104 = 0x2764;\n t.a106 = 0x2765;\n t.a107 = 0x2766;\n t.a108 = 0x2767;\n t.a112 = 0x2663;\n t.a111 = 0x2666;\n t.a110 = 0x2665;\n t.a109 = 0x2660;\n t.a120 = 0x2460;\n t.a121 = 0x2461;\n t.a122 = 0x2462;\n t.a123 = 0x2463;\n t.a124 = 0x2464;\n t.a125 = 0x2465;\n t.a126 = 0x2466;\n t.a127 = 0x2467;\n t.a128 = 0x2468;\n t.a129 = 0x2469;\n t.a130 = 0x2776;\n t.a131 = 0x2777;\n t.a132 = 0x2778;\n t.a133 = 0x2779;\n t.a134 = 0x277a;\n t.a135 = 0x277b;\n t.a136 = 0x277c;\n t.a137 = 0x277d;\n t.a138 = 0x277e;\n t.a139 = 0x277f;\n t.a140 = 0x2780;\n t.a141 = 0x2781;\n t.a142 = 0x2782;\n t.a143 = 0x2783;\n t.a144 = 0x2784;\n t.a145 = 0x2785;\n t.a146 = 0x2786;\n t.a147 = 0x2787;\n t.a148 = 0x2788;\n t.a149 = 0x2789;\n t.a150 = 0x278a;\n t.a151 = 0x278b;\n t.a152 = 0x278c;\n t.a153 = 0x278d;\n t.a154 = 0x278e;\n t.a155 = 0x278f;\n t.a156 = 0x2790;\n t.a157 = 0x2791;\n t.a158 = 0x2792;\n t.a159 = 0x2793;\n t.a160 = 0x2794;\n t.a161 = 0x2192;\n t.a163 = 0x2194;\n t.a164 = 0x2195;\n t.a196 = 0x2798;\n t.a165 = 0x2799;\n t.a192 = 0x279a;\n t.a166 = 0x279b;\n t.a167 = 0x279c;\n t.a168 = 0x279d;\n t.a169 = 0x279e;\n t.a170 = 0x279f;\n t.a171 = 0x27a0;\n t.a172 = 0x27a1;\n t.a173 = 0x27a2;\n t.a162 = 0x27a3;\n t.a174 = 0x27a4;\n t.a175 = 0x27a5;\n t.a176 = 0x27a6;\n t.a177 = 0x27a7;\n t.a178 = 0x27a8;\n t.a179 = 0x27a9;\n t.a193 = 0x27aa;\n t.a180 = 0x27ab;\n t.a199 = 0x27ac;\n t.a181 = 0x27ad;\n t.a200 = 0x27ae;\n t.a182 = 0x27af;\n t.a201 = 0x27b1;\n t.a183 = 0x27b2;\n t.a184 = 0x27b3;\n t.a197 = 0x27b4;\n t.a185 = 0x27b5;\n t.a194 = 0x27b6;\n t.a198 = 0x27b7;\n t.a186 = 0x27b8;\n t.a195 = 0x27b9;\n t.a187 = 0x27ba;\n t.a188 = 0x27bb;\n t.a189 = 0x27bc;\n t.a190 = 0x27bd;\n t.a191 = 0x27be;\n t.a89 = 0x2768;\n t.a90 = 0x2769;\n t.a93 = 0x276a;\n t.a94 = 0x276b;\n t.a91 = 0x276c;\n t.a92 = 0x276d;\n t.a205 = 0x276e;\n t.a85 = 0x276f;\n t.a206 = 0x2770;\n t.a86 = 0x2771;\n t.a87 = 0x2772;\n t.a88 = 0x2773;\n t.a95 = 0x2774;\n t.a96 = 0x2775;\n t[\".notdef\"] = 0x0000;\n});\n\n;// ./src/core/unicode.js\n\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63718] = 0x23d0;\n t[63719] = 0x23af;\n t[63733] = 0x23ae;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n return 0x002d;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\nconst UnicodeRanges = [[0x0000, 0x007f], [0x0080, 0x00ff], [0x0100, 0x017f], [0x0180, 0x024f], [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], [0x02b0, 0x02ff, 0xa700, 0xa71f], [0x0300, 0x036f, 0x1dc0, 0x1dff], [0x0370, 0x03ff], [0x2c80, 0x2cff], [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], [0x0530, 0x058f], [0x0590, 0x05ff], [0xa500, 0xa63f], [0x0600, 0x06ff, 0x0750, 0x077f], [0x07c0, 0x07ff], [0x0900, 0x097f], [0x0980, 0x09ff], [0x0a00, 0x0a7f], [0x0a80, 0x0aff], [0x0b00, 0x0b7f], [0x0b80, 0x0bff], [0x0c00, 0x0c7f], [0x0c80, 0x0cff], [0x0d00, 0x0d7f], [0x0e00, 0x0e7f], [0x0e80, 0x0eff], [0x10a0, 0x10ff, 0x2d00, 0x2d2f], [0x1b00, 0x1b7f], [0x1100, 0x11ff], [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], [0x1f00, 0x1fff], [0x2000, 0x206f, 0x2e00, 0x2e7f], [0x2070, 0x209f], [0x20a0, 0x20cf], [0x20d0, 0x20ff], [0x2100, 0x214f], [0x2150, 0x218f], [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], [0x2300, 0x23ff], [0x2400, 0x243f], [0x2440, 0x245f], [0x2460, 0x24ff], [0x2500, 0x257f], [0x2580, 0x259f], [0x25a0, 0x25ff], [0x2600, 0x26ff], [0x2700, 0x27bf], [0x3000, 0x303f], [0x3040, 0x309f], [0x30a0, 0x30ff, 0x31f0, 0x31ff], [0x3100, 0x312f, 0x31a0, 0x31bf], [0x3130, 0x318f], [0xa840, 0xa87f], [0x3200, 0x32ff], [0x3300, 0x33ff], [0xac00, 0xd7af], [0xd800, 0xdfff], [0x10900, 0x1091f], [0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400, 0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f], [0xe000, 0xf8ff], [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], [0xfb00, 0xfb4f], [0xfb50, 0xfdff], [0xfe20, 0xfe2f], [0xfe10, 0xfe1f], [0xfe50, 0xfe6f], [0xfe70, 0xfeff], [0xff00, 0xffef], [0xfff0, 0xffff], [0x0f00, 0x0fff], [0x0700, 0x074f], [0x0780, 0x07bf], [0x0d80, 0x0dff], [0x1000, 0x109f], [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], [0x13a0, 0x13ff], [0x1400, 0x167f], [0x1680, 0x169f], [0x16a0, 0x16ff], [0x1780, 0x17ff], [0x1800, 0x18af], [0x2800, 0x28ff], [0xa000, 0xa48f], [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], [0x10300, 0x1032f], [0x10330, 0x1034f], [0x10400, 0x1044f], [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], [0x1d400, 0x1d7ff], [0xff000, 0xffffd], [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], [0xe0000, 0xe007f], [0x1900, 0x194f], [0x1950, 0x197f], [0x1980, 0x19df], [0x1a00, 0x1a1f], [0x2c00, 0x2c5f], [0x2d30, 0x2d7f], [0x4dc0, 0x4dff], [0xa800, 0xa82f], [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], [0x10140, 0x1018f], [0x10380, 0x1039f], [0x103a0, 0x103df], [0x10450, 0x1047f], [0x10480, 0x104af], [0x10800, 0x1083f], [0x10a00, 0x10a5f], [0x1d300, 0x1d35f], [0x12000, 0x123ff, 0x12400, 0x1247f], [0x1d360, 0x1d37f], [0x1b80, 0x1bbf], [0x1c00, 0x1c4f], [0x1c50, 0x1c7f], [0xa880, 0xa8df], [0xa900, 0xa92f], [0xa930, 0xa95f], [0xaa00, 0xaa5f], [0x10190, 0x101cf], [0x101d0, 0x101ff], [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], [0x1f030, 0x1f09f, 0x1f000, 0x1f02f]];\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\n if (lastPosition !== -1) {\n const range = UnicodeRanges[lastPosition];\n for (let i = 0, ii = range.length; i < ii; i += 2) {\n if (value >= range[i] && value <= range[i + 1]) {\n return lastPosition;\n }\n }\n }\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n for (let j = 0, jj = range.length; j < jj; j += 2) {\n if (value >= range[j] && value <= range[j + 1]) {\n return i;\n }\n }\n }\n return -1;\n}\nconst SpecialCharRegExp = /^(\\s)|(\\p{Mn})|(\\p{Cf})$/u;\nconst CategoryCache = new Map();\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!groups?.[1],\n isZeroWidthDiacritic: !!groups?.[2],\n isInvisibleFormatMark: !!groups?.[3]\n };\n CategoryCache.set(char, category);\n return category;\n}\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\n;// ./src/core/fonts_utils.js\n\n\n\n\n\nconst SEAC_ANALYSIS_ENABLED = true;\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144\n};\nconst 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\"];\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (properties.baseEncodingName) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (isSymbolicFont) {\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n if (glyphId === -1) {\n glyphsUnicodeMap ??= getGlyphsUnicode();\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\n return charCodeToGlyphId;\n}\nfunction normalizeFontName(name) {\n return name.replaceAll(/[,_]/g, \"-\").replaceAll(/\\s/g, \"\");\n}\nconst getVerticalPresentationForm = getLookupTableFactory(t => {\n t[0x2013] = 0xfe32;\n t[0x2014] = 0xfe31;\n t[0x2025] = 0xfe30;\n t[0x2026] = 0xfe19;\n t[0x3001] = 0xfe11;\n t[0x3002] = 0xfe12;\n t[0x3008] = 0xfe3f;\n t[0x3009] = 0xfe40;\n t[0x300a] = 0xfe3d;\n t[0x300b] = 0xfe3e;\n t[0x300c] = 0xfe41;\n t[0x300d] = 0xfe42;\n t[0x300e] = 0xfe43;\n t[0x300f] = 0xfe44;\n t[0x3010] = 0xfe3b;\n t[0x3011] = 0xfe3c;\n t[0x3014] = 0xfe39;\n t[0x3015] = 0xfe3a;\n t[0x3016] = 0xfe17;\n t[0x3017] = 0xfe18;\n t[0xfe4f] = 0xfe34;\n t[0xff01] = 0xfe15;\n t[0xff08] = 0xfe35;\n t[0xff09] = 0xfe36;\n t[0xff0c] = 0xfe10;\n t[0xff1a] = 0xfe13;\n t[0xff1b] = 0xfe14;\n t[0xff1f] = 0xfe16;\n t[0xff3b] = 0xfe47;\n t[0xff3d] = 0xfe48;\n t[0xff3f] = 0xfe33;\n t[0xff5b] = 0xfe37;\n t[0xff5d] = 0xfe38;\n});\nconst MAX_SIZE_TO_COMPILE = 1000;\nfunction compileType3Glyph({\n data: img,\n width,\n height\n}) {\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n const points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (const elem of img) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const pathBuf = [];\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = new DOMMatrix().scaleSelf(1 / width, -1 / height).translateSelf(0, -height);\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n let x = p % width1;\n let y = i;\n pathBuf.push(DrawOPS.moveTo, a * x + c * y + e, b * x + d * y + f);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n x = p % width1;\n y = p / width1 | 0;\n pathBuf.push(DrawOPS.lineTo, a * x + c * y + e, b * x + d * y + f);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n return [OPS.rawFillPath, [new Float32Array(pathBuf)], new Float32Array([0, 0, width, height])];\n}\n\n;// ./src/core/charsets.js\nconst 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\"];\nconst 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\"];\nconst 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\"];\n\n;// ./src/core/data_builder.js\n\n\nclass DataBuilder {\n #buf;\n #bufLength = 1024;\n #hasExactLength = false;\n #pos = 0;\n #view;\n constructor({\n exactLength = 0,\n minLength = 0\n }) {\n this.#hasExactLength = !!exactLength;\n this.#initBuf(exactLength || minLength);\n }\n #initBuf(minLength) {\n if (this.#hasExactLength) {\n this.#bufLength = minLength;\n } else {\n while (this.#bufLength < minLength) {\n this.#bufLength *= 2;\n }\n }\n const newBuf = new Uint8Array(this.#bufLength);\n if (this.#buf) {\n newBuf.set(this.#buf, 0);\n }\n this.#buf = newBuf;\n this.#view = new DataView(newBuf.buffer);\n }\n get data() {\n return this.#buf.subarray(0, this.#pos);\n }\n get length() {\n return this.#pos;\n }\n skip(n) {\n this.#pos += n;\n }\n setArray(arr) {\n const newPos = this.#pos + arr.length;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#buf.set(arr, this.#pos);\n this.#pos = newPos;\n }\n setInt16(val) {\n const newPos = this.#pos + 2;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt16(this.#pos, val);\n this.#pos = newPos;\n }\n setSafeInt16(val) {\n const newPos = this.#pos + 2;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt16(this.#pos, MathClamp(val, -0x8000, 0x7fff));\n this.#pos = newPos;\n }\n setInt32(val) {\n const newPos = this.#pos + 4;\n if (!this.#hasExactLength && newPos > this.#bufLength) {\n this.#initBuf(newPos);\n }\n this.#view.setInt32(this.#pos, val);\n this.#pos = newPos;\n }\n}\n\n;// ./src/core/cff_parser.js\n\n\n\n\n\nconst MAX_SUBR_NESTING = 10;\nfunction looksLikeUnsigned16BitNegative(coord) {\n return coord > 0x7fff && coord <= 0xffff;\n}\nfunction recoverSigned16BitBBox(bbox, onlyLowerLeft = false) {\n return Util.normalizeRect(bbox.map((coord, i) => (!onlyLowerLeft || i < 2) && looksLikeUnsigned16BitNegative(coord) ? coord - 0x10000 : coord));\n}\nconst CFFStandardStrings = [\".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\"];\nconst NUM_STANDARD_CFF_STRINGS = 391;\nconst DEFAULT_BLUE_SCALE = 0.039625;\nconst DEFAULT_BLUE_SHIFT = 7;\nconst DEFAULT_BLUE_FUZZ = 1;\nconst DEFAULT_EXPANSION_FACTOR = 0.06;\nconst CharstringValidationData = [null, {\n id: \"hstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, null, {\n id: \"vstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"vmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"rlineto\",\n min: 2,\n resetStack: true\n}, {\n id: \"hlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"vlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"rrcurveto\",\n min: 6,\n resetStack: true\n}, null, {\n id: \"callsubr\",\n min: 1\n}, {\n id: \"return\",\n min: 0\n}, null, null, {\n id: \"endchar\",\n min: 0,\n stackClearing: true\n}, null, null, null, {\n id: \"hstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"hintmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"cntrmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"rmoveto\",\n min: 2,\n stackClearing: true\n}, {\n id: \"hmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"vstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"rcurveline\",\n min: 8,\n resetStack: true\n}, {\n id: \"rlinecurve\",\n min: 8,\n resetStack: true\n}, {\n id: \"vvcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hhcurveto\",\n min: 4,\n resetStack: true\n}, null, {\n id: \"callgsubr\",\n min: 1\n}, {\n id: \"vhcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hvcurveto\",\n min: 4,\n resetStack: true\n}];\nconst CharstringValidationData12 = [null, null, null, {\n id: \"and\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"or\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"not\",\n min: 1,\n stackDelta: 0\n}, null, null, null, {\n id: \"abs\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n }\n}, {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n }\n}, {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n }\n}, null, {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn(stack, index) {\n stack[index - 1] = -stack[index - 1];\n }\n}, {\n id: \"eq\",\n min: 2,\n stackDelta: -1\n}, null, null, {\n id: \"drop\",\n min: 1,\n stackDelta: -1\n}, null, {\n id: \"put\",\n min: 2,\n stackDelta: -2\n}, {\n id: \"get\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"ifelse\",\n min: 4,\n stackDelta: -3\n}, {\n id: \"random\",\n min: 0,\n stackDelta: 1\n}, {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n }\n}, null, {\n id: \"sqrt\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"dup\",\n min: 1,\n stackDelta: 1\n}, {\n id: \"exch\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"index\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"roll\",\n min: 3,\n stackDelta: -2\n}, null, null, null, {\n id: \"hflex\",\n min: 7,\n resetStack: true\n}, {\n id: \"flex\",\n min: 13,\n resetStack: true\n}, {\n id: \"hflex1\",\n min: 9,\n resetStack: true\n}, {\n id: \"flex1\",\n min: 11,\n resetStack: true\n}];\nclass CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n parse() {\n const properties = this.properties;\n const cff = new CFF(this.bytes.length);\n this.cff = cff;\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n this.parsePrivateDict(cff.topDict);\n cff.isCIDFont = topDict.hasName(\"ROS\");\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n cff.charStringCount = charStringIndex.count;\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n let fontBBox = topDict.getByName(\"FontBBox\");\n const descriptorBBox = properties.bbox?.some(coord => coord !== 0) ? recoverSigned16BitBBox(properties.bbox) : null;\n const cffBBoxHasUnsignedLowerLeft = fontBBox?.slice(0, 2).some(looksLikeUnsigned16BitNegative);\n const cffBBoxHasUnsignedCoords = fontBBox?.some(looksLikeUnsigned16BitNegative);\n if (fontBBox?.every(coord => coord === 0) && descriptorBBox) {\n fontBBox = descriptorBBox;\n topDict.setByName(\"FontBBox\", fontBBox);\n } else if (cffBBoxHasUnsignedCoords) {\n const recoveredFontBBox = recoverSigned16BitBBox(fontBBox);\n const descriptorCorroborates = descriptorBBox && properties.bbox.some(coord => coord < 0) && !properties.bbox.some(looksLikeUnsigned16BitNegative) && isArrayEqual(recoveredFontBBox, descriptorBBox);\n if (descriptorCorroborates || cffBBoxHasUnsignedLowerLeft) {\n fontBBox = descriptorCorroborates ? recoveredFontBBox : recoverSigned16BitBBox(fontBBox, true);\n topDict.setByName(\"FontBBox\", fontBBox);\n }\n }\n if (fontBBox?.some(coord => coord !== 0)) {\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n encoding = null;\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n }\n cff.charset = charset;\n cff.encoding = encoding;\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n return cff;\n }\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return {\n obj: header,\n endPos: hdrSize\n };\n }\n parseDict(dict) {\n const view = new DataView(dict.buffer, dict.byteOffset, dict.bytesLength);\n let pos = 0;\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = view.getInt16(pos);\n pos += 2;\n return value;\n } else if (value === 29) {\n value = view.getInt32(pos);\n pos += 4;\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn(`CFFParser.parseDict: \"${value}\" is a reserved command.`);\n return NaN;\n }\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n let operands = [];\n const entries = [];\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = b << 8 | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = bytes[pos++] << 8 | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n const startPos = pos + (count + 1) * offsetSize - 1;\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return {\n obj: cffIndex,\n endPos: end\n };\n }\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (const [key, value] of dict) {\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n const view = new DataView(data.buffer, data.byteOffset, data.bytesLength);\n let stackSize = state.stackSize;\n const stack = state.stack;\n let length = data.length;\n for (let j = 0; j < length;) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n stack[stackSize] = view.getInt16(j);\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n stack[stackSize] = view.getInt32(j) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n if (state.hints === 0) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n }\n j += state.hints + 7 >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else if (value === 9) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (stackSize < validationCommand.min) {\n warn(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n if (stackSize === 0) {\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing || validationCommand.resetStack) {\n stackSize = 0;\n }\n }\n }\n if (length < data.length) {\n data.fill(14, length);\n }\n state.stackSize = stackSize;\n return true;\n }\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n valid &&= this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return {\n charStrings,\n seacs,\n widths\n };\n }\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n parsePrivateDict(parentDict) {\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n if (offset + size > this.bytes.length) {\n throw new FormatError(\"CFF Private DICT extends past end of font\");\n }\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n parentDict.privateDict = privateDict;\n const blueScale = privateDict.getByName(\"BlueScale\");\n const blueShift = privateDict.getByName(\"BlueShift\");\n const blueFuzz = privateDict.getByName(\"BlueFuzz\");\n const expansionFactor = privateDict.getByName(\"ExpansionFactor\");\n if (blueScale === 0 && blueShift === 0 && blueFuzz === 0 && expansionFactor === 0) {\n privateDict.setByName(\"BlueScale\", DEFAULT_BLUE_SCALE);\n privateDict.setByName(\"BlueShift\", DEFAULT_BLUE_SHIFT);\n privateDict.setByName(\"BlueFuzz\", DEFAULT_BLUE_FUZZ);\n }\n if (expansionFactor === 0) {\n privateDict.setByName(\"ExpansionFactor\", DEFAULT_EXPANSION_FACTOR);\n }\n if (blueScale > 0) {\n let maxZoneHeight = 0;\n for (const zones of [privateDict.getByName(\"BlueValues\"), privateDict.getByName(\"OtherBlues\")]) {\n if (!zones) {\n continue;\n }\n for (let i = 1; i < zones.length; i += 2) {\n if (zones[i] > maxZoneHeight) {\n maxZoneHeight = zones[i];\n }\n }\n }\n if (maxZoneHeight > 0) {\n const PRECISION = 1e5;\n const lowerBound = 0.5 / maxZoneHeight;\n const minBlueScale = lowerBound <= DEFAULT_BLUE_SCALE ? Math.ceil(lowerBound * PRECISION) / PRECISION : -Infinity;\n const maxBlueScale = Math.floor(PRECISION / maxZoneHeight) / PRECISION;\n const clamped = MathClamp(blueScale, minBlueScale, maxBlueScale);\n if (clamped !== blueScale) {\n privateDict.setByName(\"BlueScale\", clamped);\n }\n }\n }\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\n }\n const {\n bytes\n } = this;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n length -= 1;\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = bytes[pos++] << 8 | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = bytes[pos++] << 8 | bytes[pos++];\n count = bytes[pos++] << 8 | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n return new CFFCharset(false, format, charset);\n }\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = bytes[pos++] << 8 | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = bytes[pos++] << 8 | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = bytes[pos] << 8 | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n return new CFFFDSelect(format, fdSelect);\n }\n}\nclass CFF {\n header = null;\n names = [];\n topDict = null;\n strings = new CFFStrings();\n globalSubrIndex = null;\n encoding = null;\n charset = null;\n charStrings = null;\n fdArray = [];\n fdSelect = null;\n isCIDFont = false;\n charStringCount = 0;\n constructor(rawFileLength = 0) {\n this.rawFileLength = rawFileLength;\n }\n duplicateFirstGlyph() {\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\nclass CFFStrings {\n strings = [];\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n add(value) {\n this.strings.push(value);\n }\n get count() {\n return this.strings.length;\n }\n}\nclass CFFIndex {\n objects = [];\n length = 0;\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n get(index) {\n return this.objects[index];\n }\n get count() {\n return this.objects.length;\n }\n}\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n if (value.length === 0) {\n return true;\n }\n for (const val of value) {\n if (isNaN(val)) {\n warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n return true;\n }\n }\n const type = this.types[key];\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: []\n };\n for (const entry of layout) {\n const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\nconst CFFTopDictLayout = [[[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\"], [0.001, 0, 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]];\nclass CFFTopDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n }\n constructor(strings) {\n super(CFFTopDict.tables, strings);\n this.privateDict = null;\n }\n}\nconst CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", DEFAULT_BLUE_SCALE], [[12, 10], \"BlueShift\", \"num\", DEFAULT_BLUE_SHIFT], [[12, 11], \"BlueFuzz\", \"num\", DEFAULT_BLUE_FUZZ], [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\", DEFAULT_EXPANSION_FACTOR], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\nclass CFFPrivateDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n }\n constructor(strings) {\n super(CFFPrivateDict.tables, strings);\n this.subrsIndex = null;\n }\n}\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2\n};\nclass CFFCharset {\n constructor(predefined, format, charset) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n }\n}\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n getFDIndex(glyphIndex) {\n return glyphIndex < 0 || glyphIndex >= this.fdSelect.length ? -1 : this.fdSelect[glyphIndex];\n }\n}\nclass CFFOffsetTracker {\n offsets = Object.create(null);\n isTracking(key) {\n return key in this.offsets;\n }\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = value >> 24 & 0xff;\n data[offset2] = value >> 16 & 0xff;\n data[offset3] = value >> 8 & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n compile() {\n const cff = this.cff;\n const output = new DataBuilder({\n minLength: cff.rawFileLength\n });\n const header = this.compileHeader(cff.header);\n output.setArray(header);\n const nameIndex = this.compileNameIndex(cff.names);\n output.setArray(nameIndex);\n if (cff.isCIDFont) {\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (const subDict of cff.fdArray) {\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid?.length > 16) {\n cff.topDict.removeByName(\"XUID\");\n }\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n output.setArray(compiled.output);\n const topDictTracker = compiled.trackers[0];\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.setArray(stringIndex);\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.setArray(globalSubrIndex);\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.setArray(encoding);\n }\n }\n const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.setArray(charset);\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.setArray(charStrings);\n if (cff.isCIDFont) {\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.setArray(fdSelect);\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.setArray(compiled.output);\n const fontDictTrackers = compiled.trackers;\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n output.setArray([0]);\n return output.data;\n }\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n static get EncodeFloatRegExp() {\n return shadow(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n }\n encodeFloat(num) {\n let value = num.toString();\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, value >> 8 & 0xff, value & 0xff];\n } else {\n code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n }\n return code;\n }\n compileHeader(header) {\n return [header.major, header.minor, 4, header.offSize];\n }\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (const name of names) {\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n let char = name[j];\n if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (const fontDict of dicts) {\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex\n };\n }\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n outputLength = 0;\n }\n trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n output.setArray(privateDictData);\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n output.setArray(subrs);\n }\n }\n }\n compileDict(dict, offsetTracker) {\n const out = [];\n for (const key of dict.order) {\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n if (values.length === 0) {\n continue;\n }\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out.push(...this.encodeNumber(value));\n break;\n case \"offset\":\n const name = dict.keyToNameMap[key];\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out.push(0x1d, 0, 0, 0, 0);\n break;\n case \"array\":\n case \"delta\":\n out.push(...this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out.push(...this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out.push(...dict.opcodes[key]);\n }\n return out;\n }\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (const string of strings) {\n stringIndex.add(stringToBytes(string));\n }\n return this.compileIndex(stringIndex);\n }\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n const nLeft = numGlyphsLessNotDef - 1;\n out = new Uint8Array([2, 0, 1, nLeft >> 8 & 0xff, nLeft & 0xff]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = sid >> 8 & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return out;\n }\n compileEncoding(encoding) {\n return encoding.raw;\n }\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n out.set(fdSelect.fdSelect, 1);\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = numRanges >> 8 & 0xff;\n ranges[2] = numRanges & 0xff;\n ranges.push(i >> 8 & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return out;\n }\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n const count = objects.length;\n if (count === 0) {\n return new Uint8Array(2);\n }\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n const data = new Uint8Array(2 + offsetSize * (count + 1) + lastOffset);\n let pos = 0;\n data[pos++] = count >> 8 & 0xff;\n data[pos++] = count & 0xff;\n data[pos++] = offsetSize;\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data[pos++] = relativeOffset & 0xff;\n } else if (offsetSize === 2) {\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n } else if (offsetSize === 3) {\n data[pos++] = relativeOffset >> 16 & 0xff;\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n } else {\n data[pos++] = relativeOffset >>> 24 & 0xff;\n data[pos++] = relativeOffset >> 16 & 0xff;\n data[pos++] = relativeOffset >> 8 & 0xff;\n data[pos++] = relativeOffset & 0xff;\n }\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n for (i = 0; i < count; i++) {\n trackers[i]?.offset(pos);\n data.set(objects[i], pos);\n pos += objects[i].length;\n }\n return data;\n }\n}\n\n;// ./src/core/standard_fonts.js\n\n\n\nconst getStdFontMap = getLookupTableFactory(function (t) {\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT-Italic\"] = \"Helvetica-Oblique\";\n t.ArialUnicodeMS = \"Helvetica\";\n t[\"ArialUnicodeMS-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialUnicodeMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialUnicodeMS-Italic\"] = \"Helvetica-Oblique\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"HelveticaLTStd-Bold\"] = \"Helvetica-Bold\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"LiberationSans-Regular.ttf\";\n t[\"Helvetica-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"Helvetica-BoldOblique\"] = \"LiberationSans-BoldItalic.ttf\";\n t[\"Helvetica-Oblique\"] = \"LiberationSans-Italic.ttf\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t.GillSansMT = \"Helvetica\";\n t[\"GillSansMT-Bold\"] = \"Helvetica-Bold\";\n t[\"GillSansMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"GillSansMT-Italic\"] = \"Helvetica-Oblique\";\n t.Impact = \"Helvetica\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.TrebuchetMS = \"Helvetica\";\n t[\"TrebuchetMS-Bold\"] = \"Helvetica-Bold\";\n t[\"TrebuchetMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"TrebuchetMS-Italic\"] = \"Helvetica-Oblique\";\n});\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n t.Wingdings = true;\n t[\"Wingdings-Bold\"] = true;\n t[\"Wingdings-Regular\"] = true;\n});\nconst getGlyphMapForMacOrderedFonts = getLookupTableFactory(function (t) {\n const glyphsUnicode = getGlyphsUnicode();\n t[2] = 10;\n for (let gid = 3; gid < MacStandardGlyphOrdering.length; gid++) {\n const unicode = glyphsUnicode[MacStandardGlyphOrdering[gid]];\n if (unicode !== undefined) {\n t[gid] = unicode;\n }\n }\n});\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[179] = 8220;\n t[180] = 8221;\n t[181] = 8216;\n t[182] = 8217;\n t[200] = 193;\n t[203] = 205;\n t[207] = 211;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[570] = 1040;\n t[571] = 1041;\n t[572] = 1042;\n t[573] = 1043;\n t[574] = 1044;\n t[575] = 1045;\n t[576] = 1046;\n t[577] = 1047;\n t[578] = 1048;\n t[579] = 1049;\n t[580] = 1050;\n t[581] = 1051;\n t[582] = 1052;\n t[583] = 1053;\n t[584] = 1054;\n t[585] = 1055;\n t[586] = 1056;\n t[587] = 1057;\n t[588] = 1058;\n t[589] = 1059;\n t[590] = 1060;\n t[591] = 1061;\n t[592] = 1062;\n t[593] = 1063;\n t[594] = 1064;\n t[595] = 1065;\n t[596] = 1066;\n t[597] = 1067;\n t[598] = 1068;\n t[599] = 1069;\n t[600] = 1070;\n t[601] = 1071;\n t[602] = 1072;\n t[603] = 1073;\n t[604] = 1074;\n t[605] = 1075;\n t[606] = 1076;\n t[607] = 1077;\n t[608] = 1078;\n t[609] = 1079;\n t[610] = 1080;\n t[611] = 1081;\n t[612] = 1082;\n t[613] = 1083;\n t[614] = 1084;\n t[615] = 1085;\n t[616] = 1086;\n t[617] = 1087;\n t[618] = 1088;\n t[619] = 1089;\n t[620] = 1090;\n t[621] = 1091;\n t[622] = 1092;\n t[623] = 1093;\n t[624] = 1094;\n t[625] = 1095;\n t[626] = 1096;\n t[627] = 1097;\n t[628] = 1098;\n t[629] = 1099;\n t[630] = 1100;\n t[631] = 1101;\n t[632] = 1102;\n t[633] = 1103;\n t[672] = 1488;\n t[673] = 1489;\n t[674] = 1490;\n t[675] = 1491;\n t[676] = 1492;\n t[677] = 1493;\n t[678] = 1494;\n t[679] = 1495;\n t[680] = 1496;\n t[681] = 1497;\n t[682] = 1498;\n t[683] = 1499;\n t[684] = 1500;\n t[685] = 1501;\n t[686] = 1502;\n t[687] = 1503;\n t[688] = 1504;\n t[689] = 1505;\n t[690] = 1506;\n t[691] = 1507;\n t[692] = 1508;\n t[693] = 1509;\n t[694] = 1510;\n t[695] = 1511;\n t[696] = 1512;\n t[697] = 1513;\n t[698] = 1514;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\nconst getSupplementalGlyphMapForTrebuchetMS = getLookupTableFactory(function (t) {\n t[151] = 956;\n t[159] = 937;\n t[168] = 916;\n t[189] = 8364;\n t[195] = 8729;\n t[218] = 713;\n t[236] = 222;\n t[237] = 254;\n t[238] = 8722;\n t[239] = 185;\n t[240] = 178;\n t[241] = 179;\n t[242] = 189;\n t[243] = 188;\n t[244] = 190;\n t[245] = 181;\n t[246] = 8486;\n t[247] = 8710;\n t[248] = 253;\n t[249] = 215;\n t[250] = 173;\n t[253] = 8355;\n t[254] = 286;\n t[255] = 287;\n t[256] = 304;\n t[257] = 350;\n t[258] = 351;\n t[259] = 262;\n t[260] = 263;\n t[261] = 268;\n t[262] = 269;\n t[263] = 273;\n t[264] = 175;\n t[266] = 183;\n t[267] = 258;\n t[268] = 259;\n t[269] = 260;\n t[270] = 261;\n t[271] = 270;\n t[272] = 271;\n t[273] = 272;\n t[274] = 280;\n t[275] = 281;\n t[276] = 282;\n t[277] = 283;\n t[278] = 313;\n t[279] = 314;\n t[280] = 317;\n t[281] = 318;\n t[282] = 319;\n t[283] = 320;\n t[284] = 323;\n t[285] = 324;\n t[286] = 327;\n t[287] = 328;\n t[288] = 336;\n t[289] = 337;\n t[290] = 340;\n t[291] = 341;\n t[292] = 344;\n t[293] = 345;\n t[294] = 346;\n t[295] = 347;\n t[296] = 538;\n t[297] = 539;\n t[298] = 356;\n t[299] = 357;\n t[300] = 366;\n t[301] = 367;\n t[302] = 368;\n t[303] = 369;\n t[304] = 377;\n t[305] = 378;\n t[306] = 379;\n t[307] = 380;\n});\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (t) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[5] = 192;\n t[6] = 193;\n t[9] = 196;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[29] = 200;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[48] = 204;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[76] = 210;\n t[80] = 214;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[109] = 220;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[259] = 224;\n t[260] = 225;\n t[263] = 228;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[287] = 232;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[350] = 236;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[382] = 242;\n t[383] = 243;\n t[386] = 246;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[442] = 252;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[940] = 163;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\nfunction isKnownFontName(name) {\n const fontName = normalizeFontName(name);\n return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]);\n}\n\n;// ./src/core/glyf.js\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\nconst GLYPH_HEADER_SIZE = 10;\nclass GlyfTable {\n constructor({\n glyfTable,\n isGlyphLocationsLong,\n locaTable,\n numGlyphs\n }) {\n this.glyphs = [];\n const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);\n const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n prev = next;\n }\n }\n getSize() {\n return Math.sumPrecise(this.glyphs.map(g => g.getSize() + 3 & ~3));\n }\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n pos = pos + 3 & ~3;\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer)\n };\n }\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\nclass Glyph {\n constructor({\n header = null,\n simple = null,\n composites = null\n }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n if (header.numberOfContours < 0) {\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n return new Glyph({\n header,\n composites\n });\n }\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n return new Glyph({\n header,\n simple\n });\n }\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple ? this.simple.getSize() : Math.sumPrecise(this.composites.map(c => c.getSize()));\n return this.header.getSize() + size;\n }\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n return pos - spos;\n }\n scale(factor) {\n if (!this.header) {\n return;\n }\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\nclass GlyphHeader {\n constructor({\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n static parse(pos, glyf) {\n return [GLYPH_HEADER_SIZE, new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8)\n })];\n }\n getSize() {\n return GLYPH_HEADER_SIZE;\n }\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n return GLYPH_HEADER_SIZE;\n }\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\nclass Contour {\n constructor({\n flags,\n xCoordinates,\n yCoordinates\n }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\nclass SimpleGlyph {\n constructor({\n contours,\n instructions\n }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates\n }));\n yCoordinates = [];\n pointFlags = [];\n }\n }\n return new SimpleGlyph({\n contours,\n instructions\n });\n }\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n flags.push(flag);\n }\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n return pos - spos;\n }\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);\n }\n }\n }\n}\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n if (flags & WE_HAVE_A_SCALE) {\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6));\n pos += 8;\n }\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n return [pos - spos, new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions\n })];\n }\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n size += 2;\n if (this.flags & 2) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n size += 2;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n size += 2;\n }\n return size;\n }\n write(pos, buf) {\n const spos = pos;\n if (this.flags & ARGS_ARE_XY_VALUES) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n }\n return pos - spos;\n }\n scale(x, factor) {}\n}\nfunction pruneCompositeGlyphCycles(glyfTable, locaEntries, numGlyphs) {\n const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n const components = new Array(numGlyphs);\n for (let i = 0; i < numGlyphs; i++) {\n const offset = locaEntries[i].offset;\n const endOffset = Math.min(locaEntries[i].endOffset, glyf.byteLength);\n if (endOffset - offset <= GLYPH_HEADER_SIZE || glyf.getInt16(offset) >= 0) {\n continue;\n }\n const comps = [];\n let p = offset + GLYPH_HEADER_SIZE;\n while (p + 4 <= endOffset) {\n const flags = glyf.getUint16(p);\n const gid = glyf.getUint16(p + 2);\n let size = 4 + (flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n if (flags & WE_HAVE_A_SCALE) {\n size += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n size += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n size += 8;\n }\n comps.push({\n gid,\n offset: p,\n size,\n flags\n });\n p += size;\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n }\n if (comps.length) {\n components[i] = comps;\n }\n }\n const WHITE = 0,\n GRAY = 1,\n BLACK = 2;\n const state = new Uint8Array(numGlyphs);\n const backEdges = new Map();\n for (let start = 0; start < numGlyphs; start++) {\n if (state[start] !== WHITE || !components[start]) {\n continue;\n }\n const stack = [{\n node: start,\n idx: 0\n }];\n state[start] = GRAY;\n while (stack.length > 0) {\n const top = stack.at(-1);\n const comps = components[top.node];\n if (!comps || top.idx >= comps.length) {\n state[top.node] = BLACK;\n stack.pop();\n continue;\n }\n const compIdx = top.idx++;\n const next = comps[compIdx].gid;\n if (next >= numGlyphs || state[next] === BLACK) {\n continue;\n }\n if (state[next] === WHITE) {\n state[next] = GRAY;\n stack.push({\n node: next,\n idx: 0\n });\n continue;\n }\n backEdges.getOrInsertComputed(top.node, makeSet).add(compIdx);\n }\n }\n const droppedGlyphs = new Set();\n for (const [gIdx, removeSet] of backEdges) {\n const comps = components[gIdx];\n const remaining = [];\n for (let ci = 0; ci < comps.length; ci++) {\n if (!removeSet.has(ci)) {\n remaining.push(comps[ci]);\n }\n }\n if (remaining.length === 0) {\n droppedGlyphs.add(gIdx);\n continue;\n }\n const start = locaEntries[gIdx].offset;\n const endOffset = Math.min(locaEntries[gIdx].endOffset, glyf.byteLength);\n let writePos = start + GLYPH_HEADER_SIZE;\n for (let ci = 0; ci < remaining.length; ci++) {\n const c = remaining[ci];\n const isLast = ci === remaining.length - 1;\n let newFlags = c.flags & ~WE_HAVE_INSTRUCTIONS;\n newFlags = isLast ? newFlags & ~MORE_COMPONENTS : newFlags | MORE_COMPONENTS;\n if (writePos !== c.offset) {\n glyfTable.copyWithin(writePos, c.offset, c.offset + c.size);\n }\n glyf.setUint16(writePos, newFlags);\n writePos += c.size;\n }\n if (writePos < endOffset) {\n glyfTable.fill(0, writePos, endOffset);\n }\n }\n return droppedGlyphs;\n}\n\n;// ./src/core/to_unicode_map.js\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n this._map = cmap;\n }\n get length() {\n return this._map.length;\n }\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].codePointAt(0));\n }\n }\n has(i) {\n return this._map[i] !== undefined;\n }\n get(i) {\n return this._map[i];\n }\n charCodeOf(value) {\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n get(i) {\n return this.firstChar <= i && i <= this.lastChar ? String.fromCharCode(i) : undefined;\n }\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n }\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\n;// ./src/core/cff_font.js\n\n\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n const parser = new CFFParser(file, properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (ex) {\n warn(`Failed to compile font \"${properties.loadedName}\": \"${ex}\".`);\n file.reset();\n this.data = file.getBytes();\n }\n this._createBuiltInEncoding();\n }\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n getCharset() {\n return this.cff.charset.charset;\n }\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const {\n cidToGidMap,\n cMap\n } = properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n if (properties.composite) {\n let invCidToGidMap;\n if (cidToGidMap?.length > 0) {\n invCidToGidMap = Object.create(null);\n for (let i = 0, ii = cidToGidMap.length; i < ii; i++) {\n const gid = cidToGidMap[i];\n if (gid !== undefined) {\n invCidToGidMap[gid] = i;\n }\n }\n }\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = cMap.charCodeOf(cid);\n if (invCidToGidMap?.[charCode] !== undefined) {\n charCode = invCidToGidMap[charCode];\n }\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n _createBuiltInEncoding() {\n const {\n charset,\n encoding\n } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\n;// ./src/shared/obj_bin_transform_utils.js\n\nclass CSS_FONT_INFO {\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n}\nclass SYSTEM_FONT_INFO {\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n}\nclass FONT_INFO {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8;\n static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4;\n static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n}\nclass PATTERN_INFO {\n static KIND = 0;\n static HAS_BBOX = 1;\n static HAS_BACKGROUND = 2;\n static SHADING_TYPE = 3;\n static N_COORD = 4;\n static N_COLOR = 8;\n static N_STOP = 12;\n static N_FIGURES = 16;\n}\nclass InfoUtils {\n static get decoder() {\n return shadow(this, \"decoder\", new TextDecoder());\n }\n static get encoder() {\n return shadow(this, \"encoder\", new TextEncoder());\n }\n}\n\n;// ./src/core/obj_bin_transform_core.js\n\n\nfunction compileCssFontInfo(info) {\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CSS_FONT_INFO.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CSS_FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"compileCssFontInfo: Buffer overflow\");\n return buffer;\n}\nfunction compileSystemFontInfo(info) {\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SYSTEM_FONT_INFO.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SYSTEM_FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"compileSystemFontInfo: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n}\nfunction compileFontInfo(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? compileSystemFontInfo(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? compileCssFontInfo(font.cssFontInfo) : null;\n const {\n encoder\n } = InfoUtils;\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FONT_INFO.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FONT_INFO.OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer?.byteLength ?? 0) + 4 + (cssFontInfoBuffer?.byteLength ?? 0) + 4 + (font.data?.length ?? 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FONT_INFO.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FONT_INFO.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FONT_INFO.OFFSET_NUMBERS, \"compileFontInfo: Boolean properties offset mismatch\");\n for (const prop of FONT_INFO.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FONT_INFO.OFFSET_BBOX, \"compileFontInfo: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FONT_INFO.OFFSET_FONT_MATRIX, \"compileFontInfo: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FONT_INFO.OFFSET_DEFAULT_VMETRICS, \"compileFontInfo: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 3);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FONT_INFO.OFFSET_STRINGS, \"compileFontInfo: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FONT_INFO.OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FONT_INFO.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FONT_INFO.OFFSET_STRINGS, offset - FONT_INFO.OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"compileFontInfo: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"compileFontInfo: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"compileFontInfo: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n}\nfunction compilePatternInfo(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 4);\n const nStop = colorStops.length;\n const byteLen = 20 + nCoord * 8 + nColor * 4 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0);\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PATTERN_INFO.KIND, kind);\n dataView.setUint8(PATTERN_INFO.HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PATTERN_INFO.HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PATTERN_INFO.SHADING_TYPE, shadingType);\n dataView.setUint32(PATTERN_INFO.N_COORD, nCoord, true);\n dataView.setUint32(PATTERN_INFO.N_COLOR, nColor, true);\n dataView.setUint32(PATTERN_INFO.N_STOP, nStop, true);\n dataView.setUint32(PATTERN_INFO.N_FIGURES, 0, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 4;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n }\n return buffer;\n}\nfunction compileFontPathInfo(path) {\n return path.slice().buffer;\n}\n\n;// ./src/core/font_renderer.js\n\n\n\n\n\n\n\nfunction getFloat214(view, offset) {\n return view.getInt16(offset) / 16384;\n}\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n if (numSubrs >= 33900) {\n return 32768;\n }\n return numSubrs < 1240 ? 107 : 1131;\n}\nfunction parseCmap(data, start, end) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const offset = view.getUint16(start + 2) === 1 ? view.getUint32(start + 8) : view.getUint32(start + 16);\n const format = view.getUint16(start + offset);\n let ranges, p, i;\n if (format === 4) {\n const segCount = view.getUint16(start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = {\n end: view.getUint16(p)\n };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = view.getUint16(p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = view.getUint16(p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = view.getUint16(p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = view.getUint16(p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = view.getUint32(start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = view.getUint32(p);\n ranges.push({\n start,\n end: view.getUint32(p + 4),\n idDelta: view.getUint32(p + 8) - start\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(new Stream(data, start, end - start), properties, seacAnalysisEnabled);\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: cff.topDict.privateDict?.subrsIndex?.objects,\n gsubrs: cff.globalSubrIndex?.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray\n };\n}\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n const view = new DataView(loca.buffer, loca.byteOffset, loca.byteLength);\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = (dv, offset) => dv.getUint32(offset);\n } else {\n itemSize = 2;\n itemDecode = (dv, offset) => 2 * dv.getUint16(offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(view, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(view, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = l + r + 1 >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid\n };\n}\nfunction compileGlyf(code, cmds, font, visitedGlyphs = new Set()) {\n if (!code?.length) {\n return;\n }\n if (visitedGlyphs.has(code)) {\n warn(\"compileGlyf: skipping recursive composite glyph reference.\");\n return;\n }\n visitedGlyphs.add(code);\n function moveTo(x, y) {\n if (firstPoint) {\n cmds.add(DrawOPS.lineTo, firstPoint);\n }\n firstPoint = [x, y];\n cmds.add(DrawOPS.moveTo, [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(DrawOPS.lineTo, [x, y]);\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.add(DrawOPS.quadraticCurveTo, [xa, ya, x, y]);\n }\n const view = new DataView(code.buffer, code.byteOffset, code.byteLength);\n let i = 0;\n const numberOfContours = view.getInt16(i);\n let flags;\n let firstPoint = null;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n do {\n flags = view.getUint16(i);\n const glyphIndex = view.getUint16(i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = view.getInt16(i);\n arg2 = view.getInt16(i + 2);\n } else {\n arg1 = view.getUint16(i);\n arg2 = view.getUint16(i + 2);\n }\n i += 4;\n } else if (flags & 0x02) {\n arg1 = view.getInt8(i++);\n arg2 = view.getInt8(i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(view, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(view, i);\n scaleY = getFloat214(view, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(view, i);\n scale01 = getFloat214(view, i + 2);\n scale10 = getFloat214(view, i + 4);\n scaleY = getFloat214(view, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n cmds.save();\n cmds.transform([scaleX, scale01, scale10, scaleY, x, y]);\n if (!(flags & 0x02)) {}\n compileGlyf(subglyph, cmds, font, visitedGlyphs);\n cmds.restore();\n }\n } while (flags & 0x20);\n } else {\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(view.getUint16(i));\n i += 2;\n }\n const instructionLength = view.getUint16(i);\n i += 2 + instructionLength;\n const numberOfPoints = endPtsOfContours.at(-1) + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({\n flags\n });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += view.getInt16(i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += view.getInt16(i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]);\n } else if (contour.at(-1).flags & 1) {\n contour.unshift(contour.at(-1));\n } else {\n const p = {\n flags: 1,\n x: (contour[0].x + contour.at(-1).x) / 2,\n y: (contour[0].y + contour.at(-1).y) / 2\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n startPoint = endPoint + 1;\n }\n }\n visitedGlyphs.delete(code);\n}\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n if (firstPoint) {\n cmds.add(DrawOPS.lineTo, firstPoint);\n }\n firstPoint = [x, y];\n cmds.add(DrawOPS.moveTo, [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(DrawOPS.lineTo, [x, y]);\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.add(DrawOPS.curveTo, [x1, y1, x2, y2, x, y]);\n }\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n let firstPoint = null;\n function parse(code) {\n const view = new DataView(code.buffer, code.byteOffset, code.byteLength);\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4:\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10:\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict?.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11:\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34:\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35:\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop();\n break;\n case 36:\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37:\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14:\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.save();\n cmds.translate(x, y);\n let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n cmds.restore();\n cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n }\n return;\n case 18:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 20:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 21:\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22:\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24:\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26:\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27:\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(view.getInt16(i));\n i += 2;\n break;\n case 29:\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30:\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31:\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(view.getInt32(i) / 65536);\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\nclass Commands {\n cmds = [];\n transformStack = [];\n currentTransform = [1, 0, 0, 1, 0, 0];\n add(cmd, args) {\n if (args) {\n const {\n currentTransform\n } = this;\n for (let i = 0, ii = args.length; i < ii; i += 2) {\n Util.applyTransform(args, currentTransform, i);\n }\n this.cmds.push(cmd, ...args);\n } else {\n this.cmds.push(cmd);\n }\n }\n transform(transf) {\n this.currentTransform = Util.transform(this.currentTransform, transf);\n }\n translate(x, y) {\n this.transform([1, 0, 0, 1, x, y]);\n }\n save() {\n this.transformStack.push(this.currentTransform.slice());\n }\n restore() {\n this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0];\n }\n getPath() {\n if (FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.cmds);\n }\n return new Float32Array(this.cmds);\n }\n}\nclass CompiledFont {\n #compiledCharCodes = new Set();\n #compiledGlyphs = new Map();\n constructor(fontMatrix) {\n this.fontMatrix = fontMatrix;\n }\n static get NOOP() {\n return shadow(this, \"NOOP\", FeatureTest.isFloat16ArraySupported ? new Float16Array(0) : new Float32Array(0));\n }\n getPath(unicode) {\n const {\n charCode,\n glyphId\n } = lookupCmap(this.cmap, unicode);\n if (this.#compiledGlyphs.has(glyphId) && this.#compiledCharCodes.has(charCode)) {\n return null;\n }\n const path = this.#compiledGlyphs.getOrInsertComputed(glyphId, () => {\n try {\n return this.compileGlyph(this.glyphs[glyphId], glyphId);\n } catch (ex) {\n return ex;\n }\n });\n this.#compiledCharCodes.add(charCode);\n if (path instanceof Error) {\n throw path;\n }\n return compileFontPathInfo(path);\n }\n compileGlyph(code, glyphId) {\n if (!code?.length || code[0] === 14) {\n return CompiledFont.NOOP;\n }\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n assert(isNumberArray(fontMatrix, 6), \"Expected a valid fontMatrix.\");\n const cmds = new Commands();\n cmds.transform(fontMatrix.slice());\n this.compileGlyphImpl(code, cmds, glyphId);\n cmds.add(DrawOPS.closePath);\n return cmds.getPath();\n }\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n}\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = getGlyphsUnicode();\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data),\n view = new DataView(data.buffer);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = view.getUint16(4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = view.getUint32(p + 8);\n const length = view.getUint32(p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = view.getUint16(offset + 18);\n indexToLocFormat = view.getUint16(offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n if (glyf) {\n const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix);\n }\n}\n\n;// ./src/core/metrics.js\n\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN\n };\n});\n\n;// ./src/core/opentype_file_builder.js\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\nclass OpenTypeFileBuilder {\n #tables = new Map();\n constructor(sfnt) {\n this.sfnt = sfnt;\n }\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange\n };\n }\n toArray() {\n let sfnt = this.sfnt;\n const tables = this.#tables;\n const tablesNames = [...tables.keys()].sort();\n const numTables = tablesNames.length;\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (let i = 0; i < numTables; i++) {\n const table = tables.get(tablesNames[i]);\n const paddedLength = (table.length + 3 & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n const file = new Uint8Array(offset),\n view = new DataView(file.buffer);\n for (let i = 0; i < numTables; i++) {\n const table = tables.get(tablesNames[i]);\n file.set(table, tableOffsets[i]);\n }\n if (sfnt === \"true\") {\n sfnt = \"\\x00\\x01\\x00\\x00\";\n }\n file.set(stringToBytes(sfnt), 0);\n view.setInt16(4, numTables);\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n view.setInt16(6, searchParams.range);\n view.setInt16(8, searchParams.entry);\n view.setInt16(10, searchParams.rangeShift);\n offset = OTF_HEADER_SIZE;\n for (let i = 0; i < numTables; i++) {\n const tableName = tablesNames[i];\n file.set(stringToBytes(tableName), offset);\n let checksum = 0;\n for (let j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = view.getUint32(j);\n checksum = checksum + quad >>> 0;\n }\n view.setInt32(offset + 4, checksum);\n view.setInt32(offset + 8, tableOffsets[i]);\n view.setInt32(offset + 12, tables.get(tableName).length);\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n this.#tables.clear();\n return file;\n }\n addTable(tag, data) {\n if (this.#tables.has(tag)) {\n throw new Error(`Table ${tag} already exists`);\n }\n this.#tables.set(tag, data);\n }\n}\n\n;// ./src/core/type1_parser.js\n\n\n\n\nconst HINTING_ENABLED = false;\nconst COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31]\n};\nclass Type1CharString {\n width = 0;\n lsb = 0;\n flexing = false;\n output = [];\n stack = [];\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4:\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5:\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6:\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7:\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8:\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9:\n this.stack = [];\n break;\n case 10:\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n case 11:\n return error;\n case 13:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14:\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21:\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22:\n if (this.flexing) {\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30:\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31:\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0:\n this.stack = [];\n break;\n case (12 << 8) + 1:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2:\n if (true) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6:\n if (seacAnalysisEnabled) {\n const asb = this.stack.at(-5);\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7:\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n this.stack.pop();\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(-17, 17);\n this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17:\n break;\n case (12 << 8) + 33:\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n this.stack.push(value);\n }\n return error;\n }\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, value >> 8 & 0xff, value & 0xff);\n } else {\n value = 65536 * value | 0;\n this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n }\n this.output.push(...command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n}\nconst EEXEC_ENCRYPT_KEY = 55665;\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\nfunction isHexDigit(code) {\n return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n}\nfunction decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n return decrypted;\n}\nfunction decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit(digit2 = data[i])) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ r >> 8;\n r = (value + r) * c1 + c2 & (1 << 16) - 1;\n }\n }\n return decrypted.slice(discardNumber, j);\n}\nfunction isSpecial(c) {\n return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n}\nclass Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !((isHexDigit(data[0]) || isWhiteSpace(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n this.stream = stream;\n this.nextChar();\n }\n readNumberArray() {\n this.getToken();\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n readInt() {\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n readBoolean() {\n const token = this.getToken();\n return token === \"true\" ? 1 : 0;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n prevChar() {\n this.stream.skip(-2);\n return this.currentChar = this.stream.getByte();\n }\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n extractFontProgram(properties) {\n const stream = this.stream;\n const subrs = [],\n charstrings = [];\n const privateData = new Map([[\"lenIV\", 4]]);\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData\n }\n };\n let token, length, data;\n let subrsParsed = false;\n let charStringsParsed = false;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n if (charStringsParsed) {\n break;\n }\n charStringsParsed = true;\n this.getToken();\n this.getToken();\n this.getToken();\n this.getToken();\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n const encoded = this.readCharStrings(data, privateData.get(\"lenIV\"));\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\n } else if (token === \"/\") {\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded\n });\n }\n break;\n case \"Subrs\":\n if (subrsParsed) {\n break;\n }\n subrsParsed = true;\n this.readInt();\n this.getToken();\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n const encoded = this.readCharStrings(data, privateData.get(\"lenIV\"));\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n if (false) // removed by dead control flow\n{}\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n privateData.set(token, this.readNumberArray());\n break;\n case \"StdHW\":\n case \"StdVW\":\n privateData.set(token, this.readNumberArray()[0]);\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n privateData.set(token, this.readNumber());\n break;\n case \"ExpansionFactor\":\n privateData.set(token, this.readNumber() || 0.06);\n break;\n case \"ForceBold\":\n privateData.set(token, this.readBoolean());\n break;\n }\n }\n for (const {\n encoded,\n glyph\n } of charstrings) {\n const charString = new Type1CharString();\n const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n const output = !error ? charString.output : [14];\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n };\n if (glyph === \".notdef\") {\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n properties.widths[index] = charString.width;\n }\n }\n }\n return program;\n }\n extractCidKeyedFontProgram(properties) {\n const stream = this.stream;\n const privateData = new Map([[\"lenIV\", 4]]);\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData\n }\n };\n let cidCount = 0;\n let cidMapOffset = -1;\n let fdBytes = 1;\n let gdBytes = 0;\n let subrMapOffset = -1;\n let sdBytes = 0;\n let subrCount = 0;\n let startDataLength = 0;\n let startDataIsHex = false;\n let foundStartData = false;\n const previousTokens = [];\n function rememberToken(value) {\n previousTokens.push(value);\n if (previousTokens.length > 4) {\n previousTokens.shift();\n }\n }\n let token;\n while ((token = this.getToken()) !== null) {\n if (token === \"StartData\") {\n const dataType = previousTokens.at(-3);\n const dataLength = previousTokens.at(-1);\n if (previousTokens.at(-4) !== \"(\" || previousTokens.at(-2) !== \")\" || dataType !== \"Binary\" && dataType !== \"Hex\" || !/^\\d+$/.test(dataLength)) {\n return null;\n }\n startDataLength = parseInt(dataLength, 10);\n if (startDataLength <= 0) {\n return null;\n }\n startDataIsHex = dataType === \"Hex\";\n foundStartData = true;\n break;\n }\n rememberToken(token);\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n rememberToken(token);\n switch (token) {\n case \"FontMatrix\":\n properties.fontMatrix = this.readNumberArray();\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n case \"CIDCount\":\n cidCount = this.readInt();\n break;\n case \"CIDMapOffset\":\n cidMapOffset = this.readInt();\n break;\n case \"FDBytes\":\n fdBytes = this.readInt();\n break;\n case \"GDBytes\":\n gdBytes = this.readInt();\n break;\n case \"SubrMapOffset\":\n subrMapOffset = this.readInt();\n break;\n case \"SDBytes\":\n sdBytes = this.readInt();\n break;\n case \"SubrCount\":\n subrCount = this.readInt();\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n this.readNumberArray();\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n privateData.set(token, this.readNumberArray());\n break;\n case \"StdHW\":\n case \"StdVW\":\n privateData.set(token, this.readNumberArray()[0]);\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n privateData.set(token, this.readNumber());\n break;\n case \"ExpansionFactor\":\n privateData.set(token, this.readNumber() || 0.06);\n break;\n case \"ForceBold\":\n privateData.set(token, this.readBoolean());\n break;\n }\n }\n if (!foundStartData || cidCount <= 0 || cidMapOffset < 0 || fdBytes < 0 || fdBytes > 4 || gdBytes < 1 || gdBytes > 4) {\n return null;\n }\n const maxLength = stream.end - stream.pos;\n if (startDataLength > maxLength) {\n if (!startDataIsHex) {\n startDataLength = maxLength;\n } else if (startDataLength > 2 * maxLength) {\n return null;\n }\n }\n let binary = stream.getBytes(startDataIsHex ? undefined : startDataLength);\n if (startDataIsHex) {\n const decoded = new Uint8Array(startDataLength);\n let digit1 = -1,\n j = 0;\n for (let i = 0, ii = binary.length; i < ii && j < startDataLength; i++) {\n const digit = binary[i];\n if (!isHexDigit(digit)) {\n continue;\n }\n if (digit1 < 0) {\n digit1 = digit;\n continue;\n }\n decoded[j++] = parseInt(String.fromCharCode(digit1, digit), 16);\n digit1 = -1;\n }\n if (j !== startDataLength) {\n return null;\n }\n binary = decoded;\n }\n const lenIV = privateData.get(\"lenIV\");\n const cidEntrySize = fdBytes + gdBytes;\n const subrs = [];\n function readUint(offset, byteCount) {\n let n = 0;\n for (let i = 0; i < byteCount; i++) {\n n = n << 8 | binary[offset + i];\n }\n return n >>> 0;\n }\n if (cidMapOffset + (cidCount + 1) * cidEntrySize > binary.length || subrCount > 0 && (subrMapOffset < 0 || sdBytes < 1 || sdBytes > 4 || subrMapOffset + (subrCount + 1) * sdBytes > binary.length)) {\n return null;\n }\n if (fdBytes > 0) {\n for (let cid = 0; cid < cidCount; cid++) {\n if (readUint(cidMapOffset + cid * cidEntrySize, fdBytes) !== 0) {\n return null;\n }\n }\n }\n if (subrCount > 0) {\n const subrOffsets = new Array(subrCount + 1);\n for (let i = 0; i <= subrCount; i++) {\n subrOffsets[i] = readUint(subrMapOffset + i * sdBytes, sdBytes);\n }\n for (let i = 0; i < subrCount; i++) {\n const start = subrOffsets[i];\n const end = subrOffsets[i + 1];\n if (end > binary.length || end < start) {\n subrs[i] = new Uint8Array(0);\n continue;\n }\n subrs[i] = this.readCharStrings(binary.subarray(start, end), lenIV);\n }\n }\n const charstrings = [];\n let prevOffset = readUint(cidMapOffset + fdBytes, gdBytes);\n for (let cid = 0; cid < cidCount; cid++) {\n const nextOffset = readUint(cidMapOffset + (cid + 1) * cidEntrySize + fdBytes, gdBytes);\n const glyphName = cid === 0 ? \".notdef\" : `cid${cid}`;\n if (nextOffset > prevOffset && nextOffset <= binary.length) {\n const encoded = this.readCharStrings(binary.subarray(prevOffset, nextOffset), lenIV);\n const charString = new Type1CharString();\n const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n charstrings.push({\n glyphName,\n charstring: error ? [14] : charString.output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac\n });\n } else {\n const notDef = charstrings[0];\n charstrings.push({\n glyphName,\n charstring: notDef?.charstring.slice() || [0x8b, 0x0e],\n width: notDef?.width || 0,\n lsb: notDef?.lsb || 0\n });\n }\n prevOffset = nextOffset;\n }\n program.subrs = subrs;\n program.charstrings = charstrings;\n return program;\n }\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken();\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return;\n }\n }\n if (token === \"def\") {\n break;\n }\n const index = this.readInt();\n this.getToken();\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken();\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n}\n\n;// ./src/core/type1_font.js\n\n\n\n\n\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i\n };\n}\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n const streamStartPos = stream.pos;\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch {}\n if (headerBytesLength === suggestedLength) {\n block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos;\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length;\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos;\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength\n };\n}\nfunction getEexecBlock(stream, suggestedLength) {\n const eexecBytes = stream.getBytes();\n if (eexecBytes.length === 0) {\n throw new FormatError(\"getEexecBlock - no font program found.\");\n }\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length\n };\n}\nfunction isCidKeyedType1File(file) {\n const sample = file.peekBytes(2048);\n if (sample.length < 2 || sample[0] !== 0x25 || sample[1] !== 0x21) {\n return false;\n }\n const text = bytesToString(sample);\n return text.includes(\"Resource-CIDFont\") || /\\/CIDFontType\\s+0\\b/.test(text);\n}\nclass Type1Font {\n #rawFileLength;\n constructor(name, file, properties) {\n let data;\n if (properties.composite && isCidKeyedType1File(file)) {\n data = this.#parseCidKeyedType1(file, properties);\n }\n data ||= this.#parseType1(file, properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n #parseType1(file, properties) {\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(headerBlock.stream, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n headerBlockParser.extractFontHeader(properties);\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n const data = eexecBlockParser.extractFontProgram(properties);\n this.#rawFileLength = headerBlock.length + eexecBlock.length;\n return data;\n }\n #parseCidKeyedType1(file, properties) {\n const fileStart = file.pos;\n const length = file.end - fileStart;\n const parser = new Type1Parser(file, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n const data = parser.extractCidKeyedFontProgram(properties);\n if (!data) {\n file.pos = fileStart;\n warn(\"Type1Font: unable to parse CID-keyed Type 1 font.\");\n return null;\n }\n this.#rawFileLength = length;\n return data;\n }\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n getCharset() {\n const charset = [\".notdef\"];\n for (const {\n glyphName\n } of this.charstrings) {\n charset.push(glyphName);\n }\n return charset;\n }\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (const type1Charstring of type1Charstrings) {\n type2Charstrings.push(type1Charstring.charstring);\n }\n return type2Charstrings;\n }\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n return type2Subrs;\n }\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF(this.#rawFileLength);\n cff.header = new CFFHeader(1, 0, 4, 4);\n cff.names = [name];\n const topDict = new CFFTopDict();\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null);\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null);\n topDict.setByName(\"CharStrings\", null);\n topDict.setByName(\"Private\", null);\n cff.topDict = topDict;\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\");\n strings.add(\"See original notice\");\n strings.add(name);\n strings.add(name);\n strings.add(\"Medium\");\n cff.strings = strings;\n cff.globalSubrIndex = new CFFIndex();\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n for (let i = 0; i < count; i++) {\n const {\n glyphName\n } = charstrings[i];\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]);\n for (let i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null);\n const fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n for (const field of fields) {\n if (!properties.privateData.has(field)) {\n continue;\n }\n const value = properties.privateData.get(field);\n if (Array.isArray(value)) {\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1];\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n const subrIndex = new CFFIndex();\n for (const subr of subrs) {\n subrIndex.add(subr);\n }\n privateDict.subrsIndex = subrIndex;\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\n;// ./src/core/fonts.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nconst PDF_GLYPH_SPACE_UNITS = 1000;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"disableFontFace\", \"fallbackName\", \"fontExtraProperties\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"systemFontInfo\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"composite\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"subtype\", \"toFontChar\", \"toUnicode\", \"type\", \"vmetrics\", \"widths\"];\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (properties.hasEncoding) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n if (!isSymbolicFont) {\n return;\n }\n if (nameRecords.length === 0) {\n return;\n }\n if (properties.defaultEncoding === WinAnsiEncoding) {\n return;\n }\n for (const r of nameRecords) {\n if (!isWinNameRecord(r)) {\n return;\n }\n }\n const encoding = WinAnsiEncoding;\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in encoding) {\n const glyphName = encoding[charCode];\n if (glyphName === \"\") {\n continue;\n }\n const unicode = glyphsUnicodeMap[glyphName];\n if (unicode === undefined) {\n continue;\n }\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasEncoding) {\n if (properties.baseEncodingName || properties.differences[charCode] !== undefined) {\n continue;\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue;\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nclass fonts_Glyph {\n constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n get category() {\n return shadow(this, \"category\", getCharUnicodeCategory(this.unicode), true);\n }\n}\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & 1 << 15 ? value - 0x10000 : value;\n}\nfunction writeUint32(bytes, index, value) {\n bytes[index + 3] = value & 0xff;\n bytes[index + 2] = value >>> 8;\n bytes[index + 1] = value >>> 16;\n bytes[index] = value >>> 24;\n}\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4),\n str = bytesToString(header);\n return str === \"\\x00\\x01\\x00\\x00\" || str === \"true\";\n}\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n return true;\n }\n return false;\n}\nfunction getFontFileType(file, {\n type,\n subtype,\n composite\n}) {\n let fileType, fileSubtype;\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"TrueType\";\n } else if (isOpenTypeFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"OpenType\";\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n return [fileType, fileSubtype];\n}\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\nconst getSymbolGlyphIdEncoding = getLookupTableFactory(t => {\n let glyphId = 3;\n for (const [firstCharCode, lastCharCode] of [[0x20, 0x7e], [0xa1, 0xfe]]) {\n for (let charCode = firstCharCode; charCode <= lastCharCode; charCode++) {\n t[glyphId++] = SymbolSetEncoding[charCode];\n }\n }\n}, true);\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\nfunction isMacNameRecord(r) {\n return r.platform === 1 && r.encoding === 0 && r.language === 0;\n}\nfunction isWinNameRecord(r) {\n return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\n}\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return cid.charCodeAt(0) << 8 | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\n const newMap = Object.create(null);\n const toUnicodeExtraMap = new Map();\n const toFontChar = [];\n const usedGlyphIds = new Set();\n let privateUseAreaIndex = 0;\n const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let nextAvailableFontCharCode = privateUseOffetStart;\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1];\n let LIGATURE_TO_UNICODE = null;\n for (const originalCharCode in charCodeToGlyphId) {\n let glyphId = charCodeToGlyphId[originalCharCode];\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n let unicode = toUnicode.get(originalCharCode);\n if (typeof unicode === \"string\") {\n if (unicode.length === 1) {\n unicode = unicode.codePointAt(0);\n } else {\n if (!LIGATURE_TO_UNICODE) {\n LIGATURE_TO_UNICODE = new Map();\n for (let i = 0xfb00; i <= 0xfb4f; i++) {\n const normalized = String.fromCharCode(i).normalize(\"NFKD\");\n if (normalized.length > 1) {\n LIGATURE_TO_UNICODE.set(normalized, i);\n }\n }\n }\n unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0);\n }\n }\n if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\n toUnicodeExtraMap.set(unicode, glyphId);\n usedGlyphIds.add(glyphId);\n }\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n toUnicodeExtraMap,\n nextAvailableFontCharCode\n };\n}\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\n const codes = [];\n for (const charCode in glyphs) {\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: charCode | 0,\n glyphId: glyphs[charCode]\n });\n }\n if (toUnicodeExtraMap) {\n for (const [unicode, glyphId] of toUnicodeExtraMap) {\n if (glyphId >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: unicode,\n glyphId\n });\n }\n }\n if (codes.length === 0) {\n codes.push({\n fontCharCode: 0,\n glyphId: 0\n });\n }\n codes.sort((a, b) => a.fontCharCode - b.fontCharCode);\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length;) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n return ranges;\n}\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\n const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\n const hasNonBmp = ranges.at(-1)[1] > 0xffff;\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n const segmentsLength = bmpLength * 2 + trailingRangesCount * 2;\n const startCount = new DataBuilder({\n exactLength: segmentsLength\n }),\n endCount = new DataBuilder({\n exactLength: segmentsLength\n }),\n idDeltas = new DataBuilder({\n exactLength: segmentsLength\n }),\n idRangeOffsets = new DataBuilder({\n exactLength: segmentsLength\n }),\n glyphsIds = new DataBuilder({});\n let bias = 0;\n let format4Overflow = false;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n const [start, end, codes] = ranges[i];\n startCount.setInt16(start);\n endCount.setInt16(end);\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n idDeltas.skip(2);\n if (offset > 0xffff) {\n format4Overflow = true;\n idRangeOffsets.skip(2);\n } else {\n idRangeOffsets.setInt16(offset);\n }\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds.setInt16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n idDeltas.setInt16(startCode - start & 0xffff);\n idRangeOffsets.skip(2);\n }\n }\n if (trailingRangesCount > 0) {\n endCount.setArray([0xff, 0xff]);\n startCount.setArray([0xff, 0xff]);\n idDeltas.setArray([0x00, 0x01]);\n idRangeOffsets.skip(2);\n }\n const format314 = new DataBuilder({\n exactLength: 12 + startCount.length + endCount.length + idDeltas.length + idRangeOffsets.length + glyphsIds.length\n });\n format314.skip(2);\n format314.setInt16(2 * segCount);\n format314.setInt16(searchParams.range);\n format314.setInt16(searchParams.entry);\n format314.setInt16(searchParams.rangeShift);\n format314.setArray(endCount.data);\n format314.skip(2);\n format314.setArray(startCount.data);\n format314.setArray(idDeltas.data);\n format314.setArray(idRangeOffsets.data);\n format314.setArray(glyphsIds.data);\n const useFormat4 = !format4Overflow && format314.length + 4 <= 0xffff;\n const useFormat12 = hasNonBmp || !useFormat4;\n const numTables = (useFormat4 ? 1 : 0) + (useFormat12 ? 1 : 0);\n let format31012 = null,\n header31012 = null;\n if (useFormat12) {\n format31012 = new DataBuilder({});\n for (const range of ranges) {\n let start = range[0];\n const codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n const end = range[0] + j - 1;\n format31012.setInt32(start);\n format31012.setInt32(end);\n format31012.setInt32(code);\n start = end + 1;\n code = codes[j];\n }\n }\n format31012.setInt32(start);\n format31012.setInt32(range[1]);\n format31012.setInt32(code);\n }\n header31012 = new DataBuilder({\n exactLength: 16\n });\n header31012.setArray([0x00, 0x0c]);\n header31012.skip(2);\n header31012.setInt32(format31012.length + 16);\n header31012.skip(4);\n header31012.setInt32(format31012.length / 12);\n }\n const headerLength = 4 + numTables * 8;\n const format4Length = useFormat4 ? 4 + format314.length : 0;\n const cmap = new DataBuilder({\n exactLength: headerLength\n });\n cmap.skip(2);\n cmap.setInt16(numTables);\n let tableOffset = headerLength;\n if (useFormat4) {\n cmap.setArray([0x00, 0x03]);\n cmap.setArray([0x00, 0x01]);\n cmap.setInt32(tableOffset);\n tableOffset += format4Length;\n }\n if (useFormat12) {\n cmap.setArray([0x00, 0x03]);\n cmap.setArray([0x00, 0x0a]);\n cmap.setInt32(tableOffset);\n }\n const table = new DataBuilder({\n exactLength: cmap.length + format4Length + (header31012?.length ?? 0) + (format31012?.length ?? 0)\n });\n table.setArray(cmap.data);\n if (useFormat4) {\n table.setArray([0x00, 0x04]);\n table.setInt16(format314.length + 4);\n table.setArray(format314.data);\n }\n if (useFormat12) {\n table.setArray(header31012.data);\n table.setArray(format31012.data);\n }\n return table.data;\n}\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n const minLength = [78, 86, 96, 96, 96, 100][version];\n if (minLength === undefined || os2.length < minLength) {\n return false;\n }\n file.skip(60);\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6);\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n return false;\n }\n os2.data[8] = os2.data[9] = 0;\n return true;\n}\nfunction createOS2Table(properties, charstrings, override) {\n override ||= {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0\n };\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n let firstCharIndex = null;\n let lastCharIndex = 0;\n let position = -1;\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n position = getUnicodeRangeFor(code, position);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n }\n }\n if (lastCharIndex > 0xffff) {\n lastCharIndex = 0xffff;\n }\n } else {\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000);\n const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent;\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n const os2 = new DataBuilder({\n exactLength: 96\n });\n os2.setArray([0x00, 0x03]);\n os2.setArray([0x02, 0x24]);\n os2.setArray([0x01, 0xf4]);\n os2.setArray([0x00, 0x05]);\n os2.skip(2);\n os2.setArray([0x02, 0x8a]);\n os2.setArray([0x02, 0xbb]);\n os2.skip(2);\n os2.setArray([0x00, 0x8c]);\n os2.setArray([0x02, 0x8a]);\n os2.setArray([0x02, 0xbb]);\n os2.skip(2);\n os2.setArray([0x01, 0xdf]);\n os2.setArray([0x00, 0x31]);\n os2.setArray([0x01, 0x02]);\n os2.skip(2);\n os2.setArray([0x00, 0x00, 0x06, properties.fixedPitch ? 0x09 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n os2.setInt32(ulUnicodeRange1);\n os2.setInt32(ulUnicodeRange2);\n os2.setInt32(ulUnicodeRange3);\n os2.setInt32(ulUnicodeRange4);\n os2.setArray([0x2a, 0x32, 0x31, 0x2a]);\n os2.setInt16(properties.italicAngle ? 1 : 0);\n os2.setInt16(firstCharIndex || properties.firstChar);\n os2.setInt16(lastCharIndex || properties.lastChar);\n os2.setInt16(typoAscent);\n os2.setInt16(typoDescent);\n os2.setArray([0x00, 0x64]);\n os2.setInt16(winAscent);\n os2.setInt16(winDescent);\n os2.skip(4 + 4);\n os2.setInt16(properties.xHeight);\n os2.setInt16(properties.capHeight);\n os2.skip(2);\n os2.setInt16(firstCharIndex || properties.firstChar);\n os2.setArray([0x00, 0x03]);\n return os2.data;\n}\nfunction createPostTable(properties) {\n const post = new DataBuilder({\n exactLength: 32\n });\n post.setArray([0x00, 0x03, 0x00, 0x00]);\n post.setInt32(Math.floor(properties.italicAngle * 2 ** 16));\n post.skip(2 + 2);\n post.setInt32(properties.fixedPitch ? 1 : 0);\n post.skip(4 + 4 + 4 + 4);\n return post.data;\n}\nfunction createPostscriptName(name) {\n return name.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\nfunction createNameTable(name, proto) {\n proto ||= [[], []];\n const strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || createPostscriptName(name), proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n const stringsBytes = strings.map(stringToBytes);\n const stringsUnicodeBytes = new Array(strings.length);\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n const strUnicode = new DataBuilder({\n exactLength: str.length * 2\n });\n for (j = 0, jj = str.length; j < jj; j++) {\n strUnicode.setInt16(str.charCodeAt(j));\n }\n stringsUnicodeBytes[i] = strUnicode.data;\n }\n const namesBytes = [stringsBytes, stringsUnicodeBytes];\n const platformsBytes = [[0x00, 0x01], [0x00, 0x03]];\n const encodingsBytes = [[0x00, 0x00], [0x00, 0x01]];\n const languagesBytes = [[0x00, 0x00], [0x04, 0x09]];\n const nameRecords = [];\n let strOffset = 0;\n for (i = 0, ii = platformsBytes.length; i < ii; i++) {\n const strs = namesBytes[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord = new DataBuilder({\n exactLength: 6 + platformsBytes[i].length + encodingsBytes[i].length + languagesBytes[i].length\n });\n nameRecord.setArray(platformsBytes[i]);\n nameRecord.setArray(encodingsBytes[i]);\n nameRecord.setArray(languagesBytes[i]);\n nameRecord.setInt16(j);\n nameRecord.setInt16(str.length);\n nameRecord.setInt16(strOffset);\n nameRecords.push(nameRecord.data);\n strOffset += str.length;\n }\n }\n const namesRecordCount = stringsBytes.length * platformsBytes.length;\n const nameTable = new DataBuilder({\n exactLength: 6 + Math.sumPrecise(nameRecords.map(arr => arr.length)) + Math.sumPrecise(stringsBytes.map(arr => arr.length)) + Math.sumPrecise(stringsUnicodeBytes.map(arr => arr.length))\n });\n nameTable.skip(2);\n nameTable.setInt16(namesRecordCount);\n nameTable.setInt16(namesRecordCount * 12 + 6);\n for (const arr of nameRecords) {\n nameTable.setArray(arr);\n }\n for (const arr of stringsBytes) {\n nameTable.setArray(arr);\n }\n for (const arr of stringsUnicodeBytes) {\n nameTable.setArray(arr);\n }\n return nameTable.data;\n}\nclass Font {\n #charsCache = new Map();\n #glyphCache = new Map();\n charProcOperatorList;\n constructor(name, file, properties, evaluatorOptions) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = evaluatorOptions.disableFontFace;\n this.fontExtraProperties = evaluatorOptions.fontExtraProperties;\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap(),\n serifFonts = getSerifFonts();\n for (const namePart of name.split(\"+\")) {\n let fontName = normalizeFontName(namePart);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n fontName = fontName.split(\"-\", 1)[0];\n if (serifFonts[fontName]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n let {\n type,\n subtype\n } = properties;\n this.type = type;\n this.subtype = subtype;\n this.systemFontInfo = properties.systemFontInfo;\n const matches = name.match(/^InvalidPDFjsFont_(.*)_\\d+$/);\n this.isInvalidPDFjsFont = !!matches;\n if (this.isInvalidPDFjsFont) {\n this.fallbackName = matches[1];\n } else if (this.isMonospace) {\n this.fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n this.fallbackName = \"serif\";\n } else {\n this.fallbackName = \"sans-serif\";\n }\n if (this.systemFontInfo?.guessFallback) {\n this.systemFontInfo.guessFallback = false;\n this.systemFontInfo.css += `,${this.fallbackName}`;\n }\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n return;\n }\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n if (!file || file.isEmpty) {\n if (file) {\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n [type, subtype] = getFontFileType(file, properties);\n if (type !== this.type || subtype !== this.subtype) {\n info(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n }\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n const cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n adjustWidths(properties);\n data = this.convert(name, cff, properties);\n break;\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n data = this.checkAndRepair(name, file, properties);\n adjustWidths(properties);\n if (this.isOpenType) {\n type = \"OpenType\";\n }\n break;\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n amendFallbackToUnicode(properties);\n this.data = data;\n this.type = type;\n this.subtype = subtype;\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n get renderer() {\n const renderer = FontRendererFactory.create(this, (/* inlined export .SEAC_ANALYSIS_ENABLED */true));\n return shadow(this, \"renderer\", renderer);\n }\n #getExportData(props) {\n const data = Object.create(null);\n for (const prop of props) {\n const value = this[prop];\n if (value !== undefined) {\n data[prop] = value;\n }\n }\n return data;\n }\n exportData() {\n return {\n buffer: compileFontInfo(this.#getExportData(EXPORT_DATA_PROPERTIES)),\n charProcOperatorList: this.charProcOperatorList,\n extra: this.fontExtraProperties ? this.#getExportData(EXPORT_DATA_EXTRA_PROPERTIES) : undefined\n };\n }\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n const {\n name,\n type\n } = this;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n this.bold = /bold/i.test(fontName);\n this.italic = /oblique|italic/i.test(fontName);\n this.black = /Black/.test(name);\n const isNarrow = /Narrow/.test(name);\n this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if ((isStandardFont || isMappedToStandardFont) && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n const cidToGidMap = properties.cidToGidMap;\n const map = [];\n if (/Trebuchet/i.test(name)) {\n applyStandardFontGlyphMap(map, getGlyphMapForMacOrderedFonts());\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForTrebuchetMS());\n } else {\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n }\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n const isCidKeyed = this.composite && this.cidEncoding.startsWith(\"Identity-\");\n this.toFontChar = buildToFontChar(isCidKeyed ? getSymbolGlyphIdEncoding() : SymbolSetEncoding, getGlyphsUnicode(), this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences);\n } else if (isStandardFont || isMappedToStandardFont) {\n const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences);\n if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Tahoma|Verdana/i.test(name)) {\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\", 1)[0];\n }\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue;\n }\n if (table.length === 0) {\n continue;\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n function readTableEntry(file) {\n const tag = file.getString(4);\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n const previousPosition = file.pos;\n file.pos = file.start || 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n if (tag === \"head\") {\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20;\n }\n const view = tag === \"CFF \" ? null : new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n view\n };\n }\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16()\n };\n }\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n }\n function readTrueTypeCollectionData(ttc, fontName) {\n const {\n numFonts,\n offsetTable\n } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n if (!potentialTables.name) {\n throw new FormatError('TrueType Collection font must contain a \"name\" table.');\n }\n const [nameTable] = readNameTable(potentialTables.name);\n for (const nameArr of nameTable) {\n for (const entry of nameArr) {\n const nameEntry = entry?.replaceAll(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(`TrueType Collection does not contain \"${fontName}\" font, ` + `falling back to \"${fallbackData.name}\" font instead.`);\n return {\n header: fallbackData.header,\n tables: fallbackData.tables\n };\n }\n throw new FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\n }\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n let segment;\n let start = (file.start || 0) + cmap.offset;\n file.pos = start;\n file.skip(2);\n const numTables = file.getUint16();\n let potentialTable;\n let canBreak = false;\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) {\n continue;\n }\n if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n useTable = true;\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset\n };\n }\n if (canBreak) {\n break;\n }\n }\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n const format = file.getUint16();\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n if (format === 0) {\n file.skip(2 + 2);\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n file.skip(2 + 2);\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16()\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId\n });\n } else {\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId\n });\n }\n }\n }\n } else if (format === 4) {\n file.skip(2 + 2);\n const segCount = file.getUint16() >> 1;\n file.skip(6);\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({\n end: file.getUint16()\n });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n }\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = glyphId + delta & 0xffff;\n mappings.push({\n charCode: j,\n glyphId\n });\n }\n }\n } else if (format === 6) {\n file.skip(2 + 2);\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n mappings.push({\n charCode,\n glyphId\n });\n }\n } else if (format === 12) {\n file.skip(2 + 4 + 4);\n const nGroups = file.getInt32() >>> 0;\n for (j = 0; j < nGroups; j++) {\n const startCharCode = file.getInt32() >>> 0;\n const endCharCode = file.getInt32() >>> 0;\n let glyphCode = file.getInt32() >>> 0;\n for (let charCode = startCharCode; charCode <= endCharCode; charCode++) {\n mappings.push({\n charCode,\n glyphId: glyphCode++\n });\n }\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false\n };\n }\n const finalMappings = [],\n seenCharCodes = new Set();\n for (const map of mappings) {\n const {\n charCode\n } = map;\n if (seenCharCodes.has(charCode)) {\n continue;\n }\n seenCharCodes.add(charCode);\n finalMappings.push(map);\n }\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings: finalMappings.sort((a, b) => a.charCode - b.charCode),\n hasShortCmap\n };\n }\n function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n file.pos = (file.start || 0) + header.offset;\n file.pos += 4;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n const caretOffset = file.getUint16();\n file.pos += 8;\n file.pos += 2;\n let numOfMetrics = file.getUint16();\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n if (numOfMetrics > numGlyphs) {\n info(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`);\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n if (numMissing > 0) {\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0\n };\n if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) {\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n const xMin = signedInt16(glyf[2], glyf[3]);\n const yMin = signedInt16(glyf[4], glyf[5]);\n const xMax = signedInt16(glyf[6], glyf[7]);\n const yMax = signedInt16(glyf[8], glyf[9]);\n if (xMin > xMax) {\n writeSignedInt16(glyf, 2, xMax);\n writeSignedInt16(glyf, 6, xMin);\n }\n if (yMin > yMax) {\n writeSignedInt16(glyf, 4, yMax);\n writeSignedInt16(glyf, 8, yMin);\n }\n const contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n if (contoursCount < -1) {\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = glyf[j] << 8 | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n const instructionsStart = j;\n const instructionsLength = glyf[j] << 8 | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n if (repeat === 0) {\n glyf[j - 1] ^= 8;\n }\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = glyphDataLength + 3 & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n function sanitizeHead(head, numGlyphs, locaLength) {\n const {\n data,\n view\n } = head;\n const version = view.getInt32(0);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n view.setInt32(0, 0x00010000);\n }\n const indexToLocFormat = signedInt16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n }\n }\n }\n function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = value >>> 24 & 0xff;\n data[offset + 1] = value >> 16 & 0xff;\n data[offset + 2] = value >> 8 & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return data[offset] << 9 | data[offset + 1] << 1;\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = value >> 9 & 0xff;\n data[offset + 1] = value >> 1 & 0xff;\n };\n }\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n let i, j;\n const locaEntries = [];\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0\n });\n }\n locaEntries.sort((a, b) => a.offset - b.offset);\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n locaEntries.sort((a, b) => a.index - b.index);\n for (i = 0; i < numGlyphs; i++) {\n const {\n offset,\n endOffset\n } = locaEntries[i];\n if (offset !== 0 || endOffset !== 0) {\n break;\n }\n const nextOffset = locaEntries[i + 1].offset;\n if (nextOffset === 0) {\n continue;\n }\n locaEntries[i].endOffset = nextOffset;\n break;\n }\n const last = locaEntries.at(-2);\n if (last.offset !== 0 && last.endOffset === 0) {\n last.endOffset = oldGlyfDataLength;\n }\n const droppedGlyphs = pruneCompositeGlyphCycles(oldGlyfData, locaEntries, numGlyphs);\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = droppedGlyphs.has(i) ? {\n length: 0,\n sizeOfInstructions: 0\n } : sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n if (writeOffset === 0) {\n const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions\n };\n }\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start || 0) + post.offset;\n font.pos = start;\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n font.skip(28);\n let glyphNames;\n let valid = true;\n let i;\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [];\n while (font.pos < end) {\n const strLen = font.getByte(),\n str = font.getString(strLen);\n customNames.push(str);\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n function readNameTable(nameTable) {\n const start = (font.start || 0) + nameTable.offset;\n font.pos = start;\n const names = [[], []],\n records = [];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n return [names, records];\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16()\n };\n if (isMacNameRecord(r) || isWinNameRecord(r)) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue;\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue;\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return [names, records];\n }\n const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii;) {\n const op = data[i++];\n if (op === 0x40) {\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(signedInt16(b, data[i++]));\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push(signedInt16(b, data[i++]));\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n if (!inFDEF && !inELSE) {\n funcId = stack.at(-1);\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n callstack.push({\n data,\n i,\n stackTop: stack.length - 1\n });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = {\n data,\n i\n };\n } else if (op === 0x2d) {\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n } else if (op === 0x58) {\n ++ifLevel;\n } else if (op === 0x1b) {\n inELSE = ifLevel;\n } else if (op === 0x59) {\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n if (!inFDEF && !inELSE) {\n const offset = stack.at(-1);\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN);\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n function foldTTTable(table, content) {\n if (content.length > 1) {\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = newLength + 3 & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n font = new Stream(new Uint8Array(font.getBytes()));\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n const isTrueType = !tables[\"CFF \"];\n let parsedCff = null;\n if (!isTrueType) {\n try {\n parsedCff = new CFFParser(new Stream(tables[\"CFF \"].data), properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)).parse();\n } catch {\n warn(\"Failed to parse font \" + properties.loadedName);\n }\n if (header.version === \"OTTO\" && (!properties.composite || properties.fontFileN === \"FontFile3\" && parsedCff?.isCIDFont) || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n return this.convert(name, new CFFFont(new Stream(tables[\"CFF \"].data), properties), properties);\n }\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0)\n };\n }\n this.isOpenType = false;\n }\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n let numGlyphsFromCFF;\n if (parsedCff) {\n try {\n parsedCff.duplicateFirstGlyph();\n tables[\"CFF \"].data = new CFFCompiler(parsedCff).compile();\n numGlyphsFromCFF = parsedCff.charStringCount;\n } catch {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n font.pos = (font.start || 0) + tables.maxp.offset;\n let version = font.getInt32();\n const numGlyphs = numGlyphsFromCFF ?? font.getUint16();\n if (version === 0x00005000 && tables.maxp.length !== 6) {\n tables.maxp.data = tables.maxp.data.subarray(0, 6);\n tables.maxp.length = 6;\n }\n if (version !== 0x00010000 && version !== 0x00005000) {\n if (tables.maxp.length === 6) {\n version = 0x0005000;\n } else if (tables.maxp.length >= 32) {\n version = 0x00010000;\n } else {\n throw new FormatError(`\"maxp\" table has a wrong version number`);\n }\n writeUint32(tables.maxp.data, 0, version);\n }\n let isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n if (tables.loca) {\n const locaLength = isGlyphLocationsLong ? (numGlyphs + 1) * 4 : (numGlyphs + 1) * 2;\n if (tables.loca.length !== locaLength) {\n warn(\"Incorrect 'loca' table length -- attempting to fix it.\");\n const sortedTables = Object.values(tables).filter(Boolean).sort((a, b) => a.offset - b.offset);\n const locaIndex = sortedTables.indexOf(tables.loca);\n const nextTable = sortedTables[locaIndex + 1] || null;\n if (nextTable && tables.loca.offset + locaLength < nextTable.offset) {\n const previousPos = font.pos;\n font.pos = font.start || 0;\n font.skip(tables.loca.offset);\n tables.loca.data = font.getBytes(locaLength);\n tables.loca.length = locaLength;\n font.pos = previousPos;\n }\n }\n }\n if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\n const {\n scaleFactors\n } = properties;\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs\n });\n glyphs.scale(scaleFactors);\n const {\n glyf,\n loca,\n isLocationLong\n } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n isGlyphLocationsLong = tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n const metrics = tables.hmtx.data;\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));\n metrics[j] = advanceWidth >> 8 & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 32) {\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n } else if (isTrueType && version === 0x00005000) {\n const newMaxp = new Uint8Array(32);\n writeUint32(newMaxp, 0, 0x00010000);\n newMaxp[4] = numGlyphs >> 8 & 0xff;\n newMaxp[5] = numGlyphs & 0xff;\n newMaxp.fill(0xff, 6, 14);\n newMaxp[15] = 2;\n newMaxp[28] = 0xff;\n newMaxp[29] = 0xff;\n newMaxp[31] = 0x10;\n tables.maxp.data = newMaxp;\n tables.maxp.length = 32;\n version = 0x00010000;\n }\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n missingGlyphs = glyphsInfo.missingGlyphs;\n if (version >= 0x00010000 && tables.maxp.length >= 32) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: signedInt16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])\n };\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n if (this.cssFontInfo?.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties)\n };\n const charCodeToGlyphId = Object.create(null);\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n let baseEncoding = [],\n forcePostTable = false;\n if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n if (unicodeOrCharCode === undefined) {\n if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n if (unicodeOrCharCode === undefined) {\n continue;\n }\n }\n for (const mapping of cmapMappings) {\n if (mapping.charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n forcePostTable = true;\n } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\n for (const mapping of cmapMappings) {\n let charCode = mapping.charCode;\n if (charCode >= 0xf000 && charCode <= 0xf0ff) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n }\n } else {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n }\n if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n if (!properties.isInternalFont && charCodeToGlyphId[0] === undefined && hasGlyph(0)) {\n charCodeToGlyphId[0] = 0;\n }\n }\n if (charCodeToGlyphId.length === 0) {\n charCodeToGlyphId[0] = 0;\n }\n const glyphZeroId = dupFirstEntry ? numGlyphsOut - 1 : 0;\n if (!properties.cssFontInfo) {\n const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut)\n };\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n };\n }\n }\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name)\n };\n } else {\n const [namePrototype, nameRecords] = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n if (!properties.composite) {\n adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\n }\n }\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n convert(fontName, font, properties) {\n properties.fixedPitch = false;\n if (properties.builtInEncoding) {\n adjustType1ToUnicode(properties, properties.builtInEncoding);\n }\n const glyphZeroId = font instanceof CFFFont ? font.numGlyphs - 1 : 1;\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n let toUnicodeExtraMap = null;\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\n }\n const numGlyphs = font.numGlyphs;\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n (charCodes ||= []).push(charCode | 0);\n }\n }\n return charCodes;\n }\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n const seacs = font.seacs;\n if (newMapping && (/* inlined export .SEAC_ANALYSIS_ENABLED */true) && seacs?.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n };\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n continue;\n }\n for (const charCode of charCodes) {\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset\n };\n }\n }\n properties.seacMap = seacMap;\n }\n const unitsPerEm = properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000;\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n builder.addTable(\"CFF \", font.data);\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs));\n builder.addTable(\"head\", function fontTableHead() {\n const dateArr = [0x00, 0x00, 0x00, 0x00, 0x9e, 0x0b, 0x7e, 0x27];\n const head = new DataBuilder({\n exactLength: 54\n });\n head.setArray([0x00, 0x01, 0x00, 0x00]);\n head.setArray([0x00, 0x00, 0x10, 0x00]);\n head.skip(4);\n head.setArray([0x5f, 0x0f, 0x3c, 0xf5]);\n head.skip(2);\n head.setSafeInt16(unitsPerEm);\n head.setArray(dateArr);\n head.setArray(dateArr);\n head.skip(2);\n head.setSafeInt16(properties.descent);\n head.setArray([0x0f, 0xff]);\n head.setSafeInt16(properties.ascent);\n head.setInt16(properties.italicAngle ? 2 : 0);\n head.setArray([0x00, 0x11]);\n head.skip(2 + 2 + 2);\n return head.data;\n }());\n builder.addTable(\"hhea\", function fontTableHhea() {\n const hhea = new DataBuilder({\n exactLength: 36\n });\n hhea.setArray([0x00, 0x01, 0x00, 0x00]);\n hhea.setSafeInt16(properties.ascent);\n hhea.setSafeInt16(properties.descent);\n hhea.skip(2);\n hhea.setArray([0xff, 0xff]);\n hhea.skip(2 + 2 + 2);\n hhea.setSafeInt16(properties.capHeight);\n hhea.setSafeInt16(Math.tan(properties.italicAngle) * properties.xHeight);\n hhea.skip(2 + 2 + 2 + 2 + 2 + 2);\n hhea.setInt16(numGlyphs);\n return hhea.data;\n }());\n builder.addTable(\"hmtx\", function fontTableHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff?.widths ?? null;\n const hmtx = new DataBuilder({\n exactLength: numGlyphs * 4\n });\n hmtx.skip(4);\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n width = charstrings[i - 1].width || 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx.setInt16(width);\n hmtx.skip(2);\n }\n return hmtx.data;\n }());\n builder.addTable(\"maxp\", function fontTableMaxp() {\n const maxp = new DataBuilder({\n exactLength: 6\n });\n maxp.setArray([0x00, 0x00, 0x50, 0x00]);\n maxp.setInt16(numGlyphs);\n return maxp.data;\n }());\n builder.addTable(\"name\", createNameTable(fontName));\n builder.addTable(\"post\", createPostTable(properties));\n return builder.toArray();\n }\n get _spaceWidth() {\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (const glyphName of possibleSpaceReplacements) {\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n width = this.widths[charcode];\n if (width) {\n break;\n }\n }\n return shadow(this, \"_spaceWidth\", width || this.defaultWidth);\n }\n _charToGlyph(charcode, isSpace = false) {\n let glyph = this.#glyphCache.get(charcode);\n if (glyph?.isSpace === isSpace) {\n return glyph;\n }\n let fontCharCode, width, operatorListId;\n let widthCode = charcode;\n if (this.cMap?.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics?.[widthCode] || this.defaultVMetrics;\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n let isInFont = this.toFontChar[charcode] !== undefined;\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n fontCharCode = 0x20;\n if (glyphName === \"\") {\n width ||= this._spaceWidth;\n unicode = String.fromCharCode(fontCharCode);\n }\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n if (this.isType3Font) {\n operatorListId = fontCharCode;\n }\n let accent = null;\n if (this.seacMap?.[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset\n };\n }\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n if (this.missingFile && this.vertical && fontChar.length === 1) {\n const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\n if (vertical) {\n fontChar = unicode = String.fromCharCode(vertical);\n }\n }\n glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n this.#glyphCache.set(charcode, glyph);\n return glyph;\n }\n charsToGlyphs(chars) {\n let glyphs = this.#charsCache.get(chars);\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n if (this.cMap) {\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const {\n charcode,\n length\n } = c;\n i += length;\n const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n this.#charsCache.set(chars, glyphs);\n return glyphs;\n }\n getCharPositions(chars) {\n const positions = [];\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n return positions;\n }\n get glyphCacheValues() {\n return this.#glyphCache.values();\n }\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xffff) {\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));\n }\n continue;\n }\n }\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n buffers.push(currentBuf.join(\"\"));\n return buffers;\n }\n}\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n charsToGlyphs() {\n return [];\n }\n encodeString(chars) {\n return [chars];\n }\n exportData() {\n return {\n error: this.error\n };\n }\n}\n\n;// ./src/core/calibri_factors.js\nconst CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.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];\nconst CalibriItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.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, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriRegularMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\n\n;// ./src/core/helvetica_factors.js\nconst HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.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, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.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, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.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, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.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, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/liberationsans_widths.js\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 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, 1000, 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];\nconst 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];\nconst 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, 1000, 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, 1000, 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, 1000, 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, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 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, 1000, 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];\nconst 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];\n\n;// ./src/core/myriadpro_factors.js\nconst MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.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, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.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];\nconst MyriadProBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.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, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.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, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.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];\nconst MyriadProBoldItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.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, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.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, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.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];\nconst MyriadProItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.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, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.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];\nconst MyriadProRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/segoeui_factors.js\nconst SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.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, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.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, 0.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, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiBoldMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.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, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiBoldItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.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, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.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, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.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, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.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];\nconst SegoeuiRegularMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\n\n;// ./src/core/xfa_fonts.js\n\n\n\n\n\n\n\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics\n };\n t[\"MyriadPro-It\"] = t[\"MyriadPro-Italic\"] = t[\"PdfJS-Fallback-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics\n };\n t[\"MyriadPro-BoldIt\"] = t[\"MyriadPro-BoldItalic\"] = t[\"PdfJS-Fallback-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics\n };\n t.ArialMT = t.Arial = t[\"Arial-Regular\"] = {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics\n };\n});\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n const {\n baseWidths,\n baseMapping,\n factors\n } = info;\n const rescaledBaseWidths = !factors ? baseWidths : baseWidths.map((w, i) => w * factors[i]);\n let currentCode = -2;\n let currentArray;\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {\n if (unicode === -1) {\n continue;\n }\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n return newWidths;\n}\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\"LastChar\", widths.at(-2) + widths.at(-1).length - 1);\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n return dict;\n}\n\n;// ./src/core/postscript/lexer.js\nconst TOKEN = {\n number: 0,\n lbrace: 1,\n rbrace: 2,\n true: 3,\n false: 4,\n add: 5,\n sub: 6,\n mul: 7,\n div: 8,\n idiv: 9,\n mod: 10,\n exp: 11,\n eq: 12,\n ne: 13,\n gt: 14,\n ge: 15,\n lt: 16,\n le: 17,\n and: 18,\n or: 19,\n xor: 20,\n bitshift: 21,\n abs: 22,\n neg: 23,\n ceiling: 24,\n floor: 25,\n round: 26,\n truncate: 27,\n not: 28,\n sqrt: 29,\n sin: 30,\n cos: 31,\n ln: 32,\n log: 33,\n atan: 34,\n cvi: 35,\n cvr: 36,\n dup: 37,\n exch: 38,\n pop: 39,\n copy: 40,\n index: 41,\n roll: 42,\n if: 43,\n ifelse: 44,\n eof: 45,\n min: 46,\n max: 47\n};\nclass Token {\n constructor(id, value = null) {\n this.id = id;\n this.value = value;\n }\n}\nclass lexer_Lexer {\n static #singletons = null;\n static #operatorSingletons = null;\n static #initSingletons() {\n const singletons = Object.create(null);\n const operatorSingletons = Object.create(null);\n for (const [name, id] of Object.entries(TOKEN)) {\n if (name === \"number\") {\n continue;\n }\n const isOperator = id >= TOKEN.true && id <= TOKEN.ifelse;\n const token = new Token(id, isOperator ? name : null);\n singletons[name] = token;\n if (isOperator) {\n operatorSingletons[name] = token;\n }\n }\n this.#singletons = singletons;\n this.#operatorSingletons = operatorSingletons;\n }\n constructor(data) {\n if (!lexer_Lexer.#singletons) {\n lexer_Lexer.#initSingletons();\n }\n this.data = data;\n this.pos = 0;\n this.len = data.length;\n this._numberPattern = /[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/iy;\n this._identifierPattern = /[a-z]+/y;\n }\n _skipComment() {\n const lf = this.data.indexOf(\"\\n\", this.pos);\n const cr = this.data.indexOf(\"\\r\", this.pos);\n const eol = Math.min(lf < 0 ? this.len : lf, cr < 0 ? this.len : cr);\n this.pos = Math.min(eol + 1, this.len);\n }\n _getNumber() {\n this._numberPattern.lastIndex = this.pos;\n const match = this._numberPattern.exec(this.data);\n if (!match) {\n return new Token(TOKEN.number, 0);\n }\n const number = parseFloat(match[0]);\n if (!Number.isFinite(number)) {\n return new Token(TOKEN.number, 0);\n }\n this.pos = this._numberPattern.lastIndex;\n return new Token(TOKEN.number, number);\n }\n _getOperator() {\n this._identifierPattern.lastIndex = this.pos;\n const match = this._identifierPattern.exec(this.data);\n if (!match) {\n return new Token(TOKEN.number, 0);\n }\n this.pos = this._identifierPattern.lastIndex;\n const op = match[0];\n const token = lexer_Lexer.#operatorSingletons[op];\n if (!token) {\n return new Token(TOKEN.number, 0);\n }\n return token;\n }\n next() {\n while (this.pos < this.len) {\n const ch = this.data.charCodeAt(this.pos++);\n switch (ch) {\n case 0x00:\n case 0x09:\n case 0x0a:\n case 0x0c:\n case 0x0d:\n case 0x20:\n break;\n case 0x25:\n this._skipComment();\n break;\n case 0x7b:\n return lexer_Lexer.#singletons.lbrace;\n case 0x7d:\n return lexer_Lexer.#singletons.rbrace;\n case 0x2b:\n case 0x2d:\n this.pos--;\n return this._getNumber();\n case 0x2e:\n this.pos--;\n return this._getNumber();\n default:\n if (ch >= 0x30 && ch <= 0x39) {\n this.pos--;\n return this._getNumber();\n }\n if (ch >= 0x61 && ch <= 0x7a) {\n this.pos--;\n return this._getOperator();\n }\n return new Token(TOKEN.number, 0);\n }\n }\n return lexer_Lexer.#singletons.eof;\n }\n}\n\n;// ./src/core/postscript/ast.js\n\n\nconst PS_VALUE_TYPE = {\n numeric: 0,\n boolean: 1,\n unknown: 2\n};\nconst PS_NODE = {\n program: 0,\n block: 1,\n number: 2,\n operator: 3,\n if: 4,\n ifelse: 5,\n arg: 6,\n const: 7,\n unary: 8,\n binary: 9,\n ternary: 10\n};\nclass PsNode {\n constructor(type) {\n this.type = type;\n }\n}\nclass PsProgram extends PsNode {\n constructor(body) {\n super(PS_NODE.program);\n this.body = body;\n }\n}\nclass PsBlock extends PsNode {\n constructor(instructions) {\n super(PS_NODE.block);\n this.instructions = instructions;\n }\n}\nclass PsNumber extends PsNode {\n constructor(value) {\n super(PS_NODE.number);\n this.value = value;\n }\n}\nclass PsOperator extends PsNode {\n constructor(op) {\n super(PS_NODE.operator);\n this.op = op;\n }\n}\nclass PsIf extends PsNode {\n constructor(then) {\n super(PS_NODE.if);\n this.then = then;\n }\n}\nclass PsIfElse extends PsNode {\n constructor(then, otherwise) {\n super(PS_NODE.ifelse);\n this.then = then;\n this.otherwise = otherwise;\n }\n}\nclass PsArgNode extends PsNode {\n constructor(index) {\n super(PS_NODE.arg);\n this.index = index;\n this.valueType = PS_VALUE_TYPE.numeric;\n }\n}\nclass PsConstNode extends PsNode {\n constructor(value) {\n super(PS_NODE.const);\n this.value = value;\n this.valueType = typeof value === \"boolean\" ? PS_VALUE_TYPE.boolean : PS_VALUE_TYPE.numeric;\n }\n}\nclass PsUnaryNode extends PsNode {\n constructor(op, operand, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.unary);\n this.op = op;\n this.operand = operand;\n this.valueType = valueType;\n }\n}\nclass PsBinaryNode extends PsNode {\n constructor(op, first, second, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.binary);\n this.op = op;\n this.first = first;\n this.second = second;\n this.valueType = valueType;\n }\n}\nclass PsTernaryNode extends PsNode {\n constructor(cond, then, otherwise, valueType = PS_VALUE_TYPE.unknown) {\n super(PS_NODE.ternary);\n this.cond = cond;\n this.then = then;\n this.otherwise = otherwise;\n this.valueType = valueType;\n }\n}\nclass ast_Parser {\n constructor(lexer) {\n this.lexer = lexer;\n this._token = null;\n }\n static _isRegularOperator(id) {\n return id >= TOKEN.true && id < TOKEN.if;\n }\n _advance() {\n this._token = this.lexer.next();\n }\n _expect(id) {\n if (this._token.id !== id) {\n throw new FormatError(`PostScript function: expected token id ${id}, got ${this._token.id}.`);\n }\n const tok = this._token;\n this._advance();\n return tok;\n }\n parse() {\n this._advance();\n this._expect(TOKEN.lbrace);\n const block = this._parseBlock();\n this._expect(TOKEN.rbrace);\n if (this._token.id !== TOKEN.eof) {\n warn(\"PostScript function: unexpected content after closing brace.\");\n }\n return new PsProgram(block);\n }\n _parseBlock() {\n const instructions = [];\n while (true) {\n const tok = this._token;\n switch (tok.id) {\n case TOKEN.number:\n instructions.push(new PsNumber(tok.value));\n this._advance();\n break;\n case TOKEN.lbrace:\n {\n this._advance();\n const thenBlock = this._parseBlock();\n this._expect(TOKEN.rbrace);\n if (this._token.id === TOKEN.if) {\n this._advance();\n instructions.push(new PsIf(thenBlock));\n } else if (this._token.id === TOKEN.lbrace) {\n this._advance();\n const elseBlock = this._parseBlock();\n this._expect(TOKEN.rbrace);\n this._expect(TOKEN.ifelse);\n instructions.push(new PsIfElse(thenBlock, elseBlock));\n } else {\n throw new FormatError(\"PostScript function: a procedure block must be followed by 'if' or '{…} ifelse'.\");\n }\n break;\n }\n case TOKEN.rbrace:\n case TOKEN.eof:\n return new PsBlock(instructions);\n case TOKEN.if:\n case TOKEN.ifelse:\n throw new FormatError(`PostScript function: unexpected '${tok.value}' operator.`);\n default:\n if (ast_Parser._isRegularOperator(tok.id)) {\n instructions.push(new PsOperator(tok.id));\n this._advance();\n break;\n }\n throw new FormatError(`PostScript function: unexpected token id ${tok.id}.`);\n }\n }\n }\n}\nfunction parsePostScriptFunction(source) {\n return new ast_Parser(new lexer_Lexer(source)).parse();\n}\nfunction _nodesEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a.type !== b.type) {\n return false;\n }\n switch (a.type) {\n case PS_NODE.arg:\n return a.index === b.index;\n case PS_NODE.const:\n return a.value === b.value;\n case PS_NODE.unary:\n return a.op === b.op && _nodesEqual(a.operand, b.operand);\n case PS_NODE.binary:\n return a.op === b.op && _nodesEqual(a.first, b.first) && _nodesEqual(a.second, b.second);\n case PS_NODE.ternary:\n return _nodesEqual(a.cond, b.cond) && _nodesEqual(a.then, b.then) && _nodesEqual(a.otherwise, b.otherwise);\n default:\n return false;\n }\n}\nfunction _evalBinaryConst(op, a, b) {\n switch (op) {\n case TOKEN.add:\n return a + b;\n case TOKEN.sub:\n return a - b;\n case TOKEN.mul:\n return a * b;\n case TOKEN.div:\n return b !== 0 ? a / b : 0;\n case TOKEN.idiv:\n return b !== 0 ? Math.trunc(a / b) : 0;\n case TOKEN.mod:\n return b !== 0 ? a - Math.trunc(a / b) * b : 0;\n case TOKEN.exp:\n {\n const r = a ** b;\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.atan:\n {\n let deg = Math.atan2(a, b) * (180 / Math.PI);\n if (deg < 0) {\n deg += 360;\n }\n return deg;\n }\n case TOKEN.eq:\n return a === b;\n case TOKEN.ne:\n return a !== b;\n case TOKEN.gt:\n return a > b;\n case TOKEN.ge:\n return a >= b;\n case TOKEN.lt:\n return a < b;\n case TOKEN.le:\n return a <= b;\n case TOKEN.and:\n return typeof a === \"boolean\" ? a && b : a & b | 0;\n case TOKEN.or:\n return typeof a === \"boolean\" ? a || b : a | b | 0;\n case TOKEN.xor:\n return typeof a === \"boolean\" ? a !== b : a ^ b | 0;\n case TOKEN.bitshift:\n return b >= 0 ? a << b | 0 : a >> -b | 0;\n case TOKEN.min:\n return Math.min(a, b);\n case TOKEN.max:\n return Math.max(a, b);\n default:\n return undefined;\n }\n}\nfunction _evalUnaryConst(op, v) {\n switch (op) {\n case TOKEN.abs:\n return Math.abs(v);\n case TOKEN.neg:\n return -v;\n case TOKEN.ceiling:\n return Math.ceil(v);\n case TOKEN.floor:\n return Math.floor(v);\n case TOKEN.round:\n return Math.round(v);\n case TOKEN.truncate:\n return Math.trunc(v);\n case TOKEN.sqrt:\n {\n const r = Math.sqrt(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.sin:\n return Math.sin(v % 360 * Math.PI / 180);\n case TOKEN.cos:\n return Math.cos(v % 360 * Math.PI / 180);\n case TOKEN.ln:\n {\n const r = Math.log(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.log:\n {\n const r = Math.log10(v);\n return Number.isFinite(r) ? r : undefined;\n }\n case TOKEN.cvi:\n return Math.trunc(v);\n case TOKEN.cvr:\n return v;\n case TOKEN.not:\n return typeof v === \"boolean\" ? !v : ~v;\n default:\n return undefined;\n }\n}\nconst MAX_STACK_SIZE = 100;\nfunction _unaryValueType(op, operandType) {\n return op === TOKEN.not ? operandType : PS_VALUE_TYPE.numeric;\n}\nfunction _binaryValueType(op, firstType, secondType) {\n switch (op) {\n case TOKEN.eq:\n case TOKEN.ne:\n case TOKEN.gt:\n case TOKEN.ge:\n case TOKEN.lt:\n case TOKEN.le:\n return PS_VALUE_TYPE.boolean;\n case TOKEN.and:\n case TOKEN.or:\n case TOKEN.xor:\n return firstType === secondType && firstType !== PS_VALUE_TYPE.unknown ? firstType : PS_VALUE_TYPE.unknown;\n default:\n return PS_VALUE_TYPE.numeric;\n }\n}\nclass PSStackToTree {\n static #binaryOps = null;\n static #unaryOps = null;\n static #idempotentUnary = null;\n static #negatedComparison = null;\n static #init() {\n this.#binaryOps = new Set([TOKEN.add, TOKEN.sub, TOKEN.mul, TOKEN.div, TOKEN.idiv, TOKEN.mod, TOKEN.exp, TOKEN.atan, TOKEN.eq, TOKEN.ne, TOKEN.gt, TOKEN.ge, TOKEN.lt, TOKEN.le, TOKEN.and, TOKEN.or, TOKEN.xor, TOKEN.bitshift]);\n this.#unaryOps = new Set([TOKEN.abs, TOKEN.neg, TOKEN.ceiling, TOKEN.floor, TOKEN.round, TOKEN.truncate, TOKEN.sqrt, TOKEN.sin, TOKEN.cos, TOKEN.ln, TOKEN.log, TOKEN.cvi, TOKEN.cvr, TOKEN.not]);\n this.#idempotentUnary = new Set([TOKEN.abs, TOKEN.ceiling, TOKEN.cvi, TOKEN.cvr, TOKEN.floor, TOKEN.round, TOKEN.truncate]);\n this.#negatedComparison = new Map([[TOKEN.eq, TOKEN.ne], [TOKEN.ne, TOKEN.eq], [TOKEN.lt, TOKEN.ge], [TOKEN.le, TOKEN.gt], [TOKEN.gt, TOKEN.le], [TOKEN.ge, TOKEN.lt]]);\n }\n evaluate(program, numInputs) {\n if (!PSStackToTree.#binaryOps) {\n PSStackToTree.#init();\n }\n this._failed = false;\n if (numInputs > MAX_STACK_SIZE) {\n return null;\n }\n const stack = [];\n for (let i = 0; i < numInputs; i++) {\n stack.push(new PsArgNode(i));\n }\n this._evalBlock(program.body, stack);\n if (this._failed) {\n return null;\n }\n PSStackToTree.#markShared(stack);\n return stack;\n }\n static #markShared(outputs) {\n const refCount = new Map();\n const visit = node => {\n if (!node || node.type === PS_NODE.arg || node.type === PS_NODE.const) {\n return;\n }\n const prev = refCount.get(node) ?? 0;\n refCount.set(node, prev + 1);\n if (prev > 0) {\n return;\n }\n switch (node.type) {\n case PS_NODE.unary:\n visit(node.operand);\n break;\n case PS_NODE.binary:\n visit(node.first);\n visit(node.second);\n break;\n case PS_NODE.ternary:\n visit(node.cond);\n visit(node.then);\n visit(node.otherwise);\n break;\n }\n };\n for (const output of outputs) {\n visit(output);\n }\n for (const [node, count] of refCount) {\n if (count > 1) {\n node.shared = true;\n node.sharedCount = count;\n }\n }\n }\n _evalBlock(block, stack) {\n this._evalBlockFrom(block.instructions, 0, stack);\n }\n _evalBlockFrom(instructions, startIdx, stack) {\n for (let idx = startIdx; idx < instructions.length; idx++) {\n if (this._failed) {\n break;\n }\n const instr = instructions[idx];\n switch (instr.type) {\n case PS_NODE.number:\n stack.push(new PsConstNode(instr.value));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case PS_NODE.operator:\n this._evalOp(instr.op, stack);\n break;\n case PS_NODE.if:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const cond = stack.pop();\n const saved = stack.slice();\n this._evalBlock(instr.then, stack);\n if (this._failed) {\n break;\n }\n if (stack.length === saved.length) {\n for (let i = 0; i < stack.length; i++) {\n if (stack[i] !== saved[i]) {\n stack[i] = this._makeTernary(cond, stack[i], saved[i]);\n }\n }\n } else if (stack.length > saved.length) {\n if (cond.type === PS_NODE.const) {\n if (!cond.value) {\n stack.length = 0;\n stack.push(...saved);\n }\n break;\n }\n const trueStack = stack.slice();\n this._evalBlockFrom(instructions, idx + 1, trueStack);\n if (this._failed) {\n break;\n }\n const falseStack = saved;\n this._evalBlockFrom(instructions, idx + 1, falseStack);\n if (this._failed) {\n break;\n }\n if (trueStack.length !== falseStack.length) {\n const zero = new PsConstNode(0);\n while (trueStack.length < falseStack.length) {\n trueStack.push(zero);\n }\n while (falseStack.length < trueStack.length) {\n falseStack.push(zero);\n }\n }\n stack.length = 0;\n for (let i = 0; i < trueStack.length; i++) {\n stack.push(this._makeTernary(cond, trueStack[i], falseStack[i]));\n }\n return;\n } else {\n this._failed = true;\n }\n break;\n }\n case PS_NODE.ifelse:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const cond = stack.pop();\n const snapshot = stack.slice();\n const thenStack = snapshot.slice();\n this._evalBlock(instr.then, thenStack);\n if (this._failed) {\n break;\n }\n const elseStack = snapshot.slice();\n this._evalBlock(instr.otherwise, elseStack);\n if (this._failed) {\n break;\n }\n if (thenStack.length !== elseStack.length) {\n const zero = new PsConstNode(0);\n while (thenStack.length < elseStack.length) {\n thenStack.push(zero);\n }\n while (elseStack.length < thenStack.length) {\n elseStack.push(zero);\n }\n }\n stack.length = 0;\n for (let i = 0; i < thenStack.length; i++) {\n stack.push(this._makeTernary(cond, thenStack[i], elseStack[i]));\n }\n break;\n }\n }\n }\n }\n _evalOp(op, stack) {\n if (PSStackToTree.#binaryOps.has(op)) {\n if (stack.length < 2) {\n this._failed = true;\n return;\n }\n const first = stack.pop();\n const second = stack.pop();\n stack.push(this._makeBinary(op, first, second));\n return;\n }\n if (PSStackToTree.#unaryOps.has(op)) {\n if (stack.length < 1) {\n this._failed = true;\n return;\n }\n stack.push(this._makeUnary(op, stack.pop()));\n return;\n }\n switch (op) {\n case TOKEN.true:\n stack.push(new PsConstNode(true));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.false:\n stack.push(new PsConstNode(false));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.dup:\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n stack.push(stack.at(-1));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n break;\n case TOKEN.exch:\n {\n if (stack.length < 2) {\n this._failed = true;\n break;\n }\n const a = stack.pop();\n const b = stack.pop();\n stack.push(a, b);\n break;\n }\n case TOKEN.pop:\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n stack.pop();\n break;\n case TOKEN.copy:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n === 0) {} else if (n < 0 || n > stack.length) {\n this._failed = true;\n } else {\n stack.push(...stack.slice(-n));\n if (stack.length > MAX_STACK_SIZE) {\n this._failed = true;\n }\n }\n } else {\n this._failed = true;\n }\n break;\n }\n case TOKEN.index:\n {\n if (stack.length < 1) {\n this._failed = true;\n break;\n }\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n < 0 || n >= stack.length) {\n this._failed = true;\n } else {\n stack.push(stack.at(-n - 1));\n }\n } else {\n this._failed = true;\n }\n break;\n }\n case TOKEN.roll:\n {\n if (stack.length < 2) {\n this._failed = true;\n break;\n }\n const jNode = stack.pop();\n const nNode = stack.pop();\n if (nNode.type === PS_NODE.const && jNode.type === PS_NODE.const) {\n const n = nNode.value | 0;\n if (n === 0) {} else if (n < 0 || n > stack.length) {\n this._failed = true;\n } else {\n const j = ((jNode.value | 0) % n + n) % n;\n if (j > 0) {\n const slice = stack.splice(-n, n);\n stack.push(...slice.slice(n - j), ...slice.slice(0, n - j));\n }\n }\n } else {\n this._failed = true;\n }\n break;\n }\n default:\n this._failed = true;\n break;\n }\n }\n _makeBinary(op, first, second) {\n if (first.type === PS_NODE.const && second.type === PS_NODE.const) {\n const v = _evalBinaryConst(op, second.value, first.value);\n if (v !== undefined) {\n return new PsConstNode(v);\n }\n }\n if (_nodesEqual(first, second)) {\n switch (op) {\n case TOKEN.sub:\n return new PsConstNode(0);\n case TOKEN.xor:\n return new PsConstNode(first.valueType === PS_VALUE_TYPE.boolean ? false : 0);\n case TOKEN.and:\n case TOKEN.or:\n return first;\n case TOKEN.min:\n case TOKEN.max:\n return first;\n case TOKEN.eq:\n case TOKEN.ge:\n case TOKEN.le:\n return new PsConstNode(true);\n case TOKEN.ne:\n case TOKEN.gt:\n case TOKEN.lt:\n return new PsConstNode(false);\n }\n }\n if (first.type === PS_NODE.const) {\n const b = first.value;\n switch (op) {\n case TOKEN.add:\n if (b === 0) {\n return second;\n }\n break;\n case TOKEN.sub:\n if (b === 0) {\n return second;\n }\n break;\n case TOKEN.mul:\n if (b === 1) {\n return second;\n }\n if (b === 0) {\n return first;\n }\n if (b === -1) {\n return this._makeUnary(TOKEN.neg, second);\n }\n break;\n case TOKEN.div:\n if (b !== 0) {\n return this._makeBinary(TOKEN.mul, new PsConstNode(1 / b), second);\n }\n break;\n case TOKEN.idiv:\n if (b === 1) {\n return second;\n }\n break;\n case TOKEN.exp:\n if (b === 1) {\n return second;\n }\n if (b === -1) {\n return this._makeBinary(TOKEN.div, second, new PsConstNode(1));\n }\n if (b === 0.5) {\n return this._makeUnary(TOKEN.sqrt, second);\n }\n if (b === 0.25) {\n const sqrtOnce = this._makeUnary(TOKEN.sqrt, second);\n return this._makeUnary(TOKEN.sqrt, sqrtOnce);\n }\n if (b === 2) {\n return this._makeBinary(TOKEN.mul, second, second);\n }\n if (b === 3) {\n return this._makeBinary(TOKEN.mul, this._makeBinary(TOKEN.mul, second, second), second);\n }\n if (b === 4) {\n const square = this._makeBinary(TOKEN.mul, second, second);\n return this._makeBinary(TOKEN.mul, square, square);\n }\n if (b === 0) {\n return new PsConstNode(1);\n }\n break;\n case TOKEN.and:\n if (b === true) {\n return second;\n }\n if (b === false) {\n return first;\n }\n break;\n case TOKEN.or:\n if (b === false) {\n return second;\n }\n if (b === true) {\n return first;\n }\n break;\n case TOKEN.min:\n if (second.type === PS_NODE.binary && second.op === TOKEN.max && second.first.type === PS_NODE.const && second.first.value >= b) {\n return first;\n }\n break;\n case TOKEN.max:\n if (second.type === PS_NODE.binary && second.op === TOKEN.min && second.first.type === PS_NODE.const && second.first.value <= b) {\n return first;\n }\n break;\n }\n }\n if (second.type === PS_NODE.const) {\n const a = second.value;\n switch (op) {\n case TOKEN.add:\n if (a === 0) {\n return first;\n }\n break;\n case TOKEN.sub:\n if (a === 0) {\n return this._makeUnary(TOKEN.neg, first);\n }\n break;\n case TOKEN.mul:\n if (a === 1) {\n return first;\n }\n if (a === 0) {\n return second;\n }\n if (a === -1) {\n return this._makeUnary(TOKEN.neg, first);\n }\n break;\n case TOKEN.and:\n if (a === true) {\n return first;\n }\n if (a === false) {\n return second;\n }\n break;\n case TOKEN.or:\n if (a === false) {\n return first;\n }\n if (a === true) {\n return second;\n }\n break;\n }\n }\n return new PsBinaryNode(op, first, second, _binaryValueType(op, first.valueType, second.valueType));\n }\n _makeUnary(op, operand) {\n if (operand.type === PS_NODE.const) {\n const v = _evalUnaryConst(op, operand.value);\n if (v !== undefined) {\n return new PsConstNode(v);\n }\n }\n if (op === TOKEN.not && operand.type === PS_NODE.binary) {\n const negated = PSStackToTree.#negatedComparison.get(operand.op);\n if (negated !== undefined) {\n return new PsBinaryNode(negated, operand.first, operand.second, PS_VALUE_TYPE.boolean);\n }\n }\n if (op === TOKEN.neg && operand.type === PS_NODE.binary && operand.op === TOKEN.sub) {\n return this._makeBinary(TOKEN.sub, operand.second, operand.first);\n }\n if (operand.type === PS_NODE.unary) {\n if (op === TOKEN.neg && operand.op === TOKEN.neg || op === TOKEN.not && operand.op === TOKEN.not) {\n return operand.operand;\n }\n if (op === TOKEN.abs && operand.op === TOKEN.neg) {\n return this._makeUnary(TOKEN.abs, operand.operand);\n }\n if (PSStackToTree.#idempotentUnary.has(op) && op === operand.op) {\n return operand;\n }\n }\n return new PsUnaryNode(op, operand, _unaryValueType(op, operand.valueType));\n }\n _makeTernary(cond, then, otherwise) {\n if (cond.type === PS_NODE.const) {\n return cond.value ? then : otherwise;\n }\n if (_nodesEqual(then, otherwise)) {\n return then;\n }\n if (then.type === PS_NODE.const && otherwise.type === PS_NODE.const) {\n if (then.value === true && otherwise.value === false) {\n return cond;\n }\n if (then.value === false && otherwise.value === true) {\n return this._makeUnary(TOKEN.not, cond);\n }\n }\n if (cond.type === PS_NODE.binary) {\n const {\n op: cop,\n first: cf,\n second: cs\n } = cond;\n if (cop === TOKEN.gt || cop === TOKEN.ge) {\n if (_nodesEqual(then, cf) && _nodesEqual(otherwise, cs)) {\n return this._makeBinary(TOKEN.min, cf, cs);\n }\n if (_nodesEqual(then, cs) && _nodesEqual(otherwise, cf)) {\n return this._makeBinary(TOKEN.max, cf, cs);\n }\n } else if (cop === TOKEN.lt || cop === TOKEN.le) {\n if (_nodesEqual(then, cf) && _nodesEqual(otherwise, cs)) {\n return this._makeBinary(TOKEN.max, cf, cs);\n }\n if (_nodesEqual(then, cs) && _nodesEqual(otherwise, cf)) {\n return this._makeBinary(TOKEN.min, cf, cs);\n }\n }\n }\n return new PsTernaryNode(cond, then, otherwise, then.valueType === otherwise.valueType ? then.valueType : PS_VALUE_TYPE.unknown);\n }\n}\n\n;// ./src/core/postscript/js_evaluator.js\n\n\n\nconst OP = {\n ARG: 0,\n CONST: 1,\n STORE: 2,\n IF: 3,\n JUMP: 4,\n ABS: 5,\n NEG: 6,\n CEIL: 7,\n FLOOR: 8,\n ROUND: 9,\n TRUNC: 10,\n NOT_B: 11,\n NOT_N: 12,\n SQRT: 13,\n SIN: 14,\n COS: 15,\n LN: 16,\n LOG10: 17,\n CVI: 18,\n SHIFT: 19,\n ADD: 20,\n SUB: 21,\n MUL: 22,\n DIV: 23,\n IDIV: 24,\n MOD: 25,\n POW: 26,\n EQ: 27,\n NE: 28,\n GT: 29,\n GE: 30,\n LT: 31,\n LE: 32,\n AND: 33,\n OR: 34,\n XOR: 35,\n ATAN: 36,\n MIN: 37,\n MAX: 38,\n TEE_TMP: 39,\n LOAD_TMP: 40\n};\nconst _DEG_TO_RAD = Math.PI / 180;\nconst _RAD_TO_DEG = 180 / Math.PI;\nclass PsJsCompiler {\n static #stack = new Float64Array(64);\n static #tmp = new Float64Array(64);\n constructor(domain, range) {\n this.nIn = domain.length >> 1;\n this.nOut = range.length >> 1;\n this.range = range;\n this.ir = [];\n this._tmpMap = new Map();\n this._nextTmp = 0;\n }\n _compileNode(node) {\n if (node.shared) {\n const cached = this._tmpMap.get(node);\n if (cached !== undefined) {\n this.ir.push(OP.LOAD_TMP, cached);\n return true;\n }\n if (!this._compileNodeImpl(node)) {\n return false;\n }\n const slot = this._nextTmp++;\n this._tmpMap.set(node, slot);\n this.ir.push(OP.TEE_TMP, slot);\n return true;\n }\n return this._compileNodeImpl(node);\n }\n _compileNodeImpl(node) {\n switch (node.type) {\n case PS_NODE.arg:\n this.ir.push(OP.ARG, node.index);\n return true;\n case PS_NODE.const:\n {\n const v = node.value;\n this.ir.push(OP.CONST, typeof v === \"boolean\" ? Number(v) : v);\n return true;\n }\n case PS_NODE.unary:\n return this._compileUnary(node);\n case PS_NODE.binary:\n return this._compileBinary(node);\n case PS_NODE.ternary:\n return this._compileTernary(node);\n default:\n return false;\n }\n }\n _compileUnary(node) {\n const {\n op,\n operand,\n valueType\n } = node;\n if (op === TOKEN.cvr) {\n return this._compileNode(operand);\n }\n if (!this._compileNode(operand)) {\n return false;\n }\n switch (op) {\n case TOKEN.abs:\n this.ir.push(OP.ABS);\n break;\n case TOKEN.neg:\n this.ir.push(OP.NEG);\n break;\n case TOKEN.ceiling:\n this.ir.push(OP.CEIL);\n break;\n case TOKEN.floor:\n this.ir.push(OP.FLOOR);\n break;\n case TOKEN.round:\n this.ir.push(OP.ROUND);\n break;\n case TOKEN.truncate:\n this.ir.push(OP.TRUNC);\n break;\n case TOKEN.sqrt:\n this.ir.push(OP.SQRT);\n break;\n case TOKEN.sin:\n this.ir.push(OP.SIN);\n break;\n case TOKEN.cos:\n this.ir.push(OP.COS);\n break;\n case TOKEN.ln:\n this.ir.push(OP.LN);\n break;\n case TOKEN.log:\n this.ir.push(OP.LOG10);\n break;\n case TOKEN.cvi:\n this.ir.push(OP.CVI);\n break;\n case TOKEN.not:\n if (valueType === PS_VALUE_TYPE.boolean) {\n this.ir.push(OP.NOT_B);\n } else if (valueType === PS_VALUE_TYPE.numeric) {\n this.ir.push(OP.NOT_N);\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n return true;\n }\n _compileBinary(node) {\n const {\n op,\n first,\n second\n } = node;\n if (op === TOKEN.bitshift) {\n if (first.type !== PS_NODE.const || !Number.isInteger(first.value)) {\n return false;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n this.ir.push(OP.SHIFT, first.value);\n return true;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n switch (op) {\n case TOKEN.add:\n this.ir.push(OP.ADD);\n break;\n case TOKEN.sub:\n this.ir.push(OP.SUB);\n break;\n case TOKEN.mul:\n this.ir.push(OP.MUL);\n break;\n case TOKEN.div:\n this.ir.push(OP.DIV);\n break;\n case TOKEN.idiv:\n this.ir.push(OP.IDIV);\n break;\n case TOKEN.mod:\n this.ir.push(OP.MOD);\n break;\n case TOKEN.exp:\n this.ir.push(OP.POW);\n break;\n case TOKEN.eq:\n this.ir.push(OP.EQ);\n break;\n case TOKEN.ne:\n this.ir.push(OP.NE);\n break;\n case TOKEN.gt:\n this.ir.push(OP.GT);\n break;\n case TOKEN.ge:\n this.ir.push(OP.GE);\n break;\n case TOKEN.lt:\n this.ir.push(OP.LT);\n break;\n case TOKEN.le:\n this.ir.push(OP.LE);\n break;\n case TOKEN.and:\n this.ir.push(OP.AND);\n break;\n case TOKEN.or:\n this.ir.push(OP.OR);\n break;\n case TOKEN.xor:\n this.ir.push(OP.XOR);\n break;\n case TOKEN.atan:\n this.ir.push(OP.ATAN);\n break;\n case TOKEN.min:\n this.ir.push(OP.MIN);\n break;\n case TOKEN.max:\n this.ir.push(OP.MAX);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileTernary(node) {\n if (!this._compileNode(node.cond)) {\n return false;\n }\n this.ir.push(OP.IF, 0);\n const ifPatch = this.ir.length - 1;\n if (!this._compileNode(node.then)) {\n return false;\n }\n this.ir.push(OP.JUMP, 0);\n const jumpPatch = this.ir.length - 1;\n this.ir[ifPatch] = this.ir.length;\n if (!this._compileNode(node.otherwise)) {\n return false;\n }\n this.ir[jumpPatch] = this.ir.length;\n return true;\n }\n compile(program) {\n const outputs = new PSStackToTree().evaluate(program, this.nIn);\n if (!outputs || outputs.length < this.nOut) {\n return null;\n }\n for (let i = 0; i < this.nOut; i++) {\n if (!this._compileNode(outputs[i])) {\n return null;\n }\n const min = this.range[i * 2];\n const max = this.range[i * 2 + 1];\n this.ir.push(OP.STORE, i, min, max);\n }\n return new Float64Array(this.ir);\n }\n static execute(ir, src, srcOffset, dest, destOffset) {\n let ip = 0,\n sp = 0;\n const n = ir.length;\n const stack = this.#stack;\n const tmp = this.#tmp;\n while (ip < n) {\n switch (ir[ip++] | 0) {\n case OP.ARG:\n stack[sp++] = src[srcOffset + (ir[ip++] | 0)];\n break;\n case OP.CONST:\n stack[sp++] = ir[ip++];\n break;\n case OP.STORE:\n {\n const slot = ir[ip++] | 0;\n const min = ir[ip++];\n const max = ir[ip++];\n dest[destOffset + slot] = MathClamp(stack[--sp], min, max);\n break;\n }\n case OP.IF:\n {\n const tgt = ir[ip++];\n if (stack[--sp] === 0) {\n ip = tgt;\n }\n break;\n }\n case OP.JUMP:\n ip = ir[ip];\n break;\n case OP.ABS:\n stack[sp - 1] = Math.abs(stack[sp - 1]);\n break;\n case OP.NEG:\n stack[sp - 1] = -stack[sp - 1];\n break;\n case OP.CEIL:\n stack[sp - 1] = Math.ceil(stack[sp - 1]);\n break;\n case OP.FLOOR:\n stack[sp - 1] = Math.floor(stack[sp - 1]);\n break;\n case OP.ROUND:\n stack[sp - 1] = Math.floor(stack[sp - 1] + 0.5);\n break;\n case OP.TRUNC:\n stack[sp - 1] = Math.trunc(stack[sp - 1]);\n break;\n case OP.NOT_B:\n stack[sp - 1] = stack[sp - 1] !== 0 ? 0 : 1;\n break;\n case OP.NOT_N:\n stack[sp - 1] = ~(stack[sp - 1] | 0);\n break;\n case OP.SQRT:\n stack[sp - 1] = Math.sqrt(stack[sp - 1]);\n break;\n case OP.SIN:\n stack[sp - 1] = Math.sin(stack[sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case OP.COS:\n stack[sp - 1] = Math.cos(stack[sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case OP.LN:\n stack[sp - 1] = Math.log(stack[sp - 1]);\n break;\n case OP.LOG10:\n stack[sp - 1] = Math.log10(stack[sp - 1]);\n break;\n case OP.CVI:\n stack[sp - 1] = Math.trunc(stack[sp - 1]) | 0;\n break;\n case OP.SHIFT:\n {\n const amt = ir[ip++];\n const v = stack[sp - 1] | 0;\n if (amt > 0) {\n stack[sp - 1] = v << amt;\n } else if (amt < 0) {\n stack[sp - 1] = v >> -amt;\n } else {\n stack[sp - 1] = v;\n }\n break;\n }\n case OP.ADD:\n {\n const b = stack[--sp];\n stack[sp - 1] += b;\n break;\n }\n case OP.SUB:\n {\n const b = stack[--sp];\n stack[sp - 1] -= b;\n break;\n }\n case OP.MUL:\n {\n const b = stack[--sp];\n stack[sp - 1] *= b;\n break;\n }\n case OP.DIV:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? stack[sp - 1] / b : 0;\n break;\n }\n case OP.IDIV:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? Math.trunc(stack[sp - 1] / b) : 0;\n break;\n }\n case OP.MOD:\n {\n const b = stack[--sp];\n stack[sp - 1] = b !== 0 ? stack[sp - 1] % b : 0;\n break;\n }\n case OP.POW:\n {\n const b = stack[--sp];\n stack[sp - 1] **= b;\n break;\n }\n case OP.EQ:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] === b ? 1 : 0;\n break;\n }\n case OP.NE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] !== b ? 1 : 0;\n break;\n }\n case OP.GT:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] > b ? 1 : 0;\n break;\n }\n case OP.GE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] >= b ? 1 : 0;\n break;\n }\n case OP.LT:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] < b ? 1 : 0;\n break;\n }\n case OP.LE:\n {\n const b = stack[--sp];\n stack[sp - 1] = stack[sp - 1] <= b ? 1 : 0;\n break;\n }\n case OP.AND:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = (stack[sp - 1] | 0) & b;\n break;\n }\n case OP.OR:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = stack[sp - 1] | 0 | b;\n break;\n }\n case OP.XOR:\n {\n const b = stack[--sp] | 0;\n stack[sp - 1] = (stack[sp - 1] | 0) ^ b;\n break;\n }\n case OP.ATAN:\n {\n const b = stack[--sp];\n const deg = Math.atan2(stack[sp - 1], b) * _RAD_TO_DEG;\n stack[sp - 1] = deg < 0 ? deg + 360 : deg;\n break;\n }\n case OP.MIN:\n {\n const b = stack[--sp];\n stack[sp - 1] = Math.min(stack[sp - 1], b);\n break;\n }\n case OP.MAX:\n {\n const b = stack[--sp];\n stack[sp - 1] = Math.max(stack[sp - 1], b);\n break;\n }\n case OP.TEE_TMP:\n tmp[ir[ip++] | 0] = stack[sp - 1];\n break;\n case OP.LOAD_TMP:\n stack[sp++] = tmp[ir[ip++] | 0];\n break;\n }\n }\n }\n}\nclass PSStackBasedInterpreter {\n static #stack = new Float64Array(100);\n static #sp = 0;\n static #push(v) {\n if (this.#sp < this.#stack.length) {\n this.#stack[this.#sp++] = v;\n }\n }\n static #execOp(op) {\n const stack = this.#stack;\n switch (op) {\n case TOKEN.true:\n this.#push(1);\n break;\n case TOKEN.false:\n this.#push(0);\n break;\n case TOKEN.abs:\n stack[this.#sp - 1] = Math.abs(stack[this.#sp - 1]);\n break;\n case TOKEN.neg:\n stack[this.#sp - 1] = -stack[this.#sp - 1];\n break;\n case TOKEN.ceiling:\n stack[this.#sp - 1] = Math.ceil(stack[this.#sp - 1]);\n break;\n case TOKEN.floor:\n stack[this.#sp - 1] = Math.floor(stack[this.#sp - 1]);\n break;\n case TOKEN.round:\n stack[this.#sp - 1] = Math.floor(stack[this.#sp - 1] + 0.5);\n break;\n case TOKEN.truncate:\n stack[this.#sp - 1] = Math.trunc(stack[this.#sp - 1]);\n break;\n case TOKEN.sqrt:\n stack[this.#sp - 1] = Math.sqrt(stack[this.#sp - 1]);\n break;\n case TOKEN.sin:\n stack[this.#sp - 1] = Math.sin(stack[this.#sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case TOKEN.cos:\n stack[this.#sp - 1] = Math.cos(stack[this.#sp - 1] % 360 * _DEG_TO_RAD);\n break;\n case TOKEN.ln:\n stack[this.#sp - 1] = Math.log(stack[this.#sp - 1]);\n break;\n case TOKEN.log:\n stack[this.#sp - 1] = Math.log10(stack[this.#sp - 1]);\n break;\n case TOKEN.cvi:\n stack[this.#sp - 1] = Math.trunc(stack[this.#sp - 1]) | 0;\n break;\n case TOKEN.cvr:\n break;\n case TOKEN.not:\n {\n const v = stack[this.#sp - 1];\n stack[this.#sp - 1] = v === 0 || v === 1 ? 1 - v : ~(v | 0);\n break;\n }\n case TOKEN.add:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] += b;\n break;\n }\n case TOKEN.sub:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] -= b;\n break;\n }\n case TOKEN.mul:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] *= b;\n break;\n }\n case TOKEN.div:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? stack[this.#sp - 1] / b : 0;\n break;\n }\n case TOKEN.idiv:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? Math.trunc(stack[this.#sp - 1] / b) : 0;\n break;\n }\n case TOKEN.mod:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = b !== 0 ? stack[this.#sp - 1] % b : 0;\n break;\n }\n case TOKEN.exp:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] **= b;\n break;\n }\n case TOKEN.atan:\n {\n const dx = stack[--this.#sp];\n const deg = Math.atan2(stack[this.#sp - 1], dx) * _RAD_TO_DEG;\n stack[this.#sp - 1] = deg < 0 ? deg + 360 : deg;\n break;\n }\n case TOKEN.eq:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] === b ? 1 : 0;\n break;\n }\n case TOKEN.ne:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] !== b ? 1 : 0;\n break;\n }\n case TOKEN.gt:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] > b ? 1 : 0;\n break;\n }\n case TOKEN.ge:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] >= b ? 1 : 0;\n break;\n }\n case TOKEN.lt:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] < b ? 1 : 0;\n break;\n }\n case TOKEN.le:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = stack[this.#sp - 1] <= b ? 1 : 0;\n break;\n }\n case TOKEN.and:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = (stack[this.#sp - 1] | 0) & b;\n break;\n }\n case TOKEN.or:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = stack[this.#sp - 1] | 0 | b;\n break;\n }\n case TOKEN.xor:\n {\n const b = stack[--this.#sp] | 0;\n stack[this.#sp - 1] = (stack[this.#sp - 1] | 0) ^ b;\n break;\n }\n case TOKEN.bitshift:\n {\n const amt = stack[--this.#sp] | 0;\n const v = stack[this.#sp - 1] | 0;\n stack[this.#sp - 1] = amt > 0 ? v << amt : v >> -amt;\n break;\n }\n case TOKEN.min:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = Math.min(stack[this.#sp - 1], b);\n break;\n }\n case TOKEN.max:\n {\n const b = stack[--this.#sp];\n stack[this.#sp - 1] = Math.max(stack[this.#sp - 1], b);\n break;\n }\n case TOKEN.dup:\n this.#push(stack[this.#sp - 1]);\n break;\n case TOKEN.exch:\n {\n const a = stack[--this.#sp];\n const b = stack[--this.#sp];\n this.#push(a);\n this.#push(b);\n break;\n }\n case TOKEN.pop:\n this.#sp--;\n break;\n case TOKEN.copy:\n {\n const n = Math.trunc(stack[--this.#sp]);\n const base = this.#sp - n;\n for (let k = 0; k < n; k++) {\n this.#push(stack[base + k]);\n }\n break;\n }\n case TOKEN.index:\n {\n const i = Math.trunc(stack[--this.#sp]);\n this.#push(stack[this.#sp - 1 - i]);\n break;\n }\n case TOKEN.roll:\n {\n const j = Math.trunc(stack[--this.#sp]);\n const n = Math.trunc(stack[--this.#sp]);\n if (n > 1 && j !== 0) {\n const mod = (j % n + n) % n;\n if (mod !== 0) {\n const base = this.#sp - n;\n const sub = stack.slice(base, this.#sp);\n for (let k = 0; k < n; k++) {\n stack[base + k] = sub[(k - mod + n) % n];\n }\n }\n }\n break;\n }\n }\n }\n static #execBlock(instructions) {\n for (const instr of instructions) {\n switch (instr.type) {\n case PS_NODE.number:\n this.#push(instr.value);\n break;\n case PS_NODE.operator:\n this.#execOp(instr.op);\n break;\n case PS_NODE.if:\n if (this.#stack[--this.#sp] !== 0) {\n this.#execBlock(instr.then.instructions);\n }\n break;\n case PS_NODE.ifelse:\n if (this.#stack[--this.#sp] !== 0) {\n this.#execBlock(instr.then.instructions);\n } else {\n this.#execBlock(instr.otherwise.instructions);\n }\n break;\n }\n }\n }\n static build(program, domain, range) {\n const nIn = domain.length >> 1;\n const nOut = range.length >> 1;\n const {\n instructions\n } = program.body;\n return (src, srcOffset, dest, destOffset) => {\n this.#sp = 0;\n for (let i = 0; i < nIn; i++) {\n this.#push(src[srcOffset + i]);\n }\n this.#execBlock(instructions);\n const base = this.#sp - nOut;\n for (let i = 0; i < nOut; i++) {\n const v = base + i >= 0 ? this.#stack[base + i] : 0;\n dest[destOffset + i] = MathClamp(v, range[i * 2], range[i * 2 + 1]);\n }\n };\n }\n}\nfunction buildPostScriptJsFunction(source, domain, range, forceInterpreter = false) {\n const program = parsePostScriptFunction(source);\n const ir = !forceInterpreter && new PsJsCompiler(domain, range).compile(program);\n if (ir) {\n return (src, srcOffset, dest, destOffset) => {\n PsJsCompiler.execute(ir, src, srcOffset, dest, destOffset);\n };\n }\n return PSStackBasedInterpreter.build(program, domain, range);\n}\n\n;// ./src/core/postscript/wasm_compiler.js\n\n\n\nconst wasm_compiler_OP = {\n if: 0x04,\n else: 0x05,\n end: 0x0b,\n select: 0x1b,\n call: 0x10,\n local_get: 0x20,\n local_set: 0x21,\n local_tee: 0x22,\n i32_const: 0x41,\n i32_eqz: 0x45,\n i32_and: 0x71,\n i32_or: 0x72,\n i32_xor: 0x73,\n i32_shl: 0x74,\n i32_shr_s: 0x75,\n i32_trunc_f64_s: 0xaa,\n f64_const: 0x44,\n f64_eq: 0x61,\n f64_ne: 0x62,\n f64_lt: 0x63,\n f64_gt: 0x64,\n f64_le: 0x65,\n f64_ge: 0x66,\n f64_abs: 0x99,\n f64_neg: 0x9a,\n f64_ceil: 0x9b,\n f64_floor: 0x9c,\n f64_trunc: 0x9d,\n f64_nearest: 0x9e,\n f64_sqrt: 0x9f,\n f64_add: 0xa0,\n f64_sub: 0xa1,\n f64_mul: 0xa2,\n f64_div: 0xa3,\n f64_min: 0xa4,\n f64_max: 0xa5,\n f64_convert_i32_s: 0xb7,\n f64_store: 0x39\n};\nconst FUNC_TYPE = 0x60;\nconst F64 = 0x7c;\nconst SECTION = {\n type: 0x01,\n import: 0x02,\n function: 0x03,\n memory: 0x05,\n export: 0x07,\n code: 0x0a\n};\nconst EXTERN_FUNC = 0x00;\nconst EXTERN_MEM = 0x02;\nfunction unsignedLEB128(n) {\n const out = [];\n do {\n let byte = n & 0x7f;\n n >>>= 7;\n if (n !== 0) {\n byte |= 0x80;\n }\n out.push(byte);\n } while (n !== 0);\n return out;\n}\nfunction encodeASCIIString(s) {\n return [...unsignedLEB128(s.length), ...stringToBytes(s)];\n}\nfunction section(id, data) {\n return [id, ...unsignedLEB128(data.length), ...data];\n}\nfunction vec(items) {\n const out = unsignedLEB128(items.length);\n for (const item of items) {\n if (typeof item === \"number\") {\n out.push(item);\n continue;\n }\n for (const byte of item) {\n out.push(byte);\n }\n }\n return out;\n}\nconst MATH_IMPORTS = [[\"sin\", \"Math\", \"sin\", [F64], [F64]], [\"cos\", \"Math\", \"cos\", [F64], [F64]], [\"atan2\", \"Math\", \"atan2\", [F64, F64], [F64]], [\"log\", \"Math\", \"log\", [F64], [F64]], [\"log10\", \"Math\", \"log10\", [F64], [F64]], [\"pow\", \"Math\", \"pow\", [F64, F64], [F64]]];\nconst _mathImportObject = {\n Math: Object.fromEntries(MATH_IMPORTS.map(([name]) => [name, Math[name]]))\n};\nclass PsWasmCompiler {\n static #initialized = false;\n static #comparisonToOp = null;\n static #importIdx = null;\n static #degToRad = 0;\n static #radToDeg = 0;\n static #importTypeEntries = null;\n static #importSection = null;\n static #functionSection = null;\n static #memorySection = null;\n static #exportSection = null;\n static #wasmMagicVersion = null;\n static #f64View = null;\n static #f64Arr = null;\n static #init() {\n this.#comparisonToOp = new Map([[TOKEN.eq, wasm_compiler_OP.f64_eq], [TOKEN.ne, wasm_compiler_OP.f64_ne], [TOKEN.lt, wasm_compiler_OP.f64_lt], [TOKEN.le, wasm_compiler_OP.f64_le], [TOKEN.gt, wasm_compiler_OP.f64_gt], [TOKEN.ge, wasm_compiler_OP.f64_ge]]);\n this.#importIdx = Object.create(null);\n for (let i = 0; i < MATH_IMPORTS.length; i++) {\n this.#importIdx[MATH_IMPORTS[i][0]] = i;\n }\n this.#degToRad = Math.PI / 180;\n this.#radToDeg = 180 / Math.PI;\n this.#importTypeEntries = MATH_IMPORTS.map(([,,, params, results]) => [FUNC_TYPE, ...vec(params), ...vec(results)]);\n this.#importSection = new Uint8Array(section(SECTION.import, vec(MATH_IMPORTS.map(([, mod, field], i) => [...encodeASCIIString(mod), ...encodeASCIIString(field), EXTERN_FUNC, ...unsignedLEB128(i + 1)]))));\n this.#functionSection = new Uint8Array(section(SECTION.function, vec([[0]])));\n this.#memorySection = new Uint8Array(section(SECTION.memory, vec([[0x00, 0x01]])));\n this.#exportSection = new Uint8Array(section(SECTION.export, vec([[...encodeASCIIString(\"fn\"), EXTERN_FUNC, ...unsignedLEB128(MATH_IMPORTS.length)], [...encodeASCIIString(\"mem\"), EXTERN_MEM, 0x00]])));\n this.#wasmMagicVersion = new Uint8Array([0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]);\n const f64Buf = new ArrayBuffer(8);\n this.#f64View = new DataView(f64Buf);\n this.#f64Arr = new Uint8Array(f64Buf);\n this.#initialized = true;\n }\n constructor(domain, range) {\n if (!PsWasmCompiler.#initialized) {\n PsWasmCompiler.#init();\n }\n this._nIn = domain.length >> 1;\n this._nOut = range.length >> 1;\n this._range = range;\n this._code = [];\n this._nextLocal = this._nIn;\n this._freeLocals = [];\n this._sharedLocals = new Map();\n }\n _allocLocal() {\n return this._freeLocals.pop() ?? this._nextLocal++;\n }\n _releaseLocal(idx) {\n this._freeLocals.push(idx);\n }\n _emitULEB128(n) {\n do {\n let b = n & 0x7f;\n n >>>= 7;\n if (n !== 0) {\n b |= 0x80;\n }\n this._code.push(b);\n } while (n !== 0);\n }\n _emitSLEB128(n) {\n for (;;) {\n const b = n & 0x7f;\n n >>= 7;\n if (n === 0 && (b & 0x40) === 0 || n === -1 && (b & 0x40) !== 0) {\n this._code.push(b);\n return;\n }\n this._code.push(b | 0x80);\n }\n }\n _emitF64Const(value) {\n this._code.push(wasm_compiler_OP.f64_const);\n PsWasmCompiler.#f64View.setFloat64(0, value, true);\n for (let i = 0; i < 8; i++) {\n this._code.push(PsWasmCompiler.#f64Arr[i]);\n }\n }\n _emitLocalGet(idx) {\n this._code.push(wasm_compiler_OP.local_get);\n this._emitULEB128(idx);\n }\n _emitLocalSet(idx) {\n this._code.push(wasm_compiler_OP.local_set);\n this._emitULEB128(idx);\n }\n _emitLocalTee(idx) {\n this._code.push(wasm_compiler_OP.local_tee);\n this._emitULEB128(idx);\n }\n _compileNode(node) {\n if (node.shared) {\n const entry = this._sharedLocals.get(node);\n if (entry !== undefined) {\n this._emitLocalGet(entry.local);\n if (--entry.remaining === 0) {\n this._releaseLocal(entry.local);\n }\n return true;\n }\n if (!this._compileNodeImpl(node)) {\n return false;\n }\n const local = this._allocLocal();\n this._sharedLocals.set(node, {\n local,\n remaining: node.sharedCount - 1\n });\n this._emitLocalTee(local);\n return true;\n }\n return this._compileNodeImpl(node);\n }\n _compileNodeImpl(node) {\n switch (node.type) {\n case PS_NODE.arg:\n this._emitLocalGet(node.index);\n return true;\n case PS_NODE.const:\n {\n let v = node.value;\n if (typeof v === \"boolean\") {\n v = v ? 1 : 0;\n }\n this._emitF64Const(v);\n return true;\n }\n case PS_NODE.unary:\n return this._compileUnaryNode(node);\n case PS_NODE.binary:\n return this._compileBinaryNode(node);\n case PS_NODE.ternary:\n return this._compileTernaryNode(node);\n default:\n return false;\n }\n }\n _compileSinCosNode(node) {\n const local = this._allocLocal();\n try {\n if (!this._compileNode(node.operand)) {\n return false;\n }\n const code = this._code;\n this._emitLocalSet(local);\n this._emitLocalGet(local);\n this._emitLocalGet(local);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n this._emitF64Const(PsWasmCompiler.#degToRad);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx[node.op === TOKEN.sin ? \"sin\" : \"cos\"]);\n return true;\n } finally {\n this._releaseLocal(local);\n }\n }\n _compileUnaryNode(node) {\n const code = this._code;\n if (node.op === TOKEN.sin || node.op === TOKEN.cos) {\n return this._compileSinCosNode(node);\n }\n if (node.op === TOKEN.not) {\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n if (!this._compileNodeAsBoolI32(node.operand)) {\n return false;\n }\n code.push(wasm_compiler_OP.i32_eqz, wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n if (node.valueType === PS_VALUE_TYPE.numeric) {\n if (!this._compileNode(node.operand)) {\n return false;\n }\n code.push(wasm_compiler_OP.i32_trunc_f64_s, wasm_compiler_OP.i32_const, 0x7f, wasm_compiler_OP.i32_xor, wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n return false;\n }\n if (!this._compileNode(node.operand)) {\n return false;\n }\n switch (node.op) {\n case TOKEN.abs:\n code.push(wasm_compiler_OP.f64_abs);\n break;\n case TOKEN.neg:\n code.push(wasm_compiler_OP.f64_neg);\n break;\n case TOKEN.sqrt:\n code.push(wasm_compiler_OP.f64_sqrt);\n break;\n case TOKEN.floor:\n code.push(wasm_compiler_OP.f64_floor);\n break;\n case TOKEN.ceiling:\n code.push(wasm_compiler_OP.f64_ceil);\n break;\n case TOKEN.round:\n this._emitF64Const(0.5);\n code.push(wasm_compiler_OP.f64_add, wasm_compiler_OP.f64_floor);\n break;\n case TOKEN.truncate:\n code.push(wasm_compiler_OP.f64_trunc);\n break;\n case TOKEN.cvi:\n code.push(wasm_compiler_OP.i32_trunc_f64_s, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.cvr:\n break;\n case TOKEN.ln:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.log);\n break;\n case TOKEN.log:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.log10);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileSafeDivNode(first, second) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n this._emitLocalTee(tmp);\n code.push(wasm_compiler_OP.f64_div);\n this._emitF64Const(0);\n this._emitLocalGet(tmp);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n return true;\n } finally {\n this._releaseLocal(tmp);\n }\n }\n _compileSafeIdivNode(first, second) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n this._emitLocalTee(tmp);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(0);\n this._emitLocalGet(tmp);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n return true;\n } finally {\n this._releaseLocal(tmp);\n }\n }\n _compileBitshiftNode(first, second) {\n if (first.type !== PS_NODE.const || !Number.isInteger(first.value)) {\n return false;\n }\n if (!this._compileNode(second)) {\n return false;\n }\n const code = this._code;\n code.push(wasm_compiler_OP.i32_trunc_f64_s);\n const shift = first.value;\n if (shift > 0) {\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(shift);\n code.push(wasm_compiler_OP.i32_shl);\n } else if (shift < 0) {\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(-shift);\n code.push(wasm_compiler_OP.i32_shr_s);\n }\n code.push(wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n _compileModNode(first, second) {\n if (first.type === PS_NODE.const && first.value === 0) {\n if (!this._compileNode(second)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.drop);\n this._emitF64Const(0);\n return true;\n }\n const localA = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n this._emitLocalTee(localA);\n const code = this._code;\n if (first.type === PS_NODE.const) {\n this._emitLocalGet(localA);\n this._emitF64Const(first.value);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitF64Const(first.value);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n } else {\n const localB = this._allocLocal();\n try {\n if (!this._compileNode(first)) {\n return false;\n }\n this._emitLocalSet(localB);\n this._emitLocalGet(localA);\n this._emitLocalGet(localB);\n code.push(wasm_compiler_OP.f64_div, wasm_compiler_OP.f64_trunc);\n this._emitLocalGet(localB);\n code.push(wasm_compiler_OP.f64_mul, wasm_compiler_OP.f64_sub);\n this._emitF64Const(0);\n this._emitLocalGet(localB);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.select);\n } finally {\n this._releaseLocal(localB);\n }\n }\n return true;\n } finally {\n this._releaseLocal(localA);\n }\n }\n _compileAtanNode(first, second) {\n const localR = this._allocLocal();\n try {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n const code = this._code;\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.atan2);\n this._emitF64Const(PsWasmCompiler.#radToDeg);\n code.push(wasm_compiler_OP.f64_mul);\n this._emitLocalTee(localR);\n this._emitF64Const(0);\n code.push(wasm_compiler_OP.f64_lt, wasm_compiler_OP.if, F64);\n this._emitLocalGet(localR);\n this._emitF64Const(360);\n code.push(wasm_compiler_OP.f64_add, wasm_compiler_OP.else);\n this._emitLocalGet(localR);\n code.push(wasm_compiler_OP.end);\n return true;\n } finally {\n this._releaseLocal(localR);\n }\n }\n _compileBitwiseNode(op, first, second) {\n if (!this._compileBitwiseOperandI32(second)) {\n return false;\n }\n if (!this._compileBitwiseOperandI32(first)) {\n return false;\n }\n const code = this._code;\n switch (op) {\n case TOKEN.and:\n code.push(wasm_compiler_OP.i32_and);\n break;\n case TOKEN.or:\n code.push(wasm_compiler_OP.i32_or);\n break;\n case TOKEN.xor:\n code.push(wasm_compiler_OP.i32_xor);\n break;\n default:\n return false;\n }\n code.push(wasm_compiler_OP.f64_convert_i32_s);\n return true;\n }\n _compileBitwiseOperandI32(node) {\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n return this._compileNodeAsBoolI32(node);\n }\n if (!this._compileNode(node)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.i32_trunc_f64_s);\n return true;\n }\n _compileStandardBinaryNode(op, first, second) {\n if (first === second && first.type !== PS_NODE.arg && first.type !== PS_NODE.const && !first.shared) {\n const tmp = this._allocLocal();\n try {\n if (!this._compileNode(first)) {\n return false;\n }\n this._emitLocalTee(tmp);\n this._emitLocalGet(tmp);\n } finally {\n this._releaseLocal(tmp);\n }\n } else {\n if (!this._compileNode(second)) {\n return false;\n }\n if (!this._compileNode(first)) {\n return false;\n }\n }\n const code = this._code;\n switch (op) {\n case TOKEN.add:\n code.push(wasm_compiler_OP.f64_add);\n break;\n case TOKEN.sub:\n code.push(wasm_compiler_OP.f64_sub);\n break;\n case TOKEN.mul:\n code.push(wasm_compiler_OP.f64_mul);\n break;\n case TOKEN.exp:\n code.push(wasm_compiler_OP.call);\n this._emitULEB128(PsWasmCompiler.#importIdx.pow);\n break;\n case TOKEN.eq:\n code.push(wasm_compiler_OP.f64_eq, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.ne:\n code.push(wasm_compiler_OP.f64_ne, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.lt:\n code.push(wasm_compiler_OP.f64_lt, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.le:\n code.push(wasm_compiler_OP.f64_le, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.gt:\n code.push(wasm_compiler_OP.f64_gt, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.ge:\n code.push(wasm_compiler_OP.f64_ge, wasm_compiler_OP.f64_convert_i32_s);\n break;\n case TOKEN.min:\n code.push(wasm_compiler_OP.f64_min);\n break;\n case TOKEN.max:\n code.push(wasm_compiler_OP.f64_max);\n break;\n default:\n return false;\n }\n return true;\n }\n _compileBinaryNode(node) {\n const {\n op,\n first,\n second\n } = node;\n if (op === TOKEN.bitshift) {\n return this._compileBitshiftNode(first, second);\n }\n if (op === TOKEN.div) {\n return this._compileSafeDivNode(first, second);\n }\n if (op === TOKEN.idiv) {\n return this._compileSafeIdivNode(first, second);\n }\n if (op === TOKEN.mod) {\n return this._compileModNode(first, second);\n }\n if (op === TOKEN.atan) {\n return this._compileAtanNode(first, second);\n }\n if (op === TOKEN.and || op === TOKEN.or || op === TOKEN.xor) {\n return this._compileBitwiseNode(op, first, second);\n }\n return this._compileStandardBinaryNode(op, first, second);\n }\n _compileNodeAsBoolI32(node) {\n if (node.type === PS_NODE.binary) {\n const wasmOp = PsWasmCompiler.#comparisonToOp.get(node.op);\n if (wasmOp !== undefined) {\n if (!this._compileNode(node.second)) {\n return false;\n }\n if (!this._compileNode(node.first)) {\n return false;\n }\n this._code.push(wasmOp);\n return true;\n }\n if (node.valueType === PS_VALUE_TYPE.boolean && (node.op === TOKEN.and || node.op === TOKEN.or || node.op === TOKEN.xor)) {\n if (!this._compileNodeAsBoolI32(node.second)) {\n return false;\n }\n if (!this._compileNodeAsBoolI32(node.first)) {\n return false;\n }\n switch (node.op) {\n case TOKEN.and:\n this._code.push(wasm_compiler_OP.i32_and);\n break;\n case TOKEN.or:\n this._code.push(wasm_compiler_OP.i32_or);\n break;\n case TOKEN.xor:\n this._code.push(wasm_compiler_OP.i32_xor);\n break;\n }\n return true;\n }\n }\n if (node.type === PS_NODE.unary && node.op === TOKEN.not && node.valueType === PS_VALUE_TYPE.boolean) {\n if (!this._compileNodeAsBoolI32(node.operand)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.i32_eqz);\n return true;\n }\n if (!this._compileNode(node)) {\n return false;\n }\n if (node.valueType === PS_VALUE_TYPE.boolean) {\n this._code.push(wasm_compiler_OP.i32_trunc_f64_s);\n } else {\n this._emitF64Const(0);\n this._code.push(wasm_compiler_OP.f64_ne);\n }\n return true;\n }\n _compileTernaryNode(node) {\n if (!this._compileNodeAsBoolI32(node.cond)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.if, F64);\n if (!this._compileNode(node.then)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.else);\n if (!this._compileNode(node.otherwise)) {\n return false;\n }\n this._code.push(wasm_compiler_OP.end);\n return true;\n }\n compile(program) {\n const outputs = new PSStackToTree().evaluate(program, this._nIn);\n if (!outputs || outputs.length < this._nOut) {\n return null;\n }\n const code = this._code;\n for (let i = 0; i < this._nOut; i++) {\n const min = this._range[i * 2];\n const max = this._range[i * 2 + 1];\n code.push(wasm_compiler_OP.i32_const);\n this._emitSLEB128(i * 8);\n if (!this._compileNode(outputs[i])) {\n return null;\n }\n this._emitF64Const(max);\n code.push(wasm_compiler_OP.f64_min);\n this._emitF64Const(min);\n code.push(wasm_compiler_OP.f64_max, wasm_compiler_OP.f64_store, 0x03, 0x00);\n }\n code.push(wasm_compiler_OP.end);\n const nIn = this._nIn;\n const nLocals = this._nextLocal - nIn;\n const paramTypes = Array(nIn).fill(F64);\n const resultTypes = [];\n const funcType = [FUNC_TYPE, ...vec(paramTypes), ...vec(resultTypes)];\n const typeSectionBytes = new Uint8Array(section(SECTION.type, vec([funcType, ...PsWasmCompiler.#importTypeEntries])));\n const localDecls = nLocals > 0 ? vec([[...unsignedLEB128(nLocals), F64]]) : vec([]);\n const funcBodyLen = localDecls.length + code.length;\n const codeSectionBytes = new Uint8Array(section(SECTION.code, vec([[...unsignedLEB128(funcBodyLen), ...localDecls, ...code]])));\n const magicVersion = PsWasmCompiler.#wasmMagicVersion;\n const importSection = PsWasmCompiler.#importSection;\n const functionSection = PsWasmCompiler.#functionSection;\n const memorySection = PsWasmCompiler.#memorySection;\n const exportSection = PsWasmCompiler.#exportSection;\n const totalLen = magicVersion.length + typeSectionBytes.length + importSection.length + functionSection.length + memorySection.length + exportSection.length + codeSectionBytes.length;\n const result = new Uint8Array(totalLen);\n let off = 0;\n result.set(magicVersion, off);\n off += magicVersion.length;\n result.set(typeSectionBytes, off);\n off += typeSectionBytes.length;\n result.set(importSection, off);\n off += importSection.length;\n result.set(functionSection, off);\n off += functionSection.length;\n result.set(memorySection, off);\n off += memorySection.length;\n result.set(exportSection, off);\n off += exportSection.length;\n result.set(codeSectionBytes, off);\n return result;\n }\n}\nfunction compilePostScriptToWasm(source, domain, range) {\n return new PsWasmCompiler(domain, range).compile(parsePostScriptFunction(source));\n}\nfunction _makeWrapper(exports, nIn, nOut) {\n const {\n fn,\n mem\n } = exports;\n const outView = new Float64Array(mem.buffer, 0, nOut);\n let writeOut;\n switch (nOut) {\n case 1:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n };\n break;\n case 2:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n };\n break;\n case 3:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n dest[destOffset + 2] = outView[2];\n };\n break;\n case 4:\n writeOut = (dest, destOffset) => {\n dest[destOffset] = outView[0];\n dest[destOffset + 1] = outView[1];\n dest[destOffset + 2] = outView[2];\n dest[destOffset + 3] = outView[3];\n };\n break;\n default:\n writeOut = (dest, destOffset) => {\n for (let i = 0; i < nOut; i++) {\n dest[destOffset + i] = outView[i];\n }\n };\n }\n switch (nIn) {\n case 1:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset]);\n writeOut(dest, destOffset);\n };\n case 2:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1]);\n writeOut(dest, destOffset);\n };\n case 3:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1], src[srcOffset + 2]);\n writeOut(dest, destOffset);\n };\n case 4:\n return (src, srcOffset, dest, destOffset) => {\n fn(src[srcOffset], src[srcOffset + 1], src[srcOffset + 2], src[srcOffset + 3]);\n writeOut(dest, destOffset);\n };\n default:\n {\n const inBuf = new Float64Array(nIn);\n return (src, srcOffset, dest, destOffset) => {\n for (let i = 0; i < nIn; i++) {\n inBuf[i] = src[srcOffset + i];\n }\n fn(...inBuf);\n writeOut(dest, destOffset);\n };\n }\n }\n}\nfunction buildPostScriptWasmFunction(source, domain, range) {\n const bytes = compilePostScriptToWasm(source, domain, range);\n if (!bytes) {\n return null;\n }\n try {\n const instance = new WebAssembly.Instance(new WebAssembly.Module(bytes), _mathImportObject);\n return _makeWrapper(instance.exports, domain.length >> 1, range.length >> 1);\n } catch {\n return null;\n }\n}\n\n;// ./src/core/image_utils.js\n\n\nclass BaseLocalCache {\n constructor(options) {\n this._onlyRefs = options?.onlyRefs === true;\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefMap();\n }\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass RegionalImageCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('RegionalImageCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass GlobalColorSpaceCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('GlobalColorSpaceCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n clear() {\n this._imageCache.clear();\n }\n}\nclass GlobalImageCache {\n static NUM_PAGES_THRESHOLD = 2;\n static MIN_IMAGES_TO_CACHE = 10;\n static MAX_BYTE_SIZE = 5e7;\n #decodeFailedSet = new RefSet();\n constructor() {\n this._refCache = new RefMap();\n this._imageCache = new RefMap();\n }\n get #byteSize() {\n let byteSize = 0;\n for (const imageData of this._imageCache) {\n byteSize += imageData.byteSize;\n }\n return byteSize;\n }\n get #cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this.#byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.getOrPutComputed(ref, makeSet);\n pageIndexSet.add(pageIndex);\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this.#cacheLimitReached) {\n return false;\n }\n return true;\n }\n addDecodeFailed(ref) {\n this.#decodeFailedSet.put(ref);\n }\n hasDecodeFailed(ref) {\n return this.#decodeFailedSet.has(ref);\n }\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return;\n }\n if (imageData.byteSize) {\n return;\n }\n imageData.byteSize = byteSize;\n }\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n pageIndexSet.add(pageIndex);\n return imageData;\n }\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error('GlobalImageCache.setData - expected \"shouldCache\" to have been called.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this.#cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n clear(onlyData = false) {\n if (!onlyData) {\n this.#decodeFailedSet.clear();\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\n;// ./src/core/function.js\n\n\n\n\n\n\n\n\nconst FunctionType = {\n SAMPLED: 0,\n EXPONENTIAL_INTERPOLATION: 2,\n STITCHING: 3,\n POSTSCRIPT_CALCULATOR: 4\n};\nclass PDFFunctionFactory {\n static #useWasm = true;\n static setOptions({\n useWasm\n }) {\n this.#useWasm = useWasm;\n }\n constructor({\n xref\n }) {\n this.xref = xref;\n }\n get useWasm() {\n return PDFFunctionFactory.#useWasm;\n }\n create(fn, parseArray = false) {\n let fnRef, parsedFn;\n if (fn instanceof Ref) {\n fnRef = fn;\n } else if (fn instanceof Dict) {\n fnRef = fn.objId;\n } else if (fn instanceof BaseStream) {\n fnRef = fn.dict?.objId;\n }\n if (fnRef) {\n const cachedFn = this._localFunctionCache.getByRef(fnRef);\n if (cachedFn) {\n return cachedFn;\n }\n }\n const fnObj = this.xref.fetchIfRef(fn);\n if (Array.isArray(fnObj)) {\n if (!parseArray) {\n throw new Error('PDFFunctionFactory.create - expected \"parseArray\" argument.');\n }\n parsedFn = PDFFunction.parseArray(this, fnObj);\n } else {\n parsedFn = PDFFunction.parse(this, fnObj);\n }\n if (fnRef) {\n this._localFunctionCache.set(null, fnRef, parsedFn);\n }\n return parsedFn;\n }\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n if (!isNumberArray(arr, null)) {\n return arr.map(x => +x);\n }\n return arr;\n}\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let length = outputSize;\n for (const s of size) {\n length *= s;\n }\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (let i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n static parse(factory, fn) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n switch (typeNum) {\n case FunctionType.SAMPLED:\n return this.constructSampled(factory, fn, dict);\n case FunctionType.EXPONENTIAL_INTERPOLATION:\n return this.constructInterpolated(factory, dict);\n case FunctionType.STITCHING:\n return this.constructStiched(factory, dict);\n case FunctionType.POSTSCRIPT_CALCULATOR:\n return this.constructPostScript(factory, fn, dict);\n }\n throw new FormatError(`Unknown function type: ${typeNum}`);\n }\n static parseArray(factory, fnObj) {\n const {\n xref\n } = factory;\n const fnArray = [];\n for (const fn of fnObj) {\n fnArray.push(this.parse(factory, xref.fetchIfRef(fn)));\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n static constructSampled(factory, fn, dict) {\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n info(\"No support for cubic spline interpolation: \" + order);\n }\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push(0, size[i] - 1);\n }\n }\n const decode = toNumberArray(dict.getArray(\"Decode\")) || range;\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices).fill(1);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n let k = outputSize,\n pos = 1;\n for (i = 0; i < inputSize; ++i) {\n const domain_2i = domain[2 * i];\n const domain_2i_1 = domain[2 * i + 1];\n const xi = MathClamp(src[srcOffset + i], domain_2i, domain_2i_1);\n let e = interpolate(xi, domain_2i, domain_2i_1, encode[2 * i], encode[2 * i + 1]);\n const size_i = size[i];\n e = MathClamp(e, 0, size_i - 1);\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n const n0 = e0 + 1 - e;\n const n1 = e - e0;\n const offset0 = e0 * k;\n const offset1 = offset0 + k;\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n k *= size_i;\n pos <<= 1;\n }\n for (j = 0; j < outputSize; ++j) {\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n rj = interpolate(rj, 0, 1, decode[2 * j], decode[2 * j + 1]);\n dest[destOffset + j] = MathClamp(rj, range[2 * j], range[2 * j + 1]);\n }\n };\n }\n static constructInterpolated(factory, dict) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n static constructStiched(factory, dict) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n const {\n xref\n } = factory;\n const fns = [];\n for (const fn of dict.get(\"Functions\")) {\n fns.push(this.parse(factory, xref.fetchIfRef(fn)));\n }\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const v = MathClamp(src[srcOffset], domain[0], domain[1]);\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n const dmin = i > 0 ? bounds[i - 1] : domain[0];\n const dmax = i < length ? bounds[i] : domain[1];\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n static constructPostScript(factory, fn, dict) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n const psCode = fn.getString();\n try {\n if (factory.useWasm) {\n const wasmFn = buildPostScriptWasmFunction(psCode, domain, range);\n if (wasmFn) {\n return wasmFn;\n }\n }\n } catch {}\n warn(\"Failed to compile PostScript function to wasm, falling back to JS\");\n return buildPostScriptJsFunction(psCode, domain, range);\n }\n}\nfunction isPDFFunction(v) {\n let fnDict;\n if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\n;// ./src/core/evaluator_utils.js\n\n\nfunction textSinkWrapper(sink) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n const resolved = sink ? null : Promise.resolve();\n return {\n enqueueInvoked: false,\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink?.enqueue(chunk, size);\n },\n get desiredSize() {\n return sink?.desiredSize ?? TEXT_CONTENT_CHUNK_SIZE;\n },\n get ready() {\n return sink?.ready ?? resolved;\n }\n };\n}\nfunction _parseVisibilityExpression(xref, array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n _parseVisibilityExpression(xref, object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n currentResult.push(raw.toString());\n }\n }\n}\nfunction parseMarkedContentProps(xref, contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n const optionalContentType = optionalContent.get(\"Type\")?.name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n _parseVisibilityExpression(xref, expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result\n };\n }\n }\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof Dict) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n groupIds.push(optionalContentGroups.objId);\n }\n const p = optionalContent.get(\"P\");\n return {\n type: optionalContentType,\n ids: groupIds,\n policy: p instanceof Name ? p.name : null,\n expression: null\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString()\n };\n }\n }\n return null;\n}\n\n;// ./src/core/bidi.js\n\nconst baseTypes = [\"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\"];\nconst arabicTypes = [\"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\"];\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\nfunction isEven(i) {\n return (i & 1) === 0;\n}\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return {\n str,\n dir\n };\n}\nconst chars = [];\nconst types = [];\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n for (let j = i - 1; j >= 0; j--) {\n const tt = types[j];\n if (tt === \"L\") {\n before = \"L\";\n break;\n }\n if (tt === \"R\" || tt === \"EN\" || tt === \"AN\") {\n before = \"R\";\n break;\n }\n }\n let after = eor;\n for (let j = end; j < strLength; j++) {\n const tt = types[j];\n if (tt === \"L\") {\n after = \"L\";\n break;\n }\n if (tt === \"R\" || tt === \"EN\" || tt === \"AN\") {\n after = \"R\";\n break;\n }\n }\n if (before === after) {\n types.fill(before, i, end);\n }\n i = end - 1;\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\n;// ./src/core/font_substitutions.js\n\n\n\nconst NORMAL = {\n style: \"normal\",\n weight: \"normal\"\n};\nconst MEDIUM = {\n style: \"normal\",\n weight: \"500\"\n};\nconst BOLD = {\n style: \"normal\",\n weight: \"bold\"\n};\nconst ITALIC = {\n style: \"italic\",\n weight: \"normal\"\n};\nconst BOLDITALIC = {\n style: \"italic\",\n weight: \"bold\"\n};\nconst substitutionMap = new Map([[\"Times-Roman\", {\n local: [\"Times New Roman\", \"Times-Roman\", \"Times\", \"Liberation Serif\", \"Nimbus Roman\", \"Nimbus Roman L\", \"Tinos\", \"Thorndale\", \"TeX Gyre Termes\", \"FreeSerif\", \"Linux Libertine O\", \"Libertinus Serif\", \"PT Astra Serif\", \"DejaVu Serif\", \"Bitstream Vera Serif\", \"Ubuntu\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"Times-Bold\", {\n alias: \"Times-Roman\",\n style: BOLD,\n ultimate: \"serif\"\n}], [\"Times-Italic\", {\n alias: \"Times-Roman\",\n style: ITALIC,\n ultimate: \"serif\"\n}], [\"Times-BoldItalic\", {\n alias: \"Times-Roman\",\n style: BOLDITALIC,\n ultimate: \"serif\"\n}], [\"Helvetica\", {\n 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\"],\n path: \"LiberationSans-Regular.ttf\",\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Bold\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Bold.ttf\",\n style: BOLD,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Oblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Italic.ttf\",\n style: ITALIC,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-BoldOblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-BoldItalic.ttf\",\n style: BOLDITALIC,\n ultimate: \"sans-serif\"\n}], [\"Courier\", {\n local: [\"Courier\", \"Courier New\", \"Liberation Mono\", \"Nimbus Mono\", \"Nimbus Mono L\", \"Cousine\", \"Cumberland\", \"TeX Gyre Cursor\", \"FreeMono\", \"Linux Libertine Mono O\", \"Libertinus Mono\"],\n style: NORMAL,\n ultimate: \"monospace\"\n}], [\"Courier-Bold\", {\n alias: \"Courier\",\n style: BOLD,\n ultimate: \"monospace\"\n}], [\"Courier-Oblique\", {\n alias: \"Courier\",\n style: ITALIC,\n ultimate: \"monospace\"\n}], [\"Courier-BoldOblique\", {\n alias: \"Courier\",\n style: BOLDITALIC,\n ultimate: \"monospace\"\n}], [\"ArialBlack\", {\n local: [\"Arial Black\"],\n style: {\n style: \"normal\",\n weight: \"900\"\n },\n fallback: \"Helvetica-Bold\"\n}], [\"ArialBlack-Bold\", {\n alias: \"ArialBlack\"\n}], [\"ArialBlack-Italic\", {\n alias: \"ArialBlack\",\n style: {\n style: \"italic\",\n weight: \"900\"\n },\n fallback: \"Helvetica-BoldOblique\"\n}], [\"ArialBlack-BoldItalic\", {\n alias: \"ArialBlack-Italic\"\n}], [\"ArialNarrow\", {\n local: [\"Arial Narrow\", \"Liberation Sans Narrow\", \"Helvetica Condensed\", \"Nimbus Sans Narrow\", \"TeX Gyre Heros Cn\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"ArialNarrow-Bold\", {\n alias: \"ArialNarrow\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"ArialNarrow-Italic\", {\n alias: \"ArialNarrow\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"ArialNarrow-BoldItalic\", {\n alias: \"ArialNarrow\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Calibri\", {\n local: [\"Calibri\", \"Carlito\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"Calibri-Bold\", {\n alias: \"Calibri\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"Calibri-Italic\", {\n alias: \"Calibri\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"Calibri-BoldItalic\", {\n alias: \"Calibri\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Wingdings\", {\n local: [\"Wingdings\", \"URW Dingbats\"],\n style: NORMAL\n}], [\"Wingdings-Regular\", {\n alias: \"Wingdings\"\n}], [\"Wingdings-Bold\", {\n alias: \"Wingdings\"\n}], [\"\\xCB\\xCE\\xCC\\xE5\", {\n local: [\"SimSun\", \"SimSun Regular\", \"NSimSun\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xBA\\xDA\\xCC\\xE5\", {\n local: [\"SimHei\", \"SimHei Regular\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"\\xBF\\xAC\\xCC\\xE5\", {\n local: [\"KaiTi\", \"SimKai\", \"SimKai Regular\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"\\xB7\\xC2\\xCB\\xCE\", {\n local: [\"FangSong\", \"SimFang\", \"SimFang Regular\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xBF\\xAC\\xCC\\xE5_GB2312\", {\n alias: \"\\xBF\\xAC\\xCC\\xE5\"\n}], [\"\\xB7\\xC2\\xCB\\xCE_GB2312\", {\n alias: \"\\xB7\\xC2\\xCB\\xCE\"\n}], [\"\\xC1\\xA5\\xCA\\xE9\", {\n local: [\"SimLi\", \"SimLi Regular\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"\\xD0\\xC2\\xCB\\xCE\", {\n alias: \"\\xCB\\xCE\\xCC\\xE5\"\n}], [\"HeiseiMin-W3\", {\n local: [\"Hiragino Mincho ProN\", \"Hiragino Mincho Pro\", \"Yu Mincho\", \"YuMincho\", \"Source Han Serif JP\", \"Noto Serif JP\", \"Noto Serif CJK JP\", \"IPAexMincho\", \"IPAMincho\", \"Takao Mincho\", \"MS Mincho\", \"MS PMincho\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"HeiseiKakuGo-W5\", {\n local: [\"Hiragino Kaku Gothic ProN\", \"Hiragino Kaku Gothic Pro\", \"Hiragino Sans\", \"Yu Gothic\", \"YuGothic\", \"Source Han Sans JP\", \"Noto Sans JP\", \"Noto Sans CJK JP\", \"IPAexGothic\", \"IPAGothic\", \"Takao Gothic\", \"Meiryo\", \"MS Gothic\", \"MS PGothic\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"HeiseiMin-W3-Acro\", {\n alias: \"HeiseiMin-W3\"\n}], [\"HeiseiKakuGo-W5-Acro\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozMinPro-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozMinProVI-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozMinPr6N-Regular\", {\n alias: \"HeiseiMin-W3\"\n}], [\"KozGoPro-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozGoProVI-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"KozGoPr6N-Regular\", {\n alias: \"HeiseiKakuGo-W5\"\n}], [\"STSong-Light\", {\n local: [\"STSong\", \"Songti SC\", \"Source Han Serif SC\", \"Source Han Serif CN\", \"Noto Serif SC\", \"Noto Serif CJK SC\", \"AR PL UMing CN\", \"SimSun\", \"NSimSun\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"STHeiti-Regular\", {\n local: [\"STHeiti\", \"Heiti SC\", \"PingFang SC\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Noto Sans SC\", \"Noto Sans CJK SC\", \"Microsoft YaHei\", \"SimHei\", \"WenQuanYi Zen Hei\"],\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"STSongStd-Light\", {\n alias: \"STSong-Light\"\n}], [\"AdobeSongStd-Light\", {\n alias: \"STSong-Light\"\n}], [\"AdobeHeitiStd-Regular\", {\n alias: \"STHeiti-Regular\"\n}], [\"AdobeKaitiStd-Regular\", {\n alias: \"\\xBF\\xAC\\xCC\\xE5\"\n}], [\"AdobeFangsongStd-Regular\", {\n alias: \"\\xB7\\xC2\\xCB\\xCE\"\n}], [\"MSung-Light\", {\n local: [\"Songti TC\", \"LiSong Pro\", \"Source Han Serif TC\", \"Source Han Serif TW\", \"Noto Serif TC\", \"Noto Serif CJK TC\", \"AR PL UMing TW\", \"PMingLiU\", \"MingLiU\", \"MingLiU_HKSCS\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"MHei-Medium\", {\n local: [\"Heiti TC\", \"STHeiti\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Noto Sans TC\", \"Noto Sans CJK TC\", \"PingFang TC\", \"Microsoft JhengHei\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"MSungStd-Light\", {\n alias: \"MSung-Light\"\n}], [\"AdobeMingStd-Light\", {\n alias: \"MSung-Light\"\n}], [\"HYSMyeongJo-Medium\", {\n local: [\"AppleMyungjo\", \"Source Han Serif KR\", \"Noto Serif KR\", \"Noto Serif CJK KR\", \"Nanum Myeongjo\", \"Batang\"],\n style: MEDIUM,\n ultimate: \"serif\"\n}], [\"HYGoThic-Medium\", {\n local: [\"Apple SD Gothic Neo\", \"AppleGothic\", \"Source Han Sans KR\", \"Noto Sans KR\", \"Noto Sans CJK KR\", \"Nanum Gothic\", \"Malgun Gothic\", \"Dotum\", \"Gulim\"],\n style: MEDIUM,\n ultimate: \"sans-serif\"\n}], [\"HYSMyeongJoStd-Medium\", {\n alias: \"HYSMyeongJo-Medium\"\n}], [\"AdobeMyungjoStd-Medium\", {\n alias: \"HYSMyeongJo-Medium\"\n}], [\"HYGoThic-Bold\", {\n alias: \"HYGoThic-Medium\",\n style: BOLD\n}], [\"AdobeGothicStd-Bold\", {\n alias: \"HYGoThic-Medium\",\n style: BOLD\n}]]);\nconst fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\nfunction getStyleToAppend(style) {\n switch (style) {\n case BOLD:\n return \"Bold\";\n case ITALIC:\n return \"Italic\";\n case BOLDITALIC:\n return \"Bold Italic\";\n default:\n if (style?.weight === \"bold\") {\n return \"Bold\";\n }\n if (style?.style === \"italic\") {\n return \"Italic\";\n }\n }\n return \"\";\n}\nfunction getFamilyName(str) {\n const keywords = new Set([\"thin\", \"extralight\", \"ultralight\", \"demilight\", \"semilight\", \"light\", \"book\", \"regular\", \"normal\", \"medium\", \"demibold\", \"semibold\", \"bold\", \"extrabold\", \"ultrabold\", \"black\", \"heavy\", \"extrablack\", \"ultrablack\", \"roman\", \"italic\", \"oblique\", \"ultracondensed\", \"extracondensed\", \"condensed\", \"semicondensed\", \"normal\", \"semiexpanded\", \"expanded\", \"extraexpanded\", \"ultraexpanded\", \"bolditalic\"]);\n return str.split(/[- ,+]+/g).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n}\nfunction generateFont({\n alias,\n local,\n path,\n fallback,\n style,\n ultimate\n}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n const result = {\n style: null,\n ultimate: null\n };\n if (local) {\n const extra = append ? ` ${append}` : \"\";\n for (const name of local) {\n src.push(`local(${name}${extra})`);\n }\n }\n if (alias) {\n const substitution = substitutionMap.get(alias);\n const aliasAppend = append || getStyleToAppend(style);\n Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n }\n if (style) {\n result.style = style;\n }\n if (ultimate) {\n result.ultimate = ultimate;\n }\n if (useFallback && fallback) {\n const fallbackInfo = substitutionMap.get(fallback);\n const {\n ultimate: fallbackUltimate\n } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n result.ultimate ||= fallbackUltimate;\n }\n if (usePath && path && localFontPath) {\n src.push(`url(${localFontPath}${path})`);\n }\n return result;\n}\nfunction getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n return null;\n }\n if ((type === \"TrueType\" || type === \"Type1\") && /^[A-Z]{6}\\+/.test(baseFontName)) {\n baseFontName = baseFontName.slice(7);\n }\n baseFontName = normalizeFontName(baseFontName);\n const key = baseFontName;\n let substitutionInfo = systemFontCache.get(key);\n if (substitutionInfo) {\n return substitutionInfo;\n }\n let substitution = substitutionMap.get(baseFontName);\n if (!substitution) {\n for (const [alias, subst] of fontAliases) {\n if (baseFontName.startsWith(alias)) {\n baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n substitution = substitutionMap.get(baseFontName);\n break;\n }\n }\n }\n let mustAddBaseFont = false;\n if (!substitution) {\n substitution = substitutionMap.get(standardFontName);\n mustAddBaseFont = true;\n }\n const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n if (!substitution) {\n if (!validateFontName(baseFontName)) {\n warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n systemFontCache.set(key, null);\n return null;\n }\n const bold = /bold/i.test(baseFontName);\n const italic = /oblique|italic/i.test(baseFontName);\n const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n guessFallback: true,\n loadedName,\n baseFontName,\n src: `local(${baseFontName})`,\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n }\n const src = [];\n if (mustAddBaseFont && validateFontName(baseFontName)) {\n src.push(`local(${baseFontName})`);\n }\n const {\n style,\n ultimate\n } = generateFont(substitution, src, localFontPath);\n const guessFallback = ultimate === null;\n const fallback = guessFallback ? \"\" : `,${ultimate}`;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n guessFallback,\n loadedName,\n baseFontName,\n src: src.join(\",\"),\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/core/image.js\n\n\n\n\n\n\n\n\n\n\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n }) {\n this.image = image;\n const dict = image.dict;\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n switch (filterName) {\n case \"JPXDecode\":\n ({\n width: image.width,\n height: image.height,\n componentsCount: image.numComps,\n bitsPerComponent: image.bitsPerComponent\n } = JpxImage.parseImageProperties(image.stream));\n image.stream.reset();\n const reducePower = ImageResizer.getReducePowerForJPX(image.width, image.height, image.numComps);\n this.jpxDecoderOptions = {\n numComponents: 0,\n isIndexedColormap: false,\n smaskInData: dict.get(\"SMaskInData\") >= 1,\n reducePower\n };\n if (reducePower) {\n const factor = 2 ** reducePower;\n image.width = Math.ceil(image.width / factor);\n image.height = Math.ceil(image.height / factor);\n }\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n warn(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n width = image.width;\n height = image.height;\n } else {\n const validWidth = typeof width === \"number\" && width > 0,\n validHeight = typeof height === \"number\" && height > 0;\n if (!validWidth || !validHeight) {\n if (!image.fallbackDims) {\n throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n }\n warn(\"PDFImage - using the Width/Height of the parent image, for SMask/Mask data.\");\n if (!validWidth) {\n width = image.fallbackDims.width;\n }\n if (!validHeight) {\n height = image.fallbackDims.height;\n }\n }\n }\n this.width = width;\n this.height = height;\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);\n }\n }\n }\n this.bpc = bitsPerComponent;\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n const hasColorSpace = !!colorSpace;\n if (this.jpxDecoderOptions?.smaskInData && dict.get(\"SMaskInData\") === 2) {\n this.jpxPremultiplied = true;\n if (this.matte) {\n const matteColorSpace = ColorSpaceUtils.parse({\n cs: hasColorSpace ? colorSpace : Name.get(\"DeviceRGB\"),\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.preblendMatte = matteColorSpace.getRgb(this.matte, 0);\n }\n }\n if (!hasColorSpace) {\n if (this.jpxDecoderOptions) {\n colorSpace = Name.get(\"DeviceRGBA\");\n } else {\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(`Images with ${image.numComps} color components not supported.`);\n }\n }\n } else if (this.jpxDecoderOptions?.smaskInData) {\n colorSpace = Name.get(\"DeviceRGBA\");\n }\n this.colorSpace = ColorSpaceUtils.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n this.numComps = this.colorSpace.numComps;\n if (this.jpxDecoderOptions) {\n this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComps : 0;\n this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === \"Indexed\";\n }\n } else {\n this.numComps = 1;\n }\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !ColorSpace.isDefaultDecode(this.decode, 1))) {\n this.needsDecode = true;\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace?.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n if (smask) {\n smask.fallbackDims ??= {\n width,\n height\n };\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n mask.fallbackDims ??= {\n width,\n height\n };\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n }\n } else {\n this.mask = mask;\n }\n }\n }\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n if (smask) {\n if (smask instanceof BaseStream) {\n smaskData = smask;\n } else {\n warn(\"Unsupported /SMask format.\");\n }\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported /Mask format.\");\n }\n }\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache\n });\n }\n static async createMask({\n image,\n isOffscreenCanvasSupported = false\n }) {\n const {\n dict\n } = image;\n const width = dict.get(\"W\", \"Width\");\n const height = dict.get(\"H\", \"Height\");\n const interpolate = dict.get(\"I\", \"Interpolate\");\n const decode = dict.getArray(\"D\", \"Decode\");\n const inverseDecode = decode?.[0] > 0;\n const computedLength = (width + 7 >> 3) * height;\n const imgArray = await image.getImageData(computedLength);\n const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n if (isSingleOpaquePixel) {\n return {\n isSingleOpaquePixel\n };\n }\n if (isOffscreenCanvasSupported) {\n if (ImageResizer.needsToBeResized(width, height)) {\n const data = new Uint8ClampedArray(width * height * 4);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n return ImageResizer.createImage({\n kind: ImageKind.RGBA_32BPP,\n data,\n width,\n height,\n interpolate\n });\n }\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n const imgData = ctx.createImageData(width, height);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: imgData.data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n interpolate,\n bitmap\n };\n }\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data;\n if (image instanceof DecodeStream && (!inverseDecode || haveFullData)) {\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n data.fill(0xff, actualLength);\n }\n if (inverseDecode) {\n for (let i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n return {\n data,\n width,\n height,\n interpolate\n };\n }\n get drawWidth() {\n return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\n }\n get drawHeight() {\n return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0);\n }\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n if (bpc === 1) {\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = MathClamp(decodeAddends[j] + buffer[index] * decodeCoefficients[j], 0, max);\n index++;\n }\n }\n }\n getComponents(buffer) {\n const bpc = this.bpc;\n if (bpc === 8) {\n return buffer;\n }\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n if (bpc === 1) {\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = buf >> 7 & 1;\n output[i + 1] = buf >> 6 & 1;\n output[i + 2] = buf >> 5 & 1;\n output[i + 3] = buf >> 4 & 1;\n output[i + 4] = buf >> 3 & 1;\n output[i + 5] = buf >> 2 & 1;\n output[i + 6] = buf >> 1 & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n while (bits < bpc) {\n buf = buf << 8 | buffer[bufferPos++];\n bits += 8;\n }\n const remainingBits = bits - bpc;\n output[i] = MathClamp(buf >> remainingBits, 0, max);\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n let apply;\n if (this.smask) {\n apply = (buffer, options) => this.smask.fillGrayBuffer(buffer, {\n ...options,\n destWidth: width,\n destHeight: height\n });\n } else if (this.mask) {\n if (this.mask instanceof PDFImage) {\n apply = (buffer, options) => this.mask.fillGrayBuffer(buffer, {\n ...options,\n invertOutput: true,\n destWidth: width,\n destHeight: height\n });\n } else if (Array.isArray(this.mask)) {\n apply = (buffer, {\n maxRows,\n offset,\n stride\n }) => {\n for (let i = 0, ii = width * maxRows; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * this.numComps;\n for (let j = 0; j < this.numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < this.mask[maskOffset] || color > this.mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n buffer[i * stride + offset] = opacity;\n }\n };\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n } else {\n apply = (buffer, {\n maxRows,\n offset,\n stride\n }) => {\n for (let i = 0, ii = width * maxRows; i < ii; ++i) {\n buffer[i * stride + offset] = 255;\n }\n };\n }\n await apply(rgbaBuf, {\n maxRows: actualHeight,\n offset: 3,\n stride: 4\n });\n }\n static #undoPreblend(buffer, length, matteR, matteG, matteB) {\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n undoPreblend(buffer, width, height) {\n const matte = this.smask?.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n PDFImage.#undoPreblend(buffer, width * height * 4, matteRgb[0], matteRgb[1], matteRgb[2]);\n }\n async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null\n };\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight);\n if (!this.smask && !this.mask && this.colorSpace.name === \"DeviceRGBA\") {\n imgData.kind = ImageKind.RGBA_32BPP;\n const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, {\n internal: isOffscreenCanvasSupported && mustBeResized\n });\n if (this.jpxPremultiplied) {\n const matteRgb = this.preblendMatte;\n PDFImage.#undoPreblend(imgArray, imgArray.length, matteRgb?.[0] ?? 0, matteRgb?.[1] ?? 0, matteRgb?.[2] ?? 0);\n }\n if (isOffscreenCanvasSupported) {\n if (!mustBeResized) {\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray);\n }\n return ImageResizer.createImage(imgData, false);\n }\n return imgData;\n }\n if (!forceRGBA && !this.smask && !this.mask) {\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n kind = ImageKind.RGB_24BPP;\n }\n if (kind && drawWidth === originalWidth && drawHeight === originalHeight) {\n const image = await this.#getImage(originalWidth, originalHeight);\n if (image) {\n return image;\n }\n const data = await this.getImageBytes(originalHeight * rowBytes, {\n internal: isOffscreenCanvasSupported && mustBeResized\n });\n if (isOffscreenCanvasSupported) {\n if (mustBeResized) {\n return ImageResizer.createImage({\n data,\n kind,\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate\n }, this.needsDecode);\n }\n return this.createBitmap(kind, originalWidth, originalHeight, data);\n }\n imgData.kind = kind;\n imgData.data = data;\n if (this.needsDecode) {\n assert(kind === ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.needsDecode) {\n let isHandled = false;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n isHandled = true;\n break;\n }\n if (isHandled) {\n if (isOffscreenCanvasSupported) {\n const image = await this.#getImage(drawWidth, drawHeight);\n if (image) {\n return image;\n }\n }\n let imageLength = originalHeight * rowBytes;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 4;\n break;\n case \"DeviceRGB\":\n imageLength = imageLength / 3 * 4;\n break;\n }\n const rgba = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGBA: true,\n internal: true\n });\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba);\n }\n if (this.colorSpace.name === \"DeviceGray\") {\n imageLength *= 3;\n }\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGB: true,\n internal: mustBeResized\n });\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n }\n }\n const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\n internal: true\n });\n const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n const comps = this.getComponents(imgArray);\n let alpha01, maybeUndoPreblend;\n let canvas, ctx, canvasImgData, data;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n canvas = new OffscreenCanvas(drawWidth, drawHeight);\n ctx = canvas.getContext(\"2d\");\n canvasImgData = ctx.createImageData(drawWidth, drawHeight);\n data = canvasImgData.data;\n }\n imgData.kind = ImageKind.RGBA_32BPP;\n if (!forceRGBA && !this.smask && !this.mask) {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n imgData.kind = ImageKind.RGB_24BPP;\n data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n } else {\n const arr = new Uint32Array(data.buffer);\n arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\n alpha01 = 1;\n }\n maybeUndoPreblend = false;\n } else {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n }\n alpha01 = 1;\n maybeUndoPreblend = true;\n await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n if (maybeUndoPreblend) {\n this.undoPreblend(data, drawWidth, actualHeight);\n }\n if (isOffscreenCanvasSupported && !mustBeResized) {\n ctx.putImageData(canvasImgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width: drawWidth,\n height: drawHeight,\n bitmap,\n interpolate: this.interpolate\n };\n }\n imgData.data = data;\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n async fillGrayBuffer(buffer, {\n destWidth,\n destHeight,\n invertOutput,\n maxRows,\n offset = 0,\n stride = 1\n } = {}) {\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(`Reading gray scale from a color image: ${numComps}`);\n }\n const srcWidth = this.width;\n const srcHeight = this.height;\n const bpc = this.bpc;\n const rowBytes = srcWidth * numComps * bpc + 7 >> 3;\n const imgArray = await this.getImageBytes(srcHeight * rowBytes, {\n internal: true\n });\n const comps = this.getComponents(imgArray);\n const resolvedDestWidth = destWidth ?? srcWidth;\n const resolvedDestHeight = destHeight ?? srcHeight;\n const needsResampling = resolvedDestWidth !== srcWidth || resolvedDestHeight !== srcHeight;\n const rows = maxRows === undefined ? resolvedDestHeight : Math.min(resolvedDestHeight, maxRows);\n let outputWidth = srcWidth;\n let yRatio = 0;\n let xScaled = null;\n if (needsResampling) {\n outputWidth = resolvedDestWidth;\n yRatio = srcHeight / resolvedDestHeight;\n const xRatio = srcWidth / resolvedDestWidth;\n xScaled = new Uint32Array(resolvedDestWidth);\n for (let i = 0; i < resolvedDestWidth; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n }\n const mask = invertOutput ? 0xff : 0;\n if (bpc === 1) {\n if (xScaled) {\n const xMap = xScaled;\n let destIndex = offset;\n if (this.needsDecode) {\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = comps[py + xMap[col]] - 1 & 255 ^ mask;\n destIndex += stride;\n }\n }\n } else {\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = -comps[py + xMap[col]] & 255 ^ mask;\n destIndex += stride;\n }\n }\n }\n } else {\n const length = outputWidth * rows;\n if (this.needsDecode) {\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = comps[i] - 1 & 255 ^ mask;\n }\n } else {\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = -comps[i] & 255 ^ mask;\n }\n }\n }\n return;\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n const scale = 255 / ((1 << bpc) - 1);\n if (xScaled) {\n const xMap = xScaled;\n let destIndex = offset;\n for (let row = 0; row < rows; row++) {\n const py = Math.floor(row * yRatio) * srcWidth;\n for (let col = 0; col < outputWidth; col++) {\n buffer[destIndex] = scale * comps[py + xMap[col]] ^ mask;\n destIndex += stride;\n }\n }\n } else {\n const length = outputWidth * rows;\n for (let i = 0; i < length; ++i) {\n buffer[i * stride + offset] = scale * comps[i] ^ mask;\n }\n }\n }\n createBitmap(kind, width, height, src) {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n let imgData;\n if (kind === ImageKind.RGBA_32BPP) {\n imgData = new ImageData(src, width, height);\n } else {\n imgData = ctx.createImageData(width, height);\n convertToRGBA({\n kind,\n src,\n dest: new Uint32Array(imgData.data.buffer),\n width,\n height,\n inverseDecode: this.needsDecode\n });\n }\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async #getImage(width, height) {\n const bitmap = await this.image.getTransferableImage(width, height);\n if (!bitmap) {\n return null;\n }\n return {\n data: null,\n width: bitmap.displayWidth ?? width,\n height: bitmap.displayHeight ?? height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async getImageBytes(length, {\n drawWidth,\n drawHeight,\n forceRGBA = false,\n forceRGB = false,\n internal = false\n }) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGBA = !!forceRGBA;\n this.image.forceRGB = !!forceRGB;\n const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions);\n if (internal || this.image instanceof DecodeStream) {\n return imageBytes;\n }\n assert(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.');\n return new Uint8Array(imageBytes);\n }\n}\n\n;// ./src/core/evaluator.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isOffscreenCanvasSupported: false,\n isImageDecoderSupported: false,\n canvasMaxAreaInBytes: -1,\n fontExtraProperties: false,\n useSystemFonts: true,\n useWasm: true,\n useWorkerFetch: true,\n cMapUrl: null,\n cMapPacked: true,\n iccUrl: null,\n standardFontDataUrl: null,\n wasmUrl: null,\n hasGPU: false\n});\nconst PatternType = {\n TILING: 1,\n SHADING: 2\n};\nconst TEXT_CHUNK_BATCH_SIZE = 10;\nconst deferred = Promise.resolve();\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n for (const val of value) {\n const maybeBM = normalizeBlendMode(val, true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n if (value instanceof Name) {\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n warn(`Unsupported blend mode: ${value.name}`);\n }\n return parsingArray ? null : \"source-over\";\n}\nfunction addCachedImageOps(opList, {\n objId,\n fn,\n args,\n optionalContent,\n hasMask\n}) {\n if (objId) {\n opList.addDependency(objId);\n }\n opList.addImageOps(fn, args, optionalContent, hasMask);\n if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) {\n args[0].count++;\n }\n}\nclass TimeSlotManager {\n static TIME_SLOT_DURATION_MS = 20;\n static CHECK_TIME_EVERY = 100;\n constructor() {\n this.reset();\n }\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalColorSpaceCache,\n globalImageCache,\n systemFontCache,\n options = null\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.globalImageCache = globalImageCache;\n this.systemFontCache = systemFontCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.type3FontRefs = null;\n this._regionalImageCache = new RegionalImageCache();\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n get _pdfFunctionFactory() {\n return shadow(this, \"_pdfFunctionFactory\", new PDFFunctionFactory({\n xref: this.xref\n }));\n }\n get parsingType3Font() {\n return !!this.type3FontRefs;\n }\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);\n return newEvaluator;\n }\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue;\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n processed.put(graphicState);\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n processed.put(xObject);\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n for (const ref of processed) {\n nonBlendModesSet.put(ref);\n }\n return false;\n }\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n if (this.options.useWorkerFetch) {\n data = {\n cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`),\n isCompressed: true\n };\n } else {\n data = {\n cMapData: await this.handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"cMapUrl\",\n filename: `${name}${this.options.cMapPacked ? \".bcmap\" : \"\"}`\n }),\n isCompressed: this.options.cMapPacked\n };\n }\n this.builtInCMapCache.set(name, data);\n return data;\n }\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n if (this.options.useSystemFonts && name !== \"Symbol\" && name !== \"ZapfDingbats\") {\n return null;\n }\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n try {\n if (this.options.useWorkerFetch) {\n data = await fetchBinaryData(`${this.options.standardFontDataUrl}${filename}`);\n } else {\n data = await this.handler.sendWithPromise(\"FetchBinaryData\", {\n kind: \"standardFontDataUrl\",\n filename\n });\n }\n } catch (ex) {\n warn(ex);\n return null;\n }\n this.standardFontDataCache.set(name, data);\n return new Stream(data);\n }\n async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache, seenRefs) {\n const {\n dict\n } = xobj;\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let f32bbox = bbox && new Float32Array(bbox);\n if (f32bbox?.some(x => !isFinite(x))) {\n f32bbox = null;\n }\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n let newOpList;\n const f32matrix = matrix && new Float32Array(matrix);\n const args = [f32matrix, !group && f32bbox || null];\n const localResources = dict.get(\"Resources\");\n if (group) {\n groupOptions = {\n matrix,\n bbox: f32bbox,\n smask,\n isolated: false,\n knockout: false,\n needsIsolation: false,\n hasSoftMask: false,\n isGray: false\n };\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = this._getColorSpace(group.getRaw(\"CS\"), resources, localColorSpaceCache);\n colorSpace = cs instanceof ColorSpace ? cs : await this._handleColorSpace(cs);\n }\n }\n groupOptions.isGray = colorSpace?.numComps === 1;\n if (smask?.backdrop) {\n colorSpace ||= ColorSpaceUtils.rgb;\n smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0);\n } else if (smask?.subtype === \"Luminosity\") {\n smask.backdrop = \"#000000\";\n }\n newOpList = new CheckedOperatorList();\n } else {\n newOpList = operatorList;\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n }\n await this.getOperatorList({\n stream: xobj,\n task,\n resources: localResources instanceof Dict ? localResources : resources,\n operatorList: newOpList,\n initialState,\n prevRefs: seenRefs\n });\n if (group) {\n groupOptions.needsIsolation = newOpList.needsIsolation || !!smask;\n groupOptions.hasSoftMask = newOpList.hasSoftMask || !!smask;\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n operatorList.addOpList(newOpList);\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n } else {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n }\n return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\n }\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }) {\n const {\n maxImageSize,\n ignoreErrors,\n isOffscreenCanvasSupported\n } = this.options;\n const {\n dict\n } = image;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n const msg = \"Image exceeded maximum allowed size and was removed.\";\n if (!ignoreErrors) {\n throw new Error(msg);\n }\n warn(msg);\n return;\n }\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n }\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n let imgData, fn, args;\n if (imageMask) {\n imgData = await PDFImage.createMask({\n image,\n isOffscreenCanvasSupported: isOffscreenCanvasSupported && !this.parsingType3Font\n });\n if (imgData.isSingleOpaquePixel) {\n fn = OPS.paintSolidColorImageMask;\n args = [];\n operatorList.addImageOps(fn, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n fn,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n if (this.parsingType3Font) {\n args = compileType3Glyph(imgData);\n if (args) {\n operatorList.addImageOps(OPS.constructPath, args, optionalContent);\n return;\n }\n warn(\"Cannot compile Type3 glyph.\");\n operatorList.addImageOps(OPS.paintImageMaskXObject, [imgData], optionalContent);\n return;\n }\n const objId = `mask_${this.idFactory.createObjId()}`;\n operatorList.addDependency(objId);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n this._sendImgData(objId, imgData);\n fn = OPS.paintImageMaskXObject;\n args = [{\n data: objId,\n width: imgData.width,\n height: imgData.height,\n interpolate: imgData.interpolate,\n count: 1\n }];\n operatorList.addImageOps(fn, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n objId,\n fn,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n const SMALL_IMAGE_DIMENSIONS = 200;\n const hasMask = dict.has(\"SMask\") || dict.has(\"Mask\");\n if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !hasMask) {\n try {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache\n });\n imgData = await imageObj.createImageData(true, false);\n operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent);\n } catch (reason) {\n const msg = `Unable to decode inline image: \"${reason}\".`;\n if (!ignoreErrors) {\n throw new Error(msg);\n }\n warn(msg);\n }\n return;\n }\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false,\n globalCacheData = null;\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (cacheKey && imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n if (cacheGlobally) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n operatorList.addDependency(objId);\n fn = OPS.paintImageXObject;\n args = [objId, w, h];\n operatorList.addImageOps(fn, args, optionalContent, hasMask);\n if (cacheGlobally) {\n globalCacheData = {\n objId,\n fn,\n args,\n optionalContent,\n hasMask,\n byteSize: 0\n };\n if (this.globalImageCache.hasDecodeFailed(imageRef)) {\n this.globalImageCache.setData(imageRef, globalCacheData);\n this._sendImgData(objId, null, cacheGlobally);\n return;\n }\n if (w * h > 250000 || hasMask) {\n const localLength = await this.handler.sendWithPromise(\"commonobj\", [objId, \"CopyLocalImage\", {\n imageRef\n }]);\n if (localLength) {\n this.globalImageCache.setData(imageRef, globalCacheData);\n this.globalImageCache.addByteSize(imageRef, localLength);\n return;\n }\n }\n }\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache\n }).then(async imageObj => {\n imgData = await imageObj.createImageData(false, isOffscreenCanvasSupported);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n imgData.ref = imageRef;\n if (cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n }).catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n if (imageRef) {\n this.globalImageCache.addDecodeFailed(imageRef);\n }\n return this._sendImgData(objId, null, cacheGlobally);\n });\n if (cacheKey) {\n const cacheData = {\n objId,\n fn,\n args,\n optionalContent,\n hasMask\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n if (cacheGlobally) {\n assert(globalCacheData, \"The global cache-data must be available.\");\n this.globalImageCache.setData(imageRef, globalCacheData);\n }\n }\n }\n }\n #createTransferMap(fn) {\n const transferFn = this._pdfFunctionFactory.create(fn),\n tmp = new Float32Array(1);\n return Uint8Array.from({\n length: 256\n }, (_, i) => {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n return tmp[0] * 255 | 0;\n });\n }\n handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\")\n };\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n smaskOptions.transferMap = this.#createTransferMap(transferObj);\n }\n return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone({\n newPath: true\n }), localColorSpaceCache, seenRefs);\n }\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr.length > 1 && tr.every(map => map === tr[0]) ? [tr[0]] : tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null;\n }\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null;\n }\n transferMaps.push(this.#createTransferMap(transferObj));\n numEffectfulFns++;\n }\n if (!(numFns === 1 || numFns === 4)) {\n return null;\n }\n if (numEffectfulFns === 0) {\n return null;\n }\n return transferMaps;\n }\n handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache, seenRefs) {\n const tilingOpList = new CheckedOperatorList();\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources]\n });\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n prevRefs: seenRefs\n }).then(function () {\n const operatorListIR = tilingOpList.getIR();\n const {\n needsIsolation\n } = tilingOpList;\n const tilingPatternIR = getTilingPatternIR(operatorListIR, patternDict, color, needsIsolation);\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n if (patternDict.objId) {\n localTilingPatternCache.set(null, patternDict.objId, {\n operatorListIR,\n needsIsolation,\n dict: patternDict\n });\n }\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null, seenRefs = null) {\n const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\n const translated = await this.loadFont(fontName, fontRef, resources, task, fallbackFontDict, cssFontInfo, seenRefs);\n if (translated.font.isType3Font) {\n operatorList.addDependencies(translated.type3Dependencies);\n }\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n }\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n if (font.data) {\n const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || state.strokeColorSpace.name === \"Pattern\" || font.disableFontFace) {\n PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n }\n }\n return glyphs;\n }\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n if (this.options.ignoreErrors) {\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n seenRefs\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n const gStateObj = [];\n let promise = Promise.resolve();\n for (const [key, value] of gState) {\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n if (typeof value !== \"number\") {\n warn(`Invalid LW (line width): ${value}`);\n break;\n }\n gStateObj.push([key, Math.abs(value)]);\n break;\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n promise = promise.then(() => this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state, null, null, seenRefs).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n }));\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs));\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n if (gState.has(\"TR2\")) {\n break;\n }\n case \"TR2\":\n {\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([\"TR\", transferMaps]);\n break;\n }\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n await promise;\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n }\n loadFont(fontName, font, resources, task, fallbackFontDict = null, cssFontInfo = null, seenRefs = null) {\n const errorFont = async () => new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font\n });\n let fontRef;\n if (font) {\n if (font instanceof Ref) {\n fontRef = font;\n }\n } else {\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (fontRef) {\n if (this.type3FontRefs?.has(fontRef)) {\n return errorFont();\n }\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n try {\n font = this.xref.fetchIfRef(fontRef);\n } catch (ex) {\n warn(`loadFont - lookup failed: \"${ex}\".`);\n }\n }\n if (!(font instanceof Dict)) {\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`Font \"${fontName}\" is not available.`);\n return errorFont();\n }\n warn(`Font \"${fontName}\" is not available -- attempting to fallback to a default font.`);\n font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\n }\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const {\n descriptor,\n hash\n } = preEvaluatedFont;\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (hash && descriptor instanceof Dict) {\n const fontAliases = descriptor.fontAliases ||= Object.create(null);\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId()\n };\n }\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n } else {\n fontID = this.idFactory.createFontId();\n }\n assert(fontID?.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, promise);\n } else {\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, promise);\n }\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n this.translateFont(preEvaluatedFont).then(async translatedFont => {\n const translated = new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font\n });\n if (translatedFont.isType3Font) {\n try {\n await translated.loadType3Data(this, resources, task, seenRefs);\n } catch (reason) {\n throw new Error(`Type3 font load error: ${reason}`);\n }\n }\n resolve(translated);\n }).catch(reason => {\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(reason?.message),\n dict: font\n }));\n });\n return promise;\n }\n buildPath(fn, args, state) {\n const {\n pathMinMax: minMax,\n pathBuffer\n } = state;\n switch (fn | 0) {\n case OPS.rectangle:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n const width = args[2];\n const height = args[3];\n const xw = x + width;\n const yh = y + height;\n if (width === 0 || height === 0) {\n pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, yh, DrawOPS.closePath);\n } else {\n pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, y, DrawOPS.lineTo, xw, yh, DrawOPS.lineTo, x, yh, DrawOPS.closePath);\n }\n Util.rectBoundingBox(x, y, xw, yh, minMax);\n break;\n }\n case OPS.moveTo:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n pathBuffer.push(DrawOPS.moveTo, x, y);\n Util.pointBoundingBox(x, y, minMax);\n break;\n }\n case OPS.lineTo:\n {\n const x = state.currentPointX = args[0];\n const y = state.currentPointY = args[1];\n pathBuffer.push(DrawOPS.lineTo, x, y);\n Util.pointBoundingBox(x, y, minMax);\n break;\n }\n case OPS.curveTo:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x2, y2, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, x1, y1, x2, y2, x, y);\n Util.bezierBoundingBox(startX, startY, x1, y1, x2, y2, x, y, minMax);\n break;\n }\n case OPS.curveTo2:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, startX, startY, x1, y1, x, y);\n Util.bezierBoundingBox(startX, startY, startX, startY, x1, y1, x, y, minMax);\n break;\n }\n case OPS.curveTo3:\n {\n const startX = state.currentPointX;\n const startY = state.currentPointY;\n const [x1, y1, x, y] = args;\n state.currentPointX = x;\n state.currentPointY = y;\n pathBuffer.push(DrawOPS.curveTo, x1, y1, x, y, x, y);\n Util.bezierBoundingBox(startX, startY, x1, y1, x, y, x, y, minMax);\n break;\n }\n case OPS.closePath:\n pathBuffer.push(DrawOPS.closePath);\n break;\n }\n }\n _getColorSpace(cs, resources, localColorSpaceCache) {\n return ColorSpaceUtils.parse({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache,\n asyncIfNotCached: true\n });\n }\n async _handleColorSpace(csPromise) {\n try {\n return await csPromise;\n } catch (ex) {\n if (ex instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`_handleColorSpace - ignoring ColorSpace: \"${ex}\".`);\n return null;\n }\n throw ex;\n }\n }\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n }) {\n let id = localShadingPatternCache.get(shading);\n if (id) {\n return id;\n }\n let patternIR;\n try {\n const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, this.globalColorSpaceCache, localColorSpaceCache);\n patternIR = shadingFill.getIR();\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`parseShading - ignoring shading: \"${reason}\".`);\n localShadingPatternCache.set(shading, null);\n return null;\n }\n throw reason;\n }\n id = `pattern_${this.idFactory.createObjId()}`;\n if (this.parsingType3Font) {\n id = `${this.idFactory.getDocId()}_type3_${id}`;\n }\n localShadingPatternCache.set(shading, id);\n if (this.parsingType3Font) {\n const buffer = compilePatternInfo(patternIR);\n this.handler.send(\"commonobj\", [id, \"Pattern\", buffer], [buffer]);\n } else {\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs) {\n const patternName = args.pop();\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color, localTilingPattern.needsIsolation);\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch {}\n }\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache, seenRefs);\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (objId) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n }\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n async parseMarkedContentProps(contentProperties, resources) {\n return parseMarkedContentProps(this.xref, contentProperties, resources);\n }\n async getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n prevRefs = null\n }) {\n if (stream.isAsync) {\n const bytes = await stream.asyncGetBytes();\n if (bytes) {\n stream = new Stream(bytes, 0, bytes.length, stream.dict);\n }\n }\n const objId = stream.dict?.objId;\n const seenRefs = new RefSet(prevRefs);\n if (objId) {\n if (prevRefs?.has(objId)) {\n throw new Error(`getOperatorList - ignoring circular reference: ${objId}`);\n }\n seenRefs.put(objId);\n }\n resources ||= Dict.empty;\n initialState ||= new EvalState();\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n const self = this;\n const xref = this.xref;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n let markedContentLevel = 0;\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n function closePendingMarkedContentOPS() {\n for (; markedContentLevel > 0; markedContentLevel--) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n const operation = {};\n let stop, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n switch (fn | 0) {\n case OPS.paintXObject:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n addCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const cachedImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj) || self.globalImageCache.getData(xobj, self.pageIndex);\n if (cachedImage) {\n addCachedImageOps(operatorList, cachedImage);\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n if (type.name === \"Form\") {\n stateManager.save();\n self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone({\n newPath: true\n }), localColorSpaceCache, seenRefs).then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self.buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache\n }).then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(`Unhandled XObject subtype ${type.name}`);\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setFont:\n const fontSize = args[1];\n next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict, null, seenRefs).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n }));\n return;\n case OPS.endInlineImage:\n const cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n addCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\n }));\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n const combinedGlyphs = [],\n state = stateManager.state;\n for (const arrItem of args[0]) {\n if (typeof arrItem === \"string\") {\n combinedGlyphs.push(...self.handleText(arrItem, state));\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n case OPS.setFillColorSpace:\n {\n const fillCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n if (fillCS instanceof ColorSpace) {\n stateManager.state.fillColorSpace = fillCS;\n continue;\n }\n next(self._handleColorSpace(fillCS).then(colorSpace => {\n stateManager.state.fillColorSpace = colorSpace || ColorSpaceUtils.gray;\n }));\n return;\n }\n case OPS.setStrokeColorSpace:\n {\n const strokeCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n if (strokeCS instanceof ColorSpace) {\n stateManager.state.strokeColorSpace = strokeCS;\n continue;\n }\n next(self._handleColorSpace(strokeCS).then(colorSpace => {\n stateManager.state.strokeColorSpace = colorSpace || ColorSpaceUtils.gray;\n }));\n return;\n }\n case OPS.setFillColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n cs = stateManager.state.fillColorSpace;\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n cs = stateManager.state.strokeColorSpace;\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.gray;\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.gray;\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk;\n args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk;\n args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.fillColorSpace = ColorSpaceUtils.rgb;\n args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n break;\n case OPS.setStrokeRGBColor:\n if (!isNumberArray(args, null)) {\n continue;\n }\n stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb;\n args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.patternFillColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n }\n args = [];\n fn = OPS.setFillTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n if (!Array.isArray(args)) {\n continue;\n }\n next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs));\n return;\n }\n if (!isNumberArray(args, null)) {\n continue;\n }\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.patternStrokeColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n }\n args = [];\n fn = OPS.setStrokeTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n if (!Array.isArray(args)) {\n continue;\n }\n next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs));\n return;\n }\n if (!isNumberArray(args, null)) {\n continue;\n }\n args = [cs.getRgbHex(args, 0)];\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.shadingFill:\n let shading;\n try {\n const shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n } catch (reason) {\n if (reason instanceof AbortException) {\n continue;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring Shading: \"${reason}\".`);\n continue;\n }\n throw reason;\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (!patternId) {\n continue;\n }\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n self.setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n seenRefs\n }).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setLineWidth:\n {\n const [thickness] = args;\n if (typeof thickness !== \"number\") {\n warn(`Invalid setLineWidth: ${thickness}`);\n continue;\n }\n args[0] = Math.abs(thickness);\n break;\n }\n case OPS.setDash:\n {\n const dashPhase = args[1];\n if (typeof dashPhase !== \"number\") {\n warn(`Invalid setDash: ${dashPhase}`);\n continue;\n }\n const dashArray = args[0];\n if (!Array.isArray(dashArray)) {\n warn(`Invalid setDash: ${dashArray}`);\n continue;\n }\n if (dashArray.some(x => typeof x !== \"number\")) {\n args[0] = dashArray.filter(x => typeof x === \"number\");\n }\n break;\n }\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(fn, args, stateManager.state);\n continue;\n case OPS.stroke:\n case OPS.closeStroke:\n case OPS.fill:\n case OPS.eoFill:\n case OPS.fillStroke:\n case OPS.eoFillStroke:\n case OPS.closeFillStroke:\n case OPS.closeEOFillStroke:\n case OPS.endPath:\n {\n const {\n state: {\n pathBuffer,\n pathMinMax\n }\n } = stateManager;\n if (fn === OPS.closeStroke || fn === OPS.closeFillStroke || fn === OPS.closeEOFillStroke) {\n pathBuffer.push(DrawOPS.closePath);\n }\n if (pathBuffer.length === 0) {\n operatorList.addOp(OPS.constructPath, [fn, [null], null]);\n } else {\n operatorList.addOp(OPS.constructPath, [fn, [new Float32Array(pathBuffer)], pathMinMax.slice()]);\n pathBuffer.length = 0;\n pathMinMax.set(BBOX_INIT, 0);\n }\n continue;\n }\n case OPS.setTextMatrix:\n operatorList.addOp(fn, [new Float32Array(args)]);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n continue;\n case OPS.beginMarkedContentProps:\n markedContentLevel++;\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(self.parseMarkedContentProps(args[1], resources).then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", data]);\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n return;\n }\n throw reason;\n }));\n return;\n }\n args = [args[0].name, args[1] instanceof Dict ? args[1].get(\"MCID\") : null];\n break;\n case OPS.beginMarkedContent:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n markedContentLevel++;\n break;\n case OPS.endMarkedContent:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n if (markedContentLevel === 0) {\n continue;\n }\n markedContentLevel--;\n break;\n default:\n if (args?.some(arg => arg instanceof Dict)) {\n warn(`getOperatorList - ignoring operator: ${fn}`);\n continue;\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n closePendingMarkedContentOPS();\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n closePendingMarkedContentOPS();\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n async getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n lang = null,\n disableNormalization = false,\n keepWhiteSpace = false,\n prevRefs = null,\n intersector = null\n }) {\n if (stream.isAsync) {\n const bytes = await stream.asyncGetBytes();\n if (bytes) {\n stream = new Stream(bytes, 0, bytes.length, stream.dict);\n }\n }\n sink ??= textSinkWrapper(null);\n const objId = stream.dict?.objId;\n const seenRefs = new RefSet(prevRefs);\n if (objId) {\n if (prevRefs?.has(objId)) {\n throw new Error(`getTextContent - ignoring circular reference: ${objId}`);\n }\n seenRefs.put(objId);\n }\n resources ||= Dict.empty;\n stateManager ||= new StateManager(new TextState());\n let markedContentLevel = 0;\n let textMarkedContentLevel = null;\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n prevTextRise: 0,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n notASpace: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false\n };\n const twoLastChars = [\" \", \" \"];\n let twoLastCharsPos = 0;\n function saveLastChar(char) {\n const nextPos = (twoLastCharsPos + 1) % 2;\n const ret = twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n twoLastChars[twoLastCharsPos] = char;\n twoLastCharsPos = nextPos;\n return !keepWhiteSpace && ret;\n }\n function shouldAddWhitepsace() {\n return !keepWhiteSpace && twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[(twoLastCharsPos + 1) % 2] === \" \";\n }\n function resetLastChars() {\n twoLastChars[0] = twoLastChars[1] = \" \";\n twoLastCharsPos = 0;\n }\n const TRACKING_SPACE_FACTOR = 0.102;\n const NOT_A_SPACE_FACTOR = 0.03;\n const NEGATIVE_SPACE_FACTOR = -0.2;\n const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n const VERTICAL_SHIFT_RATIO = 0.25;\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n let textState, currentTextState;\n function pushWhitespace({\n width = 0,\n height = 0,\n transform = textContentItem.prevTransform,\n fontName = textContentItem.fontName\n }) {\n intersector?.addExtraChar(\" \");\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width,\n height,\n transform,\n fontName,\n hasEOL: false\n });\n }\n function getCurrentTextTransform() {\n const font = textState.font;\n const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n return Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm));\n }\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const {\n font,\n loadedName\n } = textState;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical\n };\n if (self.options.fontExtraProperties && font.systemFontInfo) {\n const style = textContent.styles[loadedName];\n style.fontSubstitution = font.systemFontInfo.css;\n style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\n }\n }\n textContentItem.fontName = loadedName;\n const trm = textContentItem.transform = getCurrentTextTransform();\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n const {\n fontSize\n } = textState;\n textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\n textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n textContentItem.hasEOL = false;\n textContentItem.initialized = true;\n return textContentItem;\n }\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n textContentItem.textAdvanceScale = scaleFactor;\n }\n function runBidiTransform(textChunk) {\n let text = textChunk.str.join(\"\");\n if (!disableNormalization) {\n text = normalizeUnicode(text);\n }\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL\n };\n }\n async function handleSetFont(fontName, fontRef) {\n const translated = await self.loadFont(fontName, fontRef, resources, task, null, null, seenRefs);\n textState.loadedName = translated.loadedName;\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n }\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];\n }\n function compareWithLastPosition(glyphWidth) {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n if (textState.font?.vertical) {\n if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n if (!textState.font || !textContentItem.prevTransform) {\n return true;\n }\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n let rotate = -1;\n if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);\n }\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n const textOrientation = Math.sign(textContentItem.height || textContentItem.totalHeight);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceX) > 0.5 * textContentItem.width) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n const textOrientation = Math.sign(textContentItem.width || textContentItem.totalWidth);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceY) > 0.5 * textContentItem.height) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n const textRiseDelta = textState.textRise - textContentItem.prevTextRise;\n const advanceYCorrected = textRiseDelta === 0 ? advanceY : advanceY - currentTransform[3] / textState.fontSize * textRiseDelta;\n if (Math.abs(advanceYCorrected) > textContentItem.height) {\n appendEOL();\n return true;\n }\n if (advanceX <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n function buildTextContentItem({\n chars,\n extraSpacing\n }) {\n if (currentTextState !== textState && (currentTextState.fontSize !== textState.fontSize || currentTextState.fontName !== textState.fontName && (currentTextState.font.name !== textState.font.name || currentTextState.font.vertical !== textState.font.vertical))) {\n flushTextContentItem();\n currentTextState = textState.clone();\n }\n const font = textState.font;\n const baseCharSpacing = font.vertical ? -textState.charSpacing : textState.charSpacing;\n if (!chars) {\n const charSpacing = baseCharSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n if (keepWhiteSpace) {\n compareWithLastPosition(0);\n }\n return;\n }\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n const {\n category,\n originalCharCode\n } = glyph;\n if (category.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing = baseCharSpacing + (i + 1 === ii ? extraSpacing : 0);\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n if (originalCharCode === 0x20) {\n charSpacing += textState.wordSpacing;\n }\n if (!keepWhiteSpace && category.isWhitespace) {\n if (!font.vertical) {\n charSpacing += scaledDim;\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n charSpacing += -scaledDim;\n textState.translateTextMatrix(0, -charSpacing);\n }\n saveLastChar(\" \");\n continue;\n }\n if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) {\n if (!font.vertical) {\n textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, scaledDim);\n }\n continue;\n }\n const textChunk = ensureTextContentItem();\n if (category.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n intersector?.addGlyph(getCurrentTextTransform(), scaledDim, 0, glyph.unicode);\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n intersector?.addGlyph(getCurrentTextTransform(), 0, scaledDim, glyph.unicode);\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n if (scaledDim) {\n textChunk.prevTransform = getCurrentTextTransform();\n textChunk.prevTextRise = textState.textRise;\n }\n const glyphUnicode = glyph.unicode;\n if (saveLastChar(glyphUnicode)) {\n textChunk.str.push(\" \");\n intersector?.addExtraChar(\" \");\n }\n if (!intersector) {\n textChunk.str.push(glyphUnicode);\n }\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n function appendEOL() {\n intersector?.addExtraChar(\"\\n\");\n resetLastChars();\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.loadedName,\n hasEOL: true\n });\n }\n }\n function addFakeSpaces(width, transf, textOrientation) {\n if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {\n if (textContentItem.initialized) {\n resetLastChars();\n textContentItem.str.push(\" \");\n intersector?.addExtraChar(\" \");\n }\n return false;\n }\n const fontName = textContentItem.fontName;\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n flushTextContentItem();\n resetLastChars();\n pushWhitespace({\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName\n });\n return true;\n }\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n }\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n function closePendingMarkedContentItems(level = 0) {\n if (!includeMarkedContent || markedContentLevel <= level) {\n return;\n }\n flushTextContentItem();\n for (; markedContentLevel > level; markedContentLevel--) {\n textContent.items.push({\n type: \"endMarkedContent\"\n });\n }\n }\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n const timeSlotManager = new TimeSlotManager();\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n const operation = {};\n let stop,\n name,\n isValidName,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n currentTextState ||= textState.clone();\n const fn = operation.fn;\n args = operation.args;\n switch (fn | 0) {\n case OPS.setFont:\n const fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n break;\n }\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n textMarkedContentLevel = markedContentLevel;\n break;\n case OPS.endText:\n if (textMarkedContentLevel !== null) {\n closePendingMarkedContentItems(textMarkedContentLevel);\n textMarkedContentLevel = null;\n }\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;\n for (const item of args[0]) {\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor\n });\n }\n }\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n xobjs ??= resources.get(\"XObject\") || Dict.empty;\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n if (globalImage) {\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n const {\n dict\n } = xobj;\n const type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, dict.objId, true);\n resolveXObject();\n return;\n }\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n if (matrix) {\n xObjStateManager.transform(matrix);\n }\n const localResources = dict.get(\"Resources\");\n enqueueChunk();\n const sinkWrapper = textSinkWrapper(sink);\n self.getTextContent({\n stream: xobj,\n task,\n resources: localResources instanceof Dict ? localResources : resources,\n stateManager: xObjStateManager,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n lang,\n disableNormalization,\n keepWhiteSpace,\n prevRefs: seenRefs\n }).then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n resolveGState();\n return;\n }\n flushTextContentItem();\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.beginMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentLevel++;\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentLevel++;\n const mcid = args[1] instanceof Dict ? args[1].get(\"MCID\") : null;\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null,\n tag: args[0] instanceof Name ? args[0].name : null\n });\n }\n break;\n case OPS.endMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n if (markedContentLevel === 0) {\n break;\n }\n markedContentLevel--;\n textContent.items.push({\n type: \"endMarkedContent\"\n });\n }\n break;\n }\n if (textContent.items.length >= sink.desiredSize) {\n stop = true;\n break;\n }\n }\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n closePendingMarkedContentItems();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n flushTextContentItem();\n closePendingMarkedContentItems();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n async extractDataStructures(dict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n const toUnicodePromise = this.readToUnicode(properties.toUnicode);\n if (properties.composite) {\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict && !properties.cidSystemInfo) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\")\n };\n }\n try {\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`extractDataStructures - ignoring CIDToGIDMap data: \"${ex}\".`);\n }\n }\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName = baseEncodingName instanceof Name ? baseEncodingName.name : null;\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (const entry of diffEncoding) {\n const data = xref.fetchIfRef(entry);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(`Invalid entry in 'Differences' array: ${data}`);\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n const msg = \"Encoding is not a Name nor a Dict\";\n if (!this.options.ignoreErrors) {\n throw new FormatError(msg);\n }\n warn(msg);\n }\n if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n baseEncodingName = null;\n }\n }\n const nonEmbeddedFont = !properties.file || properties.isInternalFont,\n isSymbolsFontName = getSymbolsFonts()[properties.name];\n if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\n baseEncodingName = null;\n }\n if (baseEncodingName === \"WinAnsiEncoding\" && nonEmbeddedFont && properties.name?.charCodeAt(0) >= 0xb7) {\n const fontName = properties.name;\n const chineseFontNames = [\"\\xCB\\xCE\\xCC\\xE5\", \"\\xBA\\xDA\\xCC\\xE5\", \"\\xBF\\xAC\\xCC\\xE5\", \"\\xB7\\xC2\\xCB\\xCE\", \"\\xBF\\xAC\\xCC\\xE5_GB2312\", \"\\xB7\\xC2\\xCB\\xCE_GB2312\", \"\\xC1\\xA5\\xCA\\xE9\", \"\\xD0\\xC2\\xCB\\xCE\", \"\\xB7\\xC2\\xCB\\xCE\\xCC\\xE5\", \"\\xD0\\xA1\\xB1\\xEA\\xCB\\xCE\"];\n if (chineseFontNames.includes(fontName)) {\n baseEncodingName = null;\n properties.defaultEncoding = \"Adobe-GB1-UCS2\";\n properties.composite = true;\n properties.cidEncoding = Name.get(\"GBK-EUC-H\");\n const cMap = await CMapFactory.create({\n encoding: properties.cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n properties.cidSystemInfo = {\n registry: \"Adobe\",\n ordering: \"GB1\",\n supplement: 0\n };\n }\n }\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n let isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n if (properties.type === \"TrueType\" && isSymbolicFont && isNonsymbolicFont && differences.length !== 0) {\n properties.flags &= ~FontFlags.Symbolic;\n isSymbolicFont = false;\n }\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n if (isSymbolicFont || isSymbolsFontName) {\n encoding = MacRomanEncoding;\n if (nonEmbeddedFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n } else if (/Wingdings/i.test(properties.name)) {\n encoding = WinAnsiEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n properties.toUnicode = await toUnicodePromise;\n const builtToUnicode = await this.buildToUnicode(properties);\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n }\n return properties;\n }\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n let glyphName = encoding[charcode];\n if (glyphName === \"\") {\n continue;\n }\n let unicode = glyphsUnicodeMap[glyphName];\n if (unicode !== undefined) {\n toUnicode[charcode] = String.fromCharCode(unicode);\n continue;\n }\n let code = 0;\n switch (glyphName[0]) {\n case \"G\":\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\":\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\":\n case \"c\":\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n code = +codeStr;\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._simpleFontToUnicode(properties, true);\n }\n }\n break;\n case \"u\":\n unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n break;\n default:\n switch (glyphName) {\n case \"f_h\":\n case \"f_t\":\n case \"T_h\":\n toUnicode[charcode] = glyphName.replaceAll(\"_\", \"\");\n continue;\n }\n break;\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n }\n return toUnicode;\n }\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\n if (properties.hasIncludedToUnicodeMap) {\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n if (!properties.composite) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof IdentityCMap) || properties.cidSystemInfo?.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n const {\n registry,\n ordering\n } = properties.cidSystemInfo;\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n const toUnicode = [],\n buf = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n buf.length = 0;\n for (let i = 0, ii = ucs2.length; i < ii; i += 2) {\n buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1));\n }\n toUnicode[charcode] = String.fromCharCode(...buf);\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n async readToUnicode(cmapObj) {\n if (!cmapObj) {\n return null;\n }\n if (cmapObj instanceof Name) {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n }\n if (cmapObj instanceof BaseStream) {\n try {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n cmap.forEach(function (charCode, token) {\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n if (token.length % 2 !== 0) {\n token = \"\\u0000\" + token;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint(...str);\n });\n return new ToUnicodeMap(map);\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n }\n return null;\n }\n readCidToGidMap(glyphsData, toUnicode) {\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = glyphsData[j++] << 8 | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n if (properties.composite) {\n const dw = dict.get(\"DW\");\n defaultWidth = typeof dw === \"number\" ? Math.ceil(dw) : 1000;\n const widths = dict.get(\"W\");\n if (Array.isArray(widths)) {\n for (let i = 0, ii = widths.length; i < ii; i++) {\n let start = xref.fetchIfRef(widths[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (const c of code) {\n const width = xref.fetchIfRef(c);\n if (typeof width === \"number\") {\n glyphsWidths[start] = width;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const width = xref.fetchIfRef(widths[++i]);\n if (typeof width !== \"number\") {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n } else {\n break;\n }\n }\n }\n if (properties.vertical) {\n const dw2 = dict.getArray(\"DW2\");\n let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (Array.isArray(vmetrics)) {\n for (let i = 0, ii = vmetrics.length; i < ii; i++) {\n let start = xref.fetchIfRef(vmetrics[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (let j = 0, jj = code.length; j < jj; j++) {\n const vmetric = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n if (isNumberArray(vmetric, null)) {\n glyphsVMetrics[start] = vmetric;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n if (!isNumberArray(vmetric, null)) {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n } else {\n break;\n }\n }\n }\n }\n } else {\n const widths = dict.get(\"Widths\");\n if (Array.isArray(widths)) {\n let j = properties.firstChar;\n for (const w of widths) {\n const width = xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphsWidths[j] = width;\n }\n j++;\n }\n const missingWidth = descriptor.get(\"MissingWidth\");\n defaultWidth = typeof missingWidth === \"number\" ? missingWidth : 0;\n } else {\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n } else {\n properties.flags &= ~FontFlags.FixedPitch;\n }\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n isSerifFont(baseFontName) {\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n return fontNameWoStyle in getSerifFonts() || /serif/i.test(fontNameWoStyle);\n }\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n fontName = stdFontMap[fontName] || fontName;\n const Metrics = getMetrics();\n const glyphWidths = Metrics[fontName] ?? Metrics[this.isSerifFont(name) ? \"Times-Roman\" : \"Helvetica\"];\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths();\n }\n return {\n defaultWidth,\n monospace,\n widths\n };\n }\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n let composite = false;\n let hash;\n if (type.name === \"Type0\") {\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n let firstChar = dict.get(\"FirstChar\");\n if (!Number.isInteger(firstChar)) {\n firstChar = 0;\n }\n let lastChar = dict.get(\"LastChar\");\n if (!Number.isInteger(lastChar)) {\n lastChar = composite ? 0xffff : 0xff;\n }\n const descriptor = dict.get(\"FontDescriptor\");\n const toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (typeof diffEntry === \"number\" || diffEntry instanceof Ref) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n hash.update(`${firstChar}-${lastChar}`);\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.stream || toUnicode;\n const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n if (composite) {\n hash.update(\"compositeFont\");\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n const cidToGidMap = dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n if (type.name === \"Type3\") {\n const charProcs = baseDict.get(\"CharProcs\");\n if (charProcs instanceof Dict) {\n for (const [key, entry] of charProcs.getRawEntries()) {\n hash.update(entry instanceof Ref ? `${key}\\0${entry}` : key);\n }\n }\n }\n }\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\"\n };\n }\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo\n }) {\n const isType3Font = type === \"Type3\";\n if (!descriptor) {\n if (isType3Font) {\n descriptor = Dict.empty;\n } else if (composite) {\n descriptor = Dict.empty;\n } else {\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n baseFontName = normalizeFontName(baseFontName.name);\n const metrics = this.getBaseFontMetrics(baseFontName);\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic);\n const properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n systemFontInfo: null,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font\n };\n const widths = dict.get(\"Widths\");\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n if (!properties.isInternalFont && this.options.useSystemFonts) {\n properties.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName, type);\n }\n const newProperties = await this.extractDataStructures(dict, properties);\n if (Array.isArray(widths)) {\n const glyphWidths = [];\n let j = firstChar;\n for (const w of widths) {\n const width = this.xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphWidths[j] = width;\n }\n j++;\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n }\n return new Font(baseFontName, file, newProperties, this.options);\n }\n }\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n const fontNameStr = fontName?.name;\n const baseFontStr = baseFont?.name;\n if (isType3Font) {\n if (!fontNameStr) {\n fontName = Name.get(type);\n }\n } else if (fontNameStr !== baseFontStr) {\n info(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) {\n fontName = null;\n }\n fontName ||= baseFont;\n }\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n let fontFile, fontFileN, subtype, length1, length2, length3;\n try {\n for (const n of [\"FontFile\", \"FontFile2\", \"FontFile3\"]) {\n fontFile = descriptor.get(n);\n if (fontFile) {\n fontFileN = n;\n break;\n }\n }\n if (fontFile) {\n if (!(fontFile instanceof BaseStream)) {\n throw new FormatError(\"FontFile should be a stream\");\n } else {\n if (fontFile.isAsync) {\n const bytes = await fontFile.asyncGetBytes();\n if (bytes) {\n fontFile = new Stream(bytes, 0, bytes.length, fontFile.dict);\n }\n }\n if (fontFile.isEmpty) {\n throw new FormatError(\"FontFile is empty\");\n }\n }\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = null;\n }\n let isInternalFont = false;\n let glyphScaleFactors = null;\n let systemFontInfo = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n if (!isInternalFont && this.options.useSystemFonts) {\n systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n }\n }\n const fontMatrix = lookupMatrix(dict.getArray(\"FontMatrix\"), FONT_IDENTITY_MATRIX);\n const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), isType3Font ? [0, 0, 0, 0] : undefined);\n let ascent = descriptor.get(\"Ascent\");\n if (typeof ascent !== \"number\") {\n ascent = undefined;\n }\n let descent = descriptor.get(\"Descent\");\n if (typeof descent !== \"number\") {\n descent = undefined;\n }\n let xHeight = descriptor.get(\"XHeight\");\n if (typeof xHeight !== \"number\") {\n xHeight = 0;\n }\n let capHeight = descriptor.get(\"CapHeight\");\n if (typeof capHeight !== \"number\") {\n capHeight = 0;\n }\n let flags = descriptor.get(\"Flags\");\n if (!Number.isInteger(flags)) {\n flags = 0;\n }\n let italicAngle = descriptor.get(\"ItalicAngle\");\n if (typeof italicAngle !== \"number\") {\n italicAngle = 0;\n }\n const properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n fontFileN,\n length1,\n length2,\n length3,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix,\n firstChar,\n lastChar,\n toUnicode,\n bbox,\n ascent,\n descent,\n xHeight,\n capHeight,\n flags,\n italicAngle,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n systemFontInfo\n };\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n const newProperties = await this.extractDataStructures(dict, properties);\n this.extractWidths(dict, descriptor, newProperties);\n const font = new Font(fontName.name, fontFile, newProperties, this.options);\n if (font.missingFile && !font.systemFontInfo && !isType3Font && this.options.useSystemFonts) {\n const standardFontName = getStandardFontName(fontName.name);\n const substitution = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n if (substitution) {\n if (substitution.guessFallback) {\n substitution.guessFallback = false;\n substitution.css += `,${font.fallbackName}`;\n }\n font.systemFontInfo = substitution;\n }\n }\n return font;\n }\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n const buffer = font.renderer.getPath(fontChar);\n if (!buffer) {\n return;\n }\n handler.send(\"commonobj\", [glyphName, \"FontPath\", buffer], [buffer]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n const accent = glyph.accent;\n if (accent?.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"Helvetica\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass TranslatedFont {\n #sent = false;\n #type3Loaded = null;\n constructor({\n loadedName,\n font,\n dict\n }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n }\n send(handler) {\n if (this.#sent) {\n return;\n }\n this.#sent = true;\n const fontData = this.font.exportData(),\n transfers = fontData.buffer ? [fontData.buffer] : null;\n handler.send(\"commonobj\", [this.loadedName, \"Font\", fontData], transfers);\n }\n fallback(handler, evaluatorOptions) {\n if (!this.font.data) {\n return;\n }\n this.font.disableFontFace = true;\n PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, evaluatorOptions);\n }\n async loadType3Data(evaluator, resources, task, seenRefs = null) {\n if (this.#type3Loaded) {\n return this.#type3Loaded;\n }\n const {\n dict,\n font,\n type3Dependencies\n } = this;\n assert(font.isType3Font, \"Must be a Type3 font.\");\n const {\n promise,\n resolve\n } = Promise.withResolvers();\n this.#type3Loaded = promise;\n const type3Evaluator = evaluator.clone({\n ignoreErrors: false\n });\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (dict.objId) {\n type3FontRefs.put(dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n const charProcs = dict.get(\"CharProcs\");\n const fontResources = dict.get(\"Resources\") || resources;\n const charProcOperatorList = new Map();\n const [x0, y0, x1, y1] = font.bbox;\n const fontBBoxSize = Math.hypot(x1 - x0, y1 - y0);\n for (const key of charProcs.getKeys()) {\n try {\n const operatorList = new OperatorList();\n await type3Evaluator.getOperatorList({\n stream: charProcs.get(key),\n task,\n resources: fontResources,\n operatorList,\n prevRefs: seenRefs\n });\n switch (operatorList.fnArray[0]) {\n case OPS.setCharWidthAndBounds:\n this.#removeType3ColorOperators(operatorList, fontBBoxSize);\n break;\n case OPS.setCharWidth:\n if (!fontBBoxSize) {\n this.#guessType3FontBBox(operatorList);\n }\n break;\n }\n charProcOperatorList.set(key, operatorList.getIR());\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n } catch {\n warn(`Type3 font resource \"${key}\" is not available.`);\n charProcOperatorList.set(key, new OperatorList().getIR());\n }\n }\n font.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n font.isCharBBox = true;\n font.bbox = this._bbox;\n }\n resolve();\n return this.#type3Loaded;\n }\n #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n width = charBBox[2] - charBBox[0],\n height = charBBox[3] - charBBox[1];\n const charBBoxSize = Math.hypot(width, height);\n if (width === 0 || height === 0) {\n operatorList.fnArray.splice(0, 1);\n operatorList.argsArray.splice(0, 1);\n } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) {\n this._bbox ??= BBOX_INIT.slice();\n Util.rectBoundingBox(...charBBox, this._bbox);\n }\n let i = 0,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setCharWidthAndBounds:\n break;\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n #guessType3FontBBox(operatorList) {\n let i = 1;\n const ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.constructPath:\n const minMax = operatorList.argsArray[i][2];\n this._bbox ??= BBOX_INIT.slice();\n Util.rectBoundingBox(...minMax, this._bbox);\n break;\n }\n i++;\n }\n }\n}\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\nclass TextState {\n ctm = new Float32Array(IDENTITY_MATRIX);\n fontName = null;\n fontSize = 0;\n loadedName = null;\n font = null;\n fontMatrix = FONT_IDENTITY_MATRIX;\n textMatrix = IDENTITY_MATRIX.slice();\n textLineMatrix = IDENTITY_MATRIX.slice();\n charSpacing = 0;\n wordSpacing = 0;\n leading = 0;\n textHScale = 1;\n textRise = 0;\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n clone() {\n const clone = Object.assign(Object.create(this), this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\nclass EvalState {\n ctm = new Float32Array(IDENTITY_MATRIX);\n font = null;\n textRenderingMode = TextRenderingMode.FILL;\n _fillColorSpace = ColorSpaceUtils.gray;\n _strokeColorSpace = ColorSpaceUtils.gray;\n patternFillColorSpace = null;\n patternStrokeColorSpace = null;\n currentPointX = 0;\n currentPointY = 0;\n pathMinMax = F32_BBOX_INIT.slice();\n pathBuffer = [];\n get fillColorSpace() {\n return this._fillColorSpace;\n }\n set fillColorSpace(colorSpace) {\n this._fillColorSpace = this.patternFillColorSpace = colorSpace;\n }\n get strokeColorSpace() {\n return this._strokeColorSpace;\n }\n set strokeColorSpace(colorSpace) {\n this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\n }\n clone({\n newPath = false\n } = {}) {\n const clone = Object.create(this);\n if (newPath) {\n clone.pathBuffer = [];\n clone.pathMinMax = F32_BBOX_INIT.slice();\n }\n return clone;\n }\n}\nclass EvaluatorPreprocessor {\n static get opMap() {\n return shadow(this, \"opMap\", Object.assign(Object.create(null), {\n w: {\n id: OPS.setLineWidth,\n numArgs: 1,\n variableArgs: false\n },\n J: {\n id: OPS.setLineCap,\n numArgs: 1,\n variableArgs: false\n },\n j: {\n id: OPS.setLineJoin,\n numArgs: 1,\n variableArgs: false\n },\n M: {\n id: OPS.setMiterLimit,\n numArgs: 1,\n variableArgs: false\n },\n d: {\n id: OPS.setDash,\n numArgs: 2,\n variableArgs: false\n },\n ri: {\n id: OPS.setRenderingIntent,\n numArgs: 1,\n variableArgs: false\n },\n i: {\n id: OPS.setFlatness,\n numArgs: 1,\n variableArgs: false\n },\n gs: {\n id: OPS.setGState,\n numArgs: 1,\n variableArgs: false\n },\n q: {\n id: OPS.save,\n numArgs: 0,\n variableArgs: false\n },\n Q: {\n id: OPS.restore,\n numArgs: 0,\n variableArgs: false\n },\n cm: {\n id: OPS.transform,\n numArgs: 6,\n variableArgs: false\n },\n m: {\n id: OPS.moveTo,\n numArgs: 2,\n variableArgs: false\n },\n l: {\n id: OPS.lineTo,\n numArgs: 2,\n variableArgs: false\n },\n c: {\n id: OPS.curveTo,\n numArgs: 6,\n variableArgs: false\n },\n v: {\n id: OPS.curveTo2,\n numArgs: 4,\n variableArgs: false\n },\n y: {\n id: OPS.curveTo3,\n numArgs: 4,\n variableArgs: false\n },\n h: {\n id: OPS.closePath,\n numArgs: 0,\n variableArgs: false\n },\n re: {\n id: OPS.rectangle,\n numArgs: 4,\n variableArgs: false\n },\n S: {\n id: OPS.stroke,\n numArgs: 0,\n variableArgs: false\n },\n s: {\n id: OPS.closeStroke,\n numArgs: 0,\n variableArgs: false\n },\n f: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n F: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n \"f*\": {\n id: OPS.eoFill,\n numArgs: 0,\n variableArgs: false\n },\n B: {\n id: OPS.fillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"B*\": {\n id: OPS.eoFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n b: {\n id: OPS.closeFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"b*\": {\n id: OPS.closeEOFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n n: {\n id: OPS.endPath,\n numArgs: 0,\n variableArgs: false\n },\n W: {\n id: OPS.clip,\n numArgs: 0,\n variableArgs: false\n },\n \"W*\": {\n id: OPS.eoClip,\n numArgs: 0,\n variableArgs: false\n },\n BT: {\n id: OPS.beginText,\n numArgs: 0,\n variableArgs: false\n },\n ET: {\n id: OPS.endText,\n numArgs: 0,\n variableArgs: false\n },\n Tc: {\n id: OPS.setCharSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tw: {\n id: OPS.setWordSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tz: {\n id: OPS.setHScale,\n numArgs: 1,\n variableArgs: false\n },\n TL: {\n id: OPS.setLeading,\n numArgs: 1,\n variableArgs: false\n },\n Tf: {\n id: OPS.setFont,\n numArgs: 2,\n variableArgs: false\n },\n Tr: {\n id: OPS.setTextRenderingMode,\n numArgs: 1,\n variableArgs: false\n },\n Ts: {\n id: OPS.setTextRise,\n numArgs: 1,\n variableArgs: false\n },\n Td: {\n id: OPS.moveText,\n numArgs: 2,\n variableArgs: false\n },\n TD: {\n id: OPS.setLeadingMoveText,\n numArgs: 2,\n variableArgs: false\n },\n Tm: {\n id: OPS.setTextMatrix,\n numArgs: 6,\n variableArgs: false\n },\n \"T*\": {\n id: OPS.nextLine,\n numArgs: 0,\n variableArgs: false\n },\n Tj: {\n id: OPS.showText,\n numArgs: 1,\n variableArgs: false\n },\n TJ: {\n id: OPS.showSpacedText,\n numArgs: 1,\n variableArgs: false\n },\n \"'\": {\n id: OPS.nextLineShowText,\n numArgs: 1,\n variableArgs: false\n },\n '\"': {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false\n },\n d0: {\n id: OPS.setCharWidth,\n numArgs: 2,\n variableArgs: false\n },\n d1: {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false\n },\n CS: {\n id: OPS.setStrokeColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n cs: {\n id: OPS.setFillColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n SC: {\n id: OPS.setStrokeColor,\n numArgs: 4,\n variableArgs: true\n },\n SCN: {\n id: OPS.setStrokeColorN,\n numArgs: 33,\n variableArgs: true\n },\n sc: {\n id: OPS.setFillColor,\n numArgs: 4,\n variableArgs: true\n },\n scn: {\n id: OPS.setFillColorN,\n numArgs: 33,\n variableArgs: true\n },\n G: {\n id: OPS.setStrokeGray,\n numArgs: 1,\n variableArgs: false\n },\n g: {\n id: OPS.setFillGray,\n numArgs: 1,\n variableArgs: false\n },\n RG: {\n id: OPS.setStrokeRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n rg: {\n id: OPS.setFillRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n K: {\n id: OPS.setStrokeCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n k: {\n id: OPS.setFillCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n sh: {\n id: OPS.shadingFill,\n numArgs: 1,\n variableArgs: false\n },\n BI: {\n id: OPS.beginInlineImage,\n numArgs: 0,\n variableArgs: false\n },\n ID: {\n id: OPS.beginImageData,\n numArgs: 0,\n variableArgs: false\n },\n EI: {\n id: OPS.endInlineImage,\n numArgs: 1,\n variableArgs: false\n },\n Do: {\n id: OPS.paintXObject,\n numArgs: 1,\n variableArgs: false\n },\n MP: {\n id: OPS.markPoint,\n numArgs: 1,\n variableArgs: false\n },\n DP: {\n id: OPS.markPointProps,\n numArgs: 2,\n variableArgs: false\n },\n BMC: {\n id: OPS.beginMarkedContent,\n numArgs: 1,\n variableArgs: false\n },\n BDC: {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false\n },\n EMC: {\n id: OPS.endMarkedContent,\n numArgs: 0,\n variableArgs: false\n },\n BX: {\n id: OPS.beginCompat,\n numArgs: 0,\n variableArgs: false\n },\n EX: {\n id: OPS.endCompat,\n numArgs: 0,\n variableArgs: false\n },\n BM: null,\n BD: null,\n true: null,\n fa: null,\n fal: null,\n fals: null,\n false: null,\n nu: null,\n nul: null,\n null: null\n }));\n }\n static MAX_INVALID_PATH_OPS = 10;\n constructor(stream, xref, stateManager = new StateManager()) {\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._isPathOp = false;\n this._numInvalidPathOPS = 0;\n }\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n if (!this._isPathOp) {\n this._numInvalidPathOPS = 0;\n }\n this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath;\n if (!opSpec.variableArgs) {\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n if (argsLength < numArgs) {\n const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n }\n this.preprocessCommand(fn, args);\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false;\n }\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\n;// ./src/core/default_appearance.js\n\n\n\n\n\n\n\n\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3)\n };\n try {\n while (true) {\n operation.args.length = 0;\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue;\n }\n const {\n fn,\n args\n } = operation;\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillCMYKColor:\n ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n return result;\n }\n}\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\n constructor(stream, xref, globalColorSpaceCache) {\n super(stream);\n this.stream = stream;\n this.xref = xref;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.resources = stream.dict?.get(\"Resources\");\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n let result = {\n scaleFactor: 1,\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3),\n fillColorSpace: ColorSpaceUtils.gray\n };\n let breakLoop = false;\n const stack = [];\n try {\n while (true) {\n operation.args.length = 0;\n if (breakLoop || !this.read(operation)) {\n break;\n }\n const {\n fn,\n args\n } = operation;\n switch (fn | 0) {\n case OPS.save:\n stack.push({\n scaleFactor: result.scaleFactor,\n fontSize: result.fontSize,\n fontName: result.fontName,\n fontColor: result.fontColor.slice(),\n fillColorSpace: result.fillColorSpace\n });\n break;\n case OPS.restore:\n result = stack.pop() || result;\n break;\n case OPS.setTextMatrix:\n const tm = Util.transform(this.stateManager.state.ctm, args);\n result.scaleFactor *= Math.hypot(tm[0], tm[1]);\n break;\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillColorSpace:\n result.fillColorSpace = ColorSpaceUtils.parse({\n cs: args[0],\n xref: this.xref,\n resources: this.resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n globalColorSpaceCache: this.globalColorSpaceCache,\n localColorSpaceCache: this._localColorSpaceCache\n });\n break;\n case OPS.setFillColor:\n const cs = result.fillColorSpace;\n cs.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillRGBColor:\n ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillCMYKColor:\n ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.showText:\n case OPS.showSpacedText:\n case OPS.nextLineShowText:\n case OPS.nextLineSetSpacingShowText:\n result.fontSize *= result.scaleFactor;\n breakLoop = true;\n break;\n }\n }\n } catch (reason) {\n warn(`parseAppearanceStream - ignoring errors: \"${reason}\".`);\n }\n this.stream.reset();\n delete result.scaleFactor;\n delete result.fillColorSpace;\n return result;\n }\n get _localColorSpaceCache() {\n return shadow(this, \"_localColorSpaceCache\", new LocalColorSpaceCache());\n }\n get _pdfFunctionFactory() {\n return shadow(this, \"_pdfFunctionFactory\", new PDFFunctionFactory({\n xref: this.xref\n }));\n }\n}\nfunction parseAppearanceStream(stream, xref, globalColorSpaceCache) {\n return new AppearanceStreamEvaluator(stream, xref, globalColorSpaceCache).parse();\n}\nfunction getPdfColor(color, isFill) {\n if (color[0] === color[1] && color[1] === color[2]) {\n const gray = color[0] / 255;\n return `${numberToString(gray)} ${isFill ? \"g\" : \"G\"}`;\n }\n return Array.from(color, c => numberToString(c / 255)).join(\" \") + ` ${isFill ? \"rg\" : \"RG\"}`;\n}\nfunction createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n}) {\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`;\n}\nclass FakeUnicodeFont {\n static #fontNameId = 1;\n constructor(xref, fontFamily) {\n this.xref = xref;\n this.widths = null;\n this.firstChar = Infinity;\n this.lastChar = -Infinity;\n this.fontFamily = fontFamily;\n const canvas = new OffscreenCanvas(1, 1);\n this.ctxMeasure = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n this.fontName = Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont.#fontNameId++}`);\n }\n get fontDescriptorRef() {\n if (!FakeUnicodeFont._fontDescriptorRef) {\n const fontDescriptor = new Dict(this.xref);\n fontDescriptor.setIfName(\"Type\", \"FontDescriptor\");\n fontDescriptor.set(\"FontName\", this.fontName);\n fontDescriptor.set(\"FontFamily\", \"MyriadPro Regular\");\n fontDescriptor.set(\"FontBBox\", [0, 0, 0, 0]);\n fontDescriptor.setIfName(\"FontStretch\", \"Normal\");\n fontDescriptor.set(\"FontWeight\", 400);\n fontDescriptor.set(\"ItalicAngle\", 0);\n FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor);\n }\n return FakeUnicodeFont._fontDescriptorRef;\n }\n get descendantFontRef() {\n const descendantFont = new Dict(this.xref);\n descendantFont.set(\"BaseFont\", this.fontName);\n descendantFont.setIfName(\"Type\", \"Font\");\n descendantFont.setIfName(\"Subtype\", \"CIDFontType0\");\n descendantFont.setIfName(\"CIDToGIDMap\", \"Identity\");\n descendantFont.set(\"FirstChar\", this.firstChar);\n descendantFont.set(\"LastChar\", this.lastChar);\n descendantFont.set(\"FontDescriptor\", this.fontDescriptorRef);\n descendantFont.set(\"DW\", 1000);\n const widths = [];\n const chars = [...this.widths].sort();\n let currentChar = null;\n let currentWidths = null;\n for (const [char, width] of chars) {\n if (!currentChar) {\n currentChar = char;\n currentWidths = [width];\n continue;\n }\n if (char === currentChar + currentWidths.length) {\n currentWidths.push(width);\n } else {\n widths.push(currentChar, currentWidths);\n currentChar = char;\n currentWidths = [width];\n }\n }\n if (currentChar) {\n widths.push(currentChar, currentWidths);\n }\n descendantFont.set(\"W\", widths);\n const cidSystemInfo = new Dict(this.xref);\n cidSystemInfo.set(\"Ordering\", \"Identity\");\n cidSystemInfo.set(\"Registry\", \"Adobe\");\n cidSystemInfo.set(\"Supplement\", 0);\n descendantFont.set(\"CIDSystemInfo\", cidSystemInfo);\n return this.xref.getNewPersistentRef(descendantFont);\n }\n get baseFontRef() {\n const baseFont = new Dict(this.xref);\n baseFont.set(\"BaseFont\", this.fontName);\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type0\");\n baseFont.setIfName(\"Encoding\", \"Identity-H\");\n baseFont.set(\"DescendantFonts\", [this.descendantFontRef]);\n baseFont.setIfName(\"ToUnicode\", \"Identity-H\");\n return this.xref.getNewPersistentRef(baseFont);\n }\n get resources() {\n const resources = new Dict(this.xref);\n const font = new Dict(this.xref);\n font.set(this.fontName.name, this.baseFontRef);\n resources.set(\"Font\", font);\n return resources;\n }\n _createContext() {\n this.widths = new Map();\n this.ctxMeasure.font = `1000px ${this.fontFamily}`;\n return this.ctxMeasure;\n }\n createFontResources(text) {\n const ctx = this._createContext();\n for (const line of text.split(/\\r\\n?|\\n/)) {\n for (const char of line.split(\"\")) {\n const code = char.charCodeAt(0);\n if (this.widths.has(code)) {\n continue;\n }\n const metrics = ctx.measureText(char);\n const width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n return this.resources;\n }\n static getFirstPositionInfo(rect, rotation, fontSize) {\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize;\n return {\n coords: [0, h + lineDescent - lineHeight],\n bbox: [0, 0, w, h],\n matrix: rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined\n };\n }\n createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\n const ctx = this._createContext();\n const lines = [];\n let maxWidth = -Infinity;\n for (const line of text.split(/\\r\\n?|\\n/)) {\n lines.push(line);\n const lineWidth = ctx.measureText(line).width;\n maxWidth = Math.max(maxWidth, lineWidth);\n for (const code of codePointIter(line)) {\n const char = String.fromCodePoint(code);\n let width = this.widths.get(code);\n if (width === undefined) {\n const metrics = ctx.measureText(char);\n width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n }\n maxWidth *= fontSize / 1000;\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const hscale = maxWidth > w ? w / maxWidth : 1;\n let vscale = 1;\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize;\n const maxHeight = lineHeight * lines.length;\n if (maxHeight > h) {\n vscale = h / maxHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n const buffer = [\"q\", `0 0 ${numberToString(w)} ${numberToString(h)} re W n`, `BT`, `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${numberToString(newFontSize)} Tf`];\n const {\n resources\n } = this;\n strokeAlpha = typeof strokeAlpha === \"number\" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1;\n if (strokeAlpha !== 1) {\n buffer.push(\"/R0 gs\");\n const extGState = new Dict(this.xref);\n const r0 = new Dict(this.xref);\n r0.set(\"ca\", strokeAlpha);\n r0.set(\"CA\", strokeAlpha);\n r0.setIfName(\"Type\", \"ExtGState\");\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n }\n const vShift = numberToString(lineHeight);\n for (const line of lines) {\n buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(this.xref);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\n\n;// ./src/shared/scripting_utils.js\n/* unused harmony import specifier */ var scripting_utils_MathClamp;\n\nfunction makeColorComp(n) {\n return Math.floor(scripting_utils_MathClamp(n, 0, 1) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return scripting_utils_MathClamp(x, 0, 1) * 255;\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = [\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"];\nconst TimeFormats = [\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"];\n\n;// ./src/core/name_number_tree.js\n\n\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n getAll(isRaw = false) {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n const processed = new RefSet();\n if (this.root instanceof Ref) {\n processed.put(this.root);\n }\n const queue = [this.root];\n for (const node of queue) {\n const obj = xref.fetchIfRef(node);\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n if (!Array.isArray(kids)) {\n continue;\n }\n for (const kid of kids) {\n if (kid instanceof Ref) {\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n processed.put(kid);\n }\n queue.push(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(isRaw ? entries[i] : xref.fetchIfRef(entries[i]), isRaw ? entries[i + 1] : xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n getRaw(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = l + r >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = kid;\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n const tmp = l + r >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return entries[m + 1];\n }\n }\n }\n return null;\n }\n get(key) {\n return this.xref.fetchIfRef(this.getRaw(key));\n }\n}\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\n;// ./src/core/cleanup_helper.js\n\n\n\n\nfunction clearGlobalCaches() {\n clearPatternCaches();\n clearPrimitiveCaches();\n clearUnicodeCaches();\n WasmImage.cleanup();\n}\n\n;// ./src/core/file_spec.js\n\n\n\n\nclass FileSpec {\n constructor(root) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.root = root;\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n }\n get filename() {\n const item = FileSpec.pickPlatformItem(this.root);\n if (item && typeof item === \"string\") {\n return stringToPDFString(item, true).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\/\", \"/\").replaceAll(\"\\\\\", \"/\");\n }\n return \"\";\n }\n get description() {\n const desc = this.root?.get(\"Desc\");\n if (desc && typeof desc === \"string\") {\n return stringToPDFString(desc);\n }\n return \"\";\n }\n get serializable() {\n const {\n filename,\n description\n } = this;\n return {\n rawFilename: filename,\n filename: stripPath(filename) || \"unnamed\",\n description\n };\n }\n static pickPlatformItem(dict, raw = false) {\n if (dict instanceof Dict) {\n for (const key of [\"UF\", \"F\", \"Unix\", \"Mac\", \"DOS\"]) {\n if (dict.has(key)) {\n return raw ? dict.getRaw(key) : dict.get(key);\n }\n }\n }\n return null;\n }\n static hasEmbeddedFile(fileSpecDict) {\n return this.pickPlatformItem(fileSpecDict.get(\"EF\")) instanceof BaseStream;\n }\n static readContent(dict) {\n if (!(dict instanceof Dict)) {\n return null;\n }\n const ef = this.pickPlatformItem(dict.get(\"EF\"));\n if (!(ef instanceof BaseStream)) {\n warn(\"Embedded file specification points to non-existing/invalid content\");\n return null;\n }\n return this.readStreamContent(ef);\n }\n static readStreamContent(stream) {\n const encrypt = stream.dict?.xref?.encrypt;\n if (encrypt?.encryptionKey === null) {\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n return stream.getBytes();\n }\n}\n\n;// ./src/core/xml_parser.js\n\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10\n};\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\nclass XMLParserBase {\n static get _entityRegex() {\n return shadow(this, \"_entityRegex\", /&(?:#x([^;&]+)|#([^;&]+)|([^;&]+));/g);\n }\n _resolveEntities(s) {\n return s.replaceAll(XMLParserBase._entityRegex, (all, hex, dec, entity) => {\n if (hex || dec) {\n const code = hex ? parseInt(hex, 16) : parseInt(dec, 10);\n return code >= 0 && code <= 0x10ffff ? String.fromCodePoint(code) : all;\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue)\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start\n };\n }\n _parseProcessingInstruction(s, start) {\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"?\" && s[pos] !== \"/\") {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start\n };\n }\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n onResolveEntity(name) {\n return `&${name};`;\n }\n onPi(name, value) {}\n onComment(text) {}\n onCdata(text) {}\n onDoctype(doctypeContent) {}\n onText(text) {}\n onBeginElement(name, attributes, isEmpty) {}\n onEndElement(name) {}\n onError(code) {}\n}\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n get firstChild() {\n return this.childNodes?.[0];\n }\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n get textContent() {\n return !this.childNodes ? this.nodeValue || \"\" : this.childNodes.map(child => child.textContent).join(\"\");\n }\n get children() {\n return this.childNodes || [];\n }\n hasChildNodes() {\n return this.childNodes?.length > 0;\n }\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n const component = paths[pos];\n if (component.name.startsWith(\"#\") && pos < paths.length - 1) {\n return this.searchNode(paths, pos + 1);\n }\n const stack = [];\n let node = this;\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n return node.searchNode(paths, pos + 1);\n }\n }\n if (node.childNodes?.length > 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`);\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(``);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\nclass SimpleXMLParser extends XMLParserBase {\n constructor({\n hasAttributes = false,\n lowerCaseName = false\n }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined;\n }\n return {\n documentElement\n };\n }\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment.at(-1);\n if (!lastElement) {\n return null;\n }\n for (const childNode of lastElement.childNodes) {\n childNode.parentNode = lastElement;\n }\n return lastElement;\n }\n onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/metadata_parser.js\n\nclass MetadataParser {\n constructor(data) {\n data = this._repair(data);\n const parser = new SimpleXMLParser({\n lowerCaseName: true\n });\n const xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n this._data = data;\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n _repair(data) {\n return data.replace(/^[^<]+/, \"\").replaceAll(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes.replaceAll(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replaceAll(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n const charBuf = [\">\"];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\");\n }\n }\n return charBuf.join(\"\");\n });\n }\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));\n }\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n if (rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data\n };\n }\n}\n\n;// ./src/core/sound.js\n\n\nconst WAV_HEADER_SIZE = 44;\nfunction getSoundFormat(dict) {\n if (!dict || dict.has(\"CO\")) {\n return null;\n }\n const sampleRate = dict.get(\"R\");\n if (!Number.isInteger(sampleRate) || sampleRate <= 0) {\n return null;\n }\n const channels = dict.get(\"C\") ?? 1;\n if (!Number.isInteger(channels) || channels < 1 || channels > 2) {\n return null;\n }\n const bitsPerSample = dict.get(\"B\") ?? 8;\n if (bitsPerSample !== 8 && bitsPerSample !== 16) {\n return null;\n }\n const e = dict.get(\"E\");\n let encoding = \"Raw\";\n if (e !== undefined) {\n encoding = e instanceof Name ? e.name : null;\n }\n if (encoding !== \"Raw\" && encoding !== \"Signed\") {\n return null;\n }\n return {\n channels,\n sampleRate,\n bitsPerSample,\n encoding\n };\n}\nfunction soundStreamToWav(stream, samples) {\n const format = getSoundFormat(stream.dict);\n if (!format) {\n return null;\n }\n const {\n channels,\n sampleRate,\n bitsPerSample,\n encoding\n } = format;\n const blockAlign = channels * (bitsPerSample >> 3);\n const dataLength = samples.length - samples.length % blockAlign;\n if (dataLength === 0) {\n return null;\n }\n const wav = new Uint8Array(WAV_HEADER_SIZE + dataLength);\n const view = new DataView(wav.buffer);\n wav.set(stringToBytes(\"RIFF\"), 0);\n view.setUint32(4, WAV_HEADER_SIZE - 8 + dataLength, true);\n wav.set(stringToBytes(\"WAVE\"), 8);\n wav.set(stringToBytes(\"fmt \"), 12);\n view.setUint32(16, 16, true);\n view.setUint16(20, 1, true);\n view.setUint16(22, channels, true);\n view.setUint32(24, sampleRate, true);\n view.setUint32(28, sampleRate * blockAlign, true);\n view.setUint16(32, blockAlign, true);\n view.setUint16(34, bitsPerSample, true);\n wav.set(stringToBytes(\"data\"), 36);\n view.setUint32(40, dataLength, true);\n if (bitsPerSample === 16) {\n const signed = encoding === \"Signed\";\n for (let i = 0; i < dataLength; i += 2) {\n let value = samples[i] << 8 | samples[i + 1];\n if (signed) {\n if (value >= 0x8000) {\n value -= 0x10000;\n }\n } else {\n value -= 0x8000;\n }\n view.setInt16(WAV_HEADER_SIZE + i, value, true);\n }\n } else if (encoding === \"Signed\") {\n for (let i = 0; i < dataLength; i++) {\n wav[WAV_HEADER_SIZE + i] = samples[i] + 128 & 0xff;\n }\n } else {\n wav.set(samples.subarray(0, dataLength), WAV_HEADER_SIZE);\n }\n return wav;\n}\n\n;// ./src/core/struct_tree.js\n\n\n\n\n\n\n\nconst MAX_DEPTH = 40;\nconst TABLE_SPAN_ATTRIBUTES = [[\"RowSpan\", \"rowSpan\"], [\"ColSpan\", \"colSpan\"]];\nconst StructElementType = {\n PAGE_CONTENT: 1,\n STREAM_CONTENT: 2,\n OBJECT: 3,\n ANNOTATION: 4,\n ELEMENT: 5\n};\nclass StructTreeRoot {\n kidRefToPosition = undefined;\n parentTree = null;\n roleMap = new Map();\n structParentIds = null;\n constructor(xref, rootDict, rootRef) {\n this.xref = xref;\n this.dict = rootDict;\n this.ref = rootRef instanceof Ref ? rootRef : null;\n const roleMap = rootDict.get(\"RoleMap\");\n if (roleMap instanceof Dict) {\n for (const [key, value] of roleMap) {\n if (value instanceof Name) {\n this.roleMap.set(key, value.name);\n }\n }\n }\n const parentTree = rootDict.getRaw(\"ParentTree\");\n if (parentTree) {\n this.parentTree = new NumberTree(parentTree, xref);\n }\n }\n getKidPosition(kidRef) {\n if (this.kidRefToPosition === undefined) {\n const obj = this.dict.get(\"K\");\n if (Array.isArray(obj)) {\n const map = this.kidRefToPosition = new Map();\n for (let i = 0, ii = obj.length; i < ii; i++) {\n const ref = obj[i];\n if (ref) {\n map.set(ref.toString(), i);\n }\n }\n } else if (obj instanceof Dict) {\n this.kidRefToPosition = new Map([[obj.objId, 0]]);\n } else if (!obj) {\n this.kidRefToPosition = new Map();\n } else {\n this.kidRefToPosition = null;\n }\n }\n return this.kidRefToPosition ? this.kidRefToPosition.get(kidRef) ?? NaN : -1;\n }\n #addIdToPage(pageRef, id, type, objId) {\n if (!(pageRef instanceof Ref) || id < 0) {\n return;\n }\n (this.structParentIds ??= new RefMap()).getOrPutComputed(pageRef, makeArr).push([id, type, objId]);\n }\n addAnnotationIdToPage(pageRef, id, ref) {\n this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION, ref instanceof Ref ? ref.toString() : null);\n }\n static async canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n }) {\n if (!(catalogRef instanceof Ref)) {\n warn(\"Cannot save the struct tree: no catalog reference.\");\n return false;\n }\n let nextKey = 0;\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n ref: pageRef\n } = await pdfManager.getPage(pageIndex);\n if (!(pageRef instanceof Ref)) {\n warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\n hasNothingToUpdate = true;\n break;\n }\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n element.parentTreeId = nextKey++;\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n }\n }\n return false;\n }\n return true;\n }\n static async createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n }) {\n const root = await pdfManager.ensureCatalog(\"cloneDict\");\n const cache = new RefMap();\n cache.put(catalogRef, root);\n const structTreeRootRef = xref.getNewTemporaryRef();\n root.set(\"StructTreeRoot\", structTreeRootRef);\n const structTreeRoot = new Dict(xref);\n structTreeRoot.set(\"Type\", Name.get(\"StructTreeRoot\"));\n const parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n const kids = [];\n structTreeRoot.set(\"K\", kids);\n cache.put(structTreeRootRef, structTreeRoot);\n const parentTree = new Dict(xref);\n const nums = [];\n parentTree.set(\"Nums\", nums);\n const nextKey = await this.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: null,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n structTreeRoot.set(\"ParentTreeNextKey\", nextKey);\n cache.put(parentTreeRef, parentTree);\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n async canUpdateStructTree({\n pdfManager,\n newAnnotationsByPage\n }) {\n if (!this.ref) {\n warn(\"Cannot update the struct tree: no root reference.\");\n return false;\n }\n let nextKey = this.dict.get(\"ParentTreeNextKey\");\n if (!Number.isInteger(nextKey) || nextKey < 0) {\n warn(\"Cannot update the struct tree: invalid next key.\");\n return false;\n }\n const parentTree = this.dict.get(\"ParentTree\");\n if (!(parentTree instanceof Dict)) {\n warn(\"Cannot update the struct tree: ParentTree isn't a dict.\");\n return false;\n }\n const nums = parentTree.get(\"Nums\");\n if (!Array.isArray(nums)) {\n warn(\"Cannot update the struct tree: nums isn't an array.\");\n return false;\n }\n const numberTree = new NumberTree(parentTree, this.xref);\n for (const pageIndex of newAnnotationsByPage.keys()) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n if (!pageDict.has(\"StructParents\")) {\n continue;\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\n warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\n return false;\n }\n }\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n StructTreeRoot.#collectParents({\n elements,\n xref: this.xref,\n pageDict,\n numberTree\n });\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n if (!(element.accessibilityData.structParent >= 0)) {\n element.parentTreeId = nextKey++;\n }\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n delete element.structTreeParent;\n }\n }\n return false;\n }\n return true;\n }\n async updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n }) {\n const {\n ref: structTreeRootRef,\n xref\n } = this;\n const structTreeRoot = this.dict.clone();\n const cache = new RefMap();\n cache.put(structTreeRootRef, structTreeRoot);\n let parentTreeRef = structTreeRoot.getRaw(\"ParentTree\");\n let parentTree;\n if (parentTreeRef instanceof Ref) {\n parentTree = xref.fetch(parentTreeRef);\n } else {\n parentTree = parentTreeRef;\n parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n }\n parentTree = parentTree.clone();\n cache.put(parentTreeRef, parentTree);\n let nums = parentTree.getRaw(\"Nums\");\n let numsRef = null;\n if (nums instanceof Ref) {\n numsRef = nums;\n nums = xref.fetch(numsRef);\n }\n nums = nums.slice();\n if (!numsRef) {\n parentTree.set(\"Nums\", nums);\n }\n const newNextKey = await StructTreeRoot.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: this,\n kids: null,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n if (newNextKey === -1) {\n return;\n }\n structTreeRoot.set(\"ParentTreeNextKey\", newNextKey);\n if (numsRef) {\n cache.put(numsRef, nums);\n }\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n static async #writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n }) {\n const objr = Name.get(\"OBJR\");\n let nextKey = -1;\n let structTreePageObjs;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const page = await pdfManager.getPage(pageIndex);\n const {\n ref: pageRef\n } = page;\n const isPageRef = pageRef instanceof Ref;\n for (const {\n accessibilityData,\n ref,\n parentTreeId,\n structTreeParent\n } of elements) {\n if (!accessibilityData?.type) {\n continue;\n }\n const {\n structParent\n } = accessibilityData;\n if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) {\n let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\n if (objs === undefined) {\n const structTreePage = new StructTreePage(structTreeRoot, page.pageDict);\n objs = structTreePage.collectObjects(pageRef);\n structTreePageObjs.set(pageIndex, objs);\n }\n const objRef = objs?.get(structParent);\n if (objRef) {\n const tagDict = xref.fetch(objRef).clone();\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n changes.put(objRef, {\n data: tagDict\n });\n continue;\n }\n }\n nextKey = Math.max(nextKey, parentTreeId);\n const tagRef = xref.getNewTemporaryRef();\n const tagDict = new Dict(xref);\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n await this.#updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef: tagRef,\n structTreeRootRef,\n fallbackKids: kids,\n xref,\n cache\n });\n const objDict = new Dict(xref);\n tagDict.set(\"K\", objDict);\n objDict.set(\"Type\", objr);\n if (isPageRef) {\n objDict.set(\"Pg\", pageRef);\n }\n objDict.set(\"Obj\", ref);\n cache.put(tagRef, tagDict);\n nums.push(parentTreeId, tagRef);\n }\n }\n return nextKey + 1;\n }\n static #writeProperties(tagDict, {\n type,\n title,\n lang,\n alt,\n expanded,\n actualText\n }) {\n tagDict.set(\"S\", Name.get(type));\n if (title) {\n tagDict.set(\"T\", stringToAsciiOrUTF16BE(title));\n }\n if (lang) {\n tagDict.set(\"Lang\", stringToAsciiOrUTF16BE(lang));\n }\n if (alt) {\n tagDict.set(\"Alt\", stringToAsciiOrUTF16BE(alt));\n }\n if (expanded) {\n tagDict.set(\"E\", stringToAsciiOrUTF16BE(expanded));\n }\n if (actualText) {\n tagDict.set(\"ActualText\", stringToAsciiOrUTF16BE(actualText));\n }\n }\n static #collectParents({\n elements,\n xref,\n pageDict,\n numberTree\n }) {\n const idToElements = new Map();\n for (const element of elements) {\n if (element.structTreeParentId) {\n const id = parseInt(element.structTreeParentId.split(\"_mc\")[1], 10);\n idToElements.getOrInsertComputed(id, makeArr).push(element);\n }\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const parentArray = numberTree.get(id);\n const updateElement = (kid, pageKid, kidRef) => {\n const elems = idToElements.get(kid);\n if (elems) {\n const parentRef = pageKid.getRaw(\"P\");\n const parentDict = xref.fetchIfRef(parentRef);\n if (parentRef instanceof Ref && parentDict instanceof Dict) {\n const params = {\n ref: kidRef,\n dict: pageKid\n };\n for (const element of elems) {\n element.structTreeParent = params;\n }\n }\n return true;\n }\n return false;\n };\n for (const kidRef of parentArray) {\n if (!(kidRef instanceof Ref)) {\n continue;\n }\n const pageKid = xref.fetch(kidRef);\n const k = pageKid.get(\"K\");\n if (Number.isInteger(k)) {\n updateElement(k, pageKid, kidRef);\n continue;\n }\n if (!Array.isArray(k)) {\n continue;\n }\n for (let kid of k) {\n kid = xref.fetchIfRef(kid);\n if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\n break;\n }\n if (!(kid instanceof Dict)) {\n continue;\n }\n if (!isName(kid.get(\"Type\"), \"MCR\")) {\n break;\n }\n const mcid = kid.get(\"MCID\");\n if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\n break;\n }\n }\n }\n }\n static async #updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef,\n structTreeRootRef,\n fallbackKids,\n xref,\n cache\n }) {\n let ref = null;\n let parentRef;\n if (structTreeParent) {\n ({\n ref\n } = structTreeParent);\n parentRef = structTreeParent.dict.getRaw(\"P\") || structTreeRootRef;\n } else {\n parentRef = structTreeRootRef;\n }\n tagDict.set(\"P\", parentRef);\n const parentDict = xref.fetchIfRef(parentRef);\n if (!parentDict) {\n fallbackKids.push(newTagRef);\n return;\n }\n const cachedParentDict = cache.getOrPutComputed(parentRef, () => parentDict.clone());\n const parentKidsRaw = cachedParentDict.getRaw(\"K\");\n let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\n if (!cachedParentKids) {\n cachedParentKids = xref.fetchIfRef(parentKidsRaw);\n cachedParentKids = Array.isArray(cachedParentKids) ? cachedParentKids.slice() : [parentKidsRaw];\n const parentKidsRef = xref.getNewTemporaryRef();\n cachedParentDict.set(\"K\", parentKidsRef);\n cache.put(parentKidsRef, cachedParentKids);\n }\n const index = cachedParentKids.indexOf(ref);\n cachedParentKids.splice(index >= 0 ? index + 1 : cachedParentKids.length, 0, newTagRef);\n }\n}\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.xref = tree.xref;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const {\n root\n } = this.tree;\n return root.roleMap.get(name) ?? name;\n }\n get mathML() {\n let AFs = this.dict.get(\"AF\") || [];\n if (!Array.isArray(AFs)) {\n AFs = [AFs];\n }\n for (let af of AFs) {\n af = this.xref.fetchIfRef(af);\n if (!isDict(af, \"Filespec\") || !isName(af.get(\"AFRelationship\"), \"Supplement\")) {\n continue;\n }\n const fileStream = FileSpec.pickPlatformItem(af.get(\"EF\"));\n if (!(fileStream instanceof BaseStream) || !isDict(fileStream.dict, \"EmbeddedFile\") || !isName(fileStream.dict.get(\"Subtype\"), \"application/mathml+xml\")) {\n continue;\n }\n return stringToUTF8String(fileStream.getString());\n }\n for (const attributes of this.attributes) {\n if (isName(attributes.get(\"O\"), \"MSFT_Office\")) {\n const mathml = attributes.get(\"MSFT_MathML\");\n return mathml ? stringToPDFString(mathml) : null;\n }\n }\n return null;\n }\n #collectAttributes(value, attributes) {\n const pending = [value];\n const visited = new RefSet();\n while (pending.length > 0) {\n value = pending.pop();\n if (value instanceof Ref) {\n if (visited.has(value)) {\n continue;\n }\n visited.put(value);\n value = this.xref.fetch(value);\n }\n if (value instanceof BaseStream) {\n value = value.dict;\n }\n if (value instanceof Dict) {\n attributes.push(value);\n continue;\n }\n if (!Array.isArray(value)) {\n continue;\n }\n for (let i = value.length - 1; i >= 0; i--) {\n if (!Number.isInteger(value[i])) {\n pending.push(value[i]);\n }\n }\n }\n }\n get attributes() {\n const attributes = [];\n const classes = this.dict.getArray(\"C\");\n if (classes !== undefined) {\n const classMap = this.tree.rootDict?.get(\"ClassMap\");\n if (classMap instanceof Dict) {\n for (const className of Array.isArray(classes) ? classes : [classes]) {\n if (className instanceof Name) {\n this.#collectAttributes(classMap.getRaw(className.name), attributes);\n }\n }\n }\n }\n this.#collectAttributes(this.dict.getRaw(\"A\"), attributes);\n return shadow(this, \"attributes\", attributes);\n }\n get tableAttributes() {\n const {\n role\n } = this;\n if (role !== \"Table\" && role !== \"TH\" && role !== \"TD\") {\n return null;\n }\n const map = new Map();\n for (const attributes of this.attributes) {\n if (!isName(attributes.get(\"O\"), \"Table\")) {\n continue;\n }\n if (role === \"Table\") {\n if (attributes.has(\"Summary\")) {\n const summary = attributes.get(\"Summary\");\n if (typeof summary === \"string\" && summary) {\n map.set(\"summary\", stringToPDFString(summary));\n } else {\n map.delete(\"summary\");\n }\n }\n continue;\n }\n for (const [key, name] of TABLE_SPAN_ATTRIBUTES) {\n if (!attributes.has(key)) {\n continue;\n }\n const value = attributes.get(key);\n if (Number.isInteger(value) && value > 1) {\n map.set(name, value);\n } else {\n map.delete(name);\n }\n }\n if (attributes.has(\"Headers\")) {\n map.delete(\"headers\");\n const headers = attributes.getArray(\"Headers\");\n if (Array.isArray(headers)) {\n const ids = headers.filter(header => typeof header === \"string\").map(stringToPDFString);\n if (ids.length > 0) {\n map.set(\"headers\", ids);\n }\n }\n }\n if (role === \"TH\" && attributes.has(\"Scope\")) {\n map.delete(\"scope\");\n const scope = attributes.get(\"Scope\");\n if (scope instanceof Name && [\"Row\", \"Column\", \"Both\"].includes(scope.name)) {\n map.set(\"scope\", scope.name);\n }\n }\n if (role === \"TH\" && attributes.has(\"Short\")) {\n map.delete(\"short\");\n const short = attributes.get(\"Short\");\n if (typeof short === \"string\" && short) {\n map.set(\"short\", stringToPDFString(short));\n }\n }\n }\n return map.size ? map : null;\n }\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, this.xref.fetchIfRef(kid));\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n parseKid(pageObjId, kid) {\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId\n });\n }\n if (!(kid instanceof Dict)) {\n return null;\n }\n const pageRef = kid.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n const type = kid.get(\"Type\") instanceof Name ? kid.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n const kidRef = kid.getRaw(\"Stm\");\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId,\n mcid: kid.get(\"MCID\")\n });\n }\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n const kidRef = kid.getRaw(\"Obj\");\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId\n });\n }\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kid\n });\n }\n}\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.xref = structTreeRoot?.xref ?? null;\n this.rootDict = structTreeRoot?.dict ?? null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n collectObjects(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return null;\n }\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return null;\n }\n const ids = this.root.structParentIds?.get(pageRef);\n if (!ids) {\n return null;\n }\n const map = new Map();\n const numberTree = new NumberTree(parentTree, this.xref);\n for (const [elemId] of ids) {\n const obj = numberTree.getRaw(elemId);\n if (obj instanceof Ref) {\n map.set(elemId, obj);\n }\n }\n return map;\n }\n parse(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return;\n }\n const {\n parentTree\n } = this.root;\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n const ids = this.root.structParentIds?.get(pageRef);\n if (!Number.isInteger(id) && !ids) {\n return;\n }\n const map = new Map();\n if (Number.isInteger(id)) {\n const parentArray = parentTree.get(id);\n if (Array.isArray(parentArray)) {\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.xref.fetch(ref), map);\n }\n }\n }\n }\n if (!ids) {\n return;\n }\n for (const [elemId, type, objId] of ids) {\n const obj = parentTree.get(elemId);\n if (!obj) {\n continue;\n }\n const elem = this.addNode(this.xref.fetchIfRef(obj), map);\n if (!elem || !objId) {\n continue;\n }\n for (const kid of elem.kids) {\n if (kid.type === StructElementType.OBJECT && kid.refObjId === objId) {\n kid.type = type;\n }\n }\n }\n }\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n if (!(dict instanceof Dict)) {\n return null;\n }\n if (map.has(dict)) {\n return map.get(dict);\n }\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n switch (element.role) {\n case \"L\":\n case \"LBody\":\n case \"LI\":\n case \"Table\":\n case \"THead\":\n case \"TBody\":\n case \"TFoot\":\n case \"TR\":\n {\n for (const kid of element.kids) {\n if (kid.type === StructElementType.ELEMENT) {\n this.addNode(kid.dict, map, level - 1);\n }\n }\n }\n }\n const parent = dict.get(\"P\");\n if (!(parent instanceof Dict) || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n addTopLevelNode(dict, element) {\n const index = this.root.getKidPosition(dict.objId);\n if (isNaN(index)) {\n return false;\n }\n if (index !== -1) {\n this.nodes[index] = element;\n }\n return true;\n }\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n let alt = node.dict.get(\"Alt\");\n if (typeof alt !== \"string\") {\n alt = node.dict.get(\"ActualText\");\n }\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const structId = node.dict.get(\"ID\");\n if (obj.role === \"TH\" && typeof structId === \"string\" && structId) {\n obj.structId = stringToPDFString(structId);\n }\n node.tableAttributes?.forEach((val, key) => {\n obj[key] = val;\n });\n if (obj.role === \"Formula\") {\n try {\n const {\n mathML\n } = node;\n if (mathML) {\n obj.mathML = mathML;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Ignoring mathML: \"${ex}\".`);\n }\n }\n let bbox = null,\n size = null;\n for (const a of node.attributes) {\n bbox = lookupNormalRect(a.getArray(\"BBox\"), bbox);\n const width = a.get(\"Width\");\n const height = a.get(\"Height\");\n if (typeof width === \"number\" && width > 0 && typeof height === \"number\" && height > 0) {\n size = [0, 0, width, height];\n }\n }\n if (bbox || size) {\n obj.bbox = bbox ?? size;\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n for (const kid of node.kids) {\n const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) {\n obj.children.push({\n type: \"content\",\n id: `p${kid.pageObjId}_mc${kid.mcid}`\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId\n });\n } else if (kid.type === StructElementType.ANNOTATION) {\n obj.children.push({\n type: \"annotation\",\n id: `${AnnotationPrefix}${kid.refObjId}`\n });\n }\n }\n }\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\n;// ./src/core/catalog.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isRef = v => v instanceof Ref;\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRef, isName);\nfunction fetchDest(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return isValidExplicitDest(dest) ? dest : null;\n}\nfunction fetchRemoteDest(action) {\n let dest = action.get(\"D\");\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n return stringToPDFString(dest, true);\n } else if (isValidExplicitDest(dest)) {\n return JSON.stringify(dest);\n }\n }\n return null;\n}\nclass Catalog {\n #actualNumPages = null;\n #annotationAttachmentIdByRef = new RefMap();\n #annotationAttachmentRefById = new Map();\n #soundAttachmentIds = new Set();\n #catDict = null;\n builtInCMapCache = new Map();\n fontCache = new RefMap();\n globalColorSpaceCache = new GlobalColorSpaceCache();\n globalImageCache = new GlobalImageCache();\n nonBlendModesSet = new RefSet();\n pageDictCache = new RefMap();\n pageIndexCache = new RefMap();\n pageKidsCountCache = new RefMap();\n standardFontDataCache = new Map();\n systemFontCache = new Map();\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this.#catDict = xref.getCatalogObj();\n if (!(this.#catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n this.toplevelPagesDict;\n }\n cloneDict() {\n return this.#catDict.clone();\n }\n getAttachmentIdForAnnotation(ref, isSound = false) {\n let id = this.#annotationAttachmentIdByRef.get(ref);\n if (!id) {\n const baseId = `attachmentRef:${ref.toString()}`;\n id = baseId;\n let i = 1;\n while (this.#annotationAttachmentRefById.has(id) || this.attachments?.has(id)) {\n id = `${baseId}-${i++}`;\n }\n this.#annotationAttachmentIdByRef.put(ref, id);\n this.#annotationAttachmentRefById.set(id, ref);\n }\n if (isSound) {\n this.#soundAttachmentIds.add(id);\n }\n return id;\n }\n get version() {\n const version = this.#catDict.get(\"Version\");\n if (version instanceof Name) {\n if (PDF_VERSION_REGEXP.test(version.name)) {\n return shadow(this, \"version\", version.name);\n }\n warn(`Invalid PDF catalog version: ${version.name}`);\n }\n return shadow(this, \"version\", null);\n }\n get lang() {\n const lang = this.#catDict.get(\"Lang\");\n return shadow(this, \"lang\", lang && typeof lang === \"string\" ? stringToPDFString(lang) : null);\n }\n get needsRendering() {\n const needsRendering = this.#catDict.get(\"NeedsRendering\");\n return shadow(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\n }\n get collection() {\n let collection = null;\n try {\n const obj = this.#catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this.#catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n get acroFormRef() {\n const value = this.#catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n get metadata() {\n const streamRef = this.#catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n let metadata = null;\n try {\n const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata);\n if (stream instanceof BaseStream && isDict(stream.dict, \"Metadata\") && isName(stream.dict.get(\"Subtype\"), \"XML\")) {\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this.#readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n #readMarkInfo() {\n const obj = this.#catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const markInfo = new Map();\n for (const key of [\"Marked\", \"UserProperties\", \"Suspects\"]) {\n const val = obj.get(key);\n markInfo.set(key, typeof val === \"boolean\" ? val : false);\n }\n return markInfo;\n }\n get hasStructTree() {\n return this.#catDict.has(\"StructTreeRoot\");\n }\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this.#readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n #readStructTreeRoot() {\n const rawObj = this.#catDict.getRaw(\"StructTreeRoot\"),\n obj = this.xref.fetchIfRef(rawObj);\n return obj instanceof Dict ? new StructTreeRoot(this.xref, obj, rawObj) : null;\n }\n get toplevelPagesDict() {\n const pagesObj = this.#catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n get documentOutline() {\n let obj = null;\n try {\n obj = this.#readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n #readDocumentOutline(options = {}) {\n let obj = this.#catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n const root = {\n items: []\n };\n const queue = [{\n obj,\n parent: root\n }];\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n warn(\"Invalid outline item encountered.\");\n }\n const data = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.baseUrl,\n docAttachments: this.attachments\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = ColorSpaceUtils.rgb.getRgb(color, 0);\n }\n const outlineItem = {\n action: data.action,\n attachmentId: data.attachmentId,\n attachment: data.attachment,\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n setOCGState: data.setOCGState,\n title: typeof title === \"string\" ? stringToPDFString(title) : \"\",\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: []\n };\n if (options.keepRawDict) {\n outlineItem.rawDict = outlineDict;\n }\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: outlineItem\n });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: i.parent\n });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n get documentOutlineForEditor() {\n let obj = null;\n try {\n obj = this.#readDocumentOutline({\n keepRawDict: true\n });\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutlineForEditor\", obj);\n }\n get permissions() {\n let permissions = null;\n try {\n permissions = this.#readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n #readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n flags += 2 ** 32;\n const permissions = new Set();\n for (const value of Object.values(PermissionFlag)) {\n if (flags & value) {\n permissions.add(value);\n }\n }\n return permissions;\n }\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this.#catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupRefCache = new RefMap();\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\n continue;\n }\n groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\n }\n config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n #readOptionalContentGroup(groupRef) {\n const group = this.xref.fetch(groupRef);\n const obj = {\n id: groupRef.toString(),\n name: null,\n intent: null,\n usage: {\n print: null,\n view: null\n },\n rbGroups: []\n };\n const name = group.get(\"Name\");\n if (typeof name === \"string\") {\n obj.name = stringToPDFString(name);\n }\n let intent = group.getArray(\"Intent\");\n if (!Array.isArray(intent)) {\n intent = [intent];\n }\n if (intent.every(i => i instanceof Name)) {\n obj.intent = intent.map(i => i.name);\n }\n const usage = group.get(\"Usage\");\n if (!(usage instanceof Dict)) {\n return obj;\n }\n const usageObj = obj.usage;\n const print = usage.get(\"Print\");\n if (print instanceof Dict) {\n const printState = print.get(\"PrintState\");\n if (printState instanceof Name) {\n switch (printState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.print = {\n printState: printState.name\n };\n }\n }\n }\n const view = usage.get(\"View\");\n if (view instanceof Dict) {\n const viewState = view.get(\"ViewState\");\n if (viewState instanceof Name) {\n switch (viewState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.view = {\n viewState: viewState.name\n };\n }\n }\n }\n return obj;\n }\n #readOptionalContentConfig(config, groupRefCache) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n parsedOrderRefs.put(value);\n order.push(value.toString());\n continue;\n }\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const [groupRef] of groupRefCache.items()) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({\n name: null,\n order: hiddenGroups\n });\n }\n return order;\n }\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder?.length) {\n return null;\n }\n return {\n name: stringToPDFString(nestedName),\n order: nestedOrder\n };\n }\n function parseRBGroups(rbGroups) {\n if (!Array.isArray(rbGroups)) {\n return;\n }\n for (const value of rbGroups) {\n const rbGroup = xref.fetchIfRef(value);\n if (!Array.isArray(rbGroup) || !rbGroup.length) {\n continue;\n }\n const parsedRbGroup = new Set();\n for (const ref of rbGroup) {\n if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) {\n parsedRbGroup.add(ref.toString());\n groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\n }\n }\n }\n }\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n parseRBGroups(config.get(\"RBGroups\"));\n return {\n name: typeof config.get(\"Name\") === \"string\" ? stringToPDFString(config.get(\"Name\")) : null,\n creator: typeof config.get(\"Creator\") === \"string\" ? stringToPDFString(config.get(\"Creator\")) : null,\n baseState: config.get(\"BaseState\") instanceof Name ? config.get(\"BaseState\").name : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: [...groupRefCache]\n };\n }\n setActualNumPages(num = null) {\n this.#actualNumPages = num;\n }\n get hasActualNumPages() {\n return this.#actualNumPages !== null;\n }\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n get numPages() {\n return this.#actualNumPages ?? this._pagesCount;\n }\n get destinations() {\n const dests = new Map();\n for (const obj of this.#readDests()) {\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDest(value);\n if (dest) {\n dests.set(stringToPDFString(key, true), dest);\n }\n }\n } else if (obj instanceof Dict) {\n for (const [key, value] of obj) {\n const dest = fetchDest(value);\n if (dest) {\n dests.getOrInsert(stringToPDFString(key, true), dest);\n }\n }\n }\n }\n return shadow(this, \"destinations\", dests);\n }\n getDestination(id) {\n if (Object.hasOwn(this, \"destinations\")) {\n return this.destinations.get(id) ?? null;\n }\n for (const obj of this.#readDests()) {\n if (obj instanceof NameTree || obj instanceof Dict) {\n const dest = fetchDest(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n }\n return this.destinations.get(id) ?? null;\n }\n #readDests() {\n const obj = this.#catDict.get(\"Names\");\n const rawDests = [];\n if (obj?.has(\"Dests\")) {\n rawDests.push(new NameTree(obj.getRaw(\"Dests\"), this.xref));\n }\n if (this.#catDict.has(\"Dests\")) {\n rawDests.push(this.#catDict.get(\"Dests\"));\n }\n return rawDests;\n }\n get rawPageLabels() {\n const obj = this.#catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n const numberTree = new NumberTree(obj, this.xref);\n return numberTree.getAll();\n }\n get pageLabels() {\n let obj = null;\n try {\n obj = this.#readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n #readPageLabels() {\n const nums = this.rawPageLabels;\n if (!nums) {\n return null;\n }\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n let currentLabel = \"\",\n currentIndex = 1;\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n if (labelDict.has(\"Type\") && !isName(labelDict.get(\"Type\"), \"PageLabel\")) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(style.charCodeAt(0) + letterIndex % LIMIT);\n currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n break;\n default:\n if (style) {\n throw new FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n }\n currentLabel = \"\";\n }\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n get pageLayout() {\n const obj = this.#catDict.get(\"PageLayout\");\n let pageLayout = \"\";\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n get pageMode() {\n const obj = this.#catDict.get(\"PageMode\");\n let pageMode = \"UseNone\";\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n get viewerPreferences() {\n const obj = this.#catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n for (const [key, value] of obj) {\n let prefValue;\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n if (Array.isArray(value) && value.length % 2 === 0 && value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages)) {\n prefValue = value;\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n (prefs ??= new Map()).set(key, prefValue);\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n get openAction() {\n const obj = this.#catDict.get(\"OpenAction\");\n const openAction = new Map();\n if (obj instanceof Dict) {\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n const resultObj = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict,\n resultObj\n });\n if (Array.isArray(resultObj.dest)) {\n openAction.set(\"dest\", resultObj.dest);\n } else if (resultObj.action) {\n openAction.set(\"action\", resultObj.action);\n }\n } else if (isValidExplicitDest(obj)) {\n openAction.set(\"dest\", obj);\n }\n return shadow(this, \"openAction\", openAction.size ? openAction : null);\n }\n get attachments() {\n const obj = this.#catDict.get(\"Names\");\n let attachments = null;\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n (attachments ??= new Map()).set(stringToPDFString(key, true), new FileSpec(value).serializable);\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n #attachmentContentByName(id) {\n const obj = this.#catDict.get(\"Names\");\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (stringToPDFString(key, true) === id) {\n return FileSpec.readContent(value);\n }\n }\n }\n return undefined;\n }\n attachmentContent(id) {\n const namedContent = this.#attachmentContentByName(id);\n if (namedContent !== undefined) {\n return namedContent;\n }\n const ref = this.#annotationAttachmentRefById.get(id);\n if (ref) {\n const target = this.xref.fetch(ref);\n if (target instanceof BaseStream) {\n const content = FileSpec.readStreamContent(target);\n if (this.#soundAttachmentIds.has(id)) {\n return soundStreamToWav(target, content) ?? content;\n }\n return content;\n }\n return target instanceof Dict ? FileSpec.readContent(target) : null;\n }\n return null;\n }\n get rawEmbeddedFiles() {\n const obj = this.#catDict.get(\"Names\");\n if (!(obj instanceof Dict) || !obj.has(\"EmbeddedFiles\")) {\n return null;\n }\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n return nameTree.getAll(true);\n }\n get xfaImages() {\n const obj = this.#catDict.get(\"Names\");\n let xfaImages = null;\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (value instanceof BaseStream) {\n xfaImages ??= new Map();\n xfaImages.set(stringToPDFString(key, true), value.getBytes());\n }\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n #collectJavaScript() {\n const obj = this.#catDict.get(\"Names\");\n let javaScript = null;\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict) || !isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n js = stringToPDFString(js, true).replaceAll(\"\\x00\", \"\");\n if (js) {\n (javaScript ??= new Map()).set(name, js);\n }\n }\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(stringToPDFString(key, true), value);\n }\n }\n const openAction = this.#catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n return javaScript;\n }\n get jsActions() {\n const javaScript = this.#collectJavaScript();\n let actions = collectActions(this.xref, this.#catDict, DocumentActionEventType);\n if (javaScript) {\n actions ??= new Map();\n for (const [key, val] of javaScript) {\n actions.getOrInsertComputed(key, makeArr).push(val);\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n async cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalColorSpaceCache.clear();\n this.globalImageCache.clear(manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.pageDictCache.clear();\n this.nonBlendModesSet.clear();\n for (const {\n dict\n } of await Promise.all(this.fontCache)) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n this.systemFontCache.clear();\n }\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n const pagesRef = this.#catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache,\n pageDictCache = this.pageDictCache;\n let currentPageIndex = 0;\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n const obj = await (pageDictCache.get(currentNode) || xref.fetchAsync(currentNode));\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\"Page dictionary kid reference points to wrong type of object.\");\n }\n const {\n objId\n } = currentNode;\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n for (let last = kids.length - 1; last >= 0; last--) {\n const lastKid = kids[last];\n nodesToVisit.push(lastKid);\n if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) {\n pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\n }\n }\n }\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n async getAllPageDicts(recoveryMode = false) {\n const {\n ignoreErrors\n } = this.pdfManager.evaluatorOptions;\n const queue = [{\n currentNode: this.toplevelPagesDict,\n posInKids: 0\n }];\n const visitedNodes = new RefSet();\n const pagesRef = this.#catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n function addPageDict(pageDict, pageRef) {\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n if (recoveryMode && ignoreErrors && pageIndex === 0) {\n warn(`getAllPageDicts - Skipping invalid first page: \"${error}\".`);\n error = Dict.empty;\n }\n map.set(pageIndex++, [error, null]);\n }\n while (queue.length > 0) {\n const queueItem = queue.at(-1);\n const {\n currentNode,\n posInKids\n } = queueItem;\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n addPageDict(currentNode, null);\n break;\n }\n addPageError(new FormatError(\"Page dictionary kids object is not an array.\"));\n break;\n }\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n if (visitedNodes.has(kidObj)) {\n addPageError(new FormatError(\"Pages tree contains circular reference.\"));\n break;\n }\n visitedNodes.put(kidObj);\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(new FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n break;\n }\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({\n currentNode: obj,\n posInKids: 0\n });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n async getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return cachedPageIndex;\n }\n const xref = this.xref;\n let total = 0,\n ref = pageRef;\n const visited = new RefSet();\n visited.put(pageRef);\n while (true) {\n const node = await xref.fetchAsync(ref);\n if (isRefsEqual(ref, pageRef) && !isDict(node, \"Page\") && !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))) {\n throw new FormatError(\"The reference does not point to a /Page dictionary.\");\n }\n if (!node) {\n break;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n const parentRef = node.getRaw(\"Parent\");\n if (parentRef instanceof Ref) {\n if (visited.has(parentRef)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visited.put(parentRef);\n }\n const parent = await node.getAsync(\"Parent\");\n if (!parent) {\n break;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n const kids = await parent.getAsync(\"Kids\");\n if (!kids) {\n break;\n }\n if (!Array.isArray(kids)) {\n throw new FormatError(\"Kids must be an array.\");\n }\n const kidPromises = [];\n let found = false;\n for (const kid of kids) {\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, ref)) {\n found = true;\n break;\n }\n kidPromises.push(xref.fetchAsync(kid).then(obj => {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n const count = obj.get(\"Count\");\n if (Number.isInteger(count) && count >= 0) {\n total += count;\n return;\n }\n throw new FormatError(\"Count must be a (positive) integer.\");\n }\n total++;\n }));\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n await Promise.all(kidPromises);\n ref = parentRef;\n }\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n get baseUrl() {\n const uri = this.#catDict.get(\"URI\");\n if (uri instanceof Dict) {\n const base = uri.get(\"Base\");\n if (typeof base === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(base, null, {\n tryConvertEncoding: true\n });\n if (absoluteUrl) {\n return shadow(this, \"baseUrl\", absoluteUrl.href);\n }\n }\n }\n return shadow(this, \"baseUrl\", this.pdfManager.docBaseUrl);\n }\n static #getDestFromStructElement(xref, seRef) {\n const seDict = xref.fetchIfRef(seRef);\n if (!(seDict instanceof Dict)) {\n return null;\n }\n let pageRef = null;\n const directPg = seDict.getRaw(\"Pg\");\n if (directPg instanceof Ref) {\n pageRef = directPg;\n }\n if (!pageRef) {\n const queue = [seDict];\n const visited = new RefSet();\n visited.put(seRef);\n while (queue.length > 0 && !pageRef) {\n const node = queue.shift();\n let kids = node.getRaw(\"K\");\n if (kids instanceof Ref) {\n if (visited.has(kids)) {\n continue;\n }\n visited.put(kids);\n kids = xref.fetch(kids);\n }\n let kidsArr;\n if (Array.isArray(kids)) {\n kidsArr = kids;\n } else if (kids) {\n kidsArr = [kids];\n } else {\n continue;\n }\n for (const kid of kidsArr) {\n if (kid instanceof Ref) {\n if (visited.has(kid)) {\n continue;\n }\n visited.put(kid);\n }\n const kidObj = xref.fetchIfRef(kid);\n if (!(kidObj instanceof Dict)) {\n continue;\n }\n const pg = kidObj.getRaw(\"Pg\");\n if (pg instanceof Ref) {\n pageRef = pg;\n break;\n }\n queue.push(kidObj);\n }\n }\n }\n if (!pageRef) {\n const MAX_DEPTH = 40;\n let current = seDict;\n for (let depth = 0; depth < MAX_DEPTH; depth++) {\n const parentRaw = current.getRaw(\"P\");\n if (!(parentRaw instanceof Ref)) {\n break;\n }\n const parentDict = xref.fetch(parentRaw);\n if (!(parentDict instanceof Dict)) {\n break;\n }\n if (isName(parentDict.get(\"Type\"), \"StructTreeRoot\")) {\n break;\n }\n const pg = parentDict.getRaw(\"Pg\");\n if (pg instanceof Ref) {\n pageRef = pg;\n break;\n }\n current = parentDict;\n }\n }\n if (!pageRef) {\n return null;\n }\n let x = null,\n y = null;\n const attrs = seDict.get(\"A\");\n if (attrs instanceof Dict) {\n const bbox = lookupRect(attrs.getArray(\"BBox\"), null);\n if (bbox) {\n x = bbox[0];\n y = bbox[3];\n }\n }\n return [pageRef, {\n name: \"XYZ\"\n }, x, y, null];\n }\n static parseDestDictionary({\n destDict,\n resultObj,\n docBaseUrl = null,\n docAttachments = null\n }) {\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n action = action.get(\"U\");\n }\n }\n }\n }\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = {\n fields,\n refs,\n include\n };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n url = \"/\" + url.name;\n }\n break;\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n case \"Launch\":\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n url = new FileSpec(urlDict).filename;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n } else {\n break;\n }\n const remoteDest = fetchRemoteDest(action);\n if (remoteDest) {\n url = url.split(\"#\", 1)[0] + \"#\" + remoteDest;\n }\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n case \"GoToE\":\n const target = action.get(\"T\");\n let id = null;\n if (target instanceof Dict) {\n const relationship = target.get(\"R\");\n const name = target.get(\"N\");\n if (isName(relationship, \"C\") && typeof name === \"string\") {\n id = stringToPDFString(name, true);\n }\n }\n if (docAttachments && id) {\n resultObj.attachmentId = id;\n resultObj.attachment = docAttachments.get(id);\n const attachmentDest = fetchRemoteDest(action);\n if (attachmentDest) {\n resultObj.attachmentDest = attachmentDest;\n }\n } else {\n warn(`parseDestDictionary - unimplemented \"GoToE\" action.`);\n }\n break;\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n case \"SetOCGState\":\n const state = action.get(\"State\");\n const preserveRB = action.get(\"PreserveRB\");\n if (!Array.isArray(state) || state.length === 0) {\n break;\n }\n const stateArr = [];\n for (const elem of state) {\n if (elem instanceof Name) {\n switch (elem.name) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n stateArr.push(elem.name);\n break;\n }\n } else if (elem instanceof Ref) {\n stateArr.push(elem.toString());\n }\n }\n if (stateArr.length !== state.length) {\n break;\n }\n resultObj.setOCGState = {\n state: stateArr,\n preserveRB: typeof preserveRB === \"boolean\" ? preserveRB : true\n };\n break;\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n const jsURL = js && recoverJsURL(stringToPDFString(js, true));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n dest = destDict.get(\"Dest\");\n }\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n resultObj.dest = stringToPDFString(dest, true);\n } else if (isValidExplicitDest(dest)) {\n resultObj.dest = dest;\n }\n }\n if (!resultObj.dest && !resultObj.url && !resultObj.action && !resultObj.attachment && !resultObj.setOCGState && !resultObj.resetForm) {\n const seRef = destDict.getRaw(\"SE\");\n if (seRef instanceof Ref) {\n try {\n const seDest = Catalog.#getDestFromStructElement(destDict.xref, seRef);\n if (seDest) {\n resultObj.dest = seDest;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"SE parsing failed.\");\n }\n }\n }\n }\n}\n\n;// ./src/core/editor/pdf_images.js\n\n\n\nconst FLATE_COLOR_COUNT_THRESHOLD = 16384;\nfunction createImageDict(xref, width, height, colorSpace) {\n const image = new Dict(xref);\n image.set(\"Type\", Name.get(\"XObject\"));\n image.set(\"Subtype\", Name.get(\"Image\"));\n image.set(\"BitsPerComponent\", 8);\n image.setIfName(\"ColorSpace\", colorSpace);\n image.set(\"Width\", width);\n image.set(\"Height\", height);\n return image;\n}\nfunction createRawImage(buffer, dict) {\n return new Stream(buffer, 0, buffer.length, dict);\n}\nfunction paethPredictor(left, above, upperLeft) {\n const p = left + above - upperLeft;\n const pa = Math.abs(p - left);\n const pb = Math.abs(p - above);\n const pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n return left;\n }\n return pb <= pc ? above : upperLeft;\n}\nfunction applyPNGOptimumFilter(data, width, height, bytesPerPixel) {\n const rowSize = width * bytesPerPixel;\n const out = new Uint8Array(height * (rowSize + 1));\n const candidates = [new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize), new Uint8Array(rowSize)];\n for (let y = 0; y < height; y++) {\n const rowOffset = y * rowSize;\n const prevRowOffset = rowOffset - rowSize;\n const scores = [0, 0, 0, 0, 0];\n for (let x = 0; x < rowSize; x++) {\n const offset = rowOffset + x;\n const cur = data[offset];\n const left = x >= bytesPerPixel ? data[offset - bytesPerPixel] : 0;\n const above = y > 0 ? data[prevRowOffset + x] : 0;\n const upperLeft = y > 0 && x >= bytesPerPixel ? data[prevRowOffset + x - bytesPerPixel] : 0;\n candidates[0][x] = cur;\n candidates[1][x] = cur - left & 0xff;\n candidates[2][x] = cur - above & 0xff;\n candidates[3][x] = cur - (left + above >> 1) & 0xff;\n candidates[4][x] = cur - paethPredictor(left, above, upperLeft) & 0xff;\n for (let f = 0; f < 5; f++) {\n const v = candidates[f][x];\n scores[f] += v < 128 ? v : 256 - v;\n }\n }\n let bestFilter = 0;\n for (let f = 1; f < 5; f++) {\n if (scores[f] < scores[bestFilter]) {\n bestFilter = f;\n }\n }\n const outOffset = y * (rowSize + 1);\n out[outOffset] = bestFilter;\n out.set(candidates[bestFilter], outOffset + 1);\n }\n return out;\n}\nasync function deflate(bytes) {\n const cs = new CompressionStream(\"deflate\");\n const writer = cs.writable.getWriter();\n const writePromise = (async () => {\n try {\n await writer.ready;\n await writer.write(bytes);\n await writer.ready;\n await writer.close();\n } catch (reason) {\n await writer.abort(reason).catch(() => {});\n throw reason;\n }\n })();\n const [compressed] = await Promise.all([new Response(cs.readable).bytes(), writePromise.then(() => null)]);\n return compressed;\n}\nasync function createPNGLikeImage(buffer, width, height, dict) {\n const bytesPerPixel = buffer.length / (width * height);\n let compressed;\n if (typeof CompressionStream === \"function\") {\n try {\n const filtered = applyPNGOptimumFilter(buffer, width, height, bytesPerPixel);\n compressed = await deflate(filtered);\n } catch {}\n }\n if (!compressed) {\n return createRawImage(buffer, dict);\n }\n dict.setIfName(\"Filter\", \"FlateDecode\");\n const decodeParms = new Dict(dict.xref);\n decodeParms.set(\"Predictor\", 15);\n decodeParms.set(\"Columns\", width);\n decodeParms.set(\"Colors\", bytesPerPixel);\n decodeParms.set(\"BitsPerComponent\", 8);\n dict.set(\"DecodeParms\", decodeParms);\n return createRawImage(compressed, dict);\n}\nasync function createImage(bitmap, xref, {\n closeBitmap = false\n} = {}) {\n const {\n width,\n height\n } = bitmap;\n if (!Number.isInteger(width) || !Number.isInteger(height) || width <= 0 || height <= 0) {\n if (closeBitmap) {\n bitmap.close?.();\n }\n throw new Error(`createImage: invalid bitmap dimensions ${width}x${height}`);\n }\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n let data;\n try {\n ctx.drawImage(bitmap, 0, 0);\n data = ctx.getImageData(0, 0, width, height).data;\n } finally {\n if (closeBitmap) {\n bitmap.close?.();\n }\n }\n const buf32 = new Uint32Array(data.buffer, data.byteOffset, data.byteLength >> 2);\n const isLE = FeatureTest.isLittleEndian;\n const rgbMask = isLE ? 0x00ffffff : 0xffffff00;\n const colorCounter = new Set();\n let hasAlpha = false;\n let useFlate = true;\n for (const v of buf32) {\n if ((isLE ? v >>> 24 : v & 0xff) !== 0xff) {\n hasAlpha = true;\n break;\n }\n if (useFlate) {\n colorCounter.add((v & rgbMask) >>> 0);\n if (colorCounter.size > FLATE_COLOR_COUNT_THRESHOLD) {\n useFlate = false;\n colorCounter.clear();\n }\n }\n }\n if (hasAlpha) {\n useFlate = true;\n }\n const image = createImageDict(xref, width, height, \"DeviceRGB\");\n let imageStreamPromise;\n let imageRenderStream = null;\n if (useFlate) {\n const rgbBuffer = new Uint8Array(width * height * 3);\n for (let i = 0, j = 0, ii = data.length; i < ii; i += 4, j += 3) {\n rgbBuffer[j] = data[i];\n rgbBuffer[j + 1] = data[i + 1];\n rgbBuffer[j + 2] = data[i + 2];\n }\n imageStreamPromise = createPNGLikeImage(rgbBuffer, width, height, image);\n imageRenderStream = createRawImage(rgbBuffer, createImageDict(xref, width, height, \"DeviceRGB\"));\n } else {\n image.setIfName(\"Filter\", \"DCTDecode\");\n imageStreamPromise = canvas.convertToBlob({\n type: \"image/jpeg\",\n quality: 1\n }).then(blob => blob.bytes()).then(bytes => createRawImage(bytes, image));\n }\n let smaskStreamPromise = Promise.resolve(null);\n let smaskRenderStream = null;\n if (hasAlpha) {\n const alphaBuffer = new Uint8Array(buf32.length);\n if (isLE) {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] >>> 24;\n }\n } else {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] & 0xff;\n }\n }\n const smask = createImageDict(xref, width, height, \"DeviceGray\");\n const smaskRenderDict = createImageDict(xref, width, height, \"DeviceGray\");\n smaskStreamPromise = createPNGLikeImage(alphaBuffer, width, height, smask);\n smaskRenderStream = createRawImage(alphaBuffer, smaskRenderDict);\n }\n const [imageStream, smaskStream] = await Promise.all([imageStreamPromise, smaskStreamPromise]);\n return {\n imageStream,\n imageRenderStream,\n smaskStream,\n smaskRenderStream,\n width,\n height\n };\n}\n\n;// ./src/core/object_loader.js\n\n\n\n\nfunction mayHaveChildren(value) {\n return value instanceof Ref || value instanceof Dict || value instanceof BaseStream || Array.isArray(value);\n}\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\nclass ObjectLoader {\n refSet = new RefSet();\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n }\n async load() {\n const {\n keys,\n dict\n } = this;\n const nodesToVisit = [];\n for (const key of keys) {\n const rawValue = dict.getRaw(key);\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n await this.#walk(nodesToVisit);\n this.refSet = null;\n }\n async #walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader.#walk - requesting all data: \"${ex}\".`);\n await this.xref.stream.manager.requestAllChunks();\n return;\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({\n begin: ex.begin,\n end: ex.end\n });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({\n begin: stream.start,\n end: stream.end\n });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n addChildren(currentNode, nodesToVisit);\n }\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n for (const node of nodesToRevisit) {\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n await this.#walk(nodesToRevisit);\n }\n }\n static async load(obj, keys, xref) {\n if (xref.stream.isDataLoaded) {\n return;\n }\n const objLoader = new ObjectLoader(obj, keys, xref);\n await objLoader.load();\n }\n}\n\n;// ./src/core/xfa/symbol_utils.js\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\n;// ./src/core/xfa/namespaces.js\nconst $buildXFAObject = Symbol();\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\")\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\")\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\")\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\")\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\")\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\"\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\"\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\")\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\"\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\")\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\")\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\"\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\"\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\"\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\"\n }\n};\n\n;// ./src/core/xfa/utils.js\n\n\nconst dimConverters = {\n pt: x => x,\n cm: x => x / 2.54 * 72,\n mm: x => x / (10 * 2.54) * 72,\n in: x => x * 72,\n px: x => x\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, -1);\n }\n return str;\n}\nfunction getInteger({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\nfunction getFloat({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\nfunction getKeyword({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k)\n });\n}\nfunction getMeasurement(str, def = \"0\") {\n def ||= \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n if (value === 0) {\n return 0;\n }\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n return value;\n}\nfunction getRatio(data) {\n if (!data) {\n return {\n num: 1,\n den: 1\n };\n }\n const ratio = data.split(\":\", 2).map(x => parseFloat(x.trim())).filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n if (ratio.length === 0) {\n return {\n num: 1,\n den: 1\n };\n }\n const [num, den] = ratio;\n return {\n num,\n den\n };\n}\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data.trim().split(/\\s+/).map(e => ({\n excluded: e[0] === \"-\",\n viewname: e.substring(1)\n }));\n}\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return {\n r,\n g,\n b\n };\n }\n const color = data.split(\",\", 3).map(c => {\n c = parseInt(c.trim(), 10);\n return isNaN(c) ? 0 : MathClamp(c, 0, 255);\n });\n if (color.length < 3) {\n return {\n r,\n g,\n b\n };\n }\n [r, g, b] = color;\n return {\n r,\n g,\n b\n };\n}\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const bbox = data.split(\",\", 4).map(m => getMeasurement(m.trim(), \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const [x, y, width, height] = bbox;\n return {\n x,\n y,\n width,\n height\n };\n}\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n isBreak() {\n return !!this.breakNode;\n }\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\n;// ./src/core/xfa/fonts.js\n\n\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n pdfFont.regular ||= pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n const font = this.fonts.getOrInsertComputed(name, makeObj);\n this.defaultFont ??= font;\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n if (!property) {\n if (pdfFont.name.includes(\"Bold\") || pdfFont.psName?.includes(\"Bold\")) {\n property = \"bold\";\n }\n if (pdfFont.name.includes(\"Italic\") || pdfFont.name.endsWith(\"It\") || pdfFont.psName?.includes(\"Italic\") || pdfFont.psName?.endsWith(\"It\")) {\n property += \"italic\";\n }\n }\n property ||= \"regular\";\n font[property] = pdfFont;\n }\n getDefault() {\n return this.defaultFont;\n }\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n const pattern = /[,\\-_ ]|bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replaceAll(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n const maybe = [];\n for (const [family, pdfFont] of this.fonts) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n name = name.replaceAll(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n return xfaFont.weight === \"bold\" ? typeface.bolditalic : typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n return typeface.regular;\n}\nfunction fonts_getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10\n };\n }\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size\n };\n}\n\n;// ./src/core/xfa/text.js\n\nconst WIDTH_FACTOR = 1.02;\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n this.pdfFont = selectFont(xfaFont, typeface);\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n defaultFont(fontFinder) {\n const font = fontFinder.find(\"Helvetica\", false) || fontFinder.find(\"Myriad Pro\", false) || fontFinder.find(\"Arial\", false) || fontFinder.getDefault();\n if (font?.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0\n };\n return [pdfFont, xfaFont];\n }\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0\n };\n return [null, xfaFont];\n }\n}\nclass FontSelector {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {\n this.fontFinder = fontFinder;\n this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];\n }\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack.at(-1);\n for (const name of [\"typeface\", \"posture\", \"weight\", \"size\", \"letterSpacing\"]) {\n xfaFont[name] ||= lastFont.xfaFont[name];\n }\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);\n fontInfo.pdfFont ||= lastFont.pdfFont;\n this.stack.push(fontInfo);\n }\n popFont() {\n this.stack.pop();\n }\n topFont() {\n return this.stack.at(-1);\n }\n}\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);\n this.extraHeight = 0;\n }\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n addString(str) {\n if (!str) {\n return;\n }\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]);\n }\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n if (currentLineWidth + glyphWidth > maxWidth) {\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n continue;\n }\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n return {\n width: WIDTH_FACTOR * width,\n height,\n isBroken\n };\n }\n}\n\n;// ./src/core/xfa/som.js\n\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4\n};\nconst shortcuts = new Map([[\"$data\", (root, current) => root.datasets ? root.datasets.data : root], [\"$record\", (root, current) => (root.datasets ? root.datasets.data : root)[$getChildren]()[0]], [\"$template\", (root, current) => root.template], [\"$connectionSet\", (root, current) => root.connectionSet], [\"$form\", (root, current) => root.form], [\"$layout\", (root, current) => root.layout], [\"$host\", (root, current) => root.host], [\"$dataWindow\", (root, current) => root.dataWindow], [\"$event\", (root, current) => root.event], [\"!\", (root, current) => root.datasets], [\"$xfa\", (root, current) => root], [\"xfa\", (root, current) => root], [\"$\", (root, current) => current]]);\nconst somCache = new WeakMap();\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n let [name] = match;\n const parsed = [{\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot\n }];\n let pos = name.length;\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed.at(-1).index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null\n });\n }\n return parsed;\n}\nfunction searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n cacheName,\n operator,\n index\n } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!node.isXFAObject) {\n continue;\n }\n let children, cached;\n if (useCache) {\n cached = somCache.getOrInsertComputed(node, makeMap);\n children = cached.get(cacheName);\n }\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n if (nodes.length === 0 && !isQualified && i === 0) {\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n root = isFinite(index) ? nodes.filter(node => index < node.length).map(node => node[index]) : nodes.flat();\n }\n if (root.length === 0) {\n return null;\n }\n return root;\n}\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n operator,\n index\n } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return root.createNodes(parsed.slice(i));\n }\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (children.length === 0) {\n return root.createNodes(parsed.slice(i));\n }\n if (index < children.length) {\n const child = children[index];\n if (!child.isXFAObject) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return root.createNodes(parsed.slice(i));\n }\n }\n return null;\n}\n\n;// ./src/core/xfa/xfa_object.js\n\n\n\n\n\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\nlet uid = 0;\nconst NS_DATASETS = NamespaceIds.datasets.id;\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n get isXFAObject() {\n return true;\n }\n get isXFAObjectArray() {\n return false;\n }\n createNodes(path) {\n let root = this,\n node = null;\n for (const {\n name,\n index\n } of path) {\n for (let i = 0, ii = isFinite(index) ? index : 0; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n root = node;\n }\n return node;\n }\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n const name = child[$nodeName];\n const node = this[name];\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n [$onChildCheck](child) {\n return Object.hasOwn(this, child[$nodeName]) && child[$namespaceId] === this[$namespaceId];\n }\n [$isNsAgnostic]() {\n return false;\n }\n [$acceptWhitespace]() {\n return false;\n }\n [$isCDATAXml]() {\n return false;\n }\n [$isBindable]() {\n return false;\n }\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n [$isSplittable]() {\n return false;\n }\n [$isThereMoreWidth]() {\n return false;\n }\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n [$hasSettableValue]() {\n return Object.hasOwn(this, \"value\");\n }\n [$setValue](_) {}\n [$onText](_) {}\n [$finalize]() {}\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n [$isTransparent]() {\n return !this.name;\n }\n [$lastAttribute]() {\n return \"\";\n }\n [$text]() {\n return this[_children].length === 0 ? this[$content] : this[_children].map(c => c[$text]()).join(\"\");\n }\n get [_attributeNames]() {\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = proto._attributes = new Set();\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n [$getParent]() {\n return this[_parent];\n }\n [$getSubformParent]() {\n return this[$getParent]();\n }\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n return dumped;\n }\n [$toStyle]() {\n return null;\n }\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n *[$getContainedChildren]() {\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n [$flushHTML]() {\n return null;\n }\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {}\n [$childrenToHTML]({\n filter = null,\n include = true\n }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](filter, include);\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n this[$extra].generator = null;\n return HTMLResult.EMPTY;\n }\n [$setSetAttributes](attributes) {\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return protoAttributes.keys().filter(x => allAttr.has(x) && !setAttr.has(x)).toArray();\n }\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n [_getPrototype](ids, ancestors) {\n const {\n use,\n usehref\n } = this;\n if (!use && !usehref) {\n return null;\n }\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n if (usehref) {\n ref = usehref;\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, -1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, -1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(ids.get($root), this, somExpression, true, false);\n proto &&= proto[0];\n }\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);\n return null;\n }\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n ancestors.add(proto);\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n proto[$resolvePrototypes](ids, ancestors);\n ancestors.delete(proto);\n return proto;\n }\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n break;\n }\n }\n continue;\n }\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n clone[name] = value instanceof XFAObjectArray ? new XFAObjectArray(value[_max]) : null;\n }\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n return clone;\n }\n [$getChildren](name = null) {\n return !name ? this[_children] : this[_children].filter(c => c[$nodeName] === name);\n }\n [$getChildrenByClass](name) {\n return this[name];\n }\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (child.name === name) {\n yield child;\n }\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n get isXFAObject() {\n return false;\n }\n get isXFAObjectArray() {\n return true;\n }\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(`XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`);\n return false;\n }\n isEmpty() {\n return this[_children].length === 0;\n }\n dump() {\n return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());\n }\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n get children() {\n return this[_children];\n }\n clear() {\n this[_children].length = 0;\n }\n}\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n [$getParent]() {\n return this[_parent];\n }\n [$isDataValue]() {\n return true;\n }\n [$getDataValue]() {\n return this[$content].trim();\n }\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n [$text]() {\n return this[$content];\n }\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (Object.hasOwn(attributes, $nsAttributes)) {\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes]) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(``);\n }\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n [$onText](str) {\n this[$content] += str;\n }\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content]\n });\n }\n return HTMLResult.EMPTY;\n }\n [$getAttributes]() {\n return this[_attributes];\n }\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);\n }\n }\n }\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return this[_children].length === 0 || this[_children][0][$namespaceId] === NamespaceIds.xhtml.id;\n }\n return this[_dataValue];\n }\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n return dumped;\n }\n}\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n [$onText](text) {\n this[$content] += text;\n }\n [$finalize]() {}\n}\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k)\n });\n }\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator]\n });\n }\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\n;// ./src/core/xfa/html_utils.js\n\n\n\n\n\n\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || parent.layout && parent.layout !== \"position\") {\n return;\n }\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout?.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n extra.currentColumn = 0;\n } else {\n w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n style.width = width !== \"\" ? measureToString(width) : \"auto\";\n style.height = height !== \"\" ? measureToString(height) : \"auto\";\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent?.layout && parent.layout !== \"position\") {\n return;\n }\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n }\n};\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n return measure.compute(width);\n}\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n const maxWidth = (node.w || availableSpace.width) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (node.value.exData && node.value.exData[$content] && node.value.exData.contentType === \"text/html\") {\n const res = layoutText(node.value.exData[$content], font, margin, lineHeight, fontFinder, maxWidth);\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth);\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n if (width !== null && !node.w) {\n width += marginH;\n }\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return {\n w: width,\n h: height,\n isBroken\n };\n}\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n width = parent.layout === \"position\" && parent.w !== \"\" ? 0 : node.minW;\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n height = parent.layout === \"position\" && parent.h !== \"\" ? 0 : node.minH;\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout?.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n } else {\n width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n if (parent.layout && parent.layout !== \"position\") {\n node.x = node.y = 0;\n }\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = Math.sumPrecise(node.columnWidths);\n }\n }\n}\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (Object.hasOwn(converters, name)) {\n converters[name](node, style);\n continue;\n }\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\nfunction createWrapper(node, html) {\n const {\n attributes\n } = html;\n const {\n style\n } = attributes;\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null)\n },\n children: []\n };\n attributes.class.push(\"xfaWrapped\");\n if (node.border) {\n const {\n widths,\n insets\n } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height\n }\n },\n children: []\n };\n for (const key of [\"border\", \"borderWidth\", \"borderColor\", \"borderRadius\", \"borderStyle\"]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n for (const key of [\"background\", \"backgroundClip\", \"top\", \"left\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"transform\", \"transformOrigin\", \"visibility\"]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.attributes.style.position = style.position === \"absolute\" ? \"absolute\" : \"relative\";\n delete style.position;\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n return wrapper;\n}\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\nfunction isPrintOnly(node) {\n return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === \"print\";\n}\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack.at(-1) : null;\n}\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class?.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n const para = getCurrentPara(node);\n if (para) {\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n delete style.fontFamily;\n return;\n }\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = serializeFontFamily(name);\n const typeface = fontFinder.find(name);\n if (typeface) {\n const {\n fontFamily\n } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = serializeFontFamily(fontFamily);\n }\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n if (style.lineHeight) {\n return;\n }\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\n;// ./src/core/xfa/layout.js\n\n\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"]\n },\n children\n };\n}\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children\n };\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n if (html.children.length === 0) {\n return null;\n }\n return html;\n}\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\":\n {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n extra.numberInLine += 1;\n extra.line.children.push(html);\n if (extra.attempt === 0) {\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\":\n {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\":\n {\n extra.width = MathClamp(w, extra.width, availableSpace.width);\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\":\n {\n extra.width = MathClamp(w, extra.width, availableSpace.width);\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;\n const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height\n };\n case \"rl-row\":\n case \"row\":\n const width = Math.sumPrecise(node[$extra].columnWidths.slice(node[$extra].currentColumn));\n return {\n width,\n height: availableSpace.height - marginH\n };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\nfunction getTransformedBBox(node) {\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];\n}\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = parent[$extra]?.attempt || 0;\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n return false;\n }\n return space.width > ERROR;\n }\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n return space.width > ERROR;\n }\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n return true;\n }\n}\n\n;// ./src/core/xfa/template.js\n\n\n\n\n\n\n\n\n\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\nconst MAX_EMPTY_PAGES = 3;\nconst DEFAULT_TAB_INDEX = 5000;\nconst HEADING_PATTERN = /^H(\\d+)$/;\nconst MIMES = 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\"]);\nconst IMAGES_HEADERS = [[[0x42, 0x4d], \"image/bmp\"], [[0xff, 0xd8, 0xff], \"image/jpeg\"], [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"], [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"]];\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return {\n w: 0,\n h: 0\n };\n }\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return {\n w: 0,\n h: 0\n };\n }\n return {\n w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],\n h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]\n };\n}\nfunction hasMargin(node) {\n return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset);\n}\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\nfunction isRequired(node) {\n return node.validate?.nullTest === \"error\";\n}\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n if (node[$tabIndex]) {\n return;\n }\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n node = ref[0];\n }\n}\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n attributes.role = parent.assist?.role === \"TH\" ? \"columnheader\" : \"cell\";\n }\n }\n}\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n return null;\n}\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null)\n },\n children: [{\n name: \"span\",\n attributes: {\n style: Object.create(null)\n },\n value\n }]\n });\n}\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n node[$extra] = Object.create(null);\n if (node.targetType === \"auto\") {\n return false;\n }\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n const {\n currentPageArea,\n currentContentArea\n } = root[$extra];\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n return false;\n }\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n const pageArea = target && target[$getParent]();\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n extraNode[$getSubformParent] = () => node;\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n [$toHTML]() {\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\"\n }\n };\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style\n }\n };\n } else {\n const startAngle = this.startAngle * Math.PI / 180;\n const sweepAngle = this.sweepAngle * Math.PI / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))];\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style\n }\n };\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\"\n });\n }\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes\n };\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$isTransparent]() {\n return true;\n }\n [$isBindable]() {\n return true;\n }\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"]\n };\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace\n };\n const result = this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"exclGroup\", \"subform\", \"subformSet\"]),\n include: true\n });\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n const html = {\n name: \"div\",\n attributes,\n children\n };\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n return HTMLResult.success(html, bbox);\n }\n}\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n [$toHTML]() {\n return this.toolTip?.[$content] || null;\n }\n}\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n });\n this.checksum = getStringOption(attributes.checksum, [\"none\", \"1mod10\", \"1mod10_1mod11\", \"2mod10\", \"auto\"]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\"none\", \"flateCompress\"]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\"below\", \"above\", \"aboveEmbedded\", \"belowEmbedded\", \"none\"]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.type = getStringOption(attributes.type ? attributes.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\"]);\n this.upsMode = getStringOption(attributes.upsMode, [\"usCarrier\", \"internationalCarrier\", \"secureSymbol\", \"standardSymbol\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", true);\n this.match = getStringOption(attributes.match, [\"once\", \"dataRef\", \"global\", \"none\"]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges.at(-1) || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = {\n widths,\n insets,\n edges\n };\n }\n return this[$extra];\n }\n [$toStyle]() {\n const {\n edges\n } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color ||= \"#000000\";\n return style;\n });\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles.at(-1);\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n return style;\n }\n}\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", true);\n this.after = getStringOption(attributes.after, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", true);\n this.highlight = getStringOption(attributes.highlight, [\"inverted\", \"none\", \"outline\", \"push\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toHTML](availableSpace) {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {}\n },\n children: []\n };\n for (const event of grandpa.event.children) {\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {}\n },\n children: []\n });\n }\n return HTMLResult.success(htmlButton);\n }\n}\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\"disabled\", \"error\", \"ignore\", \"warning\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\"left\", \"bottom\", \"inline\", \"right\", \"top\"]);\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let {\n width,\n height\n } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n this[$extra] = layoutNode(this, {\n width,\n height\n });\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const {\n w,\n h\n } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value\n });\n } else {\n children.push(value);\n }\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n setPara(this, null, value);\n this[$popPara]();\n this.reserve = savedReserve;\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"]\n },\n children\n });\n }\n}\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", true);\n this.credentialServerPolicy = getStringOption(attributes.credentialServerPolicy, [\"optional\", \"required\"]);\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\"default\", \"check\", \"circle\", \"cross\", \"diamond\", \"square\", \"star\"]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"margin\");\n const size = measureToString(this.size);\n style.width = style.height = size;\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items = field.items.children.length && field.items.children[0][$toHTML]().html || [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString()\n };\n const value = field.value?.[$text]() || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = container[$data]?.[$uid] || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = field[$data]?.[$uid] || field[$uid];\n }\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (groupId) {\n input.attributes.name = groupId;\n }\n if (isRequired(field)) {\n input.attributes[\"aria-required\"] = true;\n input.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [input]\n });\n }\n}\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\"userControl\", \"always\", \"multiSelect\", \"onEntry\"]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = field.font?.size || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--total-scale-factor))`\n };\n const children = [];\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n let selected = false;\n const value = field.value?.[$text]() || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle\n },\n value: displayed[i]\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true\n },\n value: \" \"\n });\n }\n }\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n };\n if (isRequired(field)) {\n selectAttributes[\"aria-required\"] = true;\n selectAttributes.required = true;\n }\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [{\n name: \"select\",\n children,\n attributes: selectAttributes\n }]\n });\n }\n}\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n [$hasSettableValue]() {\n return false;\n }\n [$toStyle]() {\n return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null;\n }\n}\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\"exportAndImport\", \"exportOnly\", \"importOnly\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n [$toHTML](availableSpace) {\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h)\n };\n const classNames = [\"xfaContentarea\"];\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid]\n }\n });\n }\n}\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\"\", \"SHA1\", \"SHA256\", \"SHA512\", \"RIPEMD160\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", true);\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n this[$pushPara]();\n const savedW = this.w;\n const savedH = this.h;\n const {\n w,\n h,\n isBroken\n } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n const style = toStyle(this, \"font\", \"hAlign\", \"dimensions\", \"position\", \"presence\", \"rotate\", \"anchorType\", \"border\", \"margin\");\n setMinMaxDimensions(this, style);\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const html = {\n name: \"div\",\n attributes,\n children: []\n };\n applyAssist(this, attributes);\n const bbox = computeBbox(this, html, availableSpace);\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n html.children.push(value);\n setPara(this, style, value);\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\"\n });\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\"adbe.x509.rsa_sha1\", \"adbe.pkcs7.detached\", \"adbe.pkcs7.sha1\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"encrypt\", \"decrypt\"]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\"\", \"AES256-CBC\", \"TRIPLEDES-CBC\", \"AES128-CBC\", \"AES192-CBC\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", true);\n this.activity = getStringOption(attributes.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\"]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\"refOnly\", \"refAndDescendents\"]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\"none\", \"base64\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n [$onChild](child) {\n if (this.contentType === \"text/html\" && child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n return false;\n }\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n return HTMLResult.EMPTY;\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n [$isBindable]() {\n return true;\n }\n [$hasSettableValue]() {\n return true;\n }\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n field.value[$setValue](value);\n }\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n this[$extra] ||= Object.create(null);\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height)\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0\n });\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\n }\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !this[$getTemplateRoot]()[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n delete this[$extra];\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\"import\", \"remerge\"]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n [$isBindable]() {\n return true;\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (!this.ui) {\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n if (!this.ui || this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n if (this.caption) {\n delete this.caption[$extra];\n }\n this[$pushPara]();\n const caption = this.caption ? this.caption[$toHTML](availableSpace).html : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const {\n w,\n h\n } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = fonts_getMetrics(this.font, true).lineNoGap;\n }\n }\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n if (this.caption) {\n const {\n w,\n h,\n isBroken\n } = this.caption[$getExtra](availableSpace);\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n width = w;\n height = h;\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);\n }\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH);\n }\n }\n this[$popPara]();\n fixDimensions(this);\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n const style = toStyle(this, \"font\", \"dimensions\", \"position\", \"rotate\", \"anchorType\", \"presence\", \"margin\", \"hAlign\");\n setMinMaxDimensions(this, style);\n const classNames = [\"xfaField\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n setAccess(this, classNames);\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n if (this[$tabIndex]) {\n if (ui.children?.[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n ui.attributes.style ||= Object.create(null);\n let aElement = null;\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n children.push(ui);\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text?.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\n borderDims ||= getBorderDims(this.ui[$getExtra]());\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n if (aElement) {\n ui.children.push(aElement);\n }\n if (!caption) {\n if (ui.attributes.class) {\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n ui.attributes.class ||= [];\n ui.children.splice(0, 0, caption);\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n let propName = \"color\";\n let altPropName = propName;\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n if (this.color?.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n}\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\"\", \"required\", \"optional\", \"none\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass template_Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\"none\", \"pair\"]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\"all\", \"word\"]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\"all\", \"word\"]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\"all\", \"word\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontWeight = this.weight;\n return style;\n }\n}\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0\n });\n }\n}\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\"fit\", \"actual\", \"height\", \"none\", \"width\"]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\"base64\", \"none\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n let buffer = this[$globalData].images?.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n return HTMLResult.EMPTY;\n }\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = Uint8Array.fromBase64(this[$content]);\n }\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n const blob = new Blob([buffer], {\n type: this.contentType\n });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\"\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\"\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\"\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null\n }\n });\n }\n}\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {}\n });\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(attributes.dataEncipherment, options);\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(attributes.digitalSignature, options);\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style\n }\n };\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\"\n }\n }\n };\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toRight\", \"toBottom\", \"toLeft\", \"toTop\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", true);\n this.action = getStringOption(attributes.action, [\"include\", \"all\", \"exclude\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toStyle]() {\n return {\n margin: measureToString(this.topInset) + \" \" + measureToString(this.rightInset) + \" \" + measureToString(this.bottomInset) + \" \" + measureToString(this.leftInset)\n };\n }\n}\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3\n });\n this.signatureType = getStringOption(attributes.signatureType, [\"filler\", \"author\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\"portrait\", \"landscape\"]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\"auto\", \"delegate\", \"pageFront\"]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", true);\n this.id = attributes.id || \"\";\n this.initial = attributes.initial !== \"\" ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true\n }) : \"\";\n this.max = attributes.max !== \"\" ? getInteger({\n data: attributes.max,\n defaultValue: -1,\n validate: x => true\n }) : \"\";\n this.min = attributes.min !== \"\" ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true\n }) : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n if (this.min === \"\") {\n this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: target?.[0] || null,\n leader: leader?.[0] || null,\n trailer: trailer?.[0] || null,\n addLeader: false,\n addTrailer: false\n };\n }\n return this[$extra];\n }\n}\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\"any\", \"blank\", \"notBlank\"]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\"any\", \"even\", \"odd\"]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\"any\", \"first\", \"last\", \"only\", \"rest\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0\n };\n return true;\n }\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$cleanPage]() {\n delete this[$extra];\n }\n [$getNextPage]() {\n this[$extra] ||= {\n numberOfUse: 0\n };\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n return parent[$getNextPage]();\n }\n [$getAvailableSpace]() {\n return this[$extra].space || {\n width: 0,\n height: 0\n };\n }\n [$toHTML]() {\n this[$extra] ||= {\n numberOfUse: 1\n };\n const children = [];\n this[$extra].children = children;\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true\n });\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true\n });\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name\n }\n });\n }\n}\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\"longEdge\", \"shortEdge\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"orderedOccurrence\", \"duplexPaginated\", \"simplexPaginated\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n [$isUsable]() {\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$getNextPage]() {\n this[$extra] ||= {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1\n };\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === \"any\");\n if (page) {\n return page;\n }\n return this.pageArea.children[0];\n }\n}\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", true);\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight ? getMeasurement(attributes.lineHeight, \"0pt\") : \"\";\n this.marginLeft = attributes.marginLeft ? getMeasurement(attributes.marginLeft, \"0pt\") : \"\";\n this.marginRight = attributes.marginRight ? getMeasurement(attributes.marginRight, \"0pt\") : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset ? getMeasurement(attributes.radixOffset, \"0pt\") : \"\";\n this.spaceAbove = attributes.spaceAbove ? getMeasurement(attributes.spaceAbove, \"0pt\") : \"\";\n this.spaceBelow = attributes.spaceBelow ? getMeasurement(attributes.spaceBelow, \"0pt\") : \"\";\n this.tabDefault = attributes.tabDefault ? getMeasurement(this.tabDefault) : \"\";\n this.tabStops = (attributes.tabStops || \"\").trim().split(/\\s+/).map((x, i) => i % 2 === 1 ? getMeasurement(x) : x);\n this.textIndent = attributes.textIndent ? getMeasurement(attributes.textIndent, \"0pt\") : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\"top\", \"bottom\", \"middle\"]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.hyphenation = null;\n }\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingRight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n if (this.tabStops.length > 0) {}\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n return style;\n }\n}\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\nclass template_Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"crossHatch\", \"crossDiagonal\", \"diagonalLeft\", \"diagonalRight\", \"horizontal\", \"vertical\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n return \"\";\n }\n}\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors = this.type === \"toEdge\" ? `${startColor},${endColor}` : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n [$toHTML]() {\n const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n style.stroke = edgeStyle.color;\n const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});\n const cornerStyle = corner[$toStyle]();\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style\n }\n };\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\"\n },\n width: \"100%\",\n height: \"100%\"\n }\n };\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n children: [svg]\n });\n }\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"sign\", \"clear\", \"verify\"]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\"custom\", \"caption\", \"name\", \"toolTip\"]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha));\n }\n}\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.columnWidths = (attributes.columnWidths || \"\").trim().split(/\\s+/).map(x => x === \"-1\" ? -1 : getMeasurement(x));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\"consumeData\", \"matchTemplate\"]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\"manual\", \"auto\"]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.break) {\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString()\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString()\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n this[$removeChild](this.break);\n this.break = null;\n }\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) {\n warn(\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\");\n }\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n if (this[$extra]?.afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n this[$extra] ||= Object.create(null);\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height)\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0\n });\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"area\", \"draw\", \"exclGroup\", \"field\", \"subform\", \"subformSet\"]);\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\n }\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !root[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n if ((style.width === \"0px\" || style.height === \"0px\") && children.length === 0) {\n return HTMLResult.EMPTY;\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n delete this[$extra];\n return result;\n }\n}\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"ordered\", \"choice\", \"unordered\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\n }\n}\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n this[$content] = new Map(this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n }));\n }\n}\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.format = getStringOption(attributes.format, [\"xdp\", \"formdata\", \"pdf\", \"urlencoded\", \"xfd\", \"xml\"]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\"full\", \"interactiveForms\"]);\n this.extras = null;\n this.subform = new XFAObjectArray();\n }\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n [$isSplittable]() {\n return true;\n }\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: []\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: []\n };\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: []\n };\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break?.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n if (breakBefore) {\n const target = this[$searchNode](breakBeforeTarget, breakBefore[$getParent]());\n if (target instanceof PageArea) {\n pageArea = target;\n breakBefore[$extra] = {};\n }\n }\n pageArea ||= pageAreas[0];\n pageArea[$extra] = {\n numberOfUse: 1\n };\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0\n };\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node => node.attributes.class.includes(\"xfaContentarea\"));\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething ||= html.children?.length > 0;\n htmlContentAreas[index].children.push(html);\n }\n };\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = this[$extra].currentContentArea = contentAreas[i];\n const space = {\n width: contentArea.w,\n height: contentArea.h\n };\n startIndex = 0;\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething ||= html.html.children?.length > 0;\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n if (node.targetType === \"auto\") {\n continue;\n }\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n continue;\n }\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n flush(i);\n const currentIndex = i;\n i = Infinity;\n if (target instanceof PageArea) {\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.indexOf(target);\n if (index !== -1) {\n if (index > currentIndex) {\n i = index - 1;\n } else {\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.indexOf(target);\n }\n }\n continue;\n }\n flush(i);\n }\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$acceptWhitespace]() {\n return true;\n }\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replaceAll(\"\\r\\n\", \"\\n\");\n }\n }\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content].split(/[\\u2029\\u2028\\n]/).filter(Boolean).join(\"\\n\");\n }\n return this[$content][$text]();\n }\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n const html = valueToHtml(this[$content]).html;\n if (this[$content].includes(\"\\u2029\")) {\n html.name = \"div\";\n html.children = [];\n this[$content].split(\"\\u2029\").map(para => para.split(/[\\u2028\\n]/).flatMap(line => [{\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n }])).forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push({\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n });\n });\n }\n return HTMLResult.success(html);\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\"auto\", \"off\", \"on\"]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: field[$data]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: field[$data]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n }\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"next\", \"back\", \"down\", \"first\", \"left\", \"right\", \"up\"]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n get name() {\n return this.operation;\n }\n [$isTransparent]() {\n return false;\n }\n}\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", true);\n this.formatTest = getStringOption(attributes.formatTest, [\"warning\", \"disabled\", \"error\"]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\"disabled\", \"error\", \"warning\"]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\"error\", \"disabled\", \"warning\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui?.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n [$text]() {\n if (this.exData) {\n return typeof this.exData[$content] === \"string\" ? this.exData[$content].trim() : this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n [$isTransparent]() {\n return true;\n }\n}\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(TemplateNamespace, name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n static arc(attrs) {\n return new Arc(attrs);\n }\n static area(attrs) {\n return new Area(attrs);\n }\n static assist(attrs) {\n return new Assist(attrs);\n }\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n static bind(attrs) {\n return new Bind(attrs);\n }\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n static border(attrs) {\n return new Border(attrs);\n }\n static break(attrs) {\n return new Break(attrs);\n }\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n static button(attrs) {\n return new Button(attrs);\n }\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n static caption(attrs) {\n return new Caption(attrs);\n }\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n static color(attrs) {\n return new Color(attrs);\n }\n static comb(attrs) {\n return new Comb(attrs);\n }\n static connect(attrs) {\n return new Connect(attrs);\n }\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n static corner(attrs) {\n return new Corner(attrs);\n }\n static date(attrs) {\n return new DateElement(attrs);\n }\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n static desc(attrs) {\n return new Desc(attrs);\n }\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n static draw(attrs) {\n return new Draw(attrs);\n }\n static edge(attrs) {\n return new Edge(attrs);\n }\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n static event(attrs) {\n return new Event(attrs);\n }\n static exData(attrs) {\n return new ExData(attrs);\n }\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n static execute(attrs) {\n return new Execute(attrs);\n }\n static extras(attrs) {\n return new Extras(attrs);\n }\n static field(attrs) {\n return new Field(attrs);\n }\n static fill(attrs) {\n return new Fill(attrs);\n }\n static filter(attrs) {\n return new Filter(attrs);\n }\n static float(attrs) {\n return new Float(attrs);\n }\n static font(attrs) {\n return new template_Font(attrs);\n }\n static format(attrs) {\n return new Format(attrs);\n }\n static handler(attrs) {\n return new Handler(attrs);\n }\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n static image(attrs) {\n return new Image(attrs);\n }\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n static integer(attrs) {\n return new Integer(attrs);\n }\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n static items(attrs) {\n return new Items(attrs);\n }\n static keep(attrs) {\n return new Keep(attrs);\n }\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n static line(attrs) {\n return new Line(attrs);\n }\n static linear(attrs) {\n return new Linear(attrs);\n }\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n static margin(attrs) {\n return new Margin(attrs);\n }\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n static medium(attrs) {\n return new Medium(attrs);\n }\n static message(attrs) {\n return new Message(attrs);\n }\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n static occur(attrs) {\n return new Occur(attrs);\n }\n static oid(attrs) {\n return new Oid(attrs);\n }\n static oids(attrs) {\n return new Oids(attrs);\n }\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n static para(attrs) {\n return new Para(attrs);\n }\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n static pattern(attrs) {\n return new template_Pattern(attrs);\n }\n static picture(attrs) {\n return new Picture(attrs);\n }\n static proto(attrs) {\n return new Proto(attrs);\n }\n static radial(attrs) {\n return new Radial(attrs);\n }\n static reason(attrs) {\n return new Reason(attrs);\n }\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n static ref(attrs) {\n return new RefElement(attrs);\n }\n static script(attrs) {\n return new Script(attrs);\n }\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n static signData(attrs) {\n return new SignData(attrs);\n }\n static signature(attrs) {\n return new Signature(attrs);\n }\n static signing(attrs) {\n return new Signing(attrs);\n }\n static solid(attrs) {\n return new Solid(attrs);\n }\n static speak(attrs) {\n return new Speak(attrs);\n }\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n static subform(attrs) {\n return new Subform(attrs);\n }\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n static submit(attrs) {\n return new Submit(attrs);\n }\n static template(attrs) {\n return new Template(attrs);\n }\n static text(attrs) {\n return new Text(attrs);\n }\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n static time(attrs) {\n return new Time(attrs);\n }\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n static ui(attrs) {\n return new Ui(attrs);\n }\n static validate(attrs) {\n return new Validate(attrs);\n }\n static value(attrs) {\n return new Value(attrs);\n }\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\n;// ./src/core/xfa/bind.js\n\n\n\n\n\n\nconst bind_NS_DATASETS = NamespaceIds.datasets.id;\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n this.data = root.datasets?.data || new XmlObject(bind_NS_DATASETS, \"data\");\n this.emptyMerge = this.data[$getChildren]().length === 0;\n this.root.form = this.form = root.template[$clone]();\n }\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n getData() {\n return this.data;\n }\n _bindValue(formNode, data, picture) {\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n formNode[$setValue](createText(value));\n } else if (formNode instanceof Field && formNode.ui?.choiceList?.open === \"multiSelect\") {\n const value = data[$getChildren]().map(child => child[$content].trim()).join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](name, false, true);\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (dataNode[$namespaceId] === bind_NS_DATASETS && dataNode[$nodeName] === \"data\") {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n if (!global) {\n return null;\n }\n generator = this.data[$getRealChildrenByNameIt](name, true, false);\n match = generator.next().value;\n if (match) {\n return match;\n }\n generator = this.data[$getAttributeIt](name, true);\n match = generator.next().value;\n if (match?.[$isDataValue]()) {\n return match;\n }\n return null;\n }\n _setProperties(formNode, dataNode) {\n if (!Object.hasOwn(formNode, \"setProperty\")) {\n return;\n }\n for (const {\n ref,\n target,\n connection\n } of formNode.setProperty.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n const targetNodes = searchNode(this.root, formNode, target, false, false);\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n const targetParent = targetNode[$getParent]();\n if (targetNode instanceof SetProperty || targetParent instanceof SetProperty) {\n warn(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);\n continue;\n }\n if (targetNode instanceof BindItems || targetParent instanceof BindItems) {\n warn(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);\n continue;\n }\n const content = node[$text]();\n const name = targetNode[$nodeName];\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);\n targetParent[name] = obj[name];\n continue;\n }\n if (!Object.hasOwn(targetNode, $content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n _bindItems(formNode, dataNode) {\n if (!Object.hasOwn(formNode, \"items\") || !Object.hasOwn(formNode, \"bindItems\") || formNode.bindItems.isEmpty()) {\n return;\n }\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n formNode.items.clear();\n const labels = new Items({});\n const values = new Items({});\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n formNode[$appendChild](values);\n formNode.items.push(values);\n for (const {\n ref,\n labelRef,\n valueRef,\n connection\n } of formNode.bindItems.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n const labelNodes = searchNode(this.root, node, labelRef, true, false);\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n const valueNodes = searchNode(this.root, node, valueRef, true, false);\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n labels[$appendChild](label);\n labels.text.push(label);\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n _bindOccurrences(formNode, matches, picture) {\n let baseClone;\n if (matches.length > 1) {\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n if (matches.length === 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n const {\n occur\n } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n _getOccurInfo(formNode) {\n const {\n name,\n occur\n } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n _bindElement(formNode, dataNode) {\n const uselessNodes = [];\n this._createOccurrences(formNode);\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n continue;\n }\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n const dataChild = child[$data] = new XmlObject(nsId, child.name || \"root\");\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n if (!child[$isBindable]()) {\n continue;\n }\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n const [min, max] = this._getOccurInfo(child);\n if (ref) {\n match = searchNode(this.root, dataNode, ref, true, false);\n if (match === null) {\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(child.name, child[$hasSettableValue](), dataNode, global);\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n match = dataNode[$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value;\n if (!match) {\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\n;// ./src/core/xfa/data.js\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n while (stack.length > 0) {\n const last = stack.at(-1);\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n const buf = [``];\n if (this.dataset) {\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"\");\n return buf.join(\"\");\n }\n}\n\n;// ./src/core/xfa/config.js\n\n\n\n\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", true);\n this.dynamicRender = null;\n }\n}\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\nclass config_Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3\n });\n this.name = getStringOption(attributes.name, [\"\", \"barcode\", \"coreinit\", \"deviceDriver\", \"font\", \"general\", \"layout\", \"merge\", \"script\", \"signature\", \"sourceSet\", \"templateCache\"]);\n }\n}\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\"none\", \"concat\", \"zip\", \"zipCompress\"]);\n }\n}\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n [$finalize]() {\n this[$content] = new Map(this[$content].trim().split(/\\s+/).filter(x => x.includes(\":\")).map(x => x.split(\":\", 2)));\n }\n}\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", true);\n this.templateCache = null;\n }\n}\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", true);\n this.uri = null;\n }\n}\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\"*\", \"Arabic\", \"Cyrillic\", \"EastEuropeanRoman\", \"Greek\", \"Hebrew\", \"Japanese\", \"Korean\", \"Roman\", \"SimplifiedChinese\", \"Thai\", \"TraditionalChinese\", \"Vietnamese\"]);\n }\n}\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\"pdf\", \"pcl\", \"ps\", \"webClient\", \"zpl\"]);\n }\n}\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\"simplex\", \"duplexFlipLongEdge\", \"duplexFlipShortEdge\"]);\n }\n}\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\nclass config_Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\nclass config_Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0\n });\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange.split(\",\").map(x => x.trim()).filter(Boolean)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => x && [\"calculate\", \"close\", \"enter\", \"exit\", \"initialize\", \"ready\", \"validate\"].includes(x));\n }\n}\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass config_FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\"dataValue\", \"dataGroup\", \"ignore\", \"remove\"]);\n }\n}\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", true);\n this.map = null;\n }\n}\nclass config_Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", true);\n this.msgId = null;\n this.severity = null;\n }\n}\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", true);\n this.message = new XFAObjectArray();\n }\n}\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", true);\n this.destination = null;\n }\n}\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", true);\n this.uri = null;\n }\n}\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x));\n }\n}\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true\n });\n }\n}\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n [$finalize]() {\n const numbers = this[$content].trim().split(/\\s+/).map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\"simplex\", \"duplexShortEdge\", \"duplexLongEdge\"]);\n }\n}\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\"none\", \"forceDuplex\", \"forceDuplexLongEdge\", \"forceDuplexShortEdge\", \"forceSimplex\"]);\n }\n}\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\nclass config_Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n}\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\"preserve\", \"dissolve\", \"dissolveStructure\", \"ignore\", \"remove\"]);\n }\n}\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n [$finalize]() {\n this[$content] = this[$content].split(\",\", 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim();\n if (this[$content].toLowerCase().startsWith(\"xml\") || /[\\p{L}_][\\p{L}\\d._\\p{M}-]*/u.test(this[$content])) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\nclass config_Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\"ignore\", \"error\", \"information\", \"trace\", \"warning\"]);\n }\n}\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\"html\", \"delegate\", \"fdf\", \"xml\", \"pdf\"]);\n }\n}\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\nclass config_Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\"trace\", \"error\", \"information\", \"warning\"]);\n }\n}\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\"null\", \"memory\", \"stderr\", \"stdout\", \"system\", \"uri\"]);\n }\n}\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0\n });\n }\n}\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", true);\n this.area = new XFAObjectArray();\n }\n}\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\"none\", \"ascii85\", \"asciiHex\", \"ccittfax\", \"flate\", \"lzw\", \"runLength\", \"native\", \"xdp\", \"mergedXDP\"]);\n }\n}\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\nclass config_Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\"preSubmit\", \"prePrint\", \"preExecute\", \"preSave\"]);\n }\n}\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\"allMessagesIndividually\", \"allMessagesTogether\", \"firstMessageOnly\", \"noMessages\"]);\n }\n}\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\"warn\", \"error\", \"update\"]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\"warn\", \"error\"]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\"update\", \"maintain\"]);\n }\n}\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\"preserve\", \"ltrim\", \"normalize\", \"rtrim\", \"trim\"]);\n }\n}\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n [$finalize]() {\n const pair = this[$content].split(\",\", 2).map(x => parseInt(x.trim(), 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", true);\n this.packets = null;\n }\n}\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", true);\n this.debug = null;\n this.uri = null;\n }\n}\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(ConfigNamespace, name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n static agent(attrs) {\n return new Agent(attrs);\n }\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n static amd(attrs) {\n return new Amd(attrs);\n }\n static area(attrs) {\n return new config_Area(attrs);\n }\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n static base(attrs) {\n return new Base(attrs);\n }\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n static cache(attrs) {\n return new Cache(attrs);\n }\n static change(attrs) {\n return new Change(attrs);\n }\n static common(attrs) {\n return new Common(attrs);\n }\n static compress(attrs) {\n return new Compress(attrs);\n }\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n static compression(attrs) {\n return new Compression(attrs);\n }\n static config(attrs) {\n return new Config(attrs);\n }\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n static copies(attrs) {\n return new Copies(attrs);\n }\n static creator(attrs) {\n return new Creator(attrs);\n }\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n static data(attrs) {\n return new Data(attrs);\n }\n static debug(attrs) {\n return new Debug(attrs);\n }\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n static destination(attrs) {\n return new Destination(attrs);\n }\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n static driver(attrs) {\n return new Driver(attrs);\n }\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n static embed(attrs) {\n return new Embed(attrs);\n }\n static encrypt(attrs) {\n return new config_Encrypt(attrs);\n }\n static encryption(attrs) {\n return new config_Encryption(attrs);\n }\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n static equate(attrs) {\n return new Equate(attrs);\n }\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n static fontInfo(attrs) {\n return new config_FontInfo(attrs);\n }\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n static jog(attrs) {\n return new Jog(attrs);\n }\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n static layout(attrs) {\n return new Layout(attrs);\n }\n static level(attrs) {\n return new Level(attrs);\n }\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n static locale(attrs) {\n return new Locale(attrs);\n }\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n static log(attrs) {\n return new Log(attrs);\n }\n static map(attrs) {\n return new MapElement(attrs);\n }\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n static message(attrs) {\n return new config_Message(attrs);\n }\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n static mode(attrs) {\n return new Mode(attrs);\n }\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n static output(attrs) {\n return new Output(attrs);\n }\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n static packets(attrs) {\n return new Packets(attrs);\n }\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n static part(attrs) {\n return new Part(attrs);\n }\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n static picture(attrs) {\n return new config_Picture(attrs);\n }\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n static presence(attrs) {\n return new Presence(attrs);\n }\n static present(attrs) {\n return new Present(attrs);\n }\n static print(attrs) {\n return new Print(attrs);\n }\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n static producer(attrs) {\n return new Producer(attrs);\n }\n static ps(attrs) {\n return new Ps(attrs);\n }\n static range(attrs) {\n return new Range(attrs);\n }\n static record(attrs) {\n return new Record(attrs);\n }\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n static rename(attrs) {\n return new Rename(attrs);\n }\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n static script(attrs) {\n return new config_Script(attrs);\n }\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n static severity(attrs) {\n return new Severity(attrs);\n }\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n static staple(attrs) {\n return new Staple(attrs);\n }\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n static template(attrs) {\n return new config_Template(attrs);\n }\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n static to(attrs) {\n return new To(attrs);\n }\n static trace(attrs) {\n return new Trace(attrs);\n }\n static transform(attrs) {\n return new Transform(attrs);\n }\n static type(attrs) {\n return new Type(attrs);\n }\n static uri(attrs) {\n return new Uri(attrs);\n }\n static validate(attrs) {\n return new config_Validate(attrs);\n }\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n static version(attrs) {\n return new Version(attrs);\n }\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n static window(attrs) {\n return new Window(attrs);\n }\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\n;// ./src/core/xfa/connection_set.js\n\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass connection_set_Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(ConnectionSetNamespace, name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n static operation(attrs) {\n return new Operation(attrs);\n }\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n static uri(attrs) {\n return new connection_set_Uri(attrs);\n }\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\n;// ./src/core/xfa/datasets.js\n\n\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\nclass datasets_Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n [$isNsAgnostic]() {\n return true;\n }\n}\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", true);\n this.data = null;\n this.Signature = null;\n }\n [$onChild](child) {\n const name = child[$nodeName];\n if (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID || name === \"Signature\" && child[$namespaceId] === NamespaceIds.signature.id) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(DatasetsNamespace, name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n static data(attributes) {\n return new datasets_Data(attributes);\n }\n}\n\n;// ./src/core/xfa/locale_set.js\n\n\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\"symbol\", \"isoname\", \"decimal\"]);\n }\n}\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\nclass DateTimeSymbols extends ContentObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.day = new XFAObjectArray(7);\n }\n}\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", true);\n this.era = new XFAObjectArray(2);\n }\n}\nclass locale_set_Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\nclass locale_set_LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", true);\n this.locale = new XFAObjectArray();\n }\n}\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.month = new XFAObjectArray(12);\n }\n}\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\"decimal\", \"grouping\", \"percent\", \"minus\", \"zero\"]);\n }\n}\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", true);\n this.name = attributes.name | \"\";\n }\n}\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", true);\n this.typeFace = new XFAObjectArray();\n }\n}\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(LocaleSetNamespace, name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n static day(attrs) {\n return new Day(attrs);\n }\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n static era(attrs) {\n return new Era(attrs);\n }\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n static locale(attrs) {\n return new locale_set_Locale(attrs);\n }\n static localeSet(attrs) {\n return new locale_set_LocaleSet(attrs);\n }\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n static month(attrs) {\n return new Month(attrs);\n }\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\n;// ./src/core/xfa/signature.js\n\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\nclass signature_Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", true);\n }\n}\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(SignatureNamespace, name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n static signature(attributes) {\n return new signature_Signature(attributes);\n }\n}\n\n;// ./src/core/xfa/stylesheet.js\n\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", true);\n }\n}\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(StylesheetNamespace, name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\n;// ./src/core/xfa/xdp.js\n\n\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\nclass xdp_Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(XdpNamespace, name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n static xdp(attributes) {\n return new xdp_Xdp(attributes);\n }\n}\n\n;// ./src/core/xfa/xhtml.js\n\n\n\n\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\nconst VALID_STYLES = 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\"]);\nconst StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, parseInt(value, 10) / 100).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, parseInt(value, 10) / 100).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n value = original.fontSize = Math.abs(getMeasurement(value));\n return measureToString(0.99 * value);\n}], [\"letter-spacing\", value => measureToString(getMeasurement(value))], [\"line-height\", value => measureToString(getMeasurement(value))], [\"margin\", value => measureToString(getMeasurement(value))], [\"margin-bottom\", value => measureToString(getMeasurement(value))], [\"margin-left\", value => measureToString(getMeasurement(value))], [\"margin-right\", value => measureToString(getMeasurement(value))], [\"margin-top\", value => measureToString(getMeasurement(value))], [\"text-indent\", value => measureToString(getMeasurement(value))], [\"font-family\", value => value], [\"vertical-align\", value => measureToString(getMeasurement(value))]]);\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n newValue = typeof mapping === \"string\" ? mapping : mapping(value, original);\n }\n if (key.endsWith(\"scale\")) {\n style.transform = style.transform ? `${style[key]} ${newValue}` : newValue;\n } else {\n style[key.replaceAll(/-([a-z])/gi, (_, x) => x.toUpperCase())] = newValue;\n }\n }\n if (style.fontFamily) {\n setFontFamily({\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0\n }, node, node[$globalData].fontFinder, style);\n }\n if (richText && style.verticalAlign && style.verticalAlign !== \"0px\" && style.fontSize) {\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n }\n if (richText && style.fontSize) {\n style.fontSize = `calc(${style.fontSize} * var(--total-scale-factor))`;\n }\n fixTextIndent(style);\n return style;\n}\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n return node.style.split(\";\").filter(s => !!s.trim()).map(s => s.split(\":\", 2).map(t => t.trim())).filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n }).map(kv => kv.join(\":\")).join(\";\");\n}\nconst NoWhites = new Set([\"body\", \"html\"]);\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replaceAll(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replaceAll(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n if (str) {\n this[$content] += str;\n }\n }\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN\n };\n let lineHeight = null;\n for (const [key, value] of this.style.split(\";\").map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(getMeasurement);\n switch (values.length) {\n case 1:\n margin.top = margin.bottom = margin.left = margin.right = values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n measure.pushData(xfaFont, margin, lineHeight);\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n if (mustPop) {\n measure.popFont();\n }\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\n };\n this[$childrenToHTML]({});\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n let value;\n if (this[$richText]) {\n value = this[$content] ? this[$content].replaceAll(crlfForRichTextRegExp, \"\\n\") : undefined;\n } else {\n value = this[$content] || undefined;\n }\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText])\n },\n children,\n value\n });\n }\n}\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n weight: \"bold\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const {\n html\n } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n [$text]() {\n return \"\\n\";\n }\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\"\n });\n }\n}\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\n };\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {}\n },\n value: this[$content] || \"\"\n });\n }\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes?.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {}\n },\n children\n });\n }\n}\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n posture: \"italic\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings.at(-1) === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (Object.hasOwn(XhtmlNamespace, name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n static a(attributes) {\n return new A(attributes);\n }\n static b(attributes) {\n return new B(attributes);\n }\n static body(attributes) {\n return new Body(attributes);\n }\n static br(attributes) {\n return new Br(attributes);\n }\n static html(attributes) {\n return new Html(attributes);\n }\n static i(attributes) {\n return new I(attributes);\n }\n static li(attributes) {\n return new Li(attributes);\n }\n static ol(attributes) {\n return new Ol(attributes);\n }\n static p(attributes) {\n return new P(attributes);\n }\n static span(attributes) {\n return new Span(attributes);\n }\n static sub(attributes) {\n return new Sub(attributes);\n }\n static sup(attributes) {\n return new Sup(attributes);\n }\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\n;// ./src/core/xfa/setup.js\n\n\n\n\n\n\n\n\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace\n};\n\n;// ./src/core/xfa/unknown.js\n\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\n;// ./src/core/xfa/builder.js\n\n\n\n\n\n\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n [$onChild](child) {\n this.element = child;\n return true;\n }\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n this[$ids].set($root, this.element);\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n [$onChild](_) {\n return false;\n }\n}\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(...Object.values(NamespaceIds).map(({\n id\n }) => id));\n this._currentNamespace = rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n buildRoot(ids) {\n return new Root(ids);\n }\n build({\n nsPrefix,\n name,\n attributes,\n namespace,\n prefixes\n }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n if (prefixes) {\n this._addNamespacePrefix(prefixes);\n }\n if (Object.hasOwn(attributes, $nsAttributes)) {\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = {\n xfa: attrs\n };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node = namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic]()\n };\n }\n return node;\n }\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, {\n check\n }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n break;\n }\n }\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n _addNamespacePrefix(prefixes) {\n for (const {\n prefix,\n value\n } of prefixes) {\n const namespace = this._searchNamespace(value);\n this._namespacePrefixes.getOrInsertComputed(prefix, makeArr).push(namespace);\n }\n }\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack?.length > 0) {\n return prefixStack.at(-1);\n }\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n clean(data) {\n const {\n hasNamespace,\n prefixes,\n nsAgnostic\n } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n prefixes?.forEach(({\n prefix\n }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\n;// ./src/core/xfa/parser.js\n\n\n\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set()\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n parse(data) {\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n this._current[$finalize]();\n return this._current.element;\n }\n onText(text) {\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n onCdata(text) {\n this._current[$onText](text);\n }\n _mkAttributes(attributes, tagName) {\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const {\n name,\n value\n } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n prefixes ??= [];\n prefixes.push({\n prefix,\n value\n });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n const nsAttrs = attributeObj[$nsAttributes] ??= Object.create(null);\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n const attrs = nsAttrs[ns] ||= Object.create(null);\n attrs[attrName] = value;\n }\n }\n }\n return [namespace, prefixes, attributeObj];\n }\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);\n const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes\n });\n node[$globalData] = this._globalData;\n if (isEmpty) {\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n this._stack.push(this._current);\n this._current = node;\n }\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/xfa/factory.js\n\n\n\n\n\n\n\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n isValid() {\n return !!(this.root && this.form);\n }\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const {\n width,\n height\n } = c.attributes.style;\n return [0, 0, parseInt(width, 10), parseInt(height, 10)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n setImages(images) {\n this.form[$globalData].images = images;\n }\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n return null;\n }\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n static _createDocument(data) {\n return !data.get(\"/xdp:xdp\") ? data.get(\"xdp:xdp\") : data.values().join(\"\");\n }\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n try {\n let root = new XFAParser(XhtmlNamespace, true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n const {\n html\n } = result;\n const {\n attributes\n } = html;\n if (attributes) {\n attributes.class &&= attributes.class.filter(attr => !attr.startsWith(\"xfa\"));\n attributes.dir = \"auto\";\n }\n return {\n html,\n str: root[$text]()\n };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\n;// ./src/core/annotation.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationFactory {\n static createGlobals(pdfManager) {\n return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\"), pdfManager.ensureCatalog(\"globalColorSpaceCache\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments, globalColorSpaceCache]) => ({\n pdfManager,\n catalog: pdfManager.pdfDocument.catalog,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n xfaDatasets,\n structTreeRoot,\n baseUrl,\n attachments,\n globalColorSpaceCache\n }), reason => {\n warn(`createGlobals: \"${reason}\".`);\n return null;\n });\n }\n static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageRef) {\n const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null;\n return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageIndex, pageRef]);\n }\n static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, collectByType = null, pageIndex = null, pageRef = null) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n if (collectByType && !collectByType.has(AnnotationType[subtype?.toUpperCase()])) {\n return null;\n }\n const {\n acroForm,\n pdfManager\n } = annotationGlobals;\n const id = ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n annotationGlobals,\n collectFields,\n orphanFields,\n needAppearances: !collectFields && acroForm.get(\"NeedAppearances\") === true,\n pageIndex,\n evaluatorOptions: pdfManager.evaluatorOptions,\n pageRef\n };\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n case \"Text\":\n return new TextAnnotation(parameters);\n case \"Widget\":\n let fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(`Unimplemented widget field type \"${fieldType}\", ` + \"falling back to base field type.\");\n return new WidgetAnnotation(parameters);\n case \"Popup\":\n return new PopupAnnotation(parameters);\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n case \"Line\":\n return new LineAnnotation(parameters);\n case \"Square\":\n return new SquareAnnotation(parameters);\n case \"Circle\":\n return new CircleAnnotation(parameters);\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n case \"Caret\":\n return new CaretAnnotation(parameters);\n case \"Ink\":\n return new InkAnnotation(parameters);\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n case \"Stamp\":\n return new StampAnnotation(parameters);\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n case \"RichMedia\":\n return new RichMediaAnnotation(parameters);\n case \"Screen\":\n return new ScreenAnnotation(parameters);\n case \"Sound\":\n return new SoundAnnotation(parameters);\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(`Unimplemented annotation type \"${subtype}\", ` + \"falling back to base annotation.\");\n }\n }\n return new Annotation(parameters);\n }\n }\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (pageRef instanceof Ref) {\n try {\n return await pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n } catch (ex) {\n info(`_getPageIndex -- not a valid page reference: \"${ex}\".`);\n }\n }\n if (annotDict.has(\"Kids\")) {\n return -1;\n }\n const numPages = await pdfManager.ensureDoc(\"numPages\");\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n const page = await pdfManager.getPage(pageIndex);\n const annotations = await pdfManager.ensure(page, \"annotations\");\n for (const annotRef of annotations) {\n if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\n return pageIndex;\n }\n }\n }\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n }\n return -1;\n }\n static generateImages(annotations, xref, isOffscreenCanvasSupported) {\n if (!isOffscreenCanvasSupported) {\n warn(\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\");\n return null;\n }\n let imagePromises;\n for (const {\n bitmapId,\n bitmap\n } of annotations) {\n if (!bitmap) {\n continue;\n }\n imagePromises ||= new Map();\n imagePromises.set(bitmapId, createImage(bitmap, xref));\n }\n return imagePromises;\n }\n static async saveNewAnnotations(evaluator, xref, task, annotations, imagePromises, changes) {\n let baseFontRef;\n const promises = [];\n const {\n isOffscreenCanvasSupported\n } = evaluator.options;\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n if (!baseFontRef) {\n const baseFont = new Dict(xref);\n baseFont.setIfName(\"BaseFont\", \"Helvetica\");\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type1\");\n baseFont.setIfName(\"Encoding\", \"WinAnsiEncoding\");\n baseFontRef = xref.getNewTemporaryRef();\n changes.put(baseFontRef, {\n data: baseFont\n });\n }\n promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\n evaluator,\n task,\n baseFontRef\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes));\n } else {\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n break;\n case AnnotationEditorType.STAMP:\n const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n smaskStream\n } = image;\n if (smaskStream) {\n const smaskRef = xref.getNewTemporaryRef();\n changes.put(smaskRef, {\n data: smaskStream\n });\n imageStream.dict.set(\"SMask\", smaskRef);\n }\n const imageRef = image.imageRef = xref.getNewTemporaryRef();\n changes.put(imageRef, {\n data: imageStream\n });\n image.imageStream = null;\n image.imageRenderStream = null;\n image.smaskStream = null;\n image.smaskRenderStream = null;\n }\n promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {\n image\n }));\n break;\n case AnnotationEditorType.SIGNATURE:\n promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {}));\n break;\n }\n }\n return {\n annotations: (await Promise.all(promises)).flat()\n };\n }\n static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) {\n if (!annotations) {\n return null;\n }\n const {\n options,\n xref\n } = evaluator;\n const promises = [];\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n promises.push(FreeTextAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluator,\n task,\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n } else {\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.STAMP:\n const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n imageRenderStream,\n smaskStream,\n smaskRenderStream\n } = image;\n const imageRef = imageRenderStream || new JpegStream(imageStream, imageStream.length);\n if (smaskStream || smaskRenderStream) {\n imageRef.dict.set(\"SMask\", smaskRenderStream || smaskStream);\n }\n image.imageRef = imageRef;\n image.imageStream = null;\n image.imageRenderStream = null;\n image.smaskStream = null;\n image.smaskRenderStream = null;\n }\n promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n image,\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.SIGNATURE:\n promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n break;\n }\n }\n return Promise.all(promises);\n }\n}\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0:\n return null;\n case 1:\n ColorSpaceUtils.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 3:\n ColorSpaceUtils.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 4:\n ColorSpaceUtils.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n default:\n return defaultColor;\n }\n}\nfunction getPdfColorArray(color, defaultValue = null) {\n return color && Array.from(color, c => c / 255) || defaultValue;\n}\nfunction getQuadPoints(dict, rect) {\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n return null;\n }\n const newQuadPoints = new Float32Array(quadPoints.length);\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\n const minX = Math.min(x1, x2, x3, x4);\n const maxX = Math.max(x1, x2, x3, x4);\n const minY = Math.min(y1, y2, y3, y4);\n const maxY = Math.max(y1, y2, y3, y4);\n if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) {\n return null;\n }\n newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\n }\n return newQuadPoints;\n}\nfunction getTransformMatrix(rect, bbox, matrix) {\n const minMax = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(bbox, matrix, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n if (minX === maxX || minY === maxY) {\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\nfunction writeLineToCurveToAppearance(data, buffer, maybeClose = false) {\n buffer.push(`${numberToString(data[4])} ${numberToString(data[5])} m`);\n for (let i = 6, ii = data.length; i < ii; i += 6) {\n if (isNaN(data[i])) {\n buffer.push(`${numberToString(data[i + 4])} ${numberToString(data[i + 5])} l`);\n } else {\n const curve = data.slice(i, i + 6);\n buffer.push(`${curve.map(numberToString).join(\" \")} c`);\n }\n }\n if (maybeClose && data.length === 6) {\n buffer.push(`${numberToString(data[4])} ${numberToString(data[5])} l`);\n }\n}\nclass Annotation {\n appearance = null;\n _oc = undefined;\n constructor(params) {\n const {\n annotationGlobals,\n dict,\n orphanFields,\n ref,\n subtype,\n xref\n } = params;\n const parentRef = orphanFields?.get(ref);\n if (parentRef) {\n dict.set(\"Parent\", parentRef);\n }\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.#setOptionalContent(xref, dict);\n const MK = dict.get(\"MK\");\n this.setBorderAndBackgroundColors(MK);\n this.setRotation(MK, dict);\n this.ref = params.ref instanceof Ref ? params.ref : null;\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\n const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\n this.data = {\n annotationType: AnnotationType[subtype?.toUpperCase()],\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n rotation: this.rotation,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n oc: this._oc,\n rect: this.rectangle,\n subtype,\n hasOwnCanvas: false,\n noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\n noHTML: isLocked && isContentLocked,\n isEditable: false,\n structParent: -1\n };\n if (annotationGlobals.structTreeRoot) {\n let structParent = dict.get(\"StructParent\");\n this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent, this.ref);\n }\n if (params.collectFields) {\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n const it = dict.get(\"IT\");\n if (it instanceof Name) {\n this.data.it = it.name;\n }\n this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported;\n this._fallbackFontDict = null;\n this._needAppearances = false;\n }\n _getOperatorListNoAppearance() {\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false\n };\n }\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n _buildFlags(noView, noPrint) {\n let {\n flags\n } = this;\n if (noView === undefined) {\n if (noPrint === undefined) {\n return undefined;\n }\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT;\n }\n if (noView) {\n flags |= AnnotationFlag.PRINT;\n if (noPrint) {\n return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW;\n }\n flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags | AnnotationFlag.PRINT;\n }\n _isViewable(flags) {\n return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n }\n _isPrintable(flags) {\n return this._hasFlag(flags, AnnotationFlag.PRINT) && !this._hasFlag(flags, AnnotationFlag.HIDDEN) && !this._hasFlag(flags, AnnotationFlag.INVISIBLE);\n }\n mustBeViewed(annotationStorage, _renderForms) {\n const noView = annotationStorage?.get(this.data.id)?.noView;\n if (noView !== undefined) {\n return !noView;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n mustBePrinted(annotationStorage) {\n const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\n if (noPrint !== undefined) {\n return !noPrint;\n }\n return this.printable;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\n }\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n return {\n str,\n dir\n };\n }\n setDefaultAppearance(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n const defaultAppearance = getInheritableProperty({\n dict,\n key: \"DA\"\n }) || annotationGlobals.acroForm.get(\"DA\");\n this._defaultAppearance = typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance);\n }\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n setModificationDate(modificationDate) {\n this.modificationDate = typeof modificationDate === \"string\" ? modificationDate : null;\n }\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n if (this.flags & AnnotationFlag.INVISIBLE && this.constructor.name !== \"Annotation\") {\n this.flags ^= AnnotationFlag.INVISIBLE;\n }\n }\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n setRectangle(rectangle) {\n this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\n }\n setColor(color) {\n this.color = getRgbColor(color);\n }\n setLineEndings(lineEndings) {\n this.lineEndings = [\"None\", \"None\"];\n if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n for (let i = 0; i < 2; i++) {\n const obj = lineEndings[i];\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"None\":\n continue;\n case \"Square\":\n case \"Circle\":\n case \"Diamond\":\n case \"OpenArrow\":\n case \"ClosedArrow\":\n case \"Butt\":\n case \"ROpenArrow\":\n case \"RClosedArrow\":\n case \"Slash\":\n this.lineEndings[i] = obj.name;\n continue;\n }\n }\n warn(`Ignoring invalid lineEnding: ${obj}`);\n }\n }\n }\n setRotation(mk, dict) {\n this.rotation = 0;\n let angle = mk instanceof Dict ? mk.get(\"R\") || 0 : dict.get(\"Rotate\") || 0;\n if (Number.isInteger(angle) && angle !== 0) {\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n if (angle % 90 === 0) {\n this.rotation = angle;\n }\n }\n }\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n setBorderStyle(borderStyle) {\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n if (dict instanceof Dict) {\n const dictType = dict.get(\"Type\");\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array)) {\n if (array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n if (array.length === 4) {\n this.borderStyle.setDashArray(array[3], true);\n }\n } else if (array.length === 0) {\n this.borderStyle.setWidth(0);\n }\n }\n } else {\n this.borderStyle.setWidth(0);\n }\n }\n setAppearance(dict) {\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n const as = dict.get(\"AS\");\n if (!(as instanceof Name)) {\n return;\n }\n const appearance = normalAppearanceState.get(as.name);\n if (appearance instanceof BaseStream) {\n this.appearance = appearance;\n }\n }\n #setOptionalContent(xref, dict) {\n if (dict.has(\"OC\")) {\n try {\n this._oc = parseMarkedContentProps(xref, dict.get(\"OC\"), null);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`#setOptionalContent: ${ex}`);\n }\n }\n }\n async loadResources(keys, appearance) {\n const resources = await appearance.dict.getAsync(\"Resources\");\n if (resources) {\n await ObjectLoader.load(resources, keys, resources.xref);\n }\n return resources;\n }\n get _ownCanvasRequiresForms() {\n return false;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n const {\n hasOwnCanvas,\n id,\n rect\n } = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY && (!this._ownCanvasRequiresForms || intent & RenderingIntentFlag.ANNOTATIONS_FORMS));\n if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) {\n this.data.hasOwnCanvas = false;\n return this._getOperatorListNoAppearance();\n }\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return this._getOperatorListNoAppearance();\n }\n appearance = new StringStream(\"\", new Dict());\n }\n const appearanceDict = appearance.dict;\n const resources = await this.loadResources(RESOURCES_KEYS_OPERATOR_LIST, appearance);\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), [0, 0, this.width, this.height]);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const transform = getTransformMatrix(rect, bbox, matrix);\n const opList = new OperatorList();\n const optionalContent = this._oc;\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [id, rect, transform, matrix, isUsingOwnCanvas]);\n await evaluator.getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n this.reset();\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n async save(evaluator, task, annotationStorage, changes) {\n return null;\n }\n get overlaysTextContent() {\n return false;\n }\n get hasTextContent() {\n return false;\n }\n async extractTextContent(evaluator, task, viewBox) {\n if (!this.appearance) {\n return;\n }\n const resources = await this.loadResources(RESOURCES_KEYS_TEXT_CONTENT, this.appearance);\n const text = [];\n const buffer = [];\n let firstPositionX = Infinity;\n let firstPositionY = Infinity;\n let firstPosition = null;\n const sink = {\n desiredSize: Math.Infinity,\n ready: true,\n enqueue(chunk, size) {\n for (const item of chunk.items) {\n if (item.str === undefined) {\n continue;\n }\n firstPositionX = Math.min(firstPositionX, item.transform[4]);\n firstPositionY = Math.min(firstPositionY, item.transform[5]);\n buffer.push(item.str);\n if (item.hasEOL) {\n text.push(buffer.join(\"\").trimEnd());\n buffer.length = 0;\n }\n }\n }\n };\n await evaluator.getTextContent({\n stream: this.appearance,\n task,\n resources,\n includeMarkedContent: true,\n keepWhiteSpace: true,\n sink,\n viewBox\n });\n this.reset();\n if (firstPositionX !== Infinity) {\n firstPosition = [firstPositionX, firstPositionY];\n }\n if (buffer.length) {\n text.push(buffer.join(\"\").trimEnd());\n }\n if (text.length > 1 || text[0]) {\n const appearanceDict = this.appearance.dict;\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), null);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), null);\n this.data.textPosition = this._transformPoint(firstPosition, bbox, matrix);\n this.data.textContent = text;\n }\n }\n _transformPoint(coords, bbox, matrix) {\n const {\n rect\n } = this.data;\n bbox ||= [0, 0, 1, 1];\n matrix ||= [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(rect, bbox, matrix);\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n const p = coords.slice();\n Util.applyTransform(p, transform);\n Util.applyTransform(p, matrix);\n return p;\n }\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n rotation: this.rotation\n };\n }\n return null;\n }\n reset() {\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n _constructFieldName(dict) {\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (!(loopDict instanceof Dict) || loopDict.objId && visited.has(loopDict.objId)) {\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n _getAttachmentId(fsDict, fsRef, annotationGlobals, isSound = false) {\n if (!(fsDict instanceof Dict)) {\n return undefined;\n }\n if (!(fsRef instanceof Ref)) {\n fsRef = FileSpec.pickPlatformItem(fsDict.get(\"EF\"), true);\n }\n return fsRef instanceof Ref ? annotationGlobals.catalog.getAttachmentIdForAnnotation(fsRef, isSound) : undefined;\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass AnnotationBorderStyle {\n width = 1;\n rawWidth = 1;\n style = AnnotationBorderStyleType.SOLID;\n dashArray = [3];\n horizontalCornerRadius = 0;\n verticalCornerRadius = 0;\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (width instanceof Name) {\n this.width = 0;\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n this.rawWidth = width;\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n default:\n break;\n }\n }\n setDashArray(dashArray, forceStyle = false) {\n if (Array.isArray(dashArray)) {\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (dashArray.length === 0 || isValid && !allZeros) {\n this.dashArray = dashArray;\n if (forceStyle) {\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0;\n }\n } else if (dashArray) {\n this.width = 0;\n }\n }\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\nclass MarkupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n const rt = dict.get(\"RT\");\n this.data.replyType = rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n let popupRef = null;\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n const parent = dict.get(\"IRT\");\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n popupRef = parent.getRaw(\"Popup\");\n if (!parent.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n popupRef = dict.getRaw(\"Popup\");\n if (!dict.has(\"C\")) {\n this.data.color = null;\n }\n }\n this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback\n }) {\n const bbox = this.data.rect = BBOX_INIT.slice();\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n const pointsArray = this.data.quadPoints || Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]);\n for (let i = 0, ii = pointsArray.length; i < ii; i += 8) {\n const points = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\n Util.rectBoundingBox(...points, bbox);\n }\n buffer.push(\"Q\");\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n const appearanceStream = new StringStream(buffer.join(\" \"), appearanceStreamDict);\n formDict.set(\"Fm0\", appearanceStream);\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.setIfName(\"BM\", blendMode);\n }\n gsDict.setIfNumber(\"CA\", strokeAlpha);\n gsDict.setIfNumber(\"ca\", fillAlpha);\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n appearanceDict.set(\"BBox\", bbox);\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\", appearanceDict);\n this._streams.push(this.appearance, appearanceStream);\n }\n static async createNewAnnotation(xref, annotation, changes, params) {\n const annotationRef = annotation.ref ||= xref.getNewTemporaryRef();\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n let annotationDict;\n if (ap) {\n const apRef = xref.getNewTemporaryRef();\n annotationDict = this.createNewDict(annotation, xref, {\n apRef\n });\n changes.put(apRef, {\n data: ap\n });\n } else {\n annotationDict = this.createNewDict(annotation, xref, {});\n }\n if (Number.isInteger(annotation.parentTreeId)) {\n annotationDict.set(\"StructParent\", annotation.parentTreeId);\n }\n changes.put(annotationRef, {\n data: annotationDict\n });\n const retRef = {\n ref: annotationRef\n };\n const {\n popup\n } = annotation;\n if (popup) {\n if (popup.deleted) {\n annotationDict.delete(\"Popup\");\n annotationDict.delete(\"Contents\");\n annotationDict.delete(\"RC\");\n return retRef;\n }\n const popupRef = popup.ref ||= xref.getNewTemporaryRef();\n popup.parent = annotationRef;\n const popupDict = PopupAnnotation.createNewDict(popup, xref);\n changes.put(popupRef, {\n data: popupDict\n });\n annotationDict.setIfDefined(\"Contents\", stringToAsciiOrUTF16BE(popup.contents));\n annotationDict.set(\"Popup\", popupRef);\n return [retRef, {\n ref: popupRef\n }];\n }\n return retRef;\n }\n static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) {\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n const annotationDict = this.createNewDict(annotation, xref, ap ? {\n ap\n } : {});\n const newAnnotation = new this.prototype.constructor({\n dict: annotationDict,\n xref,\n annotationGlobals,\n evaluatorOptions: params.evaluatorOptions\n });\n if (annotation.ref) {\n newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\n }\n return newAnnotation;\n }\n}\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const data = this.data;\n this._needAppearances = params.needAppearances;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(xref, dict, AnnotationActionEventType);\n }\n let fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\n const path = this._title.str;\n if (path) {\n this._hasValueFromXFA = true;\n data.fieldValue = fieldValue = annotationGlobals.xfaDatasets.getValue(path);\n }\n }\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n this.setDefaultAppearance(params);\n data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null;\n const fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n const localResources = getInheritableProperty({\n dict,\n key: \"DR\"\n });\n const acroFormResources = annotationGlobals.acroForm.get(\"DR\");\n const appearanceResources = this.appearance?.dict.get(\"Resources\");\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true\n })\n };\n data.fieldFlags = getInheritableProperty({\n dict,\n key: \"Ff\"\n });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\n }\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n const arr = formValue.map(item => this._decodeFormValue(item)).filter(item => item !== null);\n return arr.length > 0 ? arr : null;\n } else if (formValue instanceof Name) {\n return formValue.name;\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n _isViewable(flags) {\n return true;\n }\n mustBeViewed(annotationStorage, renderForms) {\n if (renderForms) {\n return this.viewable;\n }\n return super.mustBeViewed(annotationStorage, renderForms) && !this._hasFlag(this.flags, AnnotationFlag.NOVIEW);\n }\n getRotationMatrix(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n return rotation === 0 ? IDENTITY_MATRIX : getRotationMatrix(rotation, this.width, this.height);\n }\n getBorderAndBackgroundAppearances(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (!this.backgroundColor && !this.borderColor) {\n return \"\";\n }\n const rect = rotation === 0 || rotation === 180 ? `0 0 ${this.width} ${this.height} re` : `0 0 ${this.height} ${this.width} re`;\n let str = \"\";\n if (this.backgroundColor) {\n str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `;\n }\n if (this.borderColor) {\n const borderWidth = this.borderStyle.width || 1;\n str += `${borderWidth} w ${getPdfColor(this.borderColor, false)} ${rect} S `;\n }\n return str;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n const list = this._getOperatorListNoAppearance();\n list.separateForm = true;\n return list;\n }\n if (!this._hasText) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const content = await this._getAppearance(evaluator, task, intent, annotationStorage);\n if (this.appearance && content === null) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const opList = new OperatorList();\n if (!this._defaultAppearance || content === null) {\n return {\n opList,\n separateForm: false,\n separateCanvas: false\n };\n }\n const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [0, 0, this.width, this.height];\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n const optionalContent = this._oc;\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), isUsingOwnCanvas]);\n const stream = new StringStream(content);\n await evaluator.getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList: opList\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n _getMKDict(rotation) {\n const mk = new Dict(null);\n if (rotation) {\n mk.set(\"R\", rotation);\n }\n mk.setIfArray(\"BC\", getPdfColorArray(this.borderColor));\n mk.setIfArray(\"BG\", getPdfColorArray(this.backgroundColor));\n return mk.size > 0 ? mk : null;\n }\n amendSavedDict(annotationStorage, dict) {}\n setValue(dict, value, xref, changes) {\n const {\n dict: parentDict,\n ref: parentRef\n } = getParentToUpdate(dict, this.ref, xref);\n if (!parentDict) {\n dict.set(\"V\", value);\n } else if (!changes.has(parentRef)) {\n const newParentDict = parentDict.clone();\n newParentDict.set(\"V\", value);\n changes.put(parentRef, {\n data: newParentDict\n });\n return newParentDict;\n }\n return null;\n }\n async save(evaluator, task, annotationStorage, changes) {\n const storageEntry = annotationStorage?.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let value = storageEntry?.value,\n rotation = storageEntry?.rotation;\n if (value === this.data.fieldValue || value === undefined) {\n if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) {\n return;\n }\n value ||= this.data.fieldValue;\n }\n if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) {\n return;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let appearance = null;\n if (!this._needAppearances) {\n appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage);\n if (appearance === null && flags === undefined) {\n return;\n }\n } else {}\n let needAppearances = false;\n if (appearance?.needAppearances) {\n needAppearances = true;\n appearance = null;\n }\n const {\n xref\n } = evaluator;\n const originalDict = xref.fetchIfRef(this.ref);\n if (!(originalDict instanceof Dict)) {\n return;\n }\n const dict = new Dict(xref);\n for (const [key, rawVal] of originalDict.getRawEntries()) {\n if (key !== \"AP\") {\n dict.set(key, rawVal);\n }\n }\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n if (appearance === null && !needAppearances) {\n const ap = originalDict.getRaw(\"AP\");\n if (ap) {\n dict.set(\"AP\", ap);\n }\n }\n }\n const xfa = {\n path: this.data.fieldName,\n value\n };\n const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes);\n this.amendSavedDict(annotationStorage, newParentDict || dict);\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances\n });\n if (appearance !== null) {\n const newRef = xref.getNewTemporaryRef();\n const AP = new Dict(xref);\n dict.set(\"AP\", AP);\n AP.set(\"N\", newRef);\n const resources = this._getSaveFieldResources(xref),\n appearanceDict = new Dict(xref);\n appearanceDict.setIfName(\"Subtype\", \"Form\");\n appearanceDict.set(\"Resources\", resources);\n const bbox = rotation % 180 === 0 ? [0, 0, this.width, this.height] : [0, 0, this.height, this.width];\n appearanceDict.set(\"BBox\", bbox);\n const appearanceStream = new StringStream(appearance, appearanceDict);\n const rotationMatrix = this.getRotationMatrix(annotationStorage);\n if (rotationMatrix !== IDENTITY_MATRIX) {\n appearanceDict.set(\"Matrix\", rotationMatrix);\n }\n changes.put(newRef, {\n data: appearanceStream,\n xfa: null,\n needAppearances: false\n });\n }\n dict.set(\"M\", `D:${getModificationDate()}`);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.password) {\n return null;\n }\n const storageEntry = annotationStorage?.get(this.data.id);\n let value, rotation;\n if (storageEntry) {\n value = storageEntry.formattedValue || storageEntry.value;\n rotation = storageEntry.rotation;\n }\n if (rotation === undefined && value === undefined && !this._needAppearances) {\n if (!this._hasValueFromXFA || this.appearance) {\n return null;\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n if (value === undefined) {\n value = this.data.fieldValue;\n if (!value) {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n }\n if (Array.isArray(value) && value.length === 1) {\n value = value[0];\n }\n assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n value = value.trimEnd();\n if (this.data.combo) {\n const option = this.data.options.find(({\n exportValue\n }) => value === exportValue);\n value = option?.displayValue || value;\n }\n if (value === \"\") {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let lineCount = -1;\n let lines;\n if (this.data.multiLine) {\n lines = value.split(/\\r\\n?|\\n/).map(line => line.normalize(\"NFC\"));\n lineCount = lines.length;\n } else {\n lines = [value.replace(/\\r\\n?|\\n/, \"\").normalize(\"NFC\")];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let {\n width: totalWidth,\n height: totalHeight\n } = this;\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance, fontSize, lineHeight;\n const encodedLines = [];\n let encodingError = false;\n for (const line of lines) {\n const encodedString = font.encodeString(line);\n if (encodedString.length > 1) {\n encodingError = true;\n }\n encodedLines.push(encodedString.join(\"\"));\n }\n if (encodingError && intent & RenderingIntentFlag.SAVE) {\n return {\n needAppearances: true\n };\n }\n if (encodingError && this._isOffscreenCanvasSupported) {\n const fontFamily = this.data.comb ? \"monospace\" : \"sans-serif\";\n const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\n const resources = fakeUnicodeFont.createFontResources(lines.join(\"\"));\n const newFont = resources.getRaw(\"Font\");\n if (this._fieldResources.mergedResources.has(\"Font\")) {\n const oldFont = this._fieldResources.mergedResources.get(\"Font\");\n for (const [key, rawVal] of newFont.getRawEntries()) {\n oldFont.set(key, rawVal);\n }\n } else {\n this._fieldResources.mergedResources.set(\"Font\", newFont);\n }\n const fontName = fakeUnicodeFont.fontName.name;\n font = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName,\n fontSize: 0\n }, resources);\n for (let i = 0, ii = encodedLines.length; i < ii; i++) {\n encodedLines[i] = stringToUTF16String(lines[i]);\n }\n const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData);\n this.data.defaultAppearanceData.fontSize = 0;\n this.data.defaultAppearanceData.fontName = fontName;\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n this.data.defaultAppearanceData = savedDefaultAppearance;\n } else {\n if (!this._isOffscreenCanvasSupported) {\n warn(\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n }\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = BASELINE_FACTOR * lineHeight;\n } else {\n descent = Math.max(BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize);\n }\n const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding);\n const alignment = this.data.textAlignment;\n let {\n ascent: fontAscent,\n descent: fontDescent\n } = font;\n if (isNaN(fontAscent) || isNaN(fontDescent) || !fontAscent && !fontDescent) {\n fontAscent = (/* inlined export .LINE_FACTOR */1.35) - (/* inlined export .LINE_DESCENT_FACTOR */0.35);\n fontDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35);\n } else {\n fontDescent = Math.abs(fontDescent);\n }\n const vShift = (totalHeight - (fontAscent + fontDescent) * fontSize) / 2 + fontDescent * fontSize;\n if (this.data.multiLine) {\n return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n }\n if (this.data.comb) {\n return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, vShift, alignment, bidi(lines[0]).dir === \"rtl\", annotationStorage);\n }\n const bottomPadding = vShift;\n if (alignment === 0 || alignment > 2) {\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(bottomPadding)} Tm (${escapeString(encodedLines[0])}) Tj` + \" ET Q EMC\";\n }\n const prevInfo = {\n shift: 0\n };\n const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding);\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n }\n static async _getFontData(evaluator, task, appearanceData, resources) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n }\n };\n const {\n fontName,\n fontSize\n } = appearanceData;\n await evaluator.handleSetFont(resources, [fontName && Name.get(fontName), fontSize], null, operatorList, task, initialState, null);\n return initialState.font;\n }\n _getTextWidth(text, font) {\n return Math.sumPrecise(font.charsToGlyphs(text).map(g => g.width)) / 1000;\n }\n _computeFontSize(height, width, text, font, lineCount) {\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n let lineHeight = (fontSize || 12) * (/* inlined export .LINE_FACTOR */1.35),\n numberOfLines = Math.round(height / lineHeight);\n if (!fontSize) {\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(Math.min(height / (/* inlined export .LINE_FACTOR */1.35), width / textWidth));\n numberOfLines = 1;\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions\n });\n }\n const isTooBig = fsize => {\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n numberOfLines = Math.max(numberOfLines, lineCount);\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / (/* inlined export .LINE_FACTOR */1.35));\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n break;\n }\n }\n const {\n fontName,\n fontColor\n } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n });\n }\n return [this._defaultAppearance, fontSize, height / numberOfLines];\n }\n _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) {\n let shift;\n if (alignment === 1) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n const shiftStr = numberToString(shift - prevInfo.shift);\n prevInfo.shift = shift;\n vPadding = numberToString(vPadding);\n return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n _getSaveFieldResources(xref) {\n const {\n localResources,\n appearanceResources,\n acroFormResources\n } = this._fieldResources;\n const fontName = this.data.defaultAppearanceData?.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true\n });\n }\n }\n return localResources || Dict.empty;\n }\n getFieldObject() {\n return null;\n }\n}\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"PMD\")) {\n this.flags |= AnnotationFlag.HIDDEN;\n this.data.hidden = true;\n warn(\"Barcodes are not supported\");\n }\n this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\n this._hasText = true;\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n let alignment = getInheritableProperty({\n dict,\n key: \"Q\"\n });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n let maximumLength = getInheritableProperty({\n dict,\n key: \"MaxLen\"\n });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = 0;\n }\n this.data.maxLen = maximumLength;\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.data.multiLine && !this.data.password && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n const {\n actions\n } = this.data;\n if (!actions) {\n return;\n }\n const AFDateTime = /^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\\(['\"]?([^'\"]+)['\"]?\\);$/;\n let canUseHTMLDateTime = false;\n const aFormat = actions.get(\"Format\"),\n aKeystroke = actions.get(\"Keystroke\");\n if (aFormat?.length === 1 && aKeystroke?.length === 1 && AFDateTime.test(aFormat[0]) && AFDateTime.test(aKeystroke[0]) || aFormat?.length === 0 && aKeystroke?.length === 1 && AFDateTime.test(aKeystroke[0]) || aKeystroke?.length === 0 && aFormat?.length === 1 && AFDateTime.test(aFormat[0])) {\n canUseHTMLDateTime = true;\n }\n const actionsToVisit = [];\n if (aFormat) {\n actionsToVisit.push(...aFormat);\n }\n if (aKeystroke) {\n actionsToVisit.push(...aKeystroke);\n }\n if (canUseHTMLDateTime) {\n actions.delete(\"Keystroke\");\n actions.set(\"Format\", actionsToVisit);\n }\n for (const formatAction of actionsToVisit) {\n const m = formatAction.match(AFDateTime);\n if (!m) {\n continue;\n }\n const isDate = m[1] === \"Date\";\n let format = m[2];\n const num = parseInt(format, 10);\n if (!isNaN(num) && Math.floor(Math.log10(num)) + 1 === m[2].length) {\n format = (isDate ? DateFormats : TimeFormats)[num] ?? format;\n }\n this.data.datetimeFormat = format;\n if (!canUseHTMLDateTime) {\n break;\n }\n if (isDate) {\n if (/HH|MM|ss|h/.test(format)) {\n this.data.datetimeType = \"datetime-local\";\n this.data.timeStep = /ss/.test(format) ? 1 : 60;\n } else {\n this.data.datetimeType = \"date\";\n }\n break;\n }\n this.data.datetimeType = \"time\";\n this.data.timeStep = /ss/.test(format) ? 1 : 60;\n break;\n }\n }\n get hasTextContent() {\n return !!this.appearance && !this._needAppearances;\n }\n _getCombAppearance(defaultAppearance, font, text, fontSize, width, vShift, alignment, isRTL, annotationStorage) {\n const combWidth = width / this.data.maxLen;\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const cells = font.getCharPositions(text).map(([start, end]) => {\n const glyph = text.substring(start, end);\n return {\n glyph,\n width: this._getTextWidth(glyph, font) * fontSize\n };\n });\n if (isRTL) {\n cells.reverse();\n }\n const textWidth = combWidth * cells.length;\n let hShift = 0;\n if (alignment === 1) {\n hShift += Math.floor((width - textWidth) / (2 * combWidth)) * combWidth;\n } else if (alignment === 2) {\n hShift += width - textWidth;\n }\n const buf = [];\n let previousWidth = 0;\n for (let i = 0, ii = cells.length; i < ii; i++) {\n const {\n glyph,\n width: glyphWidth\n } = cells[i];\n const shift = i === 0 ? (combWidth - glyphWidth) / 2 : combWidth + (previousWidth - glyphWidth) / 2;\n buf.push(`${numberToString(shift)} 0 Td (${escapeString(glyph)}) Tj`);\n previousWidth = glyphWidth;\n }\n const renderedComb = buf.join(\" \");\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(hShift)} ${numberToString(vShift)} Tm ${renderedComb}` + \" ET Q EMC\";\n }\n _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n const prevInfo = {\n shift: 0\n };\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (let j = 0, jj = chunks.length; j < jj; j++) {\n const chunk = chunks[j];\n const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\n buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift));\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const renderedText = buf.join(\"\\n\");\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` + \" ET Q EMC\";\n }\n _splitLine(line, font, fontSize, width, cache = {}) {\n line = cache.line || line;\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n if (glyphs.length <= 1) {\n return [line];\n }\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else if (currentWidth + glyphWidth > width) {\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk));\n }\n return chunks;\n }\n async extractTextContent(evaluator, task, viewBox) {\n await super.extractTextContent(evaluator, task, viewBox);\n const text = this.data.textContent;\n if (!text) {\n return;\n }\n const allText = text.join(\"\\n\");\n if (allText === this.data.fieldValue) {\n return;\n }\n const regex = allText.replaceAll(/([.*+?^${}()|[\\]\\\\])|(\\s+)/g, (_m, p1) => p1 ? `\\\\${p1}` : \"\\\\s+\");\n if (new RegExp(`^\\\\s*${regex}\\\\s*$`).test(this.data.fieldValue)) {\n this.data.textContent = this.data.fieldValue.split(\"\\n\");\n }\n }\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue || \"\",\n multiline: this.data.multiLine,\n password: this.data.password,\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n datetimeFormat: this.data.datetimeFormat,\n hasDatetimeHTML: !!this.data.datetimeType,\n type: \"text\"\n };\n }\n}\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO),\n isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.checkBox = !isRadio && !isPushButton;\n this.data.radioButton = isRadio && !isPushButton;\n this.data.pushButton = isPushButton;\n this.data.isTooltipOnly = false;\n this.data.hasOwnCanvas = true;\n this.data.noHTML = false;\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n get _ownCanvasRequiresForms() {\n return this.data.checkBox || this.data.radioButton;\n }\n #getOperatorListForAppearance(evaluator, task, intent, annotationStorage, rotation, appearance) {\n if (!appearance) {\n return this._getOperatorListNoAppearance();\n }\n const savedAppearance = this.appearance;\n const savedMatrix = lookupMatrix(appearance.dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n if (rotation) {\n appearance.dict.set(\"Matrix\", this.getRotationMatrix(annotationStorage));\n }\n this.appearance = appearance;\n const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage);\n this.appearance = savedAppearance;\n appearance.dict.set(\"Matrix\", savedMatrix);\n return operatorList;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (this.data.pushButton) {\n return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n }\n if (intent & RenderingIntentFlag.DISPLAY && intent & RenderingIntentFlag.ANNOTATIONS_FORMS && (this.data.checkBox || this.data.radioButton)) {\n const setCanvasName = (operatorList, name) => {\n const index = operatorList.fnArray.indexOf(OPS.beginAnnotation);\n if (index !== -1) {\n operatorList.argsArray[index].push(name);\n }\n };\n const checked = await this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, null, this.checkedAppearance);\n setCanvasName(checked.opList, \"checked\");\n const unchecked = await this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, null, this.uncheckedAppearance);\n setCanvasName(unchecked.opList, \"unchecked\");\n checked.opList.addOpList(unchecked.opList);\n checked.separateForm ||= unchecked.separateForm;\n checked.separateCanvas ||= unchecked.separateCanvas;\n return checked;\n }\n let value = null;\n let rotation = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n rotation = storageEntry ? storageEntry.rotation : null;\n }\n if (value === null && this.appearance) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n value ??= this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue;\n return this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, rotation, value ? this.checkedAppearance : this.uncheckedAppearance);\n }\n async save(evaluator, task, annotationStorage, changes) {\n if (this.data.checkBox) {\n this._saveCheckbox(evaluator, task, annotationStorage, changes);\n return;\n }\n if (this.data.radioButton) {\n this._saveRadioButton(evaluator, task, annotationStorage, changes);\n }\n }\n async _saveCheckbox(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (value === undefined) {\n value = this.data.fieldValue === this.data.exportValue;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.exportValue : \"\"\n };\n const name = Name.get(value ? this._onStateName : \"Off\");\n this.setValue(dict, name, evaluator.xref, changes);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\n });\n }\n async _saveRadioButton(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (value === undefined) {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.buttonValue : \"\"\n };\n const name = Name.get(value ? this._onStateName : \"Off\");\n if (value) {\n this.setValue(dict, name, evaluator.xref, changes);\n }\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\n });\n }\n _getDefaultCheckedAppearance(params, type) {\n const {\n width,\n height\n } = this;\n const bbox = [0, 0, width, height];\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n let metrics, char;\n if (type === \"check\") {\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n const xShift = numberToString((width - metrics.width) / 2);\n const yShift = numberToString((height - metrics.height) / 2);\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n appearanceStreamDict.set(\"Resources\", resources);\n this.checkedAppearance = new StringStream(appearance, appearanceStreamDict);\n this._streams.push(this.checkedAppearance);\n }\n _getOnStateName(dict) {\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return null;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return null;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n return key;\n }\n }\n return null;\n }\n _getExportValueForOptIndex(index, opt, xref) {\n if (Number.isInteger(index) && index >= 0 && index < opt.length) {\n const value = this._decodeFormValue(xref.fetchIfRef(opt[index]));\n if (typeof value === \"string\") {\n return value;\n }\n }\n return null;\n }\n _getOptInfo(dict, onState, opt, xref) {\n if (!Array.isArray(opt)) {\n return null;\n }\n const stateToIndex = new Map();\n let currentIndex = null;\n const fieldParent = dict.get(\"Parent\");\n const kids = fieldParent instanceof Dict ? fieldParent.get(\"Kids\") : null;\n if (Array.isArray(kids)) {\n for (let i = 0, ii = Math.min(kids.length, opt.length); i < ii; i++) {\n const kid = kids[i];\n if (kid instanceof Ref && isRefsEqual(kid, this.ref)) {\n currentIndex = i;\n }\n const kidDict = xref.fetchIfRef(kid);\n if (!(kidDict instanceof Dict)) {\n continue;\n }\n if (kidDict === dict) {\n currentIndex = i;\n }\n const kidOnState = this._getOnStateName(kidDict);\n if (typeof kidOnState === \"string\" && !stateToIndex.has(kidOnState)) {\n stateToIndex.set(kidOnState, i);\n }\n }\n } else if (opt.length === 1 && typeof onState === \"string\") {\n currentIndex = 0;\n stateToIndex.set(onState, 0);\n }\n return {\n currentIndex,\n opt,\n stateToIndex\n };\n }\n _getExportValue(state, optInfo, xref) {\n if (!optInfo || typeof state !== \"string\" || state === \"Off\") {\n return state;\n }\n if (state === this._onStateName) {\n const exportValue = this._getExportValueForOptIndex(optInfo.currentIndex, optInfo.opt, xref);\n if (exportValue !== null) {\n return exportValue;\n }\n }\n if (optInfo.stateToIndex.has(state)) {\n const exportValue = this._getExportValueForOptIndex(optInfo.stateToIndex.get(state), optInfo.opt, xref);\n if (exportValue !== null) {\n return exportValue;\n }\n }\n const index = parseInt(state, 10);\n if (Number.isInteger(index) && String(index) === state) {\n return this._getExportValueForOptIndex(index, optInfo.opt, xref) || state;\n }\n return state;\n }\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n let normalAppearance = customAppearance instanceof Dict ? customAppearance.get(\"N\") : null;\n if (!(normalAppearance instanceof Dict)) {\n normalAppearance = null;\n }\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\n const exportValues = normalAppearance ? [...normalAppearance.getKeys()] : [];\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n const onState = exportValues[1];\n this._onStateName = onState;\n const opt = getInheritableProperty({\n dict: params.dict,\n key: \"Opt\"\n });\n const optInfo = this._getOptInfo(params.dict, onState, opt, params.xref);\n this.data.exportValue = this._getExportValue(onState, optInfo, params.xref);\n if (!exportValues.includes(this.data.fieldValue) && this.data.fieldValue !== this.data.exportValue) {\n this.data.fieldValue = \"Off\";\n }\n this.data.fieldValue = this._getExportValue(this.data.fieldValue, optInfo, params.xref);\n this.data.defaultFieldValue = this._getExportValue(this.data.defaultFieldValue, optInfo, params.xref);\n const checkedAppearance = normalAppearance?.get(onState);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance?.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processRadioButton(params) {\n this.data.buttonValue = null;\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n let onState = null;\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n onState = key;\n break;\n }\n }\n this._onStateName = onState;\n const opt = getInheritableProperty({\n dict: params.dict,\n key: \"Opt\"\n });\n const optInfo = this._getOptInfo(params.dict, onState, opt, params.xref);\n this.data.buttonValue = this._getExportValue(onState, optInfo, params.xref);\n this.data.fieldValue = this._getExportValue(this.data.fieldValue, optInfo, params.xref);\n this.data.defaultFieldValue = this._getExportValue(this.data.defaultFieldValue, optInfo, params.xref);\n const checkedAppearance = normalAppearance.get(onState);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processPushButton(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n if (!dict.has(\"A\") && !dict.has(\"AA\") && !this.data.alternativeText) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n this.data.isTooltipOnly = !dict.has(\"A\") && !dict.has(\"AA\");\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\n });\n }\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type\n };\n }\n get fallbackFontDict() {\n const dict = new Dict();\n dict.setIfName(\"BaseFont\", \"ZapfDingbats\");\n dict.setIfName(\"Type\", \"FallbackType\");\n dict.setIfName(\"Subtype\", \"FallbackType\");\n dict.setIfName(\"Encoding\", \"ZapfDingbatsEncoding\");\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.indices = dict.getArray(\"I\");\n this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\n this.data.options = [];\n const options = getInheritableProperty({\n dict,\n key: \"Opt\"\n });\n if (Array.isArray(options)) {\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n this.data.options[i] = {\n exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n };\n }\n }\n if (!this.hasIndices) {\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else {\n this.data.fieldValue ||= [];\n }\n } else {\n this.data.fieldValue = [];\n const ii = this.data.options.length;\n for (const i of this.indices) {\n if (Number.isInteger(i) && i >= 0 && i < ii) {\n this.data.fieldValue.push(this.data.options[i].exportValue);\n }\n }\n }\n if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\n this.data.options = this.data.fieldValue.map(value => ({\n exportValue: value,\n displayValue: value\n }));\n }\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type\n };\n }\n amendSavedDict(annotationStorage, dict) {\n if (!this.hasIndices) {\n return;\n }\n let values = annotationStorage?.get(this.data.id)?.value;\n if (!Array.isArray(values)) {\n values = [values];\n }\n const indices = [];\n const {\n options\n } = this.data;\n for (let i = 0, j = 0, ii = options.length; i < ii; i++) {\n if (options[i].exportValue === values[j]) {\n indices.push(i);\n j += 1;\n }\n }\n dict.set(\"I\", indices);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.combo) {\n return super._getAppearance(evaluator, task, intent, annotationStorage);\n }\n let exportedValue, rotation;\n const storageEntry = annotationStorage?.get(this.data.id);\n if (storageEntry) {\n rotation = storageEntry.rotation;\n exportedValue = storageEntry.value;\n }\n if (rotation === undefined && exportedValue === undefined && !this._needAppearances) {\n return null;\n }\n if (exportedValue === undefined) {\n exportedValue = this.data.fieldValue;\n } else if (!Array.isArray(exportedValue)) {\n exportedValue = [exportedValue];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let {\n width: totalWidth,\n height: totalHeight\n } = this;\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n const lineCount = this.data.options.length;\n const valueIndices = [];\n for (let i = 0; i < lineCount; i++) {\n const {\n exportValue\n } = this.data.options[i];\n if (exportedValue.includes(exportValue)) {\n valueIndices.push(i);\n }\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance;\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n if (!fontSize) {\n const lineHeight = (totalHeight - defaultPadding) / lineCount;\n let lineWidth = -1;\n let value;\n for (const {\n displayValue\n } of this.data.options) {\n const width = this._getTextWidth(displayValue, font);\n if (width > lineWidth) {\n lineWidth = width;\n value = displayValue;\n }\n }\n [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1);\n } else {\n defaultAppearance = this._defaultAppearance;\n }\n const lineHeight = fontSize * (/* inlined export .LINE_FACTOR */1.35);\n const vPadding = (lineHeight - fontSize) / 2;\n const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n let firstIndex = 0;\n if (valueIndices.length > 0) {\n const minIndex = Math.min(...valueIndices);\n const maxIndex = Math.max(...valueIndices);\n firstIndex = MathClamp(maxIndex - numberOfVisibleLines + 1, 0, minIndex);\n }\n const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n if (valueIndices.length) {\n buf.push(\"0.600006 0.756866 0.854904 rg\");\n for (const index of valueIndices) {\n if (firstIndex <= index && index < end) {\n buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`);\n }\n }\n }\n buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n const prevInfo = {\n shift: 0\n };\n for (let i = firstIndex; i < end; i++) {\n const {\n displayValue\n } = this.data.options[i];\n const vpadding = i === firstIndex ? vPadding : 0;\n buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding));\n }\n buf.push(\"ET Q EMC\");\n return buf.join(\"\\n\");\n }\n}\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n _hasValueFromXFA = false;\n constructor(params) {\n super(params);\n this.data.fieldValue = null;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = !this.data.hasOwnCanvas;\n }\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\"\n };\n }\n}\nclass TextAnnotation extends MarkupAnnotation {\n constructor(params) {\n const DEFAULT_ICON_SIZE = 22;\n super(params);\n this.data.noRotate = true;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict\n } = params;\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n annotationGlobals\n } = params;\n this.data.noHTML = false;\n const quadPoints = getQuadPoints(dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n this.data.borderColor ||= this.data.color;\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\n });\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass PopupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n this.data.noHTML = false;\n if (this.width === 0 || this.height === 0) {\n this.data.rect = null;\n }\n let parentItem = dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n this.data.parentRect = lookupNormalRect(parentItem.getArray(\"Rect\"), null);\n this.data.creationDate = parentItem.get(\"CreationDate\") || \"\";\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n parentItem = parentItem.get(\"IRT\");\n }\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n if (!parentItem.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n this.data.open = !!dict.get(\"Open\");\n }\n static createNewDict(annotation, xref, _params) {\n const {\n oldAnnotation,\n rect,\n parent\n } = annotation;\n const popup = oldAnnotation || new Dict(xref);\n popup.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n popup.setIfNotExists(\"Subtype\", Name.get(\"Popup\"));\n popup.setIfNotExists(\"Open\", false);\n popup.setIfArray(\"Rect\", rect);\n popup.set(\"Parent\", parent);\n return popup;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n return null;\n }\n}\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n const {\n annotationGlobals,\n xref\n } = params;\n this.setDefaultAppearance(params);\n this._hasAppearance = !!this.appearance;\n if (this._hasAppearance) {\n const {\n fontColor,\n fontSize\n } = parseAppearanceStream(this.appearance, xref, annotationGlobals.globalColorSpaceCache);\n this.data.defaultAppearanceData.fontColor = fontColor;\n this.data.defaultAppearanceData.fontSize = fontSize || 10;\n } else {\n this.data.defaultAppearanceData.fontSize ||= 10;\n const {\n fontColor,\n fontSize\n } = this.data.defaultAppearanceData;\n if (this._contents.str) {\n this.data.textContent = this._contents.str.split(/\\r\\n?|\\n/).map(line => line.trimEnd());\n const {\n coords,\n bbox,\n matrix\n } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, fontSize);\n this.data.textPosition = this._transformPoint(coords, bbox, matrix);\n }\n if (this._isOffscreenCanvasSupported) {\n const strokeAlpha = params.dict.get(\"CA\");\n const fakeUnicodeFont = new FakeUnicodeFont(xref, \"sans-serif\");\n this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha);\n this._streams.push(this.appearance);\n } else {\n warn(\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n }\n }\n get hasTextContent() {\n return this._hasAppearance;\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n date,\n fontSize,\n oldAnnotation,\n rect,\n rotation,\n user,\n value\n } = annotation;\n const freetext = oldAnnotation || new Dict(xref);\n freetext.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n freetext.setIfNotExists(\"Subtype\", Name.get(\"FreeText\"));\n freetext.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n if (oldAnnotation) {\n freetext.delete(\"RC\");\n }\n freetext.setIfArray(\"Rect\", rect);\n const da = `/Helv ${fontSize} Tf ${getPdfColor(color, true)}`;\n freetext.set(\"DA\", da);\n freetext.setIfDefined(\"Contents\", stringToAsciiOrUTF16BE(value));\n freetext.setIfNotExists(\"F\", 4);\n freetext.setIfNotExists(\"Border\", [0, 0, 0]);\n freetext.setIfNumber(\"Rotate\", rotation);\n freetext.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n freetext.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return freetext;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n baseFontRef,\n evaluator,\n task\n } = params;\n const {\n color,\n fontSize,\n rect,\n rotation,\n value\n } = annotation;\n if (!color) {\n return null;\n }\n const resources = new Dict(xref);\n const font = new Dict(xref);\n if (baseFontRef) {\n font.set(\"Helv\", baseFontRef);\n } else {\n const baseFont = new Dict(xref);\n baseFont.setIfName(\"BaseFont\", \"Helvetica\");\n baseFont.setIfName(\"Type\", \"Font\");\n baseFont.setIfName(\"Subtype\", \"Type1\");\n baseFont.setIfName(\"Encoding\", \"WinAnsiEncoding\");\n font.set(\"Helv\", baseFont);\n }\n resources.set(\"Font\", font);\n const helv = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName: \"Helv\",\n fontSize\n }, resources);\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lines = value.split(\"\\n\");\n const scale = fontSize / 1000;\n let totalWidth = -Infinity;\n const encodedLines = [];\n for (let line of lines) {\n const encoded = helv.encodeString(line);\n if (encoded.length > 1) {\n return null;\n }\n line = encoded.join(\"\");\n encodedLines.push(line);\n let lineWidth = 0;\n const glyphs = helv.charsToGlyphs(line);\n for (const glyph of glyphs) {\n lineWidth += glyph.width * scale;\n }\n totalWidth = Math.max(totalWidth, lineWidth);\n }\n const hscale = totalWidth > w ? w / totalWidth : 1;\n let vscale = 1;\n const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize;\n const lineAscent = ((/* inlined export .LINE_FACTOR */1.35) - (/* inlined export .LINE_DESCENT_FACTOR */0.35)) * fontSize;\n const totalHeight = lineHeight * lines.length;\n if (totalHeight > h) {\n vscale = h / totalHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n let firstPoint, clipBox, matrix;\n switch (rotation) {\n case 0:\n matrix = [1, 0, 0, 1];\n clipBox = [rect[0], rect[1], w, h];\n firstPoint = [rect[0], rect[3] - lineAscent];\n break;\n case 90:\n matrix = [0, 1, -1, 0];\n clipBox = [rect[1], -rect[2], w, h];\n firstPoint = [rect[1], -rect[0] - lineAscent];\n break;\n case 180:\n matrix = [-1, 0, 0, -1];\n clipBox = [-rect[2], -rect[3], w, h];\n firstPoint = [-rect[2], -rect[1] - lineAscent];\n break;\n case 270:\n matrix = [0, -1, 1, 0];\n clipBox = [-rect[3], rect[0], w, h];\n firstPoint = [-rect[3], rect[2] - lineAscent];\n break;\n }\n const buffer = [\"q\", `${matrix.join(\" \")} 0 0 cm`, `${clipBox.join(\" \")} re W n`, `BT`, `${getPdfColor(color, true)}`, `0 Tc /Helv ${numberToString(newFontSize)} Tf`];\n buffer.push(`${firstPoint.join(\" \")} Td (${escapeString(encodedLines[0])}) Tj`);\n const vShift = numberToString(lineHeight);\n for (let i = 1, ii = encodedLines.length; i < ii; i++) {\n const line = encodedLines[i];\n buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Resources\", resources);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, -rect[0], -rect[1]]);\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass LineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const lineCoordinates = lookupRect(dict.getArray(\"L\"), [0, 0, 0, 0]);\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n return [points[0] - borderWidth, points[7] - borderWidth, points[2] + borderWidth, points[3] + borderWidth];\n }\n });\n }\n }\n}\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[4] + this.borderStyle.width / 2;\n const y = points[5] + this.borderStyle.width / 2;\n const width = points[6] - points[4] - this.borderStyle.width;\n const height = points[3] - points[7] - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = getPdfColorArray(interiorColor);\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0] + this.borderStyle.width / 2;\n const y0 = points[1] - this.borderStyle.width / 2;\n const x1 = points[6] - this.borderStyle.width / 2;\n const y1 = points[7] + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = (x1 - x0) / 2 * controlPointsDistance;\n const yOffset = (y1 - y0) / 2 * controlPointsDistance;\n buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, \"h\");\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.vertices = null;\n if (!(this instanceof PolygonAnnotation)) {\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n }\n const rawVertices = dict.getArray(\"Vertices\");\n if (!isNumberArray(rawVertices, null)) {\n return;\n }\n const vertices = this.data.vertices = Float32Array.from(rawVertices);\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n let fillColor = getRgbColor(dict.getArray(\"IC\"), null);\n fillColor &&= getPdfColorArray(fillColor);\n let operator;\n if (fillColor) {\n if (this.color) {\n operator = fillColor.every((c, i) => c === strokeColor[i]) ? \"f\" : \"B\";\n } else {\n operator = \"f\";\n }\n } else {\n operator = \"S\";\n }\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = BBOX_INIT.slice();\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n Util.rectBoundingBox(vertices[i] - borderAdjust, vertices[i + 1] - borderAdjust, vertices[i] + borderAdjust, vertices[i + 1] + borderAdjust, bbox);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n fillColor,\n fillAlpha: fillColor ? strokeAlpha : null,\n pointsCallback: (buffer, points) => {\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(operator);\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n}\nclass PolygonAnnotation extends PolylineAnnotation {}\nclass CaretAnnotation extends MarkupAnnotation {}\nclass InkAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict,\n xref\n } = params;\n this.data.inkLists = [];\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const rawInkLists = dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n for (const rawInkList of rawInkLists) {\n if (!Array.isArray(rawInkList)) {\n continue;\n }\n const inkList = new Float32Array(rawInkList.length);\n this.data.inkLists.push(inkList);\n for (let j = 0, jj = rawInkList.length; j < jj; j += 2) {\n const x = xref.fetchIfRef(rawInkList[j]),\n y = xref.fetchIfRef(rawInkList[j + 1]);\n if (typeof x === \"number\" && typeof y === \"number\") {\n inkList[j] = x;\n inkList[j + 1] = y;\n }\n }\n }\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = BBOX_INIT.slice();\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n Util.rectBoundingBox(inkList[i] - borderAdjust, inkList[i + 1] - borderAdjust, inkList[i] + borderAdjust, inkList[i + 1] + borderAdjust, bbox);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(\"S\");\n }\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n oldAnnotation,\n color,\n date,\n opacity,\n paths,\n outlines,\n rect,\n rotation,\n thickness,\n user\n } = annotation;\n const ink = oldAnnotation || new Dict(xref);\n ink.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n ink.setIfNotExists(\"Subtype\", Name.get(\"Ink\"));\n ink.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n ink.setIfArray(\"Rect\", rect);\n ink.setIfArray(\"InkList\", outlines?.points || paths?.points);\n ink.setIfNotExists(\"F\", 4);\n ink.setIfNumber(\"Rotate\", rotation);\n ink.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (outlines) {\n ink.setIfName(\"IT\", \"InkHighlight\");\n }\n if (thickness > 0) {\n const bs = new Dict(xref);\n ink.set(\"BS\", bs);\n bs.set(\"W\", thickness);\n }\n ink.setIfArray(\"C\", getPdfColorArray(color));\n ink.setIfNumber(\"CA\", opacity);\n if (ap || apRef) {\n const n = new Dict(xref);\n ink.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return ink;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.outlines) {\n return this.createNewAppearanceStreamForHighlight(annotation, xref, params);\n }\n const {\n color,\n rect,\n paths,\n thickness,\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, false)}`];\n if (opacity !== 1) {\n appearanceBuffer.push(\"/R0 gs\");\n }\n for (const outline of paths.lines) {\n writeLineToCurveToAppearance(outline, appearanceBuffer, true);\n }\n appearanceBuffer.push(\"S\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n if (opacity !== 1) {\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n const r0 = new Dict(xref);\n r0.set(\"CA\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\n const {\n color,\n rect,\n outlines: {\n outline\n },\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n writeLineToCurveToAppearance(outline, appearanceBuffer);\n appearanceBuffer.push(\"h f\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.setIfName(\"BM\", \"Multiply\");\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const fillColor = getPdfColorArray(this.color, [1, 1, 0]);\n const fillAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, \"f\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n date,\n oldAnnotation,\n opacity,\n rect,\n rotation,\n user,\n quadPoints\n } = annotation;\n const highlight = oldAnnotation || new Dict(xref);\n highlight.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n highlight.setIfNotExists(\"Subtype\", Name.get(\"Highlight\"));\n highlight.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n highlight.setIfArray(\"Rect\", rect);\n highlight.setIfNotExists(\"F\", 4);\n highlight.setIfNotExists(\"Border\", [0, 0, 0]);\n highlight.setIfNumber(\"Rotate\", rotation);\n highlight.setIfArray(\"QuadPoints\", quadPoints);\n highlight.setIfArray(\"C\", getPdfColorArray(color));\n highlight.setIfNumber(\"CA\", opacity);\n highlight.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n highlight.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return highlight;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n color,\n rect,\n outlines,\n opacity\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n const buffer = [];\n for (const outline of outlines) {\n buffer.length = 0;\n buffer.push(`${numberToString(outline[0])} ${numberToString(outline[1])} m`);\n for (let i = 2, ii = outline.length; i < ii; i += 2) {\n buffer.push(`${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`);\n }\n buffer.push(\"h\");\n appearanceBuffer.push(buffer.join(\"\\n\"));\n }\n appearanceBuffer.push(\"f*\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.setIfName(\"BM\", \"Multiply\");\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.setIfName(\"Type\", \"ExtGState\");\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 0.571 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, \"S\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[1] - points[5]) / 6;\n let shift = dy;\n let x = points[4];\n const y = points[5];\n const xEnd = points[6];\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[4], y - 2 * dy, xEnd, y + 2 * dy];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${(points[0] + points[4]) / 2} ` + `${(points[1] + points[5]) / 2} m`, `${(points[2] + points[6]) / 2} ` + `${(points[3] + points[7]) / 2} l`, \"S\");\n return [points[0], points[7], points[2], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n get overlaysTextContent() {\n return true;\n }\n}\nclass StampAnnotation extends MarkupAnnotation {\n #savedHasOwnCanvas = null;\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n if (isEditing) {\n if (!this.data.isEditable) {\n return true;\n }\n this.#savedHasOwnCanvas ??= this.data.hasOwnCanvas;\n this.data.hasOwnCanvas = true;\n return true;\n }\n if (this.#savedHasOwnCanvas !== null) {\n this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\n this.#savedHasOwnCanvas = null;\n }\n return !modifiedIds?.has(this.data.id);\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n date,\n oldAnnotation,\n rect,\n rotation,\n user\n } = annotation;\n const stamp = oldAnnotation || new Dict(xref);\n stamp.setIfNotExists(\"Type\", Name.get(\"Annot\"));\n stamp.setIfNotExists(\"Subtype\", Name.get(\"Stamp\"));\n stamp.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate(date)}`);\n stamp.setIfArray(\"Rect\", rect);\n stamp.setIfNotExists(\"F\", 4);\n stamp.setIfNotExists(\"Border\", [0, 0, 0]);\n stamp.setIfNumber(\"Rotate\", rotation);\n stamp.setIfDefined(\"T\", stringToAsciiOrUTF16BE(user));\n if (apRef || ap) {\n const n = new Dict(xref);\n stamp.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return stamp;\n }\n static async #createNewAppearanceStreamForDrawing(annotation, xref) {\n const {\n areContours,\n color,\n rect,\n lines,\n thickness\n } = annotation;\n if (!color) {\n return null;\n }\n const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, areContours)}`];\n for (const line of lines) {\n writeLineToCurveToAppearance(line, appearanceBuffer, true);\n }\n appearanceBuffer.push(areContours ? \"F\" : \"S\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n return new StringStream(appearance, appearanceStreamDict);\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.oldAnnotation) {\n return null;\n }\n if (annotation.isSignature) {\n return this.#createNewAppearanceStreamForDrawing(annotation, xref);\n }\n const {\n rotation\n } = annotation;\n const {\n imageRef,\n width,\n height\n } = params.image;\n const resources = new Dict(xref);\n const xobject = new Dict(xref);\n resources.set(\"XObject\", xobject);\n xobject.set(\"Im0\", imageRef);\n const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`;\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.setIfName(\"Subtype\", \"Form\");\n appearanceStreamDict.setIfName(\"Type\", \"XObject\");\n appearanceStreamDict.set(\"BBox\", [0, 0, width, height]);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, width, height);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n return new StringStream(appearance, appearanceStreamDict);\n }\n}\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n annotationGlobals,\n dict\n } = params;\n const fsDict = dict.get(\"FS\");\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.fileId = this._getAttachmentId(fsDict, dict.getRaw(\"FS\"), annotationGlobals);\n this.data.file = new FileSpec(fsDict).serializable;\n const name = dict.get(\"Name\");\n this.data.name = name instanceof Name ? stringToPDFString(name.name) : \"PushPin\";\n const fillAlpha = dict.get(\"ca\");\n this.data.fillAlpha = typeof fillAlpha === \"number\" && fillAlpha >= 0 && fillAlpha <= 1 ? fillAlpha : null;\n }\n}\nclass MediaAnnotation extends Annotation {\n static #MEDIA_MIME_TYPE_RE = /^(?:video|audio)\\//;\n constructor(params) {\n super(params);\n this.data.noHTML = true;\n }\n _setMediaData({\n assetRef,\n assetDict,\n filename,\n contentType,\n wrapSound = false\n }, annotationGlobals) {\n this.data.noHTML = false;\n this.data.richMedia = {\n fileId: this._getAttachmentId(assetDict, assetRef, annotationGlobals, wrapSound),\n filename,\n contentType\n };\n }\n static _getContentType(assetDict, filename, contentType = null) {\n if (typeof contentType === \"string\" && MediaAnnotation.#MEDIA_MIME_TYPE_RE.test(contentType)) {\n return contentType;\n }\n const stream = FileSpec.pickPlatformItem(assetDict.get(\"EF\"));\n const subtype = stream instanceof BaseStream ? stream.dict?.get(\"Subtype\") : null;\n if (subtype instanceof Name && MediaAnnotation.#MEDIA_MIME_TYPE_RE.test(subtype.name)) {\n return subtype.name;\n }\n const ext = filename.split(\".\").at(-1)?.toLowerCase();\n switch (ext) {\n case \"mp4\":\n case \"m4v\":\n return \"video/mp4\";\n case \"webm\":\n return \"video/webm\";\n case \"ogv\":\n return \"video/ogg\";\n case \"mov\":\n return \"video/quicktime\";\n case \"mp3\":\n return \"audio/mpeg\";\n case \"m4a\":\n return \"audio/mp4\";\n case \"wav\":\n return \"audio/wav\";\n case \"oga\":\n case \"ogg\":\n return \"audio/ogg\";\n default:\n return null;\n }\n }\n}\nclass RichMediaAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const content = dict.get(\"RichMediaContent\");\n if (!(content instanceof Dict)) {\n return;\n }\n const asset = RichMediaAnnotation.#findAsset(content, xref);\n if (!asset) {\n warn(\"RichMedia annotation has no playable asset.\");\n return;\n }\n this._setMediaData(asset, annotationGlobals);\n }\n static #findAsset(content, xref) {\n const configurations = content.get(\"Configurations\");\n if (!Array.isArray(configurations)) {\n return null;\n }\n for (const configRef of configurations) {\n const config = xref.fetchIfRef(configRef);\n if (!(config instanceof Dict)) {\n continue;\n }\n const instances = config.get(\"Instances\");\n if (!Array.isArray(instances)) {\n continue;\n }\n for (const instanceRef of instances) {\n const instance = xref.fetchIfRef(instanceRef);\n if (!(instance instanceof Dict)) {\n continue;\n }\n if (isName(instance.get(\"Subtype\"), \"Flash\")) {\n continue;\n }\n const rawAsset = instance.getRaw(\"Asset\");\n const asset = xref.fetchIfRef(rawAsset);\n if (!(asset instanceof Dict)) {\n continue;\n }\n if (!FileSpec.hasEmbeddedFile(asset)) {\n continue;\n }\n const {\n filename\n } = new FileSpec(asset).serializable;\n const contentType = MediaAnnotation._getContentType(asset, filename);\n if (!contentType) {\n continue;\n }\n return {\n assetRef: rawAsset instanceof Ref ? rawAsset : null,\n assetDict: asset,\n filename,\n contentType\n };\n }\n }\n return null;\n }\n}\nclass ScreenAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const asset = ScreenAnnotation.#findAsset(dict, xref);\n if (!asset) {\n return;\n }\n this._setMediaData(asset, annotationGlobals);\n }\n static #findAsset(dict, xref) {\n for (const action of this.#renditionActions(dict)) {\n const asset = this.#findRenditionAsset(action.get(\"R\"), xref, new RefSet());\n if (asset) {\n return asset;\n }\n }\n return null;\n }\n static *#renditionActions(dict) {\n const action = dict.get(\"A\");\n if (action instanceof Dict && isName(action.get(\"S\"), \"Rendition\") && this.#isPlayAction(action)) {\n yield action;\n }\n const additionalActions = dict.get(\"AA\");\n if (additionalActions instanceof Dict) {\n for (const [, aa] of additionalActions) {\n if (aa instanceof Dict && isName(aa.get(\"S\"), \"Rendition\") && this.#isPlayAction(aa)) {\n yield aa;\n }\n }\n }\n }\n static #isPlayAction(action) {\n const operation = action.get(\"OP\");\n return operation === undefined || operation === AnnotationRenditionOperation.PLAY_OR_RESUME || operation === AnnotationRenditionOperation.PLAY;\n }\n static #findRenditionAsset(rendition, xref, seen) {\n if (!(rendition instanceof Dict)) {\n return null;\n }\n const subtype = rendition.get(\"S\");\n if (isName(subtype, \"MR\")) {\n return this.#findClipAsset(rendition.get(\"C\"), xref);\n }\n if (isName(subtype, \"SR\")) {\n const renditions = rendition.get(\"R\");\n if (Array.isArray(renditions)) {\n for (const ref of renditions) {\n if (ref instanceof Ref) {\n if (seen.has(ref)) {\n continue;\n }\n seen.put(ref);\n }\n const asset = this.#findRenditionAsset(xref.fetchIfRef(ref), xref, seen);\n if (asset) {\n return asset;\n }\n }\n }\n }\n return null;\n }\n static #findClipAsset(clip, xref) {\n if (!(clip instanceof Dict) || !isName(clip.get(\"S\"), \"MCD\")) {\n return null;\n }\n const rawData = clip.getRaw(\"D\");\n const data = xref.fetchIfRef(rawData);\n const contentTypeHint = clip.get(\"CT\");\n let explicitType = typeof contentTypeHint === \"string\" ? contentTypeHint : null;\n let assetDict, filename;\n if (data instanceof BaseStream) {\n assetDict = data.dict;\n const name = clip.get(\"N\");\n filename = typeof name === \"string\" ? stringToPDFString(name) : \"\";\n if (!explicitType) {\n const subtype = data.dict.get(\"Subtype\");\n if (subtype instanceof Name) {\n explicitType = subtype.name;\n }\n }\n } else if (data instanceof Dict) {\n if (!FileSpec.hasEmbeddedFile(data)) {\n return null;\n }\n assetDict = data;\n ({\n filename\n } = new FileSpec(data).serializable);\n } else {\n return null;\n }\n const contentType = MediaAnnotation._getContentType(assetDict, filename, explicitType);\n if (!contentType) {\n return null;\n }\n return {\n assetRef: rawData instanceof Ref ? rawData : null,\n assetDict,\n filename,\n contentType\n };\n }\n}\nclass SoundAnnotation extends MediaAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const soundRef = dict.getRaw(\"Sound\");\n if (!(soundRef instanceof Ref)) {\n return;\n }\n let sound;\n try {\n sound = xref.fetch(soundRef);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`SoundAnnotation: \"${ex}\".`);\n return;\n }\n if (!(sound instanceof BaseStream) || !getSoundFormat(sound.dict)) {\n return;\n }\n this._setMediaData({\n assetRef: soundRef,\n assetDict: sound.dict,\n filename: \"sound.wav\",\n contentType: \"audio/wav\",\n wrapSound: true\n }, annotationGlobals);\n }\n}\n\n;// ./src/core/calculate_md5.js\n\nconst PARAMS = {\n get r() {\n return shadow(this, \"r\", new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]));\n },\n get k() {\n return shadow(this, \"k\", new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]));\n }\n};\nfunction calculateMD5(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n const paddedLength = length + 72 & ~63;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n if (i < n) {\n i = n;\n }\n padded[i++] = length << 3 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >>> 29 & 0xff;\n i += 3;\n const w = new Int32Array(16);\n const {\n k,\n r\n } = PARAMS;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = b & c | ~b & d;\n g = j;\n } else if (j < 32) {\n f = d & b | ~d & c;\n g = 5 * j + 1 & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = 3 * j + 5 & 15;\n } else {\n f = c ^ (b | ~d);\n g = 7 * j & 15;\n }\n const tmp = d,\n rotateArg = a + f + k[j] + w[g] | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n a = tmp;\n }\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n }\n return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n}\n\n;// ./src/core/dataset_reader.js\n\n\n\nfunction decodeString(str) {\n try {\n return stringToUTF8String(str);\n } catch (ex) {\n warn(`UTF-8 decoding failed: \"${ex}\".`);\n return str;\n }\n}\nclass DatasetXMLParser extends SimpleXMLParser {\n node = null;\n onEndElement(name) {\n const node = super.onEndElement(name);\n if (node && name === \"xfa:datasets\") {\n this.node = node;\n throw new Error(\"Aborting DatasetXMLParser.\");\n }\n }\n}\nclass DatasetReader {\n constructor(data) {\n if (data.datasets) {\n this.node = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(data.datasets).documentElement;\n } else {\n const parser = new DatasetXMLParser({\n hasAttributes: true\n });\n try {\n parser.parseFromString(data[\"xdp:xdp\"]);\n } catch {}\n this.node = parser.node;\n }\n }\n getValue(path) {\n if (!this.node || !path) {\n return \"\";\n }\n const node = this.node.searchNode(parseXFAPath(path), 0);\n if (!node) {\n return \"\";\n }\n const first = node.firstChild;\n if (first?.nodeName === \"value\") {\n return node.children.map(child => decodeString(child.textContent));\n }\n return decodeString(node.textContent);\n }\n}\n\n;// ./src/core/intersector.js\nclass SingleIntersector {\n #annotation;\n minX = Infinity;\n minY = Infinity;\n maxX = -Infinity;\n maxY = -Infinity;\n #quadPoints = null;\n #text = [];\n #extraChars = [];\n #lastIntersectingQuadIndex = -1;\n #canTakeExtraChars = false;\n constructor(annotation) {\n this.#annotation = annotation;\n const quadPoints = annotation.data.quadPoints;\n if (!quadPoints) {\n [this.minX, this.minY, this.maxX, this.maxY] = annotation.data.rect;\n return;\n }\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n this.minX = Math.min(this.minX, quadPoints[i]);\n this.maxX = Math.max(this.maxX, quadPoints[i + 2]);\n this.minY = Math.min(this.minY, quadPoints[i + 5]);\n this.maxY = Math.max(this.maxY, quadPoints[i + 1]);\n }\n if (quadPoints.length > 8) {\n this.#quadPoints = quadPoints;\n }\n }\n #intersects(x, y) {\n if (this.minX >= x || this.maxX <= x || this.minY >= y || this.maxY <= y) {\n return false;\n }\n const quadPoints = this.#quadPoints;\n if (!quadPoints) {\n return true;\n }\n if (this.#lastIntersectingQuadIndex >= 0) {\n const i = this.#lastIntersectingQuadIndex;\n if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) {\n return true;\n }\n this.#lastIntersectingQuadIndex = -1;\n }\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) {\n this.#lastIntersectingQuadIndex = i;\n return true;\n }\n }\n return false;\n }\n addGlyph(x, y, glyph) {\n if (!this.#intersects(x, y)) {\n this.disableExtraChars();\n return false;\n }\n if (this.#extraChars.length > 0) {\n this.#text.push(this.#extraChars.join(\"\"));\n this.#extraChars.length = 0;\n }\n this.#text.push(glyph);\n this.#canTakeExtraChars = true;\n return true;\n }\n addExtraChar(char) {\n if (this.#canTakeExtraChars) {\n this.#extraChars.push(char);\n }\n }\n disableExtraChars() {\n if (!this.#canTakeExtraChars) {\n return;\n }\n this.#canTakeExtraChars = false;\n this.#extraChars.length = 0;\n }\n setText() {\n this.#annotation.data.overlaidText = this.#text.join(\"\");\n }\n}\nconst STEPS = 64;\nclass Intersector {\n #intersectors = [];\n #grid = [];\n #minX;\n #maxX;\n #minY;\n #maxY;\n #invXRatio;\n #invYRatio;\n constructor(annotations) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n const intersectors = this.#intersectors;\n for (const annotation of annotations) {\n if (!annotation.data.quadPoints && !annotation.data.rect) {\n continue;\n }\n const intersector = new SingleIntersector(annotation);\n intersectors.push(intersector);\n minX = Math.min(minX, intersector.minX);\n minY = Math.min(minY, intersector.minY);\n maxX = Math.max(maxX, intersector.maxX);\n maxY = Math.max(maxY, intersector.maxY);\n }\n this.#minX = minX;\n this.#minY = minY;\n this.#maxX = maxX;\n this.#maxY = maxY;\n this.#invXRatio = (STEPS - 1) / (maxX - minX);\n this.#invYRatio = (STEPS - 1) / (maxY - minY);\n for (const intersector of intersectors) {\n const iMin = this.#getGridIndex(intersector.minX, intersector.minY);\n const iMax = this.#getGridIndex(intersector.maxX, intersector.maxY);\n const w = (iMax - iMin) % STEPS;\n const h = Math.floor((iMax - iMin) / STEPS);\n for (let i = iMin; i <= iMin + h * STEPS; i += STEPS) {\n for (let j = 0; j <= w; j++) {\n (this.#grid[i + j] ??= []).push(intersector);\n }\n }\n }\n }\n #getGridIndex(x, y) {\n const i = Math.floor((x - this.#minX) * this.#invXRatio);\n const j = Math.floor((y - this.#minY) * this.#invYRatio);\n return i + j * STEPS;\n }\n addGlyph(transform, width, height, glyph) {\n const x = transform[4] + width / 2;\n const y = transform[5] + height / 2;\n if (x < this.#minX || y < this.#minY || x > this.#maxX || y > this.#maxY) {\n return;\n }\n const intersectors = this.#grid[this.#getGridIndex(x, y)];\n if (!intersectors) {\n return;\n }\n for (const intersector of intersectors) {\n intersector.addGlyph(x, y, glyph);\n }\n }\n addExtraChar(char) {\n for (const intersector of this.#intersectors) {\n intersector.addExtraChar(char);\n }\n }\n setText() {\n for (const intersector of this.#intersectors) {\n intersector.setText();\n }\n }\n}\n\n;// ./src/core/calculate_sha_other.js\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n shiftRight(places) {\n this.low = this.low >>> places | this.high << 32 - places;\n this.high = this.high >>> places | 0;\n }\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = low >>> places | high << 32 - places;\n this.high = high >>> places | low << 32 - places;\n }\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n copyTo(bytes, offset) {\n bytes[offset] = this.high >>> 24 & 0xff;\n bytes[offset + 1] = this.high >> 16 & 0xff;\n bytes[offset + 2] = this.high >> 8 & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = this.low >>> 24 & 0xff;\n bytes[offset + 5] = this.low >> 16 & 0xff;\n bytes[offset + 6] = this.low >> 8 & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\nconst calculate_sha_other_PARAMS = {\n get k() {\n return shadow(this, \"k\", [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]);\n }\n};\nfunction ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n}\nfunction maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n}\nfunction sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n}\nfunction sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n}\nfunction littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n}\nfunction littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n}\nfunction calculateSHA512(data, offset, length, mode384 = false) {\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n if (i < n) {\n i = n;\n }\n i += 11;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n const {\n k\n } = calculate_sha_other_PARAMS;\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n}\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n}\n\n;// ./src/core/calculate_sha256.js\n\nconst calculate_sha256_PARAMS = {\n get k() {\n return shadow(this, \"k\", [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n }\n};\nfunction rotr(x, n) {\n return x >>> n | x << 32 - n;\n}\nfunction calculate_sha256_ch(x, y, z) {\n return x & y ^ ~x & z;\n}\nfunction calculate_sha256_maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\nfunction calculate_sha256_sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n}\nfunction calculate_sha256_sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n}\nfunction calculate_sha256_littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n}\nfunction calculate_sha256_littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n}\nfunction calculateSHA256(data, offset, length) {\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n if (i < n) {\n i = n;\n }\n i += 3;\n padded[i++] = length >>> 29 & 0xff;\n padded[i++] = length >> 21 & 0xff;\n padded[i++] = length >> 13 & 0xff;\n padded[i++] = length >> 5 & 0xff;\n padded[i++] = length << 3 & 0xff;\n const w = new Uint32Array(64);\n const {\n k\n } = calculate_sha256_PARAMS;\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n i += 4;\n }\n for (j = 16; j < 64; ++j) {\n w[j] = calculate_sha256_littleSigmaPrime(w[j - 2]) + w[j - 7] + calculate_sha256_littleSigma(w[j - 15]) + w[j - 16] | 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + calculate_sha256_sigmaPrime(e) + calculate_sha256_ch(e, f, g) + k[j] + w[j];\n t2 = calculate_sha256_sigma(a) + calculate_sha256_maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n }\n h0 = h0 + a | 0;\n h1 = h1 + b | 0;\n h2 = h2 + c | 0;\n h3 = h3 + d | 0;\n h4 = h4 + e | 0;\n h5 = h5 + f | 0;\n h6 = h6 + g | 0;\n h7 = h7 + h | 0;\n }\n return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n}\n\n;// ./src/core/decrypt_stream.js\n\nconst chunkSize = 512;\nclass DecryptStream extends DecodeStream {\n #nextChunk = null;\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n this.stream = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n }\n readBlock() {\n let chunk = this.#nextChunk ?? this.stream.getBytes(chunkSize);\n if (!chunk.length) {\n this.eof = true;\n return;\n }\n this.#nextChunk = this.stream.getBytes(chunkSize);\n const hasMoreData = this.#nextChunk.length > 0;\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n const bufferLength = this.bufferLength,\n newLength = bufferLength + chunk.length,\n buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n getOriginalStream() {\n return this;\n }\n}\n\n;// ./src/core/sasl_prep.js\nconst NON_ASCII_SPACES = new Set([0x00a0, 0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x200b, 0x202f, 0x205f, 0x3000]);\nconst COMMONLY_MAPPED_TO_NOTHING = new Set([0x00ad, 0x034f, 0x1806, 0x180b, 0x180c, 0x180d, 0x200b, 0x200c, 0x200d, 0x2060, 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 0xfeff]);\nfunction saslPrep(str) {\n let mapped = \"\";\n for (const char of str) {\n const code = char.codePointAt(0);\n if (NON_ASCII_SPACES.has(code)) {\n mapped += \" \";\n } else if (!COMMONLY_MAPPED_TO_NOTHING.has(code)) {\n mapped += char;\n }\n }\n return mapped.normalize(\"NFKC\");\n}\n\n;// ./src/core/crypto.js\n\n\n\n\n\n\n\nclass ARCFourCipher {\n a = 0;\n b = 0;\n constructor(key) {\n const s = new Uint8Array(256);\n const keyLength = key.length;\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = j + tmp + key[i % keyLength] & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = a + 1 & 0xff;\n const tmp = s[a];\n b = b + tmp & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n encrypt(data) {\n return data;\n }\n}\nclass AESBaseCipher {\n _s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n _inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n _mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n _mixCol = Uint8Array.from({\n length: 256\n }, (_, i) => i < 128 ? i << 1 : i << 1 ^ 0x1b);\n constructor() {\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n state[j] = t >>> 24 & 0xff;\n state[j + 1] = t >> 16 & 0xff;\n state[j + 2] = t >> 8 & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n state[j] ^= key[j];\n }\n return state;\n }\n _encrypt(input, key) {\n const s = this._s;\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n for (let j = 0; j < 16; ++j) {\n state[j] ^= key[j];\n }\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n const plain = this._decrypt(buffer, this._key);\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n let outputLength = 16 * result.length;\n if (finalize) {\n const lastBlock = result.at(-1);\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n if (iv) {\n this.iv = iv;\n } else {\n for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n iv ||= new Uint8Array(16);\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\nclass AES128Cipher extends AESBaseCipher {\n _rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n constructor(key) {\n super();\n this._cyclesOfRepetition = 10;\n this._keySize = 160;\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n for (let j = 16, i = 1; j < b; ++i) {\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 14;\n this._keySize = 224;\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\nclass PDFBase {\n _hash(password, input, userBytes) {\n unreachable(\"Abstract method `_hash` called\");\n }\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = this._hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = this._hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = this._hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n const key = this._hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\nclass PDF17 extends PDFBase {\n _hash(password, input, userBytes) {\n return calculateSHA256(input, 0, input.length);\n }\n}\nclass PDF20 extends PDFBase {\n _hash(password, input, userBytes) {\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e.at(-1) > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n const remainder = Math.sumPrecise(e.slice(0, 16)) % 3;\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n}\nclass CipherTransform {\n #cipherCache = new Map();\n embeddedFilterName = null;\n constructor(resolveCipher, stringFilterName = null, streamFilterName = null) {\n this.resolveCipher = resolveCipher;\n this.streamFilterName = streamFilterName;\n this.stringFilterName = stringFilterName;\n }\n #getCipher(filterName = null) {\n const key = filterName instanceof Name ? filterName.name : \"__default__\";\n return this.#cipherCache.getOrInsertComputed(key, () => this.resolveCipher(filterName));\n }\n createStream(stream, length, cryptFilterName = null) {\n const defaultFilterName = this.embeddedFilterName && isDict(stream.dict, \"EmbeddedFile\") ? this.embeddedFilterName : this.streamFilterName;\n const Cipher = this.#getCipher(cryptFilterName || defaultFilterName);\n const cipher = new Cipher();\n return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n });\n }\n decryptString(s) {\n const Cipher = this.#getCipher(this.stringFilterName);\n const cipher = new Cipher();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n encryptString(s) {\n const Cipher = this.#getCipher(this.stringFilterName);\n const cipher = new Cipher();\n if (cipher instanceof AESBaseCipher) {\n const strLen = s.length;\n const pad = 16 - strLen % 16;\n s += String.fromCharCode(pad).repeat(pad);\n const iv = new Uint8Array(16);\n crypto.getRandomValues(iv);\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n return bytesToString(buf);\n }\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\nfunction utf8PasswordToBytes(password) {\n try {\n password = utf8StringToString(password);\n } catch {\n warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n }\n return stringToBytes(password);\n}\nclass CipherTransformFactory {\n #fileId;\n static get _defaultPasswordBytes() {\n return shadow(this, \"_defaultPasswordBytes\", new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]));\n }\n #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n return null;\n }\n #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n }\n hashData.set(ownerPassword, i);\n i += ownerPassword.length;\n hashData[i++] = flags & 0xff;\n hashData[i++] = flags >> 8 & 0xff;\n hashData[i++] = flags >> 16 & 0xff;\n hashData[i++] = flags >>> 24 & 0xff;\n hashData.set(fileId, i);\n i += fileId.length;\n if (revision >= 4 && !encryptMetadata) {\n hashData.fill(0xff, i, i + 4);\n i += 4;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n if (revision >= 3) {\n i = 0;\n hashData.set(CipherTransformFactory._defaultPasswordBytes, i);\n i += 32;\n hashData.set(fileId, i);\n i += fileId.length;\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(CipherTransformFactory._defaultPasswordBytes);\n }\n return checkData.every((data, k) => userPassword[k] === data) ? encryptionKey : null;\n }\n #decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n #buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const n = encryptionKey.length;\n const key = new Uint8Array(n + 9);\n key.set(encryptionKey);\n let i = n;\n key[i++] = num & 0xff;\n key[i++] = num >> 8 & 0xff;\n key[i++] = num >> 16 & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = gen >> 8 & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(n + 5, 16));\n }\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n this.#fileId = fileId;\n const algorithm = dict.get(\"V\");\n if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n } else {\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true;\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = handlerDict?.get(\"Length\") || 128;\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new FormatError(\"invalid key length\");\n }\n let cf = null;\n let stmf = Name.get(\"Identity\");\n let strf = Name.get(\"Identity\");\n let eff = stmf;\n if (algorithm >= 4) {\n cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n cf.suppressEncryption = true;\n }\n stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n eff = dict.get(\"EFF\") || stmf;\n }\n this.cf = cf;\n this.stmf = stmf;\n this.strf = strf;\n this.eff = eff;\n const ownerBytes = stringToBytes(dict.get(\"O\")),\n userBytes = stringToBytes(dict.get(\"U\"));\n const ownerPassword = ownerBytes.subarray(0, 32);\n const userPassword = userBytes.subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes, rawPasswordBytes;\n if (password) {\n if (revision === 6) {\n const preppedPassword = saslPrep(password);\n passwordBytes = utf8PasswordToBytes(preppedPassword);\n if (preppedPassword !== password) {\n rawPasswordBytes = utf8PasswordToBytes(password);\n }\n } else if (algorithm === 5) {\n passwordBytes = utf8PasswordToBytes(password);\n } else {\n passwordBytes = stringToBytes(password);\n }\n }\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n } else {\n const ownerValidationSalt = ownerBytes.subarray(32, 40);\n const ownerKeySalt = ownerBytes.subarray(40, 48);\n const uBytes = userBytes.subarray(0, 48);\n const userValidationSalt = userBytes.subarray(32, 40);\n const userKeySalt = userBytes.subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n for (const candidate of rawPasswordBytes ? [passwordBytes, rawPasswordBytes] : [passwordBytes]) {\n encryptionKey = this.#createEncryptionKey20(revision, candidate, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n if (encryptionKey) {\n break;\n }\n }\n }\n if (!encryptionKey) {\n if (!password) {\n if (this.algorithm >= 4 && isName(this.stmf, \"Identity\") && isName(this.strf, \"Identity\")) {\n const effCF = this.cf?.get(this.eff.name);\n const authEvent = effCF?.get(\"AuthEvent\");\n if (isName(authEvent, \"EFOpen\")) {\n this.encryptionKey = null;\n return;\n }\n }\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n }\n if (!encryptionKey) {\n throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n }\n if (algorithm === 4 && encryptionKey.length < 16) {\n this.encryptionKey = new Uint8Array(16);\n this.encryptionKey.set(encryptionKey);\n } else {\n this.encryptionKey = encryptionKey;\n }\n }\n setPassword(password) {\n const transform = new CipherTransformFactory(this.dict, this.#fileId, password);\n this.encryptionKey = transform.encryptionKey;\n }\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n const resolveCipher = filterName => {\n if (!(filterName instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = this.cf.get(filterName.name);\n const cfm = cryptFilter?.get(\"CFM\");\n if (!cfm || cfm.name === \"None\") {\n return NullCipher;\n }\n if (!this.encryptionKey) {\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n }\n if (this.algorithm === 5 || cfm.name === \"AESV3\") {\n return AES256Cipher.bind(null, this.encryptionKey);\n }\n if (cfm.name === \"V2\") {\n return ARCFourCipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, false));\n }\n if (cfm.name === \"AESV2\") {\n return AES128Cipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, true));\n }\n throw new FormatError(\"Unknown crypto method\");\n };\n const transform = new CipherTransform(resolveCipher, this.strf, this.stmf);\n transform.embeddedFilterName = this.eff;\n return transform;\n }\n const resolveCipher = () => ARCFourCipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, false));\n return new CipherTransform(resolveCipher);\n }\n}\n\n;// ./src/core/xref.js\n\n\n\n\n\n\nclass XRef {\n #cacheMap = new Map();\n #entries = [];\n #newPersistentRefNum = null;\n #newTemporaryRefNum = null;\n #parsedWithRecovery = false;\n #pendingRefs = new RefSet();\n #persistentRefsCache = null;\n #xrefSectionOffsets = new Set();\n #xrefSectionsComplete = true;\n #xrefStms = new Set();\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n }\n getNewPersistentRef(obj) {\n if (this.#newPersistentRefNum === null) {\n this.#newPersistentRefNum = this.#entries.length || 1;\n }\n const num = this.#newPersistentRefNum++;\n this.#cacheMap.set(num, obj);\n return Ref.get(num, 0);\n }\n getNewTemporaryRef() {\n if (this.#newTemporaryRefNum === null) {\n this.#newTemporaryRefNum = this.#entries.length || 1;\n if (this.#newPersistentRefNum) {\n this.#persistentRefsCache = new Map();\n for (let i = this.#newTemporaryRefNum; i < this.#newPersistentRefNum; i++) {\n this.#persistentRefsCache.set(i, this.#cacheMap.get(i));\n this.#cacheMap.delete(i);\n }\n }\n }\n return Ref.get(this.#newTemporaryRefNum++, 0);\n }\n resetNewTemporaryRef() {\n this.#newTemporaryRefNum = null;\n if (this.#persistentRefsCache) {\n for (const [num, obj] of this.#persistentRefsCache) {\n this.#cacheMap.set(num, obj);\n }\n }\n this.#persistentRefsCache = null;\n }\n setStartXRef(startXRef) {\n this.startXRefQueue = [startXRef];\n }\n parse(recoveryMode = false) {\n this.#parsedWithRecovery = recoveryMode;\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids?.length ? ids[0] : \"\";\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n }\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n processXRefTable(parser) {\n this._tableState ??= {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2\n };\n const obj = this.readXRefTable(parser);\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n }\n let dict = parser.getObj();\n if (dict instanceof BaseStream) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n }\n delete this._tableState;\n return dict;\n }\n readXRefTable(parser) {\n const stream = parser.lexer.stream;\n const tableState = this._tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n let obj;\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd(obj = parser.getObj(), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\"Invalid XRef table: wrong types in subsection header\");\n }\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n const entry = {\n offset: parser.getObj(),\n gen: parser.getObj(),\n free: false,\n uncompressed: false\n };\n const type = parser.getObj();\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n }\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n this.#entries[first + i] ??= entry;\n }\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n if (this.#entries[0] && !this.#entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n const {\n dict,\n pos\n } = stream;\n const byteWidths = dict.get(\"W\");\n const range = dict.get(\"Index\") || [0, dict.get(\"Size\")];\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: pos\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n return stream.dict;\n }\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths;\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = type << 8 | typeByte;\n }\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = offset << 8 | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = generation << 8 | generationByte;\n }\n const entry = {\n offset,\n gen: generation,\n free: false,\n uncompressed: false\n };\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n this.#entries[first + i] ??= entry;\n }\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n indexObjects() {\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break;\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const gEndobjRegExp = /\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g;\n const gStartxrefRegExp = /\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g;\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this.#entries.length = 0;\n this.#cacheMap.clear();\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n bufferStr = bytesToString(buffer),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if (m = objRegExp.exec(token)) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n const startPos = position + token.length;\n let contentLength,\n updateEntries = false;\n if (!this.#entries[num]) {\n updateEntries = true;\n } else if (this.#entries[num].gen === gen) {\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos))\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.#entries[num] = {\n offset: position - stream.start,\n gen,\n free: false,\n uncompressed: true\n };\n }\n gEndobjRegExp.lastIndex = startPos;\n const match = gEndobjRegExp.exec(bufferStr);\n if (match) {\n const endPos = gEndobjRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"endobj\") {\n warn(`indexObjects: Found \"${match[1]}\" inside of another \"obj\", ` + 'caused by missing \"endobj\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n const content = buffer.subarray(position, position + contentLength);\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.#xrefStms.add(position - stream.start);\n }\n position += contentLength;\n } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n const startPos = position + token.length;\n let contentLength;\n gStartxrefRegExp.lastIndex = startPos;\n const match = gStartxrefRegExp.exec(bufferStr);\n if (match) {\n const endPos = gStartxrefRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"startxref\") {\n warn(`indexObjects: Found \"${match[1]}\" after \"trailer\", ` + 'caused by missing \"startxref\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n position += contentLength;\n } else {\n position += token.length + 1;\n }\n }\n for (const xrefStm of xrefStms) {\n this.startXRefQueue.push(xrefStm);\n this.readXRef(true);\n }\n const trailerDicts = [];\n let isEncrypted = false;\n for (const trailer of trailers) {\n stream.pos = trailer;\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n trailerDicts.push(dict);\n if (dict.has(\"Encrypt\")) {\n isEncrypted = true;\n }\n }\n let trailerDict, trailerError;\n for (const dict of [...trailerDicts, \"genFallback\", ...trailerDicts]) {\n if (dict === \"genFallback\") {\n if (!trailerError) {\n break;\n }\n this._generationFallback = true;\n continue;\n }\n let validPagesDict = false;\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (Number.isInteger(pagesCount)) {\n validPagesDict = true;\n }\n } catch (ex) {\n trailerError = ex;\n continue;\n }\n if (validPagesDict && (!isEncrypted || dict.has(\"Encrypt\")) && dict.has(\"ID\")) {\n return dict;\n }\n trailerDict = dict;\n }\n if (trailerDict) {\n return trailerDict;\n }\n if (this.topDict) {\n return this.topDict;\n }\n if (!trailerDicts.length) {\n for (const num in this.#entries) {\n const entry = this.#entries[num];\n if (!entry) {\n continue;\n }\n const ref = Ref.get(parseInt(num, 10), entry.gen);\n let obj;\n try {\n obj = this.fetch(ref);\n } catch {\n continue;\n }\n if (obj instanceof BaseStream) {\n obj = obj.dict;\n }\n if (obj instanceof Dict && obj.has(\"Root\")) {\n return obj;\n }\n }\n }\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n const startXRefParsedCache = new Set();\n while (this.startXRefQueue.length) {\n try {\n const startXRef = this.startXRefQueue[0];\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n stream.pos = startXRef + stream.start;\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n let obj = parser.getObj();\n let dict;\n if (isCmd(obj, \"xref\")) {\n dict = this.processXRefTable(parser);\n this.topDict ||= dict;\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj) && !this.#xrefStms.has(obj)) {\n this.#xrefStms.add(obj);\n this.startXRefQueue.push(obj);\n }\n } else if (Number.isInteger(obj)) {\n if (!Number.isInteger(parser.getObj()) || !isCmd(parser.getObj(), \"obj\") || !((obj = parser.getObj()) instanceof BaseStream)) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n this.topDict ||= dict;\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n this.#xrefSectionOffsets.add(startXRef);\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n this.startXRefQueue.push(obj.num);\n }\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n this.#xrefSectionsComplete = false;\n info(\"(while reading XRef): \" + e);\n }\n this.startXRefQueue.shift();\n }\n if (this.topDict) {\n return this.topDict;\n }\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n countUpdatesAfter(offset) {\n if (this.#parsedWithRecovery || !this.#xrefSectionsComplete) {\n return null;\n }\n const relativeOffset = offset - this.stream.start;\n let count = 0;\n for (const sectionOffset of this.#xrefSectionOffsets) {\n if (sectionOffset >= relativeOffset && !this.#xrefStms.has(sectionOffset)) {\n count++;\n }\n }\n return count;\n }\n getEntry(i) {\n const entry = this.#entries[i];\n return entry && !entry.free && entry.offset ? entry : null;\n }\n fetchIfRef(obj, suppressEncryption = false) {\n return obj instanceof Ref ? this.fetch(obj, suppressEncryption) : obj;\n }\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n const cacheEntry = this.#cacheMap.get(num);\n if (cacheEntry !== undefined) {\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n if (xrefEntry === null) {\n return xrefEntry;\n }\n if (this.#pendingRefs.has(ref)) {\n this.#pendingRefs.remove(ref);\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this.#pendingRefs.put(ref);\n try {\n xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n this.#pendingRefs.remove(ref);\n } catch (ex) {\n this.#pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n const msg = `Inconsistent generation in XRef: ${ref}`;\n if (this._generationFallback && xrefEntry.gen < gen) {\n warn(msg);\n return this.fetchUncompressed(Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption);\n }\n throw new XRefEntryException(msg);\n }\n const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj();\n if (!(xrefEntry instanceof BaseStream)) {\n this.#cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(`invalid object number in the ObjStm stream: ${num}`);\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n }\n nums[i] = num;\n const entry = this.getEntry(num);\n if (entry?.offset === tableOffset && entry.gen !== i) {\n entry.gen = i;\n }\n offsets[i] = offset;\n }\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)),\n xref: this,\n allowStreams: true\n });\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.#entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n this.#cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n async fetchIfRefAsync(obj, suppressEncryption) {\n return obj instanceof Ref ? this.fetchAsync(obj, suppressEncryption) : obj;\n }\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n getCatalogObj() {\n return this.root;\n }\n}\n\n;// ./src/core/document.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\nconst SIGNATURE_TAIL_CHUNK_SIZE = 65536;\nclass Page {\n #resourcesPromise = null;\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalColorSpaceCache,\n globalImageCache,\n systemFontCache,\n nonBlendModesSet,\n xfaFactory\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalColorSpaceCache = globalColorSpaceCache;\n this.globalImageCache = globalImageCache;\n this.systemFontCache = systemFontCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.xfaFactory = xfaFactory;\n const idCounters = {\n obj: 0\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n static getPageObjId() {\n return `p${ref.toString()}`;\n }\n };\n }\n _createPartialEvaluator(handler, pageIndex = this.pageIndex) {\n return new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalColorSpaceCache: this.globalColorSpaceCache,\n globalImageCache: this.globalImageCache,\n systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n }\n #getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({\n xref: this.xref,\n dictArray: value\n });\n }\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n get resources() {\n const resources = this.#getInheritableProperty(\"Resources\");\n return shadow(this, \"resources\", resources instanceof Dict ? resources : Dict.empty);\n }\n getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n const box = lookupNormalRect(this.#getInheritableProperty(name, true), null);\n if (box) {\n if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return box;\n }\n warn(`Empty, or invalid, /${name} entry.`);\n }\n return null;\n }\n get mediaBox() {\n return shadow(this, \"mediaBox\", this.getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n }\n get cropBox() {\n return shadow(this, \"cropBox\", this.getBoundingBox(\"CropBox\") || this.mediaBox);\n }\n get userUnit() {\n const obj = this.pageDict.get(\"UserUnit\");\n return shadow(this, \"userUnit\", typeof obj === \"number\" && obj > 0 ? obj : 1.0);\n }\n get view() {\n const {\n cropBox,\n mediaBox\n } = this;\n if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return shadow(this, \"view\", box);\n }\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n return shadow(this, \"view\", mediaBox);\n }\n get rotate() {\n let rotate = this.#getInheritableProperty(\"Rotate\") || 0;\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n rotate = (rotate % 360 + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n #onSubStreamError(reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n async getContentStream() {\n const content = await this.pdfManager.ensure(this, \"content\");\n if (content instanceof BaseStream && !content.isImageStream) {\n if (content.isAsync) {\n const bytes = await content.asyncGetBytes();\n if (bytes) {\n return new Stream(bytes, 0, bytes.length, content.dict);\n }\n }\n return content;\n }\n if (Array.isArray(content)) {\n const promises = [];\n for (let i = 0, ii = content.length; i < ii; i++) {\n const item = content[i];\n if (item instanceof BaseStream && item.isAsync) {\n promises.push(item.asyncGetBytes().then(bytes => {\n if (bytes) {\n content[i] = new Stream(bytes, 0, bytes.length, item.dict);\n }\n }));\n }\n }\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n return new StreamsSequenceStream(content, this.#onSubStreamError.bind(this));\n }\n return new NullStream();\n }\n get xfaData() {\n return shadow(this, \"xfaData\", this.xfaFactory ? {\n bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n } : null);\n }\n async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n const promises = [];\n for (const annotation of annotations) {\n if (!annotation.id) {\n continue;\n }\n const ref = Ref.fromString(annotation.id);\n if (!ref) {\n warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\n continue;\n }\n if (annotation.deleted) {\n deletedAnnotations.put(ref);\n if (annotation.popupRef) {\n const popupRef = Ref.fromString(annotation.popupRef);\n if (popupRef) {\n deletedAnnotations.put(popupRef);\n }\n }\n continue;\n }\n if (annotation.popup?.deleted) {\n const popupRef = Ref.fromString(annotation.popupRef);\n if (popupRef) {\n deletedAnnotations.put(popupRef);\n }\n }\n existingAnnotations?.put(ref);\n annotation.ref = ref;\n promises.push(this.xref.fetchAsync(ref).then(obj => {\n if (obj instanceof Dict) {\n annotation.oldAnnotation = obj.clone();\n }\n }, () => {\n warn(`Cannot fetch \\`oldAnnotation\\` for: ${ref}.`);\n }));\n delete annotation.id;\n }\n await Promise.all(promises);\n }\n async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\n if (this.xfaFactory) {\n throw new Error(\"XFA: Cannot save new annotations.\");\n }\n const partialEvaluator = this._createPartialEvaluator(handler);\n const deletedAnnotations = new RefSet();\n const existingAnnotations = new RefSet();\n await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n const pageDict = this.pageDict;\n const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a)));\n const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, this.xref, task, annotations, imagePromises, changes);\n for (const {\n ref\n } of newData.annotations) {\n if (ref instanceof Ref && !existingAnnotations.has(ref)) {\n annotationsArray.push(ref);\n }\n }\n const dict = pageDict.clone();\n dict.set(\"Annots\", annotationsArray);\n changes.put(this.ref, {\n data: dict\n });\n for (const deletedRef of deletedAnnotations) {\n changes.put(deletedRef, {\n data: null\n });\n }\n }\n async save(handler, task, annotationStorage, changes) {\n const partialEvaluator = this._createPartialEvaluator(handler);\n const annotations = await this._parsedAnnotations;\n const promises = [];\n for (const annotation of annotations) {\n promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) {\n warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return null;\n }));\n }\n return Promise.all(promises);\n }\n async loadResources(keys) {\n await (this.#resourcesPromise ??= this.pdfManager.ensure(this, \"resources\"));\n await ObjectLoader.load(this.resources, keys, this.xref);\n }\n async #getMergedResources(streamDict, keys) {\n const localResources = streamDict?.get(\"Resources\");\n if (!(localResources instanceof Dict && localResources.size)) {\n return this.resources;\n }\n await ObjectLoader.load(localResources, keys, this.xref);\n return Dict.merge({\n xref: this.xref,\n dictArray: [localResources, this.resources],\n mergeSubDicts: true\n });\n }\n async getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n pageIndex = this.pageIndex,\n annotationStorage = null,\n modifiedIds = null\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST);\n const partialEvaluator = this._createPartialEvaluator(handler, pageIndex);\n const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;\n const newAnnots = newAnnotsByPage?.get(this.pageIndex);\n let newAnnotationsPromise = Promise.resolve(null);\n let deletedAnnotations = null;\n if (newAnnots) {\n const annotationGlobalsPromise = this.pdfManager.ensureDoc(\"annotationGlobals\");\n let imagePromises;\n const missingBitmaps = new Set();\n for (const {\n bitmapId,\n bitmap\n } of newAnnots) {\n if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\n missingBitmaps.add(bitmapId);\n }\n }\n const {\n isOffscreenCanvasSupported\n } = this.evaluatorOptions;\n if (missingBitmaps.size > 0) {\n const annotationWithBitmaps = newAnnots.slice();\n for (const [key, annotation] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\n annotationWithBitmaps.push(annotation);\n }\n }\n imagePromises = AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported);\n } else {\n imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported);\n }\n deletedAnnotations = new RefSet();\n newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => {\n if (!annotationGlobals) {\n return null;\n }\n return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises);\n });\n }\n const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(async ([contentStream]) => {\n const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_OPERATOR_LIST);\n const opList = new OperatorList(intent, sink);\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(resources, this.nonBlendModesSet),\n pageIndex,\n cacheKey\n });\n await partialEvaluator.getOperatorList({\n stream: contentStream,\n task,\n resources,\n operatorList: opList\n });\n return opList;\n });\n let [pageOpList, annotations, newAnnotations] = await Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]);\n if (newAnnotations) {\n annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n for (let i = 0, ii = newAnnotations.length; i < ii; i++) {\n const newAnnotation = newAnnotations[i];\n if (newAnnotation.refToReplace) {\n const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n if (j >= 0) {\n annotations.splice(j, 1, newAnnotation);\n newAnnotations.splice(i--, 1);\n ii--;\n }\n }\n }\n annotations = annotations.concat(newAnnotations);\n }\n if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n const opListPromises = [];\n for (const annotation of annotations) {\n if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) {\n warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return {\n opList: null,\n separateForm: false,\n separateCanvas: false\n };\n }));\n }\n }\n const opLists = await Promise.all(opListPromises);\n let form = false,\n canvas = false;\n for (const {\n opList,\n separateForm,\n separateCanvas\n } of opLists) {\n pageOpList.addOpList(opList);\n form ||= separateForm;\n canvas ||= separateCanvas;\n }\n pageOpList.flush(true, {\n form,\n canvas\n });\n return {\n length: pageOpList.totalLength\n };\n }\n async extractTextContent({\n handler,\n task,\n includeMarkedContent,\n disableNormalization,\n sink,\n intersector = null\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources(RESOURCES_KEYS_TEXT_CONTENT);\n const langPromise = this.pdfManager.ensureCatalog(\"lang\");\n const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]);\n const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_TEXT_CONTENT);\n const partialEvaluator = this._createPartialEvaluator(handler);\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources,\n includeMarkedContent,\n disableNormalization,\n sink,\n viewBox: this.view,\n lang,\n intersector\n });\n }\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\"structTreeRoot\");\n if (!structTreeRoot) {\n return null;\n }\n await this._parsedAnnotations;\n try {\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n return await this.pdfManager.ensure(structTree, \"serializable\");\n } catch (ex) {\n warn(`getStructTree: \"${ex}\".`);\n return null;\n }\n }\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse(this.ref);\n return tree;\n }\n async getAnnotationsData(handler, task, intent) {\n const annotations = await this._parsedAnnotations;\n if (annotations.length === 0) {\n return annotations;\n }\n const annotationsData = [],\n textContentPromises = [];\n let partialEvaluator;\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n const highlightedAnnotations = [];\n for (const annotation of annotations) {\n const isVisible = intentAny || intentDisplay && annotation.viewable;\n if (isVisible || intentPrint && annotation.printable) {\n annotationsData.push(annotation.data);\n }\n if (annotation.hasTextContent && isVisible) {\n partialEvaluator ??= this._createPartialEvaluator(handler);\n textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) {\n warn(`getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`);\n }));\n } else if (annotation.overlaysTextContent && isVisible) {\n highlightedAnnotations.push(annotation);\n }\n }\n if (highlightedAnnotations.length > 0) {\n const intersector = new Intersector(highlightedAnnotations);\n textContentPromises.push(this.extractTextContent({\n handler,\n task,\n includeMarkedContent: false,\n disableNormalization: false,\n sink: null,\n intersector\n }).then(() => {\n intersector.setText();\n }));\n }\n await Promise.all(textContentPromises);\n return annotationsData;\n }\n get annotations() {\n const annots = this.#getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n get _parsedAnnotations() {\n const promise = this.pdfManager.ensure(this, \"annotations\").then(async annots => {\n if (annots.length === 0) {\n return annots;\n }\n const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n if (!annotationGlobals) {\n return [];\n }\n const orphanFields = fieldObjects?.orphanFields;\n const annotationPromises = [];\n for (const annotationRef of annots) {\n annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, null, this.ref).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n }));\n }\n const sortedAnnotations = [];\n let popupAnnotations, widgetAnnotations;\n for (const annotation of await Promise.all(annotationPromises)) {\n if (!annotation) {\n continue;\n }\n if (annotation instanceof WidgetAnnotation) {\n (widgetAnnotations ||= []).push(annotation);\n continue;\n }\n if (annotation instanceof PopupAnnotation) {\n (popupAnnotations ||= []).push(annotation);\n continue;\n }\n sortedAnnotations.push(annotation);\n }\n if (widgetAnnotations) {\n sortedAnnotations.push(...widgetAnnotations);\n }\n if (popupAnnotations) {\n sortedAnnotations.push(...popupAnnotations);\n }\n return sortedAnnotations;\n });\n return shadow(this, \"_parsedAnnotations\", promise);\n }\n get jsActions() {\n const actions = collectActions(this.xref, this.pageDict, PageActionEventType);\n return shadow(this, \"jsActions\", actions);\n }\n async collectAnnotationsByType(handler, task, types, promises, annotationGlobals) {\n const {\n pageIndex\n } = this;\n if (Object.hasOwn(this, \"_parsedAnnotations\")) {\n const cachedAnnotations = await this._parsedAnnotations;\n for (const {\n data\n } of cachedAnnotations) {\n if (!types || types.has(data.annotationType)) {\n data.pageIndex = pageIndex;\n promises.push(Promise.resolve(data));\n }\n }\n return;\n }\n const annots = await this.pdfManager.ensure(this, \"annotations\");\n let partialEvaluator;\n for (const annotationRef of annots) {\n promises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, null, types, this.ref).then(async annotation => {\n if (!annotation) {\n return null;\n }\n annotation.data.pageIndex = pageIndex;\n if (annotation.hasTextContent && annotation.viewable) {\n partialEvaluator ??= this._createPartialEvaluator(handler);\n await annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]);\n }\n return annotation.data;\n }).catch(function (reason) {\n warn(`collectAnnotationsByType: \"${reason}\".`);\n return null;\n }));\n }\n }\n}\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nfunction find(stream, signature, limit = 1024, backwards = false) {\n const signatureLength = signature.length;\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\nclass PDFDocument {\n #pagePromises = new Map();\n #signatureData = null;\n #version = null;\n constructor(pdfManager, stream) {\n if (stream.length <= 0) {\n throw new InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n }\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n const idCounters = {\n font: 0\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n }\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n if (this.linearization) {\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n stream.skip(6);\n let ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.pos++;\n ch = stream.peekByte();\n }\n startXRef = stream.pos - stream.start;\n }\n } else {\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= 0x20 && ch <= 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n return;\n }\n stream.moveStart();\n stream.skip(PDF_HEADER_SIGNATURE.length);\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > 0x20 && version.length < 7) {\n version += String.fromCharCode(ch);\n }\n if (PDF_VERSION_REGEXP.test(version)) {\n this.#version = version;\n } else {\n warn(`Invalid PDF header version: ${version}`);\n }\n }\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n #hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"#hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this.#hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n }\n const isSignature = isName(getInheritableProperty({\n dict: field,\n key: \"FT\"\n }), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n get _xfaStreams() {\n const {\n acroForm\n } = this.catalog;\n if (!acroForm) {\n return null;\n }\n const xfa = acroForm.get(\"XFA\");\n const entries = new Map([\"xdp:xdp\", \"template\", \"datasets\", \"config\", \"connectionSet\", \"localeSet\", \"stylesheet\", \"/xdp:xdp\"].map(e => [e, null]));\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n entries.set(\"xdp:xdp\", xfa);\n return entries;\n }\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n if (!entries.has(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n entries.set(name, data);\n }\n return entries;\n }\n get xfaDatasets() {\n const streams = this._xfaStreams;\n if (!streams) {\n return shadow(this, \"xfaDatasets\", null);\n }\n for (const key of [\"datasets\", \"xdp:xdp\"]) {\n const stream = streams.get(key);\n if (!stream) {\n continue;\n }\n try {\n const str = stringToUTF8String(stream.getString());\n const data = {\n [key]: str\n };\n return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n break;\n }\n }\n return shadow(this, \"xfaDatasets\", null);\n }\n get xfaData() {\n const streams = this._xfaStreams;\n if (!streams) {\n return null;\n }\n const data = new Map();\n for (const [key, stream] of streams) {\n if (!stream) {\n continue;\n }\n try {\n data.set(key, stringToUTF8String(stream.getString()));\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return data;\n }\n get xfaFactory() {\n let data;\n if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n async #loadXfaImages() {\n const xfaImages = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImages) {\n return;\n }\n this.xfaFactory.setImages(xfaImages);\n }\n async #loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n await ObjectLoader.load(resources, [\"Font\"], this.xref);\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions, {\n useSystemFonts: false\n });\n const {\n builtInCMapCache,\n fontCache,\n standardFontDataCache\n } = this.catalog;\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n options\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts.at(-1);\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n }\n };\n const parseFont = (fontName, fallbackFontDict, cssFontInfo) => partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, fallbackFontDict, cssFontInfo).catch(reason => {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n });\n const promises = [];\n for (const [fontName, font] of fontRes) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n const fontFamily = normalizeCSSFontFamily(descriptor.get(\"FontFamily\"));\n const fontWeight = descriptor.get(\"FontWeight\");\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = {\n fontFamily,\n fontWeight,\n italicAngle\n };\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(parseFont(fontName, null, cssFontInfo));\n }\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n if (!missingFonts) {\n return;\n }\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n reallyMissingFonts.add(missing);\n }\n }\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [{\n name: \"Regular\",\n fontWeight: 400,\n italicAngle: 0\n }, {\n name: \"Bold\",\n fontWeight: 700,\n italicAngle: 0\n }, {\n name: \"Italic\",\n fontWeight: 400,\n italicAngle: 12\n }, {\n name: \"BoldItalic\",\n fontWeight: 700,\n italicAngle: 12\n }]) {\n const name = `${missing}-${fontInfo.name}`;\n promises.push(parseFont(name, getXfaFontDict(name), {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle\n }));\n }\n }\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n loadXfaResources(handler, task) {\n return Promise.all([this.#loadXfaFonts(handler, task).catch(() => {}), this.#loadXfaImages()]);\n }\n serializeXfaData(annotationStorage) {\n return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n }\n get version() {\n return this.catalog.version || this.#version;\n }\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false\n };\n const {\n acroForm\n } = this.catalog;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields;\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty;\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures = hasSignatures && this.#hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n get documentInfo() {\n const {\n catalog,\n formInfo,\n xref\n } = this;\n const docInfo = {\n PDFFormatVersion: this.version,\n Language: catalog.lang,\n EncryptFilterName: xref.encrypt?.filterName ?? null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: formInfo.hasAcroForm,\n IsXFAPresent: formInfo.hasXfa,\n IsCollectionPresent: !!catalog.collection,\n IsSignaturesPresent: formInfo.hasSignatures\n };\n let infoDict;\n try {\n infoDict = xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n for (const [key, value] of infoDict) {\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n break;\n }\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n (docInfo.Custom ??= new Map()).set(key, customValue);\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n get fingerprints() {\n const FINGERPRINT_FIRST_BYTES = 1024;\n const EMPTY_FINGERPRINT = \"\\x00\".repeat(16);\n function validate(data) {\n return typeof data === \"string\" && data.length === 16 && data !== EMPTY_FINGERPRINT;\n }\n const id = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(id) && validate(id[0])) {\n hashOriginal = stringToBytes(id[0]);\n if (id[1] !== id[0] && validate(id[1])) {\n hashModified = stringToBytes(id[1]);\n }\n } else {\n hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n return shadow(this, \"fingerprints\", [hashOriginal.toHex(), hashModified?.toHex() ?? null]);\n }\n async #getLinearizationPage(pageIndex) {\n const {\n catalog,\n linearization,\n xref\n } = this;\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Type\") && !obj.has(\"Kids\") && obj.has(\"Contents\")) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1);\n }\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n return [obj, ref];\n }\n }\n throw new FormatError(\"The Linearization dictionary doesn't point to a valid Page dictionary.\");\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n getPage(pageIndex) {\n const cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const {\n catalog,\n linearization,\n xfaFactory\n } = this;\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization?.pageFirst === pageIndex) {\n promise = this.#getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalColorSpaceCache: catalog.globalColorSpaceCache,\n globalImageCache: catalog.globalImageCache,\n systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory\n }));\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n this.#pagePromises.delete(0);\n await this.cleanup();\n throw new XRefParseException();\n }\n }\n }\n async checkLastPage(recoveryMode = false) {\n const {\n catalog,\n pdfManager\n } = this;\n catalog.setActualNumPages();\n let numPages;\n try {\n await Promise.all([pdfManager.ensureDoc(\"xfaFactory\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"numPages\")]);\n if (this.xfaFactory) {\n return;\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n this.#pagePromises.delete(numPages - 1);\n await this.cleanup();\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalColorSpaceCache: this.globalColorSpaceCache,\n globalImageCache: catalog.globalImageCache,\n systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null\n }));\n }\n this.#pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n async fontFallback(id, handler) {\n const {\n catalog,\n pdfManager\n } = this;\n for (const translatedFont of await Promise.all(catalog.fontCache)) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler, pdfManager.evaluatorOptions);\n return;\n }\n }\n }\n async cleanup(manuallyTriggered = false) {\n return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches();\n }\n async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) {\n const {\n xref\n } = this;\n if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\n return;\n }\n visitedRefs.put(fieldRef);\n const field = await xref.fetchAsync(fieldRef);\n if (!(field instanceof Dict)) {\n return;\n }\n let subtype = await field.getAsync(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n switch (subtype) {\n case \"Link\":\n return;\n }\n if (field.has(\"T\")) {\n const partName = stringToPDFString(await field.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n } else {\n let obj = field;\n const walkedRefs = new RefSet();\n while (true) {\n obj = obj.getRaw(\"Parent\") || parentRef;\n if (obj instanceof Ref) {\n if (visitedRefs.has(obj) || walkedRefs.has(obj)) {\n break;\n }\n walkedRefs.put(obj);\n obj = await xref.fetchAsync(obj);\n }\n if (!(obj instanceof Dict)) {\n break;\n }\n if (obj.has(\"T\")) {\n const partName = stringToPDFString(await obj.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n break;\n }\n }\n }\n if (parentRef && !field.has(\"Parent\") && isName(field.get(\"Subtype\"), \"Widget\")) {\n orphanFields.put(fieldRef, parentRef);\n }\n promises.getOrInsertComputed(name, makeArr).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n warn(`#collectFieldObjects: \"${reason}\".`);\n return null;\n }));\n if (!field.has(\"Kids\")) {\n return;\n }\n const kids = await field.getAsync(\"Kids\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields);\n }\n }\n }\n get fieldObjects() {\n const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n if (!formInfo.hasFields) {\n return null;\n }\n const annotationGlobals = await this.annotationGlobals;\n if (!annotationGlobals) {\n return null;\n }\n const {\n acroForm\n } = annotationGlobals;\n const visitedRefs = new RefSet();\n const allFields = new Map();\n const fieldPromises = new Map();\n const orphanFields = new RefMap();\n for (const fieldRef of acroForm.get(\"Fields\")) {\n await this.#collectFieldObjects(\"\", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields);\n }\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(Promise.all(promises).then(fields => {\n fields = fields.filter(Boolean);\n if (fields.length > 0) {\n allFields.set(name, fields);\n }\n }));\n }\n await Promise.all(allPromises);\n return {\n allFields: allFields.size ? allFields : null,\n orphanFields\n };\n });\n return shadow(this, \"fieldObjects\", promise);\n }\n async #collectSignatureFields(fields, out, visitedRefs) {\n if (!Array.isArray(fields)) {\n return;\n }\n for (const fieldRef of fields) {\n if (fieldRef instanceof Ref) {\n if (visitedRefs.has(fieldRef)) {\n continue;\n }\n visitedRefs.put(fieldRef);\n }\n const field = await this.xref.fetchIfRefAsync(fieldRef);\n if (!(field instanceof Dict)) {\n continue;\n }\n if (isName(await field.getAsync(\"FT\"), \"Sig\")) {\n const sigDict = await field.getAsync(\"V\");\n if (sigDict instanceof Dict) {\n const parsed = await this.#parseSignatureDict(field, sigDict, fieldRef);\n if (parsed) {\n out.push(parsed);\n }\n }\n }\n if (field.has(\"Kids\")) {\n await this.#collectSignatureFields(await field.getAsync(\"Kids\"), out, visitedRefs);\n }\n }\n }\n async #getByteRange(begin, end) {\n try {\n return this.stream.getByteRange(begin, end);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(begin, end);\n return this.#getByteRange(begin, end);\n }\n }\n async #coversWholeDocument(signedEnd, modificationsAfterSignature) {\n if (modificationsAfterSignature > 0) {\n return false;\n }\n const fileLength = this.stream.end;\n for (let begin = signedEnd; begin < fileLength; begin += SIGNATURE_TAIL_CHUNK_SIZE) {\n const end = Math.min(begin + SIGNATURE_TAIL_CHUNK_SIZE, fileLength);\n const tail = await this.#getByteRange(begin, end);\n for (const byte of tail) {\n if (byte !== 0x00 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0c && byte !== 0x0d && byte !== 0x20) {\n return false;\n }\n }\n }\n return true;\n }\n async #parseSignatureDict(field, sigDict, fieldRef) {\n const byteRange = await sigDict.getAsync(\"ByteRange\");\n if (!Array.isArray(byteRange) || byteRange.length !== 4 || byteRange.some(n => !Number.isInteger(n) || n < 0)) {\n return null;\n }\n const [a, b, c, d] = byteRange;\n const fileLength = this.stream.end || 0;\n if (a !== 0 || b <= 0 || a + b > c || c + d > fileLength || fileLength === 0) {\n return null;\n }\n const contents = await sigDict.getAsync(\"Contents\");\n if (typeof contents !== \"string\" || contents.length === 0) {\n return null;\n }\n const [filterName, subFilterName, t, name, reason, location, contactInfo, m] = await Promise.all([sigDict.getAsync(\"Filter\"), sigDict.getAsync(\"SubFilter\"), field.getAsync(\"T\"), sigDict.getAsync(\"Name\"), sigDict.getAsync(\"Reason\"), sigDict.getAsync(\"Location\"), sigDict.getAsync(\"ContactInfo\"), sigDict.getAsync(\"M\")]);\n const filter = filterName instanceof Name ? filterName.name : null,\n subFilter = subFilterName instanceof Name ? subFilterName.name : null;\n let signatureType = null;\n if (subFilter === \"adbe.pkcs7.detached\") {\n signatureType = 0;\n } else if (subFilter === \"adbe.pkcs7.sha1\") {\n signatureType = 1;\n }\n const refKey = fieldRef instanceof Ref ? fieldRef.toString() : \"inline\";\n return {\n id: `${refKey}:${a}-${b}-${c}-${d}`,\n fieldName: typeof t === \"string\" ? stringToPDFString(t) : \"\",\n signerName: typeof name === \"string\" ? stringToPDFString(name) : null,\n reason: typeof reason === \"string\" ? stringToPDFString(reason) : null,\n location: typeof location === \"string\" ? stringToPDFString(location) : null,\n contactInfo: typeof contactInfo === \"string\" ? stringToPDFString(contactInfo) : null,\n signingTime: typeof m === \"string\" ? m : null,\n filter,\n subFilter,\n signatureType,\n byteRange,\n pkcs7: stringToBytes(contents),\n revisionIndex: 0,\n parentId: null\n };\n }\n get signatures() {\n const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n if (!formInfo.hasSignatures || !formInfo.hasFields) {\n return null;\n }\n const annotationGlobals = await this.annotationGlobals;\n if (!annotationGlobals) {\n return null;\n }\n const fields = annotationGlobals.acroForm.get(\"Fields\");\n const collected = [];\n await this.#collectSignatureFields(fields, collected, new RefSet());\n await Promise.all(collected.map(async signature => {\n const signedEnd = signature.byteRange[2] + signature.byteRange[3];\n signature.modificationsAfterSignature = this.xref.countUpdatesAfter(signedEnd);\n signature.coversWholeDocument = await this.#coversWholeDocument(signedEnd, signature.modificationsAfterSignature);\n }));\n collected.sort((a, b) => b.byteRange[2] + b.byteRange[3] - (a.byteRange[2] + a.byteRange[3]));\n for (let i = 0, ii = collected.length; i < ii; i++) {\n const sig = collected[i];\n sig.revisionIndex = i;\n for (let j = i - 1; j >= 0; j--) {\n const candidate = collected[j];\n if (candidate.byteRange[2] + candidate.byteRange[3] > sig.byteRange[2] + sig.byteRange[3]) {\n sig.parentId = candidate.id;\n break;\n }\n }\n }\n const signatureData = new Map();\n const metadata = collected.map(sig => {\n const {\n pkcs7,\n ...rest\n } = sig;\n signatureData.set(sig.id, {\n byteRange: sig.byteRange,\n pkcs7\n });\n return rest;\n });\n this.#signatureData = signatureData;\n return metadata.length ? metadata : null;\n });\n return shadow(this, \"signatures\", promise);\n }\n async getSignatureData(id) {\n await this.signatures;\n const signature = this.#signatureData?.get(id);\n if (!signature) {\n return null;\n }\n const {\n byteRange,\n pkcs7\n } = signature;\n const [a, b, c, d] = byteRange;\n const data = await Promise.all([this.#getByteRange(a, a + b), this.#getByteRange(c, c + d)]);\n return {\n data,\n pkcs7\n };\n }\n get hasJSActions() {\n const promise = Promise.all([this.pdfManager.ensureCatalog(\"jsActions\"), this.pdfManager.ensureDoc(\"fieldObjects\")]).then(([catalogJsActions, fieldObjects]) => {\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects?.allFields) {\n return fieldObjects.allFields.values().some(fieldObj => fieldObj.some(obj => obj.actions !== null));\n }\n return false;\n });\n return shadow(this, \"hasJSActions\", promise);\n }\n get calculationOrderIds() {\n const calculationOrder = this.catalog.acroForm?.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n return shadow(this, \"calculationOrderIds\", ids.length ? ids : null);\n }\n get annotationGlobals() {\n return shadow(this, \"annotationGlobals\", AnnotationFactory.createGlobals(this.pdfManager));\n }\n async toJSObject(value, firstCall = true) {\n throw new Error(\"Not implemented: toJSObject\");\n }\n}\n\n;// ./src/core/pdf_manager.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\nclass BasePdfManager {\n constructor({\n docBaseUrl,\n docId,\n enableXfa,\n evaluatorOptions,\n handler,\n password\n }) {\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this._docId = docId;\n this._password = password;\n this.enableXfa = enableXfa;\n evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported;\n this.evaluatorOptions = Object.freeze(evaluatorOptions);\n ImageResizer.setOptions(evaluatorOptions);\n JpegStream.setOptions(evaluatorOptions);\n OperatorList.setOptions(evaluatorOptions);\n const options = {\n ...evaluatorOptions,\n handler\n };\n IccColorSpace.setOptions(options);\n CmykICCBasedCS.setOptions(options);\n PDFFunctionFactory.setOptions(options);\n Pattern.setOptions(options);\n WasmImage.setOptions(options);\n }\n get docId() {\n return this._docId;\n }\n get password() {\n return this._password;\n }\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n async initDocument(recoveryMode) {\n await this.ensureDoc(\"checkHeader\");\n await this.ensureDoc(\"parseStartXRef\");\n await this.ensureDoc(\"parse\", [recoveryMode]);\n await this.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n await this.ensureDoc(\"checkLastPage\", [recoveryMode]);\n }\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n requestLoadedStream(noFetch = false) {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n updatePassword(password) {\n this._password = password;\n this.pdfDocument.xref.encrypt?.setPassword(password);\n }\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\nclass LocalPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n const stream = new Stream(args.source);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n requestLoadedStream(noFetch = false) {\n return this._loadedStreamPromise;\n }\n terminate(reason) {}\n}\nclass NetworkPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n this.streamManager = new ChunkedStreamManager(args.source, {\n msgHandler: args.handler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return await value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n requestLoadedStream(noFetch = false) {\n return this.streamManager.requestAllChunks(noFetch);\n }\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({\n chunk\n });\n }\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/core/writer.js\n\n\n\n\n\n\n\nasync function writeObject(ref, obj, buffer, {\n encrypt = null,\n encryptRef = null\n}) {\n const transform = encrypt && encryptRef !== ref ? encrypt.createCipherTransform(ref.num, ref.gen) : null;\n buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n await writeValue(obj, buffer, transform);\n buffer.push(\"\\nendobj\\n\");\n}\nasync function writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const [key, rawObj] of dict.getRawEntries()) {\n buffer.push(` /${escapePDFName(key)} `);\n await writeValue(rawObj, buffer, transform);\n }\n buffer.push(\">>\");\n}\nasync function writeStream(stream, buffer, transform) {\n stream = stream.getOriginalStream();\n stream.reset();\n let bytes = stream.getBytes();\n const {\n dict\n } = stream;\n const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n const isFilterZeroImageDecode = isName(filterZero, \"DCTDecode\") || isName(filterZero, \"JPXDecode\") || isName(filterZero, \"JBIG2Decode\") || isName(filterZero, \"CCITTFaxDecode\") || isName(filterZero, \"LZWDecode\");\n const isFilterZeroCompressedObject = isFilterZeroFlateDecode || isFilterZeroImageDecode || isName(filterZero, \"BrotliDecode\");\n const MIN_LENGTH_FOR_COMPRESSING = 256;\n if (!isFilterZeroCompressedObject && bytes.length >= MIN_LENGTH_FOR_COMPRESSING) {\n try {\n const cs = new CompressionStream(\"deflate\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n bytes = await new Response(cs.readable).bytes();\n let newFilter, newParams;\n if (!filter) {\n newFilter = Name.get(\"FlateDecode\");\n } else if (!isFilterZeroFlateDecode) {\n newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n if (params) {\n newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n }\n }\n if (newFilter) {\n dict.set(\"Filter\", newFilter);\n }\n if (newParams) {\n dict.set(\"DecodeParms\", newParams);\n }\n } catch (ex) {\n info(`writeStream - cannot compress data: \"${ex}\".`);\n }\n }\n let string = bytesToString(bytes);\n if (transform) {\n string = transform.encryptString(string);\n }\n dict.set(\"Length\", string.length);\n await writeDict(dict, buffer, transform);\n buffer.push(\" stream\\n\", string, \"\\nendstream\");\n}\nasync function writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n for (let i = 0, ii = array.length; i < ii; i++) {\n await writeValue(array[i], buffer, transform);\n if (i < ii - 1) {\n buffer.push(\" \");\n }\n }\n buffer.push(\"]\");\n}\nfunction numberToPDFString(value) {\n if (Number.isInteger(value) && Math.abs(value) >= 1e21) {\n return BigInt(value).toString();\n }\n const str = value.toFixed(10);\n let end = str.length;\n while (str[end - 1] === \"0\") {\n end--;\n }\n if (str[end - 1] === \".\") {\n end--;\n }\n return str.slice(0, end);\n}\nasync function writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n await writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToPDFString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n await writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n await writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\nfunction writeString(string, offset, buffer) {\n const ii = string.length;\n for (let i = 0; i < ii; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n return offset + ii;\n}\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString(), ...xrefInfo.infoMap.values()];\n const md5BufferLen = Math.sumPrecise(md5Buffer.map(str => str.length));\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n offset = writeString(str, offset, array);\n }\n return bytesToString(calculateMD5(array, 0, array.length));\n}\nfunction writeXFADataForAcroform(str, changes) {\n const xml = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(str);\n for (const {\n xfa\n } of changes) {\n if (!xfa) {\n continue;\n }\n const {\n path,\n value\n } = xfa;\n if (!path || value === null) {\n continue;\n }\n const nodePath = parseXFAPath(path);\n let node = xml.documentElement.searchNode(nodePath, 0);\n if (!node && nodePath.length > 1) {\n node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n }\n if (node) {\n node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\nasync function updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n}) {\n if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n warn(\"XFA - Cannot save it\");\n }\n if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n return;\n }\n const dict = acroForm.clone();\n if (hasXfa && !hasXfaDatasetsEntry) {\n const newXfa = acroForm.get(\"XFA\").slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n dict.set(\"XFA\", newXfa);\n }\n if (needAppearances) {\n dict.set(\"NeedAppearances\", true);\n }\n changes.put(acroFormRef, {\n data: dict\n });\n}\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n}) {\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), changes);\n }\n const xfaDataStream = new StringStream(xfaData, new Dict(xref));\n xfaDataStream.dict.setIfName(\"Type\", \"EmbeddedFile\");\n changes.put(xfaDatasetsRef, {\n data: xfaDataStream\n });\n}\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n buffer.push(\"xref\\n\");\n const indexes = getIndexes(newRefs);\n let indexesPosition = 0;\n for (const {\n ref,\n data\n } of newRefs) {\n if (ref.num === indexes[indexesPosition]) {\n buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n indexesPosition += 2;\n }\n if (data !== null) {\n buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n baseOffset += data.length;\n } else {\n buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n }\n }\n computeIDs(baseOffset, xrefInfo, newXref);\n buffer.push(\"trailer\\n\");\n await writeDict(newXref, buffer, null);\n buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction getIndexes(newRefs) {\n const indexes = [];\n for (const {\n ref\n } of newRefs) {\n if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n indexes[indexes.length - 1] += 1;\n } else {\n indexes.push(ref.num, 1);\n }\n }\n return indexes;\n}\nasync function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n const xrefTableData = [];\n let maxOffset = 0;\n let maxGen = 0;\n for (const {\n ref,\n data,\n objStreamRef,\n index\n } of newRefs) {\n let gen;\n maxOffset = Math.max(maxOffset, baseOffset);\n if (objStreamRef) {\n gen = index;\n xrefTableData.push([2, objStreamRef.num, gen]);\n } else if (data !== null) {\n gen = Math.min(ref.gen, 0xffff);\n xrefTableData.push([1, baseOffset, gen]);\n baseOffset += data.length;\n } else {\n gen = Math.min(ref.gen + 1, 0xffff);\n xrefTableData.push([0, 0, gen]);\n }\n maxGen = Math.max(maxGen, gen);\n }\n newXref.set(\"Index\", getIndexes(newRefs));\n const offsetSize = getSizeInBytes(maxOffset);\n const maxGenSize = getSizeInBytes(maxGen);\n const sizes = [1, offsetSize, maxGenSize];\n newXref.set(\"W\", sizes);\n computeIDs(baseOffset, xrefInfo, newXref);\n const structSize = Math.sumPrecise(sizes);\n const data = new Uint8Array(structSize * xrefTableData.length);\n const stream = new Stream(data);\n stream.dict = newXref;\n let offset = 0;\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, data);\n offset = writeInt(objOffset, sizes[1], offset, data);\n offset = writeInt(gen, sizes[2], offset, data);\n }\n await writeObject(xrefInfo.newRef, stream, buffer, {});\n buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0] || md5, md5]);\n }\n}\nfunction getTrailerDict(xrefInfo, changes, useXrefStream) {\n const newXref = new Dict(null);\n newXref.setIfDefined(\"Prev\", xrefInfo?.startXRef);\n const refForXrefTable = xrefInfo.newRef;\n if (useXrefStream) {\n changes.put(refForXrefTable, {\n data: \"\"\n });\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.setIfName(\"Type\", \"XRef\");\n } else {\n newXref.set(\"Size\", refForXrefTable.num);\n }\n newXref.setIfDefined(\"Root\", xrefInfo?.rootRef);\n newXref.setIfDefined(\"Info\", xrefInfo?.infoRef);\n newXref.setIfDefined(\"Encrypt\", xrefInfo?.encryptRef);\n return newXref;\n}\nasync function writeChanges(changes, xref, buffer = []) {\n const newRefs = [];\n for (const [ref, {\n data,\n objStreamRef,\n index\n }] of changes.items()) {\n if (objStreamRef) {\n newRefs.push({\n ref,\n data,\n objStreamRef,\n index\n });\n continue;\n }\n if (data === null || typeof data === \"string\") {\n newRefs.push({\n ref,\n data\n });\n continue;\n }\n await writeObject(ref, data, buffer, xref);\n newRefs.push({\n ref,\n data: buffer.join(\"\")\n });\n buffer.length = 0;\n }\n return newRefs.sort((a, b) => a.ref.num - b.ref.num);\n}\nasync function incrementalUpdate({\n originalData,\n xrefInfo,\n changes,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n needAppearances,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n useXrefStream = false\n}) {\n await updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n });\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n });\n }\n const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\n const buffer = [];\n const newRefs = await writeChanges(changes, xref, buffer);\n let baseOffset = originalData.length;\n const lastByte = originalData.at(-1);\n if (lastByte !== 0x0a && lastByte !== 0x0d) {\n buffer.push(\"\\n\");\n baseOffset += 1;\n }\n for (const {\n data\n } of newRefs) {\n if (data !== null) {\n buffer.push(data);\n }\n }\n await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n const totalLength = originalData.length + Math.sumPrecise(buffer.map(str => str.length));\n const array = new Uint8Array(totalLength);\n array.set(originalData);\n let offset = originalData.length;\n for (const str of buffer) {\n offset = writeString(str, offset, array);\n }\n return array;\n}\n\n;// ./src/core/editor/pdf_editor.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LEAVES_PER_PAGES_NODE = 16;\nconst MAX_IN_NAME_TREE_NODE = 64;\nclass PageData {\n constructor(page, documentData) {\n this.page = page;\n this.documentData = documentData;\n this.annotations = null;\n this.pointingNamedDestinations = null;\n this.copyLevel = 0;\n documentData.pagesMap.put(page.ref, this);\n }\n}\nclass DocumentData {\n constructor(document) {\n this.document = document;\n this.destinations = null;\n this.pageLabels = null;\n this.pagesMap = new RefMap();\n this.oldRefMapping = new RefMap();\n this.dedupNamedDestinations = new Map();\n this.usedNamedDestinations = new Set();\n this.postponedRefCopies = new RefMap();\n this.resourceStreamPromises = new Map();\n this.usedStructParents = new Set();\n this.oldStructParentMapping = new Map();\n this.structTreeRoot = null;\n this.parentTree = null;\n this.idTree = null;\n this.roleMap = null;\n this.classMap = null;\n this.namespaces = null;\n this.structTreeAF = null;\n this.structTreePronunciationLexicon = [];\n this.acroForm = null;\n this.acroFormDefaultAppearance = \"\";\n this.acroFormDefaultResources = null;\n this.acroFormQ = 0;\n this.hasSignatureAnnotations = false;\n this.fieldToParent = new RefMap();\n this.outline = null;\n this.embeddedFiles = null;\n }\n}\nclass XRefWrapper {\n constructor(entries, getNewRef) {\n this.entries = entries;\n this._getNewRef = getNewRef;\n }\n getNewTemporaryRef() {\n return this._getNewRef();\n }\n countUpdatesAfter(offset) {\n return null;\n }\n fetchIfRef(obj) {\n return obj instanceof Ref ? this.fetch(obj) : obj;\n }\n fetch(ref) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n return this.entries[ref.num];\n }\n async fetchIfRefAsync(obj) {\n return obj instanceof Ref ? this.fetchAsync(obj) : obj;\n }\n async fetchAsync(ref) {\n return this.fetch(ref);\n }\n}\nclass PDFEditor {\n isSingleFile = false;\n #newAnnotationsParams = null;\n #primaryDocument = null;\n #resourceStreamCache = new Map();\n currentDocument = null;\n oldPages = [];\n newPages = [];\n xref = [null];\n xrefWrapper = new XRefWrapper(this.xref, () => this.newRef);\n newRefCount = 1;\n namesDict = null;\n version = \"1.7\";\n pageLabels = null;\n namedDestinations = new Map();\n parentTree = new Map();\n structTreeKids = [];\n idTree = new Map();\n classMap = new Dict();\n roleMap = new Dict();\n namespaces = new Map();\n structTreeAF = [];\n structTreePronunciationLexicon = [];\n fields = [];\n acroFormDefaultAppearance = \"\";\n acroFormDefaultResources = null;\n acroFormNeedAppearances = false;\n acroFormSigFlags = 0;\n acroFormCalculationOrder = null;\n acroFormQ = 0;\n outlineItems = null;\n embeddedFiles = new Map();\n constructor({\n useObjectStreams = true,\n title = \"\",\n author = \"\"\n } = {}) {\n [this.rootRef, this.rootDict] = this.newDict;\n [this.infoRef, this.infoDict] = this.newDict;\n [this.pagesRef, this.pagesDict] = this.newDict;\n this.useObjectStreams = useObjectStreams;\n this.objStreamRefs = useObjectStreams ? new Set() : null;\n this.title = title;\n this.author = author;\n }\n get newRef() {\n return Ref.get(this.newRefCount++, 0);\n }\n get newDict() {\n const ref = this.newRef;\n const dict = this.xref[ref.num] = new Dict();\n return [ref, dict];\n }\n async #cloneObject(obj, xref) {\n const ref = this.newRef;\n this.xref[ref.num] = await this.#collectDependencies(obj, true, xref);\n return ref;\n }\n cloneDict(dict) {\n const newDict = dict.clone();\n newDict.xref = this.xrefWrapper;\n return newDict;\n }\n async #collectDependencies(obj, mustClone, xref, resourceStreamPath = new RefSet()) {\n if (obj instanceof Ref) {\n const {\n currentDocument: {\n fieldToParent,\n oldRefMapping\n }\n } = this;\n const existingRef = oldRefMapping.get(obj);\n if (existingRef) {\n return existingRef;\n }\n const oldRef = obj;\n obj = await xref.fetchAsync(oldRef);\n const mappedRef = oldRefMapping.get(oldRef);\n if (mappedRef) {\n return mappedRef;\n }\n if (typeof obj === \"number\") {\n return obj;\n }\n if (obj instanceof BaseStream && this.#isResourceStream(obj.dict)) {\n return this.#collectResourceStream(oldRef, obj, xref, resourceStreamPath);\n }\n const newRef = this.newRef;\n oldRefMapping.put(oldRef, newRef);\n let cloneSource = true;\n if (fieldToParent.has(oldRef) && obj instanceof Dict) {\n obj = this.cloneDict(obj);\n obj.delete(\"Parent\");\n cloneSource = false;\n }\n this.xref[newRef.num] = await this.#collectDependencies(obj, cloneSource, xref, resourceStreamPath);\n return newRef;\n }\n const promises = [];\n const {\n currentDocument: {\n postponedRefCopies\n }\n } = this;\n if (Array.isArray(obj)) {\n if (mustClone) {\n obj = obj.slice();\n }\n for (let i = 0, ii = obj.length; i < ii; i++) {\n const postponedActions = obj[i] instanceof Ref && postponedRefCopies.get(obj[i]);\n if (postponedActions) {\n postponedActions.push(ref => obj[i] = ref);\n continue;\n }\n promises.push(this.#collectDependencies(obj[i], true, xref, resourceStreamPath).then(newObj => obj[i] = newObj));\n }\n await Promise.all(promises);\n return obj;\n }\n let dict;\n if (obj instanceof BaseStream) {\n ({\n dict\n } = obj = obj.getOriginalStream().clone());\n dict.xref = this.xrefWrapper;\n } else if (obj instanceof Dict) {\n if (mustClone) {\n obj = obj.clone();\n obj.xref = this.xrefWrapper;\n }\n dict = obj;\n }\n if (dict) {\n for (const [key, rawObj] of dict.getRawEntries()) {\n const postponedActions = rawObj instanceof Ref && postponedRefCopies.get(rawObj);\n if (postponedActions) {\n postponedActions.push(ref => dict.set(key, ref));\n continue;\n }\n promises.push(this.#collectDependencies(rawObj, true, xref, resourceStreamPath).then(newObj => dict.set(key, newObj)));\n }\n await Promise.all(promises);\n }\n return obj;\n }\n #isResourceStream(dict) {\n const subtype = dict.get(\"Subtype\");\n return isName(subtype, \"Image\") || dict.has(\"Length1\") || isName(subtype, \"Type1C\") || isName(subtype, \"CIDFontType0C\") || isName(subtype, \"OpenType\");\n }\n #rawStreamBytes(stream) {\n const original = stream.getOriginalStream();\n original.reset();\n return original.getBytes();\n }\n async #serializeDict(dict) {\n const buffer = [];\n await writeValue(dict, buffer, null);\n return buffer.join(\"\");\n }\n #resourceStreamKey(dictStr, bytes) {\n const SAMPLE_SIZE = 256;\n const SAMPLE_COUNT = 4;\n const {\n length\n } = bytes;\n const hash = new MurmurHash3_64();\n hash.update(dictStr);\n hash.update(`#${length}`);\n if (length <= SAMPLE_SIZE * SAMPLE_COUNT) {\n hash.update(bytes);\n } else {\n const step = Math.floor((length - SAMPLE_SIZE) / (SAMPLE_COUNT - 1));\n for (let i = 0; i < SAMPLE_COUNT; i++) {\n const start = Math.min(i * step, length - SAMPLE_SIZE);\n hash.update(bytes.subarray(start, start + SAMPLE_SIZE));\n }\n }\n return hash.hexdigest();\n }\n async #collectResourceStream(oldRef, stream, xref, resourceStreamPath) {\n const {\n currentDocument: {\n oldRefMapping,\n resourceStreamPromises\n }\n } = this;\n if (resourceStreamPath.has(oldRef)) {\n return oldRefMapping.getOrPutComputed(oldRef, () => this.newRef);\n }\n const key = oldRef.toString();\n const pending = resourceStreamPromises.get(key);\n if (pending) {\n return pending;\n }\n const childPath = new RefSet(resourceStreamPath);\n childPath.put(oldRef);\n const promise = Promise.resolve().then(async () => {\n const collected = await this.#collectDependencies(stream, true, xref, childPath);\n const cycleRef = oldRefMapping.get(oldRef);\n if (cycleRef) {\n this.xref[cycleRef.num] = collected;\n return cycleRef;\n }\n const ref = await this.#dedupResourceStream(collected);\n oldRefMapping.put(oldRef, ref);\n return ref;\n });\n resourceStreamPromises.set(key, promise);\n try {\n return await promise;\n } finally {\n if (resourceStreamPromises.get(key) === promise) {\n resourceStreamPromises.delete(key);\n }\n }\n }\n async #dedupResourceStream(stream) {\n const dictStr = await this.#serializeDict(stream.dict);\n const bytes = this.#rawStreamBytes(stream);\n const key = this.#resourceStreamKey(dictStr, bytes);\n const bucket = this.#resourceStreamCache.getOrInsertComputed(key, makeArr);\n for (const entry of bucket) {\n if (entry.dictStr === dictStr && isArrayEqual(this.#rawStreamBytes(entry.stream), bytes)) {\n return entry.ref;\n }\n }\n const ref = this.newRef;\n this.xref[ref.num] = stream;\n bucket.push({\n ref,\n dictStr,\n stream\n });\n return ref;\n }\n async #resolveStructKids(rawKids, xref) {\n if (rawKids instanceof Ref) {\n const fetched = await xref.fetchAsync(rawKids);\n return Array.isArray(fetched) ? fetched : [rawKids];\n }\n return Array.isArray(rawKids) ? rawKids : [rawKids];\n }\n async #cloneStructTreeNode(parentStructRef, node, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited = new RefSet()) {\n const {\n currentDocument: {\n pagesMap,\n oldRefMapping\n }\n } = this;\n const pg = node.getRaw(\"Pg\");\n if (pg instanceof Ref && !pagesMap.has(pg)) {\n return null;\n }\n const k = node.getRaw(\"K\");\n if (k instanceof Ref && visited.has(k)) {\n return null;\n }\n const kids = await this.#resolveStructKids(k, xref);\n const newKids = [];\n const structElemIndices = [];\n for (let kid of kids) {\n const kidRef = kid instanceof Ref ? kid : null;\n if (kidRef) {\n if (visited.has(kidRef)) {\n continue;\n }\n visited.put(kidRef);\n kid = await xref.fetchAsync(kidRef);\n }\n if (typeof kid === \"number\") {\n newKids.push(kid);\n continue;\n }\n if (!(kid instanceof Dict)) {\n continue;\n }\n const pgRef = kid.getRaw(\"Pg\");\n if (pgRef instanceof Ref && !pagesMap.has(pgRef)) {\n continue;\n }\n const type = kid.get(\"Type\");\n if (!type || isName(type, \"StructElem\")) {\n let setAsSpan = false;\n if (kidRef && removedStructElements.has(kidRef)) {\n if (!isName(kid.get(\"S\"), \"Link\")) {\n continue;\n }\n setAsSpan = true;\n }\n const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited);\n if (newKidRef) {\n structElemIndices.push(newKids.length);\n newKids.push(newKidRef);\n if (kidRef) {\n oldRefMapping.put(kidRef, newKidRef);\n }\n if (setAsSpan) {\n this.xref[newKidRef.num].setIfName(\"S\", \"Span\");\n }\n }\n continue;\n }\n if (isName(type, \"OBJR\")) {\n if (!kidRef) {\n continue;\n }\n const oldObjRef = kid.getRaw(\"Obj\");\n if (oldObjRef instanceof Ref && !oldRefMapping.get(oldObjRef)) {\n continue;\n }\n const newKidRef = oldRefMapping.get(kidRef) || (await this.#collectDependencies(kidRef, true, xref));\n const newKid = this.xref[newKidRef.num];\n const objRef = newKid.getRaw(\"Obj\");\n if (objRef instanceof Ref) {\n const obj = this.xref[objRef.num];\n if (obj instanceof Dict && !obj.has(\"StructParent\") && parentStructRef) {\n const structParent = this.parentTree.size;\n this.parentTree.set(structParent, [oldRefMapping, parentStructRef]);\n obj.set(\"StructParent\", structParent);\n }\n }\n newKids.push(newKidRef);\n continue;\n }\n if (isName(type, \"MCR\")) {\n const newKid = await this.#collectDependencies(kidRef || kid, true, xref);\n newKids.push(newKid);\n continue;\n }\n if (kidRef) {\n const newKidRef = await this.#collectDependencies(kidRef, true, xref);\n newKids.push(newKidRef);\n }\n }\n if (kids.length !== 0 && newKids.length === 0) {\n return null;\n }\n const newNodeRef = this.newRef;\n const newNode = this.xref[newNodeRef.num] = this.cloneDict(node);\n newNode.delete(\"ID\");\n newNode.delete(\"C\");\n newNode.delete(\"K\");\n newNode.delete(\"P\");\n newNode.delete(\"S\");\n await this.#collectDependencies(newNode, false, xref);\n const classNames = node.get(\"C\");\n if (classNames instanceof Name) {\n const newClassName = dedupClasses.get(classNames.name);\n newNode.set(\"C\", newClassName ? Name.get(newClassName) : classNames);\n } else if (Array.isArray(classNames)) {\n const newClassNames = [];\n for (const className of classNames) {\n if (className instanceof Name) {\n const newClassName = dedupClasses.get(className.name);\n newClassNames.push(newClassName ? Name.get(newClassName) : className);\n }\n }\n newNode.set(\"C\", newClassNames);\n }\n const roleName = node.get(\"S\");\n if (roleName instanceof Name) {\n const newRoleName = dedupRoles.get(roleName.name);\n newNode.set(\"S\", newRoleName ? Name.get(newRoleName) : roleName);\n }\n const id = node.get(\"ID\");\n if (typeof id === \"string\") {\n const stringId = stringToPDFString(id, false);\n const newId = dedupIDs.get(stringId);\n newNode.set(\"ID\", newId ? stringToAsciiOrUTF16BE(newId) : id);\n }\n let attributes = newNode.get(\"A\");\n if (attributes) {\n if (!Array.isArray(attributes)) {\n attributes = [attributes];\n }\n for (let attr of attributes) {\n attr = this.xrefWrapper.fetchIfRef(attr);\n if (!(attr instanceof Dict)) {\n continue;\n }\n if (isName(attr.get(\"O\"), \"Table\") && attr.has(\"Headers\")) {\n const headers = this.xrefWrapper.fetchIfRef(attr.getRaw(\"Headers\"));\n if (Array.isArray(headers)) {\n for (let i = 0, ii = headers.length; i < ii; i++) {\n const header = this.xrefWrapper.fetchIfRef(headers[i]);\n if (typeof header !== \"string\") {\n continue;\n }\n const newId = dedupIDs.get(stringToPDFString(header, false));\n if (newId) {\n headers[i] = newId;\n }\n }\n }\n }\n }\n }\n for (const index of structElemIndices) {\n const structElemRef = newKids[index];\n const structElem = this.xref[structElemRef.num];\n structElem.set(\"P\", newNodeRef);\n }\n if (newKids.length === 1) {\n newNode.set(\"K\", newKids[0]);\n } else if (newKids.length > 1) {\n newNode.set(\"K\", newKids);\n }\n return newNodeRef;\n }\n #getFilteredPageIndices({\n document,\n includePages,\n excludePages\n }) {\n if (!document) {\n return [];\n }\n const compile = list => {\n if (!list?.length) {\n return null;\n }\n const indices = new Set();\n const ranges = [];\n for (const item of list) {\n if (Array.isArray(item)) {\n ranges.push(item);\n } else {\n indices.add(item);\n }\n }\n return {\n indices,\n ranges\n };\n };\n const matches = (index, {\n indices,\n ranges\n }) => indices.has(index) || ranges.some(([start, end]) => index >= start && index <= end);\n const inc = compile(includePages);\n const exc = compile(excludePages);\n const result = [];\n for (let i = 0, ii = document.numPages; i < ii; i++) {\n if (exc && matches(i, exc)) {\n continue;\n }\n if (!inc || matches(i, inc)) {\n result.push(i);\n }\n }\n return result;\n }\n #resolveInsertAfterIndices(pageInfos) {\n const counts = new Array(pageInfos.length);\n const sequence = [];\n const insertAfterList = [];\n for (let i = 0; i < pageInfos.length; i++) {\n const info = pageInfos[i];\n let count;\n if (info.image) {\n count = counts[i] = 1;\n } else if (!info.document) {\n counts[i] = 0;\n continue;\n } else {\n count = counts[i] = this.#getFilteredPageIndices(info).length;\n }\n if (info.pageIndices) {\n continue;\n }\n if (info.insertAfter === undefined) {\n for (let j = 0; j < count; j++) {\n sequence.push(i);\n }\n } else {\n insertAfterList.push({\n i,\n insertAfter: info.insertAfter,\n count\n });\n }\n }\n if (insertAfterList.length === 0) {\n return pageInfos;\n }\n const hasContent = info => !!(info.document || info.image);\n for (let i = 0; i < pageInfos.length; i++) {\n const info = pageInfos[i];\n if (hasContent(info) && info.pageIndices && info.pageIndices.length < counts[i]) {\n throw new Error(\"extractPages: partial pageIndices cannot be combined with insertAfter entries.\");\n }\n }\n insertAfterList.sort((a, b) => a.insertAfter - b.insertAfter || a.i - b.i);\n if (sequence.length === 0 && pageInfos.some(info => hasContent(info) && info.pageIndices)) {\n const updatedPageInfos = pageInfos.slice();\n let maxExistingPos = -1;\n for (const info of pageInfos) {\n if (!hasContent(info) || !info.pageIndices) {\n continue;\n }\n for (const idx of info.pageIndices) {\n if (idx > maxExistingPos) {\n maxExistingPos = idx;\n }\n }\n }\n let offset = 0;\n for (const {\n i,\n insertAfter,\n count\n } of insertAfterList) {\n const threshold = Math.min(Math.max(insertAfter, -1) + offset, maxExistingPos);\n for (let j = 0; j < updatedPageInfos.length; j++) {\n const existingInfo = updatedPageInfos[j];\n if (!hasContent(existingInfo) || !existingInfo.pageIndices || existingInfo.pageIndices.every(idx => idx <= threshold)) {\n continue;\n }\n updatedPageInfos[j] = {\n ...existingInfo,\n pageIndices: existingInfo.pageIndices.map(idx => idx > threshold ? idx + count : idx)\n };\n }\n const pageIndices = [];\n for (let k = 0; k < count; k++) {\n pageIndices.push(threshold + 1 + k);\n }\n const result = {\n ...updatedPageInfos[i],\n pageIndices\n };\n delete result.insertAfter;\n updatedPageInfos[i] = result;\n offset += count;\n maxExistingPos += count;\n }\n return updatedPageInfos;\n }\n let offset = 0;\n for (const {\n i,\n insertAfter,\n count\n } of insertAfterList) {\n const insertPos = Math.max(insertAfter, -1) + 1 + offset;\n sequence.splice(insertPos, 0, ...new Array(count).fill(i));\n offset += count;\n }\n const pageIndicesArr = new Array(pageInfos.length);\n for (let pos = 0; pos < sequence.length; pos++) {\n const infoIdx = sequence[pos];\n (pageIndicesArr[infoIdx] ||= []).push(pos);\n }\n return pageInfos.map((info, i) => {\n if (!hasContent(info) || info.pageIndices) {\n return info;\n }\n const result = {\n ...info,\n pageIndices: pageIndicesArr[i] || []\n };\n delete result.insertAfter;\n return result;\n });\n }\n async extractPages(pageInfos, annotationStorage, primaryDocument, handler, task) {\n this.#primaryDocument = primaryDocument;\n pageInfos = this.#resolveInsertAfterIndices(pageInfos);\n const promises = [];\n let newIndex = 0;\n const reservePageSlot = newPageIndex => {\n if (!Number.isInteger(newPageIndex) || newPageIndex < 0) {\n throw new Error(\"extractPages: invalid page index.\");\n }\n if (this.oldPages[newPageIndex] !== undefined) {\n throw new Error(\"extractPages: overlapping pageIndices.\");\n }\n this.oldPages[newPageIndex] = null;\n };\n const allDocumentData = [];\n if (annotationStorage) {\n this.#newAnnotationsParams = {\n handler,\n task,\n newAnnotationsByPage: getNewAnnotationsMap(annotationStorage),\n imagesPromises: AnnotationFactory.generateImages(annotationStorage.values(), this.xrefWrapper, true)\n };\n }\n const imageEntries = [];\n for (const pageInfo of pageInfos) {\n const {\n document,\n image,\n includePages,\n excludePages,\n pageIndices\n } = pageInfo;\n if (image) {\n if (pageIndices) {\n newIndex = -1;\n if (pageIndices.length > 1) {\n throw new Error(\"extractPages: too many pageIndices.\");\n }\n }\n let newPageIndex;\n if (pageIndices?.length) {\n newPageIndex = pageIndices[0];\n } else if (newIndex !== -1) {\n newPageIndex = newIndex++;\n } else {\n for (newPageIndex = 0; this.oldPages[newPageIndex] !== undefined; newPageIndex++) {}\n }\n reservePageSlot(newPageIndex);\n imageEntries.push({\n image,\n slot: newPageIndex\n });\n continue;\n }\n if (!document) {\n continue;\n }\n if (pageIndices) {\n newIndex = -1;\n }\n const filteredPageIndices = this.#getFilteredPageIndices({\n document,\n includePages,\n excludePages\n });\n if (pageIndices && pageIndices.length > filteredPageIndices.length) {\n throw new Error(\"extractPages: too many pageIndices.\");\n }\n const documentData = new DocumentData(document);\n allDocumentData.push(documentData);\n promises.push(this.#collectDocumentData(documentData));\n let pageIndex = 0;\n for (const i of filteredPageIndices) {\n let newPageIndex;\n if (pageIndices) {\n newPageIndex = pageIndices[pageIndex++];\n }\n if (newPageIndex === undefined) {\n if (newIndex !== -1) {\n newPageIndex = newIndex++;\n } else {\n for (newPageIndex = 0; this.oldPages[newPageIndex] !== undefined; newPageIndex++) {}\n }\n }\n reservePageSlot(newPageIndex);\n promises.push(document.getPage(i).then(page => {\n this.oldPages[newPageIndex] = new PageData(page, documentData);\n }));\n }\n }\n await Promise.all(promises);\n if (this.oldPages.length === 0) {\n throw new Error(\"extractPages: nothing to extract.\");\n }\n const copyCounts = new Map();\n const documents = new Set();\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const pageData = this.oldPages[i];\n if (pageData === undefined) {\n throw new Error(\"extractPages: sparse pageIndices.\");\n }\n if (pageData) {\n const {\n page\n } = pageData;\n const copyLevel = copyCounts.get(page) ?? 0;\n copyCounts.set(page, copyLevel + 1);\n pageData.copyLevel = copyLevel;\n documents.add(pageData.documentData.document);\n }\n }\n this.isSingleFile = documents.size === 1;\n promises.length = 0;\n this.#collectValidDestinations(allDocumentData);\n this.#collectOutlineDestinations(allDocumentData);\n this.#collectPageLabels();\n for (const page of this.oldPages) {\n if (page) {\n promises.push(this.#postCollectPageData(page));\n }\n }\n await Promise.all(promises);\n this.#findDuplicateNamedDestinations();\n this.#setPostponedRefCopies(allDocumentData);\n const imageSlots = new Map();\n for (const entry of imageEntries) {\n imageSlots.set(entry.slot, entry);\n }\n const modalPageSize = imageSlots.size > 0 ? this.#modalPageSize() : null;\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const imageEntry = imageSlots.get(i);\n if (imageEntry) {\n this.newPages[i] = await this.#makeImagePage(imageEntry.image, modalPageSize);\n } else {\n this.newPages[i] = await this.#makePageCopy(i, null);\n }\n }\n this.#fixPostponedRefCopies(allDocumentData);\n await this.#mergeStructTrees(allDocumentData);\n await this.#mergeAcroForms(allDocumentData);\n this.#buildOutline(allDocumentData);\n await this.#collectEmbeddedFiles(allDocumentData);\n return this.writePDF();\n }\n async #collectDocumentData(documentData) {\n const {\n document: {\n pdfManager,\n xref\n }\n } = documentData;\n await Promise.all([pdfManager.ensureCatalog(\"destinations\").then(destinations => documentData.destinations = destinations), pdfManager.ensureCatalog(\"rawPageLabels\").then(pageLabels => documentData.pageLabels = pageLabels), pdfManager.ensureCatalog(\"structTreeRoot\").then(structTreeRoot => documentData.structTreeRoot = structTreeRoot), pdfManager.ensureCatalog(\"acroForm\").then(acroForm => documentData.acroForm = acroForm), pdfManager.ensureCatalog(\"documentOutlineForEditor\").then(outline => documentData.outline = outline), pdfManager.ensureCatalog(\"rawEmbeddedFiles\").then(ef => documentData.embeddedFiles = ef)]);\n const structTreeRoot = documentData.structTreeRoot;\n if (structTreeRoot) {\n const rootDict = structTreeRoot.dict;\n const parentTree = rootDict.get(\"ParentTree\");\n if (parentTree) {\n const numberTree = new NumberTree(parentTree, xref);\n documentData.parentTree = numberTree.getAll(true);\n }\n const idTree = rootDict.get(\"IDTree\");\n if (idTree) {\n const nameTree = new NameTree(idTree, xref);\n documentData.idTree = nameTree.getAll(true);\n }\n documentData.roleMap = rootDict.get(\"RoleMap\") || null;\n documentData.classMap = rootDict.get(\"ClassMap\") || null;\n let namespaces = rootDict.get(\"Namespaces\") || null;\n if (namespaces && !Array.isArray(namespaces)) {\n namespaces = [namespaces];\n }\n documentData.namespaces = namespaces;\n documentData.structTreeAF = rootDict.get(\"AF\") || null;\n documentData.structTreePronunciationLexicon = rootDict.get(\"PronunciationLexicon\") || null;\n }\n }\n async #postCollectPageData(pageData) {\n const {\n page: {\n xref,\n annotations\n },\n documentData: {\n pagesMap,\n destinations,\n usedNamedDestinations,\n fieldToParent\n }\n } = pageData;\n if (!annotations) {\n return;\n }\n const promises = [];\n let newAnnotations = [];\n let newIndex = 0;\n let {\n hasSignatureAnnotations\n } = pageData.documentData;\n for (const annotationRef of annotations) {\n const newAnnotationIndex = newIndex++;\n promises.push(xref.fetchIfRefAsync(annotationRef).then(async annotationDict => {\n if (!isName(annotationDict.get(\"Subtype\"), \"Link\")) {\n if (isName(annotationDict.get(\"Subtype\"), \"Widget\")) {\n hasSignatureAnnotations ||= isName(getInheritableProperty({\n dict: annotationDict,\n key: \"FT\"\n }), \"Sig\");\n const parentRef = annotationDict.getRaw(\"Parent\") || null;\n fieldToParent.put(annotationRef, parentRef);\n }\n newAnnotations[newAnnotationIndex] = annotationRef;\n return;\n }\n const action = annotationDict.get(\"A\");\n if (action instanceof Dict && !isName(action.get(\"S\"), \"GoTo\")) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n return;\n }\n const dest = action instanceof Dict ? action.get(\"D\") : annotationDict.get(\"Dest\");\n if (!dest || Array.isArray(dest) && (!(dest[0] instanceof Ref) || pagesMap.has(dest[0]))) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n } else if (dest instanceof Name || typeof dest === \"string\") {\n const destString = stringToPDFString(dest instanceof Name ? dest.name : dest, true);\n if (destinations.has(destString)) {\n newAnnotations[newAnnotationIndex] = annotationRef;\n usedNamedDestinations.add(destString);\n }\n }\n }));\n }\n await Promise.all(promises);\n newAnnotations = newAnnotations.filter(Boolean);\n pageData.annotations = newAnnotations.length > 0 ? newAnnotations : null;\n pageData.documentData.hasSignatureAnnotations ||= hasSignatureAnnotations;\n }\n #setPostponedRefCopies(allDocumentData) {\n for (const {\n postponedRefCopies,\n pagesMap\n } of allDocumentData) {\n for (const oldPageRef of pagesMap.keys()) {\n postponedRefCopies.put(oldPageRef, []);\n }\n }\n }\n #fixPostponedRefCopies(allDocumentData) {\n for (const {\n postponedRefCopies,\n oldRefMapping\n } of allDocumentData) {\n for (const [oldRef, actions] of postponedRefCopies.items()) {\n const newRef = oldRefMapping.get(oldRef);\n for (const action of actions) {\n action(newRef);\n }\n }\n postponedRefCopies.clear();\n }\n }\n #visitObject(obj, callback, visited = new RefSet()) {\n if (obj instanceof Ref) {\n if (!visited.has(obj)) {\n visited.put(obj);\n this.#visitObject(this.xref[obj.num], callback, visited);\n }\n return;\n }\n if (Array.isArray(obj)) {\n for (const item of obj) {\n this.#visitObject(item, callback, visited);\n }\n return;\n }\n let dict;\n if (obj instanceof BaseStream) {\n ({\n dict\n } = obj);\n } else if (obj instanceof Dict) {\n dict = obj;\n }\n if (dict) {\n callback(dict);\n for (const value of dict.getRawValues()) {\n this.#visitObject(value, callback, visited);\n }\n }\n }\n async #mergeStructTrees(allDocumentData) {\n let newStructParentId = 0;\n const {\n parentTree: newParentTree\n } = this;\n for (let i = 0, ii = this.newPages.length; i < ii; i++) {\n if (!this.oldPages[i]) {\n continue;\n }\n const {\n documentData: {\n parentTree,\n oldRefMapping,\n oldStructParentMapping,\n usedStructParents,\n document: {\n xref\n }\n }\n } = this.oldPages[i];\n if (!parentTree) {\n continue;\n }\n const pageRef = this.newPages[i];\n const pageDict = this.xref[pageRef.num];\n const visited = new RefSet();\n visited.put(pageRef);\n this.#visitObject(pageDict, dict => {\n const structParent = dict.get(\"StructParent\") ?? dict.get(\"StructParents\");\n if (typeof structParent !== \"number\") {\n return;\n }\n usedStructParents.add(structParent);\n let parent = parentTree.get(structParent);\n const parentRef = parent instanceof Ref ? parent : null;\n if (parentRef) {\n const array = xref.fetch(parentRef);\n if (Array.isArray(array)) {\n parent = array;\n }\n }\n if (Array.isArray(parent) && parent.every(ref => ref === null)) {\n parent = null;\n }\n if (!parent) {\n if (dict.has(\"StructParent\")) {\n dict.delete(\"StructParent\");\n } else {\n dict.delete(\"StructParents\");\n }\n return;\n }\n let newStructParent = oldStructParentMapping.get(structParent);\n if (newStructParent === undefined) {\n newStructParent = newStructParentId++;\n oldStructParentMapping.set(structParent, newStructParent);\n newParentTree.set(newStructParent, [oldRefMapping, parent]);\n }\n if (dict.has(\"StructParent\")) {\n dict.set(\"StructParent\", newStructParent);\n } else {\n dict.set(\"StructParents\", newStructParent);\n }\n }, visited);\n }\n const {\n structTreeKids,\n idTree: newIdTree,\n classMap: newClassMap,\n roleMap: newRoleMap,\n namespaces: newNamespaces,\n structTreeAF: newStructTreeAF,\n structTreePronunciationLexicon: newStructTreePronunciationLexicon\n } = this;\n for (const documentData of allDocumentData) {\n const {\n document: {\n xref\n },\n oldRefMapping,\n parentTree,\n usedStructParents,\n structTreeRoot,\n idTree,\n classMap,\n roleMap,\n namespaces,\n structTreeAF,\n structTreePronunciationLexicon\n } = documentData;\n if (!structTreeRoot) {\n continue;\n }\n this.currentDocument = documentData;\n const removedStructElements = new RefSet();\n for (const [key, value] of parentTree || []) {\n if (!usedStructParents.has(key) && value instanceof Ref) {\n removedStructElements.put(value);\n }\n }\n const dedupIDs = new Map();\n for (const [id, nodeRef] of idTree || []) {\n let _id = id;\n if (newIdTree.has(id)) {\n for (let i = 1;; i++) {\n const newId = `${id}_${i}`;\n if (!newIdTree.has(newId)) {\n dedupIDs.set(id, newId);\n _id = newId;\n break;\n }\n }\n }\n newIdTree.set(_id, nodeRef);\n }\n const dedupClasses = new Map();\n if (classMap?.size > 0) {\n for (let [className, classDict] of classMap) {\n classDict = await this.#collectDependencies(classDict, true, xref);\n if (newClassMap.has(className)) {\n for (let i = 1;; i++) {\n const newClassName = `${className}_${i}`;\n if (!newClassMap.has(newClassName)) {\n dedupClasses.set(className, newClassName);\n className = newClassName;\n break;\n }\n }\n }\n newClassMap.set(className, classDict);\n }\n }\n const dedupRoles = new Map();\n if (roleMap?.size > 0) {\n for (const [roleName, mappedName] of roleMap) {\n const newMappedName = newRoleMap.get(roleName);\n if (!newMappedName) {\n newRoleMap.set(roleName, mappedName);\n continue;\n }\n if (newMappedName === mappedName) {\n continue;\n }\n for (let i = 1;; i++) {\n const newRoleName = `${roleName}_${i}`;\n if (!newRoleMap.has(newRoleName)) {\n dedupRoles.set(roleName, newRoleName);\n newRoleMap.set(newRoleName, mappedName);\n break;\n }\n }\n }\n }\n if (namespaces?.length > 0) {\n for (const namespaceRef of namespaces) {\n const namespace = await xref.fetchIfRefAsync(namespaceRef);\n let ns = namespace.get(\"NS\");\n if (!ns || newNamespaces.has(ns)) {\n continue;\n }\n ns = stringToPDFString(ns, false);\n const newNamespace = await this.#collectDependencies(namespace, true, xref);\n newNamespaces.set(ns, newNamespace);\n }\n }\n if (structTreeAF) {\n for (const afRef of structTreeAF) {\n newStructTreeAF.push(await this.#collectDependencies(afRef, true, xref));\n }\n }\n if (structTreePronunciationLexicon) {\n for (const lexiconRef of structTreePronunciationLexicon) {\n newStructTreePronunciationLexicon.push(await this.#collectDependencies(lexiconRef, true, xref));\n }\n }\n const rawKids = structTreeRoot.dict.getRaw(\"K\");\n if (!rawKids) {\n continue;\n }\n const kids = await this.#resolveStructKids(rawKids, xref);\n for (let kid of kids) {\n const kidRef = kid instanceof Ref ? kid : null;\n kid = await xref.fetchIfRefAsync(kid);\n if (!(kid instanceof Dict)) {\n continue;\n }\n let setAsSpan = false;\n if (kidRef && removedStructElements.has(kidRef)) {\n if (!isName(kid.get(\"S\"), \"Link\")) {\n continue;\n }\n setAsSpan = true;\n }\n const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles);\n if (newKidRef) {\n structTreeKids.push(newKidRef);\n if (kidRef) {\n oldRefMapping.put(kidRef, newKidRef);\n }\n if (setAsSpan) {\n this.xref[newKidRef.num].setIfName(\"S\", \"Span\");\n }\n }\n }\n for (const [id, nodeRef] of idTree || []) {\n const newNodeRef = nodeRef instanceof Ref && oldRefMapping.get(nodeRef);\n const newId = dedupIDs.get(id) || id;\n if (newNodeRef) {\n newIdTree.set(newId, newNodeRef);\n } else {\n newIdTree.delete(newId);\n }\n }\n }\n for (const [key, [oldRefMapping, parent]] of newParentTree) {\n if (!parent) {\n newParentTree.delete(key);\n continue;\n }\n if (!Array.isArray(parent)) {\n const newParent = oldRefMapping.get(parent);\n if (newParent === undefined) {\n newParentTree.delete(key);\n } else {\n newParentTree.set(key, newParent);\n }\n continue;\n }\n const newParents = parent.map(ref => ref instanceof Ref && oldRefMapping.get(ref) || null);\n if (newParents.length === 0 || newParents.every(ref => ref === null)) {\n newParentTree.delete(key);\n continue;\n }\n newParentTree.set(key, newParents);\n }\n this.currentDocument = null;\n }\n #collectValidDestinations(allDocumentData) {\n for (const documentData of allDocumentData) {\n if (!documentData.destinations) {\n continue;\n }\n const {\n destinations,\n pagesMap\n } = documentData;\n const newDestinations = documentData.destinations = new Map();\n for (const [key, dest] of destinations) {\n const pageRef = dest[0];\n const pageData = pageRef instanceof Ref && pagesMap.get(pageRef);\n if (!pageData) {\n continue;\n }\n (pageData.pointingNamedDestinations ||= new Set()).add(key);\n newDestinations.set(key, dest);\n }\n }\n }\n #findDuplicateNamedDestinations() {\n const {\n namedDestinations\n } = this;\n const getUniqueDestinationName = name => {\n if (!namedDestinations.has(name)) {\n return name;\n }\n for (let i = 1;; i++) {\n const dedupedName = `${name}_${i}`;\n if (!namedDestinations.has(dedupedName)) {\n return dedupedName;\n }\n }\n };\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const page = this.oldPages[i];\n if (!page) {\n continue;\n }\n const {\n documentData: {\n destinations,\n dedupNamedDestinations,\n usedNamedDestinations\n }\n } = page;\n let {\n pointingNamedDestinations\n } = page;\n if (!pointingNamedDestinations) {\n continue;\n }\n page.pointingNamedDestinations = pointingNamedDestinations = pointingNamedDestinations.intersection(usedNamedDestinations);\n for (const pointingDest of pointingNamedDestinations) {\n if (!usedNamedDestinations.has(pointingDest)) {\n continue;\n }\n const dest = destinations.get(pointingDest).slice();\n if (!namedDestinations.has(pointingDest)) {\n namedDestinations.set(pointingDest, dest);\n continue;\n }\n const newName = getUniqueDestinationName(`${pointingDest}_p${i + 1}`);\n dedupNamedDestinations.set(pointingDest, newName);\n namedDestinations.set(newName, dest);\n }\n }\n }\n #fixNamedDestinations(annotations, dedupNamedDestinations) {\n if (dedupNamedDestinations.size === 0) {\n return;\n }\n const fixDestination = (dict, key, dest) => {\n if (typeof dest === \"string\") {\n dict.set(key, dedupNamedDestinations.get(stringToPDFString(dest, true)) || dest);\n }\n };\n for (const annotRef of annotations) {\n const annotDict = this.xref[annotRef.num];\n if (!isName(annotDict.get(\"Subtype\"), \"Link\")) {\n continue;\n }\n const action = annotDict.get(\"A\");\n if (action instanceof Dict && action.has(\"D\")) {\n const dest = action.get(\"D\");\n fixDestination(action, \"D\", dest);\n continue;\n }\n const dest = annotDict.get(\"Dest\");\n fixDestination(annotDict, \"Dest\", dest);\n }\n }\n #collectOutlineDestinations(allDocumentData) {\n const collect = (items, destinations, usedNamedDestinations) => {\n for (const item of items) {\n if (typeof item.dest === \"string\" && destinations?.has(item.dest)) {\n usedNamedDestinations.add(item.dest);\n }\n if (item.items.length > 0) {\n collect(item.items, destinations, usedNamedDestinations);\n }\n }\n };\n for (const documentData of allDocumentData) {\n const {\n outline,\n destinations,\n usedNamedDestinations\n } = documentData;\n if (outline?.length) {\n collect(outline, destinations, usedNamedDestinations);\n }\n }\n }\n #isValidOutlineDest(item, documentData) {\n const {\n dest,\n action,\n url,\n unsafeUrl,\n attachment,\n setOCGState\n } = item;\n if (action || url || unsafeUrl || attachment || setOCGState) {\n return true;\n }\n if (!dest) {\n return false;\n }\n if (typeof dest === \"string\") {\n const name = documentData.dedupNamedDestinations.get(dest) || dest;\n return this.namedDestinations.has(name);\n }\n if (Array.isArray(dest) && dest[0] instanceof Ref) {\n return !!documentData.oldRefMapping.get(dest[0]);\n }\n return false;\n }\n #filterOutlineItems(items, documentData) {\n const result = [];\n for (const item of items) {\n const filteredChildren = this.#filterOutlineItems(item.items, documentData);\n const hasValidOwnDest = this.#isValidOutlineDest(item, documentData);\n if (hasValidOwnDest || filteredChildren.length > 0) {\n result.push({\n ...item,\n dest: hasValidOwnDest ? item.dest : null,\n rawDict: hasValidOwnDest ? item.rawDict : null,\n items: filteredChildren,\n _documentData: documentData\n });\n }\n }\n return result;\n }\n #buildOutline(allDocumentData) {\n const outlineItems = [];\n for (const documentData of allDocumentData) {\n const {\n outline\n } = documentData;\n if (!outline?.length) {\n continue;\n }\n outlineItems.push(...this.#filterOutlineItems(outline, documentData));\n }\n this.outlineItems = outlineItems.length > 0 ? outlineItems : null;\n }\n async #setOutlineItemDest(itemDict, item) {\n const {\n dest,\n rawDict\n } = item;\n const documentData = item._documentData;\n if (dest) {\n if (typeof dest === \"string\") {\n const name = documentData.dedupNamedDestinations.get(dest) || dest;\n itemDict.set(\"Dest\", stringToAsciiOrUTF16BE(name));\n } else if (Array.isArray(dest)) {\n const newDest = dest.slice();\n if (newDest[0] instanceof Ref) {\n newDest[0] = documentData.oldRefMapping.get(newDest[0]) || newDest[0];\n }\n itemDict.set(\"Dest\", newDest);\n }\n return;\n }\n const actionDict = rawDict?.get(\"A\");\n if (actionDict instanceof Dict) {\n this.currentDocument = documentData;\n const actionRef = await this.#cloneObject(actionDict, documentData.document.xref);\n this.currentDocument = null;\n itemDict.set(\"A\", actionRef);\n }\n }\n async #makeOutline() {\n const {\n outlineItems\n } = this;\n if (!outlineItems?.length) {\n return;\n }\n const [outlineRootRef, outlineRootDict] = this.newDict;\n outlineRootDict.setIfName(\"Type\", \"Outlines\");\n const assignRefs = items => {\n for (const item of items) {\n [item._ref] = this.newDict;\n if (item.items.length > 0) {\n assignRefs(item.items);\n }\n }\n };\n assignRefs(outlineItems);\n const fillItems = async (items, parentRef) => {\n let totalCount = 0;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const dict = this.xref[item._ref.num];\n dict.set(\"Title\", stringToAsciiOrUTF16BE(item.title));\n dict.set(\"Parent\", parentRef);\n if (i > 0) {\n dict.set(\"Prev\", items[i - 1]._ref);\n }\n if (i < items.length - 1) {\n dict.set(\"Next\", items[i + 1]._ref);\n }\n if (item.items.length > 0) {\n dict.set(\"First\", item.items[0]._ref);\n dict.set(\"Last\", item.items.at(-1)._ref);\n const childCount = await fillItems(item.items, item._ref);\n if (item.count !== undefined) {\n dict.set(\"Count\", item.count < 0 ? -childCount : childCount);\n }\n totalCount += item.count !== undefined && item.count < 0 ? 1 : childCount + 1;\n } else {\n totalCount += 1;\n }\n await this.#setOutlineItemDest(dict, item);\n const flags = (item.bold ? 2 : 0) | (item.italic ? 1 : 0);\n if (flags !== 0) {\n dict.set(\"F\", flags);\n }\n if (item.color && (item.color[0] !== 0 || item.color[1] !== 0 || item.color[2] !== 0)) {\n dict.set(\"C\", [item.color[0] / 255, item.color[1] / 255, item.color[2] / 255]);\n }\n }\n return totalCount;\n };\n const totalCount = await fillItems(outlineItems, outlineRootRef);\n outlineRootDict.set(\"First\", outlineItems[0]._ref);\n outlineRootDict.set(\"Last\", outlineItems.at(-1)._ref);\n outlineRootDict.set(\"Count\", totalCount);\n this.rootDict.set(\"Outlines\", outlineRootRef);\n }\n async #mergeAcroForms(allDocumentData) {\n this.#setAcroFormDefaultBasicValues(allDocumentData);\n this.#setAcroFormDefaultAppearance(allDocumentData);\n this.#setAcroFormQ(allDocumentData);\n await this.#setAcroFormDefaultResources(allDocumentData);\n const newFields = this.fields;\n for (const documentData of allDocumentData) {\n let fields = documentData.acroForm?.get(\"Fields\") || null;\n if (!fields && documentData.fieldToParent.size > 0) {\n fields = this.#fixFields(documentData.fieldToParent, documentData.document.xref);\n }\n if (Array.isArray(fields) && fields.length > 0) {\n this.currentDocument = documentData;\n await this.#cloneFields(newFields, fields);\n this.currentDocument = null;\n }\n }\n this.#setAcroFormCalculationOrder(allDocumentData);\n }\n #setAcroFormQ(allDocumentData) {\n let firstQ = 0;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const q = documentData.acroForm?.get(\"Q\");\n if (typeof q !== \"number\" || q === 0) {\n continue;\n }\n if (firstDocData?.acroFormQ > 0) {\n documentData.acroFormQ = q;\n continue;\n }\n if (firstQ === 0) {\n firstQ = q;\n firstDocData = documentData;\n continue;\n }\n if (q === firstQ) {\n continue;\n }\n firstDocData.acroFormQ ||= firstQ;\n documentData.acroFormQ = q;\n firstQ = 0;\n }\n if (firstQ > 0) {\n this.acroFormQ = firstQ;\n }\n }\n #setAcroFormDefaultBasicValues(allDocumentData) {\n let sigFlags = 0;\n let needAppearances = false;\n for (const documentData of allDocumentData) {\n if (!documentData.acroForm) {\n continue;\n }\n const sf = documentData.acroForm.get(\"SigFlags\");\n if (typeof sf === \"number\" && documentData.hasSignatureAnnotations) {\n sigFlags |= sf;\n }\n if (documentData.acroForm.get(\"NeedAppearances\") === true) {\n needAppearances = true;\n }\n }\n this.acroFormSigFlags = sigFlags;\n this.acroFormNeedAppearances = needAppearances;\n }\n #setAcroFormCalculationOrder(allDocumentData) {\n const calculationOrder = [];\n for (const documentData of allDocumentData) {\n const co = documentData.acroForm?.get(\"CO\") || null;\n if (!Array.isArray(co)) {\n continue;\n }\n const {\n oldRefMapping\n } = documentData;\n for (const coRef of co) {\n const newCoRef = coRef instanceof Ref && oldRefMapping.get(coRef);\n if (newCoRef) {\n calculationOrder.push(newCoRef);\n }\n }\n }\n this.acroFormCalculationOrder = calculationOrder.length > 0 ? calculationOrder : null;\n }\n #setAcroFormDefaultAppearance(allDocumentData) {\n let firstDA = null;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const da = documentData.acroForm?.get(\"DA\") || null;\n if (!da || typeof da !== \"string\") {\n continue;\n }\n if (firstDocData?.acroFormDefaultAppearance) {\n documentData.acroFormDefaultAppearance = da;\n continue;\n }\n if (!firstDA) {\n firstDA = da;\n firstDocData = documentData;\n continue;\n }\n if (da === firstDA) {\n continue;\n }\n firstDocData.acroFormDefaultAppearance ||= firstDA;\n documentData.acroFormDefaultAppearance = da;\n firstDA = null;\n }\n if (firstDA) {\n this.acroFormDefaultAppearance = firstDA;\n }\n }\n async #setAcroFormDefaultResources(allDocumentData) {\n let firstDR = null;\n let firstDRRef = null;\n let firstDocData = null;\n for (const documentData of allDocumentData) {\n const dr = documentData.acroForm?.get(\"DR\") || null;\n if (!dr || !(dr instanceof Dict)) {\n continue;\n }\n if (firstDocData?.acroFormDefaultResources) {\n documentData.acroFormDefaultResources = dr;\n continue;\n }\n if (!firstDR) {\n firstDR = dr;\n firstDRRef = documentData.acroForm.getRaw(\"DR\");\n firstDocData = documentData;\n continue;\n }\n if (deepCompare(firstDR, dr)) {\n continue;\n }\n firstDocData.acroFormDefaultResources ||= firstDR;\n documentData.acroFormDefaultResources = dr;\n firstDR = null;\n firstDRRef = null;\n }\n if (firstDR) {\n this.currentDocument = firstDocData;\n this.acroFormDefaultResources = await this.#collectDependencies(firstDRRef, true, firstDocData.document.xref);\n this.currentDocument = null;\n }\n }\n #fixFields(fieldToParent, xref) {\n const newFields = [];\n const processed = new RefSet();\n for (const [fieldRef, parentRef] of fieldToParent.items()) {\n if (!parentRef) {\n newFields.push(fieldRef);\n continue;\n }\n let parent = parentRef;\n let lastNonNullParent = parentRef;\n const visited = new RefSet();\n while (true) {\n if (parent instanceof Ref) {\n if (visited.has(parent)) {\n break;\n }\n visited.put(parent);\n }\n const parentDict = xref.fetchIfRef(parent);\n if (!(parentDict instanceof Dict)) {\n break;\n }\n parent = parentDict.getRaw(\"Parent\") || null;\n if (!parent) {\n break;\n }\n lastNonNullParent = parent;\n }\n if (lastNonNullParent instanceof Ref && !processed.has(lastNonNullParent)) {\n newFields.push(lastNonNullParent);\n processed.put(lastNonNullParent);\n }\n }\n return newFields;\n }\n async #cloneFields(newFields, fields) {\n const processed = new RefSet();\n const stack = [{\n kids: fields,\n newKids: newFields,\n pos: 0,\n oldParentRef: null,\n parentRef: null,\n parent: null\n }];\n const {\n document: {\n xref\n },\n oldRefMapping,\n fieldToParent,\n acroFormDefaultAppearance,\n acroFormDefaultResources,\n acroFormQ\n } = this.currentDocument;\n const daToFix = [];\n const drToFix = [];\n while (stack.length > 0) {\n const data = stack.at(-1);\n const {\n kids,\n newKids,\n parent,\n pos\n } = data;\n if (pos === kids.length) {\n stack.pop();\n if (newKids.length === 0 || !parent) {\n continue;\n }\n const parentDict = this.xref[data.parentRef.num] = this.cloneDict(parent);\n parentDict.delete(\"Parent\");\n parentDict.delete(\"Kids\");\n await this.#collectDependencies(parentDict, false, xref);\n parentDict.set(\"Kids\", newKids);\n if (stack.length > 0) {\n const lastData = stack.at(-1);\n if (!lastData.parentRef && lastData.oldParentRef) {\n const parentRef = lastData.parentRef = this.newRef;\n parentDict.set(\"Parent\", parentRef);\n oldRefMapping.put(lastData.oldParentRef, parentRef);\n }\n lastData.newKids.push(data.parentRef);\n }\n continue;\n }\n const oldKidRef = kids[data.pos++];\n if (!(oldKidRef instanceof Ref) || processed.has(oldKidRef)) {\n continue;\n }\n processed.put(oldKidRef);\n const kid = xref.fetchIfRef(oldKidRef);\n if (!(kid instanceof Dict)) {\n continue;\n }\n if (kid.has(\"Kids\")) {\n const kidsArray = kid.get(\"Kids\");\n if (!Array.isArray(kidsArray)) {\n continue;\n }\n stack.push({\n kids: kidsArray,\n newKids: [],\n pos: 0,\n oldParentRef: oldKidRef,\n parentRef: null,\n parent: kid\n });\n continue;\n }\n if (!fieldToParent.has(oldKidRef)) {\n continue;\n }\n const newRef = oldRefMapping.get(oldKidRef);\n if (!newRef) {\n continue;\n }\n newKids.push(newRef);\n if (!data.parentRef && data.oldParentRef) {\n data.parentRef = this.newRef;\n oldRefMapping.put(data.oldParentRef, data.parentRef);\n }\n const newKid = this.xref[newRef.num];\n if (data.parentRef) {\n newKid.set(\"Parent\", data.parentRef);\n }\n if (acroFormDefaultAppearance && !newKid.has(\"DA\")) {\n daToFix.push(newKid);\n }\n if (acroFormDefaultResources && !newKid.has(\"Kids\") && newKid.get(\"AP\") instanceof Dict) {\n drToFix.push(newKid);\n }\n if (acroFormQ && !newKid.has(\"Q\")) {\n newKid.set(\"Q\", acroFormQ);\n }\n }\n for (const field of daToFix) {\n const fieldType = getInheritableProperty({\n dict: field,\n key: \"FT\"\n });\n if (!isName(fieldType, \"Tx\")) {\n continue;\n }\n const da = getInheritableProperty({\n dict: field,\n key: \"DA\"\n });\n if (!da) {\n field.set(\"DA\", acroFormDefaultAppearance);\n }\n }\n const resourcesValuesCache = new Map();\n const fixAppearanceResources = async stream => {\n let resources = stream.dict.getRaw(\"Resources\");\n resources &&= this.xrefWrapper.fetchIfRef(resources);\n if (!(resources instanceof Dict)) {\n const newResourcesRef = await resourcesValuesCache.getOrInsertComputed(acroFormDefaultResources, () => this.#cloneObject(acroFormDefaultResources, xref));\n stream.dict.set(\"Resources\", newResourcesRef);\n return;\n }\n for (const [resKey, resValue] of acroFormDefaultResources.getRawEntries()) {\n if (resources.has(resKey)) {\n continue;\n }\n let newResValue = resValue;\n if (resValue instanceof Ref) {\n newResValue = await this.#collectDependencies(resValue, true, xref);\n } else if (resValue instanceof Dict || resValue instanceof BaseStream || Array.isArray(resValue)) {\n newResValue = await resourcesValuesCache.getOrInsertComputed(resValue, () => this.#cloneObject(resValue, xref));\n }\n resources.set(resKey, newResValue);\n }\n };\n for (const field of drToFix) {\n const ap = field.get(\"AP\");\n for (const [, value] of ap) {\n if (value instanceof BaseStream) {\n await fixAppearanceResources(value);\n } else if (value instanceof Dict) {\n for (const [, stream] of value) {\n if (stream instanceof BaseStream) {\n await fixAppearanceResources(stream);\n }\n }\n }\n }\n }\n }\n async #collectPageLabels() {\n if (!this.isSingleFile) {\n return;\n }\n const firstRealPage = this.oldPages.find(p => !!p);\n if (!firstRealPage) {\n return;\n }\n const {\n documentData: {\n document,\n pageLabels\n }\n } = firstRealPage;\n if (!pageLabels) {\n return;\n }\n const numPages = document.numPages;\n const labelsByPageIndex = new Map();\n const oldPageIndices = new Set(this.oldPages.filter(Boolean).map(({\n page: {\n pageIndex\n }\n }) => pageIndex));\n let currentLabel = null;\n let stFirstIndex = -1;\n for (let i = 0; i < numPages; i++) {\n const newLabel = pageLabels.get(i);\n if (newLabel) {\n currentLabel = newLabel;\n stFirstIndex = currentLabel.has(\"St\") ? i : -1;\n }\n if (!oldPageIndices.has(i)) {\n continue;\n }\n if (stFirstIndex !== -1) {\n const st = currentLabel.get(\"St\");\n currentLabel = this.cloneDict(currentLabel);\n currentLabel.set(\"St\", st + (i - stFirstIndex));\n stFirstIndex = -1;\n }\n labelsByPageIndex.set(i, currentLabel);\n }\n const defaultLabel = index => {\n const label = new Dict();\n label.setIfName(\"S\", \"D\");\n label.set(\"St\", index + 1);\n return label;\n };\n currentLabel = null;\n const newPageLabels = this.pageLabels = [];\n for (let i = 0, ii = this.oldPages.length; i < ii; i++) {\n const pageData = this.oldPages[i];\n const label = pageData ? labelsByPageIndex.get(pageData.page.pageIndex) || defaultLabel(i) : defaultLabel(i);\n if (label === currentLabel) {\n continue;\n }\n currentLabel = label;\n newPageLabels.push([i, currentLabel]);\n }\n }\n async #makePageCopy(pageIndex) {\n const {\n page,\n documentData,\n annotations,\n pointingNamedDestinations,\n copyLevel\n } = this.oldPages[pageIndex];\n this.currentDocument = documentData;\n const {\n dedupNamedDestinations,\n oldRefMapping\n } = documentData;\n const {\n xref,\n rotate,\n mediaBox,\n resources,\n ref: oldPageRef\n } = page;\n const pageRef = this.newRef;\n const pageDict = this.xref[pageRef.num] = this.cloneDict(page.pageDict);\n oldRefMapping.put(oldPageRef, pageRef);\n if (pointingNamedDestinations) {\n for (const pointingDest of pointingNamedDestinations) {\n const name = dedupNamedDestinations.get(pointingDest) || pointingDest;\n const dest = this.namedDestinations.get(name);\n dest[0] = pageRef;\n }\n }\n for (const key of [\"Rotate\", \"MediaBox\", \"CropBox\", \"BleedBox\", \"TrimBox\", \"ArtBox\", \"Resources\", \"Annots\", \"Parent\", \"UserUnit\"]) {\n pageDict.delete(key);\n }\n const lastRef = this.newRefCount;\n await this.#collectDependencies(pageDict, false, xref);\n pageDict.set(\"Rotate\", rotate);\n pageDict.set(\"MediaBox\", mediaBox);\n for (const boxName of [\"CropBox\", \"BleedBox\", \"TrimBox\", \"ArtBox\"]) {\n const box = page.getBoundingBox(boxName);\n if (box?.some((value, index) => value !== mediaBox[index])) {\n pageDict.set(boxName, box);\n }\n }\n const userUnit = page.userUnit;\n if (userUnit !== 1) {\n pageDict.set(\"UserUnit\", userUnit);\n }\n pageDict.setIfDict(\"Resources\", await this.#collectDependencies(resources, true, xref));\n let newAnnots = null;\n if (annotations) {\n const newAnnotations = await this.#collectDependencies(annotations, true, xref);\n this.#fixNamedDestinations(newAnnotations, dedupNamedDestinations);\n if (Array.isArray(newAnnotations) && newAnnotations.length > 0) {\n newAnnots = newAnnotations;\n }\n }\n const newAnnotations = documentData.document === this.#primaryDocument ? this.#newAnnotationsParams?.newAnnotationsByPage?.get(page.pageIndex)?.filter(({\n copyLevel: level\n }) => (level ?? 0) === copyLevel) : null;\n if (newAnnotations?.length) {\n const {\n handler,\n task,\n imagesPromises\n } = this.#newAnnotationsParams;\n const changes = new RefMap();\n const newData = await AnnotationFactory.saveNewAnnotations(page._createPartialEvaluator(handler), this.xrefWrapper, task, newAnnotations, imagesPromises, changes);\n for (const [ref, {\n data\n }] of changes.items()) {\n this.xref[ref.num] = data;\n }\n newAnnots ||= [];\n for (const {\n ref\n } of newData.annotations) {\n newAnnots.push(ref);\n }\n }\n pageDict.setIfArray(\"Annots\", newAnnots);\n if (this.useObjectStreams) {\n const newLastRef = this.newRefCount;\n const pageObjectRefs = [];\n for (let i = lastRef; i < newLastRef; i++) {\n const obj = this.xref[i];\n if (obj instanceof BaseStream) {\n continue;\n }\n pageObjectRefs.push(Ref.get(i, 0));\n }\n for (let i = 0; i < pageObjectRefs.length; i += 0xffff) {\n const objStreamRef = this.newRef;\n this.objStreamRefs.add(objStreamRef.num);\n this.xref[objStreamRef.num] = pageObjectRefs.slice(i, i + 0xffff);\n }\n }\n this.currentDocument = null;\n return pageRef;\n }\n #modalPageSize() {\n const counts = new Map();\n for (const pageData of this.oldPages) {\n if (!pageData) {\n continue;\n }\n const {\n page\n } = pageData;\n const [x0, y0, x1, y1] = page.view;\n let width = x1 - x0;\n let height = y1 - y0;\n if (width <= 0 || height <= 0) {\n continue;\n }\n if (page.rotate % 180 !== 0) {\n [width, height] = [height, width];\n }\n const key = `${width}x${height}`;\n const entry = counts.get(key);\n if (entry) {\n entry.count++;\n } else {\n counts.set(key, {\n width,\n height,\n count: 1\n });\n }\n }\n if (counts.size === 0) {\n const [,, width, height] = LETTER_SIZE_MEDIABOX;\n return {\n width,\n height\n };\n }\n let best = null;\n for (const entry of counts.values()) {\n if (!best || entry.count > best.count || entry.count === best.count && entry.width * entry.height > best.width * best.height) {\n best = entry;\n }\n }\n return {\n width: best.width,\n height: best.height\n };\n }\n async #makeImagePage(bitmap, pageSize) {\n const {\n width: pageW,\n height: pageH\n } = pageSize;\n const DEFAULT_MARGIN_RATIO = 0.1;\n const margin = pageW * DEFAULT_MARGIN_RATIO;\n const availW = Math.max(1, pageW - 2 * margin);\n const availH = Math.max(1, pageH - 2 * margin);\n const lastRef = this.newRefCount;\n const {\n imageStream,\n smaskStream,\n width: imgW,\n height: imgH\n } = await createImage(bitmap, this.xrefWrapper, {\n closeBitmap: true\n });\n const scale = Math.min(availW / imgW, availH / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const tx = (pageW - drawW) / 2;\n const ty = (pageH - drawH) / 2;\n if (smaskStream) {\n const smaskRef = this.newRef;\n this.xref[smaskRef.num] = smaskStream;\n imageStream.dict.set(\"SMask\", smaskRef);\n }\n const imageRef = this.newRef;\n this.xref[imageRef.num] = imageStream;\n const xobjectDict = new Dict(this.xrefWrapper);\n xobjectDict.set(\"Im0\", imageRef);\n const resourcesDict = new Dict(this.xrefWrapper);\n resourcesDict.set(\"XObject\", xobjectDict);\n resourcesDict.set(\"ProcSet\", [Name.get(\"PDF\"), Name.get(\"ImageC\")]);\n const content = `q ${numberToString(drawW)} 0 0 ${numberToString(drawH)} ` + `${numberToString(tx)} ${numberToString(ty)} cm /Im0 Do Q`;\n const contentsStream = new StringStream(content, new Dict(this.xrefWrapper));\n const contentsRef = this.newRef;\n this.xref[contentsRef.num] = contentsStream;\n const pageRef = this.newRef;\n const pageDict = this.xref[pageRef.num] = new Dict(this.xrefWrapper);\n pageDict.setIfName(\"Type\", \"Page\");\n pageDict.set(\"MediaBox\", [0, 0, pageW, pageH]);\n pageDict.set(\"Resources\", resourcesDict);\n pageDict.set(\"Contents\", contentsRef);\n if (this.useObjectStreams) {\n const newLastRef = this.newRefCount;\n const pageObjectRefs = [];\n for (let i = lastRef; i < newLastRef; i++) {\n const obj = this.xref[i];\n if (obj instanceof BaseStream) {\n continue;\n }\n pageObjectRefs.push(Ref.get(i, 0));\n }\n for (let i = 0; i < pageObjectRefs.length; i += 0xffff) {\n const objStreamRef = this.newRef;\n this.objStreamRefs.add(objStreamRef.num);\n this.xref[objStreamRef.num] = pageObjectRefs.slice(i, i + 0xffff);\n }\n }\n return pageRef;\n }\n #makePageTree() {\n const {\n newPages: pages,\n rootDict,\n pagesRef,\n pagesDict\n } = this;\n rootDict.set(\"Pages\", pagesRef);\n pagesDict.setIfName(\"Type\", \"Pages\");\n pagesDict.set(\"Count\", pages.length);\n const maxLeaves = false ? 0 : MAX_LEAVES_PER_PAGES_NODE;\n const stack = [{\n dict: pagesDict,\n kids: pages,\n parentRef: pagesRef\n }];\n while (stack.length > 0) {\n const {\n dict,\n kids,\n parentRef\n } = stack.pop();\n if (kids.length <= maxLeaves) {\n dict.set(\"Kids\", kids);\n for (const ref of kids) {\n this.xref[ref.num].set(\"Parent\", parentRef);\n }\n continue;\n }\n const chunkSize = Math.max(maxLeaves, Math.ceil(kids.length / maxLeaves));\n const kidsChunks = [];\n for (let i = 0; i < kids.length; i += chunkSize) {\n kidsChunks.push(kids.slice(i, i + chunkSize));\n }\n const kidsRefs = [];\n dict.set(\"Kids\", kidsRefs);\n for (const chunk of kidsChunks) {\n const [kidRef, kidDict] = this.newDict;\n kidsRefs.push(kidRef);\n kidDict.setIfName(\"Type\", \"Pages\");\n kidDict.set(\"Parent\", parentRef);\n kidDict.set(\"Count\", chunk.length);\n stack.push({\n dict: kidDict,\n kids: chunk,\n parentRef: kidRef\n });\n }\n }\n }\n #makeNameNumTree(map, areNames) {\n const allEntries = map.sort(areNames ? ([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n } : ([keyA], [keyB]) => keyA - keyB);\n const maxLeaves = false ? 0 : MAX_IN_NAME_TREE_NODE;\n const [treeRef, treeDict] = this.newDict;\n const stack = [{\n dict: treeDict,\n entries: allEntries,\n isRoot: true\n }];\n const valueType = areNames ? \"Names\" : \"Nums\";\n while (stack.length > 0) {\n const {\n dict,\n entries,\n isRoot\n } = stack.pop();\n if (entries.length <= maxLeaves) {\n if (!isRoot) {\n dict.set(\"Limits\", [entries[0][0], entries.at(-1)[0]]);\n }\n dict.set(valueType, entries.flat());\n continue;\n }\n const entriesChunks = [];\n const chunkSize = Math.max(maxLeaves, Math.ceil(entries.length / maxLeaves));\n for (let i = 0; i < entries.length; i += chunkSize) {\n entriesChunks.push(entries.slice(i, i + chunkSize));\n }\n const entriesRefs = [];\n dict.set(\"Kids\", entriesRefs);\n for (const chunk of entriesChunks) {\n const [entriesRef, entriesDict] = this.newDict;\n entriesRefs.push(entriesRef);\n entriesDict.set(\"Limits\", [chunk[0][0], chunk.at(-1)[0]]);\n stack.push({\n dict: entriesDict,\n entries: chunk\n });\n }\n }\n return treeRef;\n }\n #makePageLabelsTree() {\n const {\n pageLabels\n } = this;\n if (!pageLabels?.length) {\n return;\n }\n const {\n rootDict\n } = this;\n const pageLabelsRef = this.#makeNameNumTree(this.pageLabels, false);\n rootDict.set(\"PageLabels\", pageLabelsRef);\n }\n async #collectEmbeddedFiles(allDocumentData) {\n const {\n embeddedFiles\n } = this;\n for (const documentData of allDocumentData) {\n const {\n embeddedFiles: docEmbeddedFiles,\n document: {\n xref\n }\n } = documentData;\n if (!docEmbeddedFiles?.size) {\n continue;\n }\n this.currentDocument = documentData;\n for (const [key, valueRef] of docEmbeddedFiles) {\n let name = key;\n if (embeddedFiles.has(name)) {\n const displayName = stringToPDFString(key, true);\n for (let i = 1;; i++) {\n const deduped = stringToAsciiOrUTF16BE(`${displayName}_${i}`);\n if (!embeddedFiles.has(deduped)) {\n name = deduped;\n break;\n }\n }\n }\n embeddedFiles.set(name, await this.#collectDependencies(valueRef, true, xref));\n }\n this.currentDocument = null;\n }\n }\n #makeEmbeddedFilesTree() {\n const {\n embeddedFiles\n } = this;\n if (embeddedFiles.size === 0) {\n return;\n }\n if (!this.namesDict) {\n [this.namesRef, this.namesDict] = this.newDict;\n this.rootDict.set(\"Names\", this.namesRef);\n }\n this.namesDict.set(\"EmbeddedFiles\", this.#makeNameNumTree(Array.from(embeddedFiles.entries()), true));\n }\n #makeDestinationsTree() {\n const {\n namedDestinations\n } = this;\n if (namedDestinations.size === 0) {\n return;\n }\n if (!this.namesDict) {\n [this.namesRef, this.namesDict] = this.newDict;\n this.rootDict.set(\"Names\", this.namesRef);\n }\n this.namesDict.set(\"Dests\", this.#makeNameNumTree(Array.from(namedDestinations, ([name, dest]) => [stringToAsciiOrUTF16BE(name), dest]), true));\n }\n #makeStructTree() {\n const {\n structTreeKids\n } = this;\n if (!structTreeKids?.length) {\n return;\n }\n const {\n rootDict\n } = this;\n const structTreeRef = this.newRef;\n const structTree = this.xref[structTreeRef.num] = new Dict();\n structTree.setIfName(\"Type\", \"StructTreeRoot\");\n structTree.setIfArray(\"K\", structTreeKids);\n for (const kidRef of structTreeKids) {\n const kid = this.xref[kidRef.num];\n const type = kid.get(\"Type\");\n if (!type || isName(type, \"StructElem\")) {\n kid.set(\"P\", structTreeRef);\n }\n }\n if (this.parentTree.size > 0) {\n const parentTreeRef = this.#makeNameNumTree(Array.from(this.parentTree.entries()), false);\n const parentTree = this.xref[parentTreeRef.num];\n parentTree.setIfName(\"Type\", \"ParentTree\");\n structTree.set(\"ParentTree\", parentTreeRef);\n let nextKey = 0;\n for (const key of this.parentTree.keys()) {\n nextKey = Math.max(nextKey, key + 1);\n }\n structTree.set(\"ParentTreeNextKey\", nextKey);\n }\n if (this.idTree.size > 0) {\n const idTreeRef = this.#makeNameNumTree(Array.from(this.idTree.entries()), true);\n const idTree = this.xref[idTreeRef.num];\n idTree.setIfName(\"Type\", \"IDTree\");\n structTree.set(\"IDTree\", idTreeRef);\n }\n if (this.classMap.size > 0) {\n const classMapRef = this.newRef;\n this.xref[classMapRef.num] = this.classMap;\n structTree.set(\"ClassMap\", classMapRef);\n }\n if (this.roleMap.size > 0) {\n const roleMapRef = this.newRef;\n this.xref[roleMapRef.num] = this.roleMap;\n structTree.set(\"RoleMap\", roleMapRef);\n }\n if (this.namespaces.size > 0) {\n const namespacesRef = this.newRef;\n this.xref[namespacesRef.num] = Array.from(this.namespaces.values());\n structTree.set(\"Namespaces\", namespacesRef);\n }\n if (this.structTreeAF.length > 0) {\n const structTreeAFRef = this.newRef;\n this.xref[structTreeAFRef.num] = this.structTreeAF;\n structTree.set(\"AF\", structTreeAFRef);\n }\n if (this.structTreePronunciationLexicon.length > 0) {\n const structTreePronunciationLexiconRef = this.newRef;\n this.xref[structTreePronunciationLexiconRef.num] = this.structTreePronunciationLexicon;\n structTree.set(\"PronunciationLexicon\", structTreePronunciationLexiconRef);\n }\n rootDict.set(\"StructTreeRoot\", structTreeRef);\n }\n #makeAcroForm() {\n if (this.fields.length === 0) {\n return;\n }\n const {\n rootDict\n } = this;\n const acroFormRef = this.newRef;\n const acroForm = this.xref[acroFormRef.num] = new Dict();\n rootDict.set(\"AcroForm\", acroFormRef);\n acroForm.set(\"Fields\", this.fields);\n if (this.acroFormNeedAppearances) {\n acroForm.set(\"NeedAppearances\", true);\n }\n if (this.acroFormSigFlags > 0) {\n acroForm.set(\"SigFlags\", this.acroFormSigFlags);\n }\n acroForm.setIfArray(\"CO\", this.acroFormCalculationOrder);\n acroForm.setIfDefined(\"DR\", this.acroFormDefaultResources);\n if (this.acroFormDefaultAppearance) {\n acroForm.set(\"DA\", this.acroFormDefaultAppearance);\n }\n if (this.acroFormQ > 0) {\n acroForm.set(\"Q\", this.acroFormQ);\n }\n }\n async #makeRoot() {\n const {\n rootDict\n } = this;\n rootDict.setIfName(\"Type\", \"Catalog\");\n rootDict.setIfName(\"Version\", this.version);\n this.#makeAcroForm();\n this.#makePageTree();\n this.#makePageLabelsTree();\n this.#makeEmbeddedFilesTree();\n this.#makeDestinationsTree();\n this.#makeStructTree();\n await this.#makeOutline();\n }\n #makeInfo() {\n const infoMap = new Map();\n if (this.isSingleFile) {\n const firstRealPage = this.oldPages.find(p => !!p);\n const {\n xref: {\n trailer\n }\n } = firstRealPage.documentData.document;\n const oldInfoDict = trailer.get(\"Info\");\n for (const [key, value] of oldInfoDict || []) {\n if (typeof value === \"string\") {\n infoMap.set(key, stringToPDFString(value));\n }\n }\n }\n infoMap.delete(\"ModDate\");\n infoMap.set(\"CreationDate\", getModificationDate());\n infoMap.set(\"Creator\", \"PDF.js\");\n infoMap.set(\"Producer\", \"Firefox\");\n if (this.author) {\n infoMap.set(\"Author\", this.author);\n }\n if (this.title) {\n infoMap.set(\"Title\", this.title);\n }\n for (const [key, value] of infoMap) {\n this.infoDict.set(key, stringToAsciiOrUTF16BE(value));\n }\n return infoMap;\n }\n async #makeEncrypt() {\n if (!this.isSingleFile) {\n return [null, null, null];\n }\n const firstRealPage = this.oldPages.find(p => !!p);\n const {\n documentData\n } = firstRealPage;\n const {\n document: {\n xref: {\n trailer,\n encrypt\n }\n }\n } = documentData;\n if (!trailer.has(\"Encrypt\")) {\n return [null, null, null];\n }\n const encryptDict = trailer.get(\"Encrypt\");\n if (!(encryptDict instanceof Dict)) {\n return [null, null, null];\n }\n this.currentDocument = documentData;\n const result = [await this.#cloneObject(encryptDict, trailer.xref), encrypt, trailer.get(\"ID\")];\n this.currentDocument = null;\n return result;\n }\n async #createChanges() {\n const changes = new RefMap();\n changes.put(Ref.get(0, 0xffff), {\n data: null\n });\n for (let i = 1, ii = this.xref.length; i < ii; i++) {\n if (this.objStreamRefs?.has(i)) {\n await this.#createObjectStream(Ref.get(i, 0), this.xref[i], changes);\n } else {\n changes.put(Ref.get(i, 0), {\n data: this.xref[i]\n });\n }\n }\n return [changes, this.newRef];\n }\n async #createObjectStream(objStreamRef, objRefs, changes) {\n const streamBuffer = [\"\"];\n const objOffsets = [];\n let offset = 0;\n const buffer = [];\n for (let i = 0, ii = objRefs.length; i < ii; i++) {\n const objRef = objRefs[i];\n changes.put(objRef, {\n data: null,\n objStreamRef,\n index: i\n });\n objOffsets.push(`${objRef.num} ${offset}`);\n const data = this.xref[objRef.num];\n await writeValue(data, buffer, null);\n const obj = buffer.join(\"\");\n buffer.length = 0;\n streamBuffer.push(obj);\n offset += obj.length + 1;\n }\n streamBuffer[0] = objOffsets.join(\"\\n\");\n const dict = new Dict();\n dict.setIfName(\"Type\", \"ObjStm\");\n dict.set(\"N\", objRefs.length);\n dict.set(\"First\", streamBuffer[0].length + 1);\n const objStream = new StringStream(streamBuffer.join(\"\\n\"), dict);\n changes.put(objStreamRef, {\n data: objStream\n });\n }\n async writePDF() {\n await this.#makeRoot();\n const infoMap = this.#makeInfo();\n const [encryptRef, encrypt, fileIds] = await this.#makeEncrypt();\n const [changes, xrefTableRef] = await this.#createChanges();\n const header = stringToBytes(`%PDF-${this.version}\\n%\\xfa\\xde\\xfa\\xce`);\n return incrementalUpdate({\n originalData: header,\n changes,\n xrefInfo: {\n startXRef: null,\n rootRef: this.rootRef,\n infoRef: this.infoRef,\n encryptRef,\n newRef: xrefTableRef,\n fileIds: fileIds || [null, null],\n infoMap\n },\n useXrefStream: this.useObjectStreams,\n xref: {\n encrypt,\n encryptRef\n }\n });\n }\n}\n\n;// ./src/shared/base_pdf_stream.js\n\nclass BasePDFStream {\n #PDFStreamReader = null;\n #PDFStreamRangeReader = null;\n _fullReader = null;\n _rangeReaders = new Set();\n _source = null;\n constructor(source, PDFStreamReader, PDFStreamRangeReader) {\n this._source = source;\n this.#PDFStreamReader = PDFStreamReader;\n this.#PDFStreamRangeReader = PDFStreamRangeReader;\n }\n get _progressiveDataLength() {\n return this._fullReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullReader, \"BasePDFStream.getFullReader can only be called once.\");\n return this._fullReader = new this.#PDFStreamReader(this);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new this.#PDFStreamRangeReader(this, begin, end);\n this._rangeReaders.add(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullReader?.cancel(reason);\n for (const reader of new Set(this._rangeReaders)) {\n reader.cancel(reason);\n }\n }\n}\nclass BasePDFStreamReader {\n onProgress = null;\n _contentLength = 0;\n _filename = null;\n _headersCapability = Promise.withResolvers();\n _isRangeSupported = false;\n _isStreamingSupported = false;\n _loaded = 0;\n _stream = null;\n constructor(stream) {\n this._stream = stream;\n }\n _callOnProgress() {\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\nclass BasePDFStreamRangeReader {\n _stream = null;\n constructor(stream, begin, end) {\n this._stream = stream;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\n\n;// ./src/core/worker_stream.js\n\nclass PDFWorkerStream extends BasePDFStream {\n constructor(source) {\n super(source, PDFWorkerStreamReader, PDFWorkerStreamRangeReader);\n }\n}\nclass PDFWorkerStreamReader extends BasePDFStreamReader {\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n msgHandler\n } = stream._source;\n const readableStream = msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n this._contentLength = data.contentLength;\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._headersCapability.resolve();\n }, this._headersCapability.reject);\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\nclass PDFWorkerStreamRangeReader extends BasePDFStreamRangeReader {\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n msgHandler\n } = stream._source;\n const readableStream = msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end\n });\n this._reader = readableStream.getReader();\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n;// ./src/core/worker.js\n\n\n\n\n\n\n\n\n\n\n\n\nclass WorkerTask {\n #capability = Promise.withResolvers();\n terminated = false;\n constructor(name) {\n this.name = name;\n }\n get finished() {\n return this.#capability.promise;\n }\n finish() {\n this.#capability.resolve();\n }\n terminate() {\n this.terminated = true;\n }\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\nclass WorkerMessageHandler {\n static {\n if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && typeof self.postMessage === \"function\" && \"onmessage\" in self) {\n this.initializeFromPort(self);\n }\n }\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", data => {\n if (testMessageProcessed) {\n return;\n }\n testMessageProcessed = true;\n handler.send(\"test\", data instanceof Uint8Array);\n });\n handler.on(\"configure\", data => {\n setVerbosityLevel(data.verbosity);\n });\n handler.on(\"GetDocRequest\", data => this.createDocumentHandler(data, port));\n }\n static createDocumentHandler(docParams, port) {\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = new Set();\n const verbosity = getVerbosityLevel();\n const {\n docId,\n apiVersion\n } = docParams;\n const workerVersion = \"6.3.289\";\n if (apiVersion !== workerVersion) {\n throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n }\n const buildMsg = (type, prop) => `The \\`${type}.prototype\\` contains unexpected enumerable property ` + `\"${prop}\", thus breaking e.g. \\`for...in\\` iteration of ${type}s.`;\n for (const prop in {}) {\n throw new Error(buildMsg(\"Object\", prop));\n }\n for (const prop in []) {\n throw new Error(buildMsg(\"Array\", prop));\n }\n const workerHandlerName = docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n function startWorkerTask(task) {\n WorkerTasks.add(task);\n }\n function finishWorkerTask(task) {\n task.finish();\n WorkerTasks.delete(task);\n }\n async function loadDocument(recoveryMode) {\n await pdfManager.initDocument(recoveryMode);\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaResources\");\n startWorkerTask(task);\n await pdfManager.ensureDoc(\"loadXfaResources\", [handler, task]);\n finishWorkerTask(task);\n }\n const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n return {\n numPages,\n fingerprints,\n htmlForXfa\n };\n }\n async function getPdfManager({\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n docBaseUrl,\n enableXfa,\n evaluatorOptions\n }) {\n const pdfManagerArgs = {\n source: null,\n disableAutoFetch,\n docBaseUrl,\n docId,\n enableXfa,\n evaluatorOptions,\n handler,\n length: 0,\n password,\n rangeChunkSize\n };\n if (data) {\n pdfManagerArgs.source = data;\n return new LocalPdfManager(pdfManagerArgs);\n }\n const pdfStream = new PDFWorkerStream({\n msgHandler: handler\n }),\n fullReader = pdfStream.getFullReader();\n const {\n promise,\n resolve,\n reject\n } = Promise.withResolvers();\n let newPdfManager,\n cachedChunks = [];\n cancelXHRs = reason => pdfStream.cancelAllRequests(reason);\n fullReader.headersReady.then(() => {\n if (!fullReader.isRangeSupported) {\n return;\n }\n pdfManagerArgs.source = pdfStream;\n pdfManagerArgs.length = fullReader.contentLength;\n pdfManagerArgs.disableAutoFetch ||= fullReader.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(pdfManagerArgs);\n for (const chunk of cachedChunks) {\n newPdfManager.sendProgressiveData(chunk);\n }\n cachedChunks = null;\n resolve(newPdfManager);\n cancelXHRs = null;\n }).catch(reason => {\n reject(reason);\n cancelXHRs = null;\n });\n async function readData() {\n let loaded = 0;\n while (true) {\n const {\n value,\n done\n } = await fullReader.read();\n ensureNotTerminated();\n if (done) {\n break;\n }\n loaded += value.byteLength;\n if (!fullReader.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: fullReader.contentLength\n });\n }\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n }\n if (!newPdfManager) {\n pdfManagerArgs.source = arrayBuffersToBytes(cachedChunks);\n cachedChunks = null;\n newPdfManager = new LocalPdfManager(pdfManagerArgs);\n resolve(newPdfManager);\n }\n cancelXHRs = null;\n }\n readData().catch(reason => {\n reject(reason);\n cancelXHRs = null;\n });\n return promise;\n }\n async function getPassword(ex) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n try {\n const res = await handler.sendWithPromise(\"PasswordRequest\", ex);\n return res.password;\n } finally {\n Promise.resolve().then(() => {\n finishWorkerTask(task);\n });\n }\n }\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", {\n pdfInfo: doc\n });\n }\n function onFailure(ex) {\n if (terminated) {\n return;\n }\n if (ex instanceof PasswordException) {\n getPassword(ex).then(password => {\n pdfManager.updatePassword(password);\n pdfManagerReady();\n }).catch(() => {\n handler.send(\"DocException\", ex);\n });\n } else {\n handler.send(\"DocException\", wrapReason(ex));\n }\n }\n function pdfManagerReady() {\n ensureNotTerminated();\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream().then(function () {\n ensureNotTerminated();\n loadDocument(true).then(onSuccess, onFailure);\n }, onFailure);\n });\n }\n ensureNotTerminated();\n getPdfManager(data).then(function (newPdfManager) {\n if (terminated) {\n newPdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n pdfManager.requestLoadedStream(true).then(stream => {\n handler.send(\"DataLoaded\", {\n length: stream.bytes.byteLength\n });\n }, () => {});\n }).then(pdfManagerReady, onFailure);\n }\n handler.on(\"GetPage\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n const [rotate, ref, userUnit, view] = await Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]);\n return {\n rotate,\n ref,\n refStr: ref?.toString() ?? null,\n userUnit,\n view\n };\n });\n handler.on(\"GetPageIndex\", function ({\n num,\n gen\n }) {\n return pdfManager.ensureCatalog(\"getPageIndex\", [Ref.get(num, gen)]);\n });\n handler.on(\"GetDestinations\", function () {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n handler.on(\"GetDestination\", function ({\n id\n }) {\n return pdfManager.ensureCatalog(\"getDestination\", [id]);\n });\n handler.on(\"GetPageLabels\", function () {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n handler.on(\"GetPageLayout\", function () {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n handler.on(\"GetPageMode\", function () {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n handler.on(\"GetViewerPreferences\", function () {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n handler.on(\"GetOpenAction\", function () {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n handler.on(\"GetAttachments\", function () {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n handler.on(\"GetAttachmentContent\", async function (id) {\n let passwordEx;\n while (true) {\n const password = passwordEx ? await getPassword(passwordEx) : null;\n try {\n if (password) {\n pdfManager.updatePassword(password);\n }\n return await pdfManager.ensureCatalog(\"attachmentContent\", [id]);\n } catch (ex) {\n if (ex instanceof PasswordException) {\n passwordEx = ex;\n continue;\n }\n throw ex;\n }\n }\n });\n handler.on(\"GetDocJSActions\", function () {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n handler.on(\"GetPageJSActions\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n return pdfManager.ensure(page, \"jsActions\");\n });\n handler.on(\"GetAnnotationsByType\", async function ({\n types,\n pageIndexesToSkip\n }) {\n const [numPages, annotationGlobals] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"annotationGlobals\")]);\n if (!annotationGlobals) {\n return null;\n }\n const pagePromises = [];\n const annotationPromises = [];\n let task = null;\n try {\n for (let i = 0, ii = numPages; i < ii; i++) {\n if (pageIndexesToSkip?.has(i)) {\n continue;\n }\n if (!task) {\n task = new WorkerTask(\"GetAnnotationsByType\");\n startWorkerTask(task);\n }\n pagePromises.push(pdfManager.getPage(i).then(page => page.collectAnnotationsByType(handler, task, types, annotationPromises, annotationGlobals)));\n }\n await Promise.all(pagePromises);\n const annotations = await Promise.all(annotationPromises);\n return annotations.filter(Boolean);\n } finally {\n if (task) {\n finishWorkerTask(task);\n }\n }\n });\n handler.on(\"GetOutline\", function () {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n handler.on(\"GetOptionalContentConfig\", function () {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n handler.on(\"GetPermissions\", function () {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n handler.on(\"GetMetadata\", function () {\n return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\"), pdfManager.ensureCatalog(\"hasStructTree\")]);\n });\n handler.on(\"GetMarkInfo\", function () {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n handler.on(\"GetData\", async function () {\n const stream = await pdfManager.requestLoadedStream();\n return stream.bytes;\n });\n handler.on(\"GetAnnotations\", async function ({\n pageIndex,\n intent\n }) {\n const page = await pdfManager.getPage(pageIndex);\n const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\n startWorkerTask(task);\n try {\n return await page.getAnnotationsData(handler, task, intent);\n } finally {\n finishWorkerTask(task);\n }\n });\n handler.on(\"GetFieldObjects\", async function () {\n const fieldObjects = await pdfManager.ensureDoc(\"fieldObjects\");\n return fieldObjects?.allFields || null;\n });\n handler.on(\"GetSignatures\", function () {\n return pdfManager.ensureDoc(\"signatures\");\n });\n handler.on(\"GetSignatureData\", function (id) {\n return pdfManager.ensureDoc(\"getSignatureData\", [id]);\n });\n handler.on(\"HasJSActions\", function () {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n handler.on(\"GetCalculationOrderIds\", function () {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n handler.on(\"ExtractPages\", async function ({\n pageInfos,\n annotationStorage\n }) {\n if (!pageInfos) {\n warn(\"extractPages: nothing to extract.\");\n return null;\n }\n if (!Array.isArray(pageInfos)) {\n pageInfos = [pageInfos];\n }\n let newDocumentId = 0;\n for (const pageInfo of pageInfos) {\n if (pageInfo.image) {\n continue;\n }\n if (pageInfo.document === null) {\n pageInfo.document = pdfManager.pdfDocument;\n } else if (ArrayBuffer.isView(pageInfo.document)) {\n const manager = new LocalPdfManager({\n source: pageInfo.document,\n docId: `${docId}_extractPages_${newDocumentId++}`,\n handler,\n password: pageInfo.password ?? null,\n evaluatorOptions: Object.assign({}, pdfManager.evaluatorOptions)\n });\n let recoveryMode = false;\n let isValid = true;\n while (true) {\n try {\n await manager.requestLoadedStream();\n await manager.initDocument(recoveryMode);\n break;\n } catch (e) {\n if (e instanceof XRefParseException) {\n if (recoveryMode === false) {\n recoveryMode = true;\n continue;\n } else {\n isValid = false;\n warn(\"extractPages: XRefParseException.\");\n }\n } else if (e instanceof PasswordException) {\n try {\n const password = await getPassword(e);\n manager.updatePassword(password);\n } catch {\n isValid = false;\n warn(\"extractPages: invalid password.\");\n }\n } else {\n isValid = false;\n warn(\"extractPages: invalid document.\");\n }\n if (!isValid) {\n break;\n }\n }\n }\n if (!isValid) {\n pageInfo.document = null;\n }\n const isPureXfa = await manager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n pageInfo.document = null;\n warn(\"extractPages does not support pure XFA documents.\");\n } else {\n pageInfo.document = manager.pdfDocument;\n }\n } else {\n warn(\"extractPages: invalid document.\");\n }\n }\n let task;\n try {\n const pdfEditor = new PDFEditor();\n task = new WorkerTask(`ExtractPages: ${pageInfos.length} page(s)`);\n startWorkerTask(task);\n return await pdfEditor.extractPages(pageInfos, annotationStorage, pdfManager.pdfDocument, handler, task);\n } catch (reason) {\n warn(`extractPages: \"${reason}\".`);\n return null;\n } finally {\n if (task) {\n finishWorkerTask(task);\n }\n }\n });\n handler.on(\"SaveDocument\", async function ({\n isPureXfa,\n numPages,\n annotationStorage,\n filename\n }) {\n const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"startXRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureCatalog(\"structTreeRoot\")];\n const changes = new RefMap();\n const promises = [];\n const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null;\n const [stream, acroForm, acroFormRef, startXRef, xref, _structTreeRoot] = await Promise.all(globalPromises);\n const catalogRef = xref.trailer.getRaw(\"Root\") || null;\n let structTreeRoot;\n if (newAnnotationsByPage) {\n if (!_structTreeRoot) {\n if (await StructTreeRoot.canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n })) {\n structTreeRoot = null;\n }\n } else if (await _structTreeRoot.canUpdateStructTree({\n pdfManager,\n newAnnotationsByPage\n })) {\n structTreeRoot = _structTreeRoot;\n }\n const imagePromises = AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported);\n const newAnnotationPromises = structTreeRoot === undefined ? promises : [];\n for (const [pageIndex, annotations] of newAnnotationsByPage) {\n newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => {\n const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n startWorkerTask(task);\n return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(() => {\n finishWorkerTask(task);\n });\n }));\n }\n if (structTreeRoot === null) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await StructTreeRoot.createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n });\n }));\n } else if (structTreeRoot) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await structTreeRoot.updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n });\n }));\n }\n }\n if (isPureXfa) {\n promises.push(pdfManager.ensureDoc(\"serializeXfaData\", [annotationStorage]));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n startWorkerTask(task);\n return page.save(handler, task, annotationStorage, changes).finally(() => {\n finishWorkerTask(task);\n });\n }));\n }\n }\n const refs = await Promise.all(promises);\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else if (changes.size === 0) {\n return stream.bytes;\n }\n const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances);\n const xfa = acroForm instanceof Dict && acroForm.get(\"XFA\") || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewTemporaryRef();\n }\n } else if (xfa) {\n warn(\"Unsupported XFA type.\");\n }\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n const infoMap = new Map();\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n for (const [key, value] of xrefInfo) {\n if (typeof value === \"string\") {\n infoMap.set(key, stringToPDFString(value));\n }\n }\n }\n newXrefInfo = {\n rootRef: catalogRef,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewTemporaryRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n infoMap,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename\n };\n }\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n changes,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n needAppearances,\n acroFormRef,\n acroForm,\n xfaData,\n useXrefStream: isDict(xref.topDict, \"XRef\")\n }).finally(() => {\n xref.resetNewTemporaryRef();\n });\n });\n handler.on(\"GetOperatorList\", function ({\n pageId,\n pageIndex,\n intent,\n cacheKey,\n annotationStorage,\n modifiedIds\n }, sink) {\n pdfManager.getPage(pageId).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage,\n modifiedIds,\n pageIndex\n }).then(opListInfo => {\n if (start) {\n info(`${task.name}; time=${Date.now() - start}ms, len=${opListInfo.length}`);\n }\n sink.close();\n }, reason => {\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n }).finally(() => {\n finishWorkerTask(task);\n });\n });\n });\n handler.on(\"GetTextContent\", function ({\n pageId,\n pageIndex,\n includeMarkedContent,\n disableNormalization\n }, sink) {\n pdfManager.getPage(pageId).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent,\n disableNormalization\n }).then(() => {\n if (start) {\n info(`${task.name}; time=${Date.now() - start}ms`);\n }\n sink.close();\n }, reason => {\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n }).finally(() => {\n finishWorkerTask(task);\n });\n });\n });\n handler.on(\"GetStructTree\", async function ({\n pageIndex\n }) {\n const page = await pdfManager.getPage(pageIndex);\n return pdfManager.ensure(page, \"getStructTree\");\n });\n handler.on(\"FontFallback\", function ({\n id\n }) {\n return pdfManager.fontFallback(id, handler);\n });\n handler.on(\"Cleanup\", function () {\n return pdfManager.cleanup(true);\n });\n handler.on(\"Terminate\", async function () {\n terminated = true;\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n cancelXHRs?.(new AbortException(\"Worker was terminated.\"));\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n await Promise.all(waitOn);\n handler.destroy();\n handler = null;\n });\n handler.on(\"Ready\", function () {\n setupDoc(docParams);\n docParams = null;\n });\n return workerHandlerName;\n }\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n this.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\n;// ./src/pdf.worker.js\n\nglobalThis.pdfjsWorker = {\n WorkerMessageHandler: WorkerMessageHandler\n};\n\nexport { WorkerMessageHandler };\n\n//# sourceMappingURL=pdf.worker.mjs.map"],"names":["isNodeJS","BBOX_INIT","F32_BBOX_INIT","FONT_IDENTITY_MATRIX","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SVG_NS","RenderingIntentFlag","AnnotationPrefix","AnnotationEditorPrefix","AnnotationEditorType","PermissionFlag","MeshFigureType","TextRenderingMode","ImageKind","AnnotationType","AnnotationReplyType","AnnotationRenditionOperation","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","AnnotationActionEventType","DocumentActionEventType","PageActionEventType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","stringToUTF8String","absoluteUrl","stripPath","str","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","i","chunkEnd","chunk","stringToBytes","FeatureTest","buffer8","view32","platform","userAgent","ctx","Util","_","r","g","b","m1","m2","m","md","p","pos","p0","p1","transform","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","a","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","minMax","x0","y0","x1","y1","#getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","#getExtremum","delta","sqrtDelta","utf8StringToString","isArrayEqual","arr1","arr2","ii","NormalizeRegex","NormalizationMap","normalizeUnicode","p2","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","makeArr","makeMap","makeObj","makeSet","separator","CIRCULAR_REF","EOF","CmdCache","NameCache","RefCache","clearPrimitiveCaches","Name","Cmd","cmd","Dict","#map","xref","newXref","#getValue","isAsync","key1","key2","Ref","key","emptyDict","dictArray","mergeSubDicts","mergedDict","properties","dict","property","values","subDict","#str","num","gen","ref","RefSet","#set","parent","refStr","RefMap","aliasRef","callback","map","isName","v","isCmd","isDict","type","isRefsEqual","v1","v2","BaseStream","decoderOptions","width","height","peekedByte","begin","end","n","start","CONTROL_CHAR_REGEXP","isCSSString","quote","char","serializeFontFamily","fontFamily","isAscii","stringToAsciiOrUTF16BE","stringToUTF16String","stringToUTF16HexString","buf","bigEndian","PDFStringTranslateTable","PDFStringTextDecoders","stringToPDFString","keepEscapeSequence","encoding","decoder","buffer","decoded","ex","charCode","PDF_VERSION_REGEXP","MAX_INT_32","IDENTITY_MATRIX","RESOURCES_KEYS_OPERATOR_LIST","RESOURCES_KEYS_TEXT_CONTENT","getLookupTableFactory","initializer","useArray","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","arr","dataLength","data","item","fetchBinaryData","response","getInheritableProperty","getArray","stopWhenFound","visited","getParentToUpdate","firstDict","result","deepCompare","value1","value2","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","roman","isWhiteSpace","ch","isBooleanArray","len","isNumberArray","lookupMatrix","fallback","lookupRect","lookupNormalRect","parseXFAPath","path","positionPattern","component","escapePDFName","escapeString","match","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","rawActionDict","action","actionDict","XMLEntities","codePointIter","encodeToXmlString","entity","validateFontName","mustWarn","ident","normalizeCSSFontFamily","spaces","digit","validateCSSFont","cssFontInfo","CSS_FONT_WEIGHT_VALUES","fontWeight","italicAngle","weight","angle","recoverJsURL","URL_OPEN_METHODS","jsUrl","numberToString","roundedValue","getNewAnnotationsMap","annotationStorage","newAnnotationsByPage","getModificationDate","date","getRotationMatrix","rotation","getSizeInBytes","ALPHA_MASK","RGB_MASK","QCMS","#memoryArray","array","copy_result","ptr","_destBuffer","_destOffset","_keepAlpha","_memoryArray","count","destStart","dest32","src32","j","DataType","Intent","qcms_convert_array","transformer","src","add_alpha","ptr0","passArray8ToWasm0","wasm","len0","WASM_VECTOR_LEN","qcms_convert_four","src1","src2","src3","src4","qcms_convert_one","qcms_convert_three","qcms_drop_transformer","qcms_transformer_from_memory","mem","in_type","intent","__wbg_get_imports","arg0","arg1","getStringFromWasm0","table","offset","decodeText","cachedUint8ArrayMemory0","getUint8ArrayMemory0","malloc","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","initSync","imports","MathClamp","min","max","resizeRgbImage","w1","h1","w2","h2","alpha01","xRatio","yRatio","newIndex","oldIndex","xScaled","w1Scanline","py","resizeRgbaImage","rgbMask","copyRgbaImage","isDefaultDecodeHelper","decode","expectedLen","decodeLen","ColorSpace","#rgbBuf","numComps","srcOffset","destOffset","bits","bpc","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","rgbPos","destPos","AlternateCS","base","tintFn","tmpBuf","baseNumComps","tinted","tintedOffset","scale","usesZeroToOneRange","isPassthrough","baseBuf","scaled","PatternCS","baseCS","IndexedCS","#rgbLookup","highVal","palette","rgbLookup","DeviceGrayCS","q","DeviceRgbCS","DeviceRgbaCS","DeviceCmykCS","#toRgb","srcScale","k","CalGrayCS","whitePoint","blackPoint","gamma","AG","L","val","CalRGBCS","#BRADFORD_SCALE_MATRIX","#BRADFORD_SCALE_INVERSE_MATRIX","#SRGB_D65_XYZ_TO_RGB_MATRIX","#FLAT_WHITEPOINT_MATRIX","#tempNormalizeMatrix","#tempConvertMatrix1","#tempConvertMatrix2","#DECODE_L_CONSTANT","XW","YW","ZW","XB","YB","ZB","#matrixProduct","#toFlat","sourceWhitePoint","LMS","#toD65","#sRGBTransferFunction","color","#decodeL","#compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","#normalizeWhitePointToFlat","XYZ_In","LMS_Flat","#normalizeWhitePointToD65","LMS_D65","A","B","C","AGR","BGG","CGB","X","Y","Z","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCS","range","#fn_g","#decode","high1","low2","high2","maxVal","Ls","as","bs","M","N","fetchSync","xhr","IccColorSpace","#transformer","#convertPixel","#useWasm","#wasmUrl","#finalizer","iccProfile","inType","useWasm","useWorkerFetch","wasmUrl","isUsable","e","CmykICCBasedCS","#iccUrl","iccUrl","Stream","arrayBuffer","endPos","StringStream","NullStream","ChunkedStream","chunkSize","manager","chunks","beginChunk","endChunk","curChunk","position","numChunks","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","#aborted","#loadedStreamCapability","pdfStream","rangeReader","done","noFetch","requestId","chunksNeeded","capability","chunksToRequest","groupedChunksToRequest","groupedChunk","reason","ranges","groupedChunks","prevChunk","stream","isProgressive","loadedRequests","requestIds","nextEmptyChunk","lastChunk","convertToRGBA","params","convertBlackAndWhiteToRGBA","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","xorMask","srcLength","elem","len32","alphaMask","s1","s2","s3","jj","grayToRGBA","MIN_IMAGE_DIM","MAX_IMAGE_DIM","MAX_ERROR","ImageResizer","#goodSquareLength","#isImageDecoderSupported","imgData","isMask","MAX_DIM","area","maxArea","MAX_AREA","minFactor","componentsCount","canvasMaxAreaInBytes","isImageDecoderSupported","canvas","opacity","tolerance","defaultHeight","middle","#rescaleImageData","imagePromise","firstFactor","factor","steps","newWidth","newHeight","bitmap","step","prevWidth","prevHeight","kind","rgbaSize","K","rgbaData","maxHeight","newSize","remainder","h","bitPerPixel","colorTable","maskTable","compression","rowLen","rowSize","newData","extraLen","row","tmp","view","headerLength","fileLength","bmpData","emptyBuffer","DecodeStream","maybeMinBufferLength","requested","size","buffer2","bufEnd","readable","writable","writer","totalLength","StreamsSequenceStream","streams","onError","s","maybeLength","bufferLength","newLength","baseStreamsBuf","baseStreams","ColorSpaceUtils","cs","resources","pdfFunctionFactory","globalColorSpaceCache","localColorSpaceCache","asyncIfNotCached","csName","csRef","parsedCS","cachedCS","#parse","#subParse","colorSpaces","resourcesCS","mode","isRef","iccCS","altRaw","altCS","hiVal","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","getBlockBufferOffset","col","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","readBit","nextByte","maybeScanLines","blockRow","decodeHuffman","tree","node","receive","receiveAndExtend","decodeBaseline","blockOffset","diff","rs","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","sign","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","mcuToRead","findNextFileMarker","partialMsg","quantizeAndInverse","blockBufferOffset","qt","blockData","v0","v3","v4","v5","v6","v7","p3","p4","p5","p6","p7","buildComponentData","blocksPerLine","blocksPerColumn","computationBuffer","currentPos","startPos","maxPos","newPos","currentMarker","newMarker","prepareComponents","mcusPerColumn","blocksPerLineForMcu","blocksBufferSize","readDataBlock","endOffset","skipData","JpegImage","colorTransform","numComponents","markerLoop","appData","oldOffset","newOffset","dnlScanLines","maxOffset","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","l","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","maxH","maxV","componentId","qId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","index","componentIndex","tableSpec","successiveApproximation","processed","nextFileMarker","quantizationTable","#getLinearizedBlockData","scaleX","scaleY","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","Cb","Cr","out","forceRGBA","forceRGB","grayColor","JpegStream","jpegOptions","#skipUselessBytes","jpegImage","useImageDecoder","frameWidth","frameHeight","reducePower","init","addState","parentState","pattern","checkFn","iterateFn","processFn","state","InitialState","context","fnArray","iFirstSave","argsArray","curr","iFirstTransform","iFirstPIIXO","maxX","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","imgRowSize","dataOffset","kk","iFirstPIMXO","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iFirstConstructPath","op","newBBox","NullOptimizer","queue","fn","QueueOptimizer","OperatorList","streamSink","isOffscreenCanvasSupported","optionalContent","hasMask","dependency","dependencies","opList","transfers","bbox","separateAnnots","CheckedOperatorList","ShadingType","MAX_SAMPLED_COLOR_COMPONENTS","getColorConversionBatchSize","Pattern","#hasGPU","hasGPU","shading","res","FunctionBasedShading","RadialAxialShading","MeshShading","DummyShading","BaseShading","coordsLen","t0","t1","domainArr","extendStart","extendEnd","extendArr","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","batchSize","rgb","iBase","rBase","gBase","bBase","iPrev","rPrev","gPrev","bPrev","maxSlopeR","maxSlopeG","maxSlopeB","minSlopeR","minSlopeG","minSlopeB","rgbOffset","run","cssColor","background","coordsArr","shadingType","meshUpdateBounds","self","minX","minY","maxY","meshPackData","coords","coordsPacked","xy","colors","colorsPacked","figure","buildMeshVertexData","figures","vertexCount","vpr","posData","colData","pOff","cOff","addVertex","pi","ci","ps","rows","cols","bboxW","bboxH","stepsX","stepsY","verticesPerRow","totalVertices","xyBuf","rangeX","rangeY","halfStepX","halfStepY","coordOffset","compOffset","batchCount","colorOffset","yDomain","xDomain","MeshStreamReader","csNumComps","bitsPerCoordinate","xi","yi","bitsPerComponent","colorFn","colorSpace","bCache","getB","t_","clearPatternCaches","decodeContext","reader","patchMesh","verticesLeft","f","coord","tmp1","tmp2","tmp3","tmp4","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c1","c2","c3","bRow","bCol","newColor","getTilingPatternIR","operatorList","needsIsolation","xstep","ystep","paintType","tilingType","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","last","stack","sp","bufferSize","BinaryCMapReader","cMap","extend","header","useCMap","sequence","dataSize","ucs2DataSize","subitemsCount","Ascii85Stream","#input","input","AsciiHexStream","maxDecodeLength","firstDigit","makeBrotliDecode","MAX_HUFFMAN_TABLE_SIZE","CODE_LENGTH_CODE_ORDER","DISTANCE_SHORT_CODE_INDEX_OFFSET","DISTANCE_SHORT_CODE_VALUE_OFFSET","FIXED_TABLE","BLOCK_LENGTH_OFFSET","BLOCK_LENGTH_N_BITS","INSERT_LENGTH_N_BITS","COPY_LENGTH_N_BITS","CMD_LOOKUP","unpackCommandLookupTable","log2floor","next","calculateDistanceAlphabetSize","npostfix","ndirect","maxndistbits","calculateDistanceAlphabetLimit","maxDistance","makeError","ndistbits","cmdLookup","insertLengthOffsets","copyLengthOffsets","cmdCode","rangeIdx","distanceContextOffset","insertCode","copyCode","copyLengthOffset","distanceContext","decodeWindowBits","largeWindowEnabled","readFewBits","attachDictionaryChunk","initState","maxDistanceAlphabetLimit","initBitReader","close","decodeVarLenUnsignedByte","decodeMetaBlockLength","sizeNibbles","sizeBytes","readSymbol","tableGroup","tableIdx","sym","mask","readBlockLength","readManyBits","moveToFront","inverseMoveToFrontTransform","vLen","mtf","readHuffmanCodeLengths","codeLengthCodeLengths","numSymbols","symbol","prevCodeLen","repeat","repeatCodeLen","space","readMoreInput","codeLen","extraBits","newLen","oldRepeat","repeatDelta","checkDupes","symbols","readSimpleHuffmanCode","alphabetSizeMax","alphabetSizeLimit","maxBits","histogramId","readComplexHuffmanCode","skip","numCodes","codeLenIdx","readHuffmanCode","simpleCodeOrSkip","decodeContextMap","contextMapSize","contextMap","numTrees","useRleForZeros","maxRunLengthPrefix","alphabetSize","tableSize","reps","decodeBlockTypeAndLength","treeType","numBlockTypes","ringBuffers","blockType","decodeLiteralBlockSwitch","literalBlockType","contextMode","decodeCommandBlockSwitch","decodeDistanceBlockSwitch","maybeReallocateRingBuffer","minimalNewSize","ringBufferSizeWithSlack","newBuffer","oldBuffer","readNextMetablockHeader","jumpToByteBoundary","readMetablockPartition","blockTypeAlphabetSize","blockLengthAlphabetSize","calculateDistanceLut","distExtraBits","distOffset","postfix","half","readMetablockHuffmanCodesAndContextMaps","limit","contextMapLength","numLiteralTrees","numDistTrees","huffmanTreeGroupAllocSize","decodeHuffmanTreeGroup","distanceAlphabetSizeMax","distanceAlphabetSizeLimit","copyUncompressedData","ringBuffer","reload","chunkLength","copyRawBytes","writeRingBuffer","toWrite","maxTableSize","group","calculateFence","doUseDictionary","fence","address","initializeCompoundDictionaryCopy","dictionaryData","wordLength","shift","sizeBits","offsets","wordIdx","transformIdx","transforms","RFC_TRANSFORMS","transformDictionaryWord","initializeCompoundDictionary","blockBits","cursor","copyFromCompoundDictionary","origPos","remChunkLength","decompress","windowBits","ringBufferMask","insertAndCopyExtraBits","insertLengthOffset","insertLengthExtraBits","copyLengthExtraBits","prevByte1","prevByte2","literalContext","LOOKUP","literalTreeIdx","distanceCode","distTreeIdx","dst","copyLength","srcEnd","dstEnd","numQuads","checkHealth","Transforms","numTransforms","prefixSuffixLen","prefixSuffixCount","unpackTransforms","prefixSuffix","prefixSuffixHeads","prefixSuffixSrc","transformsSrc","prefixSuffixBytes","toUtf8Runes","dstOffset","wordLen","transformIndex","triplets","prefixSuffixStorage","transformOffset","prefixIdx","transformType","suffixIdx","prefix","prefixEnd","suffix","suffixEnd","omitFirst","omitLast","dictOffset","uppercaseOffset","shiftOffset","param","scalar","getNextKey","replicateValue","nextTableBitSize","rootBits","left","codeLengthsSize","tableOffset","sorted","tableBits","totalSize","low","currentOffset","halfAvailable","readOffset","bytesInBuffer","spaceLeft","readInput","bytesToNibbles","endOfStream","byteOffset","prepare","health","padding","copyNibbles","chunkLen","byteLen","byteBuffer","halfLen","shortBuffer","unpackLookupTable","utfMap","utfRle","rep","State","InputStream","setData","newSizeBits","dictionaryOffsets","dictionarySizeBits","unpackDictionaryData","dictionary","data0","data1","skipFlip","sizeBitsData","toUsAsciiBytes","skipFlipRunes","flip","bytesRead","closeInput","customDictionary","totalOutput","BrotliDecode","BrotliStream","#isAsync","decodedData","_decoderOptions","decompressed","compressed","JBig2","moduleArg","moduleRtn","Module","quit_","toThrow","_scriptName","scriptDirectory","err","ABORT","EXITSTATUS","readyPromiseResolve","readyPromiseReject","HEAP8","HEAPU8","runtimeInitialized","updateMemoryViews","wasmMemory","preRun","addOnPreRun","callRuntimeCallbacks","onPreRuns","initRuntime","wasmExports","postRun","addOnPostRun","onPostRuns","abort","what","getWasmImports","wasmImports","createWasm","receiveInstance","assignWasmExports","resolve","reject","inst","mod","ExitStatus","callbacks","cb","noExitRuntime","__abort_js","runtimeKeepaliveCounter","__emscripten_runtime_keepalive_clear","timers","handleException","keepRuntimeAlive","_proc_exit","exitJS","implicit","_exit","maybeExit","callUserCallback","func","_emscripten_get_now","__setitimer_js","which","timeout_ms","id","__emscripten_timeout","_createImageData","getHeapMax","alignMemory","alignment","growMemory","oldHeapSize","pages","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","replacement","_setImageData","array_ptr","pitch8","pitch32","destSize","imageData","srcStart","_setLineData","line_ptr","writeArrayToMemory","doRun","jbig2","WasmImage","#handler","#instances","#useWorkerFetch","#buffer","#modulePromise","handler","trackInstance","#getJsModule","fallbackCallback","#instantiateWasm","successCallback","results","ImageDecoder","promise","promises","_params","Jbig2Error","JBig2CCITTFaxImage","globals","CCITTOptions","globalsPtr","globalsSize","CCITTFaxStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","FlateStream","cmf","flg","codeSize","codeBuf","codes","maxLen","codeVal","lengths","code2","#endsStreamOnError","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","bitsLength","bitsOffset","repeatLength","code1","dist","Jbig2Stream","globalsStream","OpenJPEG","thisProgram","HEAP32","HEAPU32","_copy_pixels_1","compG_ptr","nb_pixels","compG","_copy_pixels_3","compR_ptr","compB_ptr","compR","compB","_copy_pixels_4","compA_ptr","compA","ENV","getExecutableName","getEnvStrings","lang","env","strings","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","u","stringToUTF8","outPtr","_environ_get","__environ","environ_buf","bufSize","envp","string","lengthBytesUTF8","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_seek","fd","whence","printCharBuffers","UTF8Decoder","findStringEnd","heapOrArray","idx","maxBytesToRead","ignoreNul","maxIdx","UTF8ArrayToString","endPtr","u0","u1","u2","printChar","UTF8ToString","_fd_write","iov","iovcnt","pnum","_gray_to_rgba","_graya_to_rgba","_jsPrintWarning","message_ptr","_rgb_to_rgba","_storeErrorMessage","openjpeg","JpxError","JpxImage","isIndexedColormap","smaskInData","errorMessages","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","JpxStream","_length","LZWStream","earlyChange","maxLzwDictionarySize","lzwState","bitsCached","cachedData","estimatedDecodedSize","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","codeLength","prevCode","currentSequence","currentSequenceLength","decodedLength","currentBufferLength","hasPrev","PredictorStream","predictor","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","pixBytes","prevRow","up","upLeft","pa","pb","pc","RunLengthStream","repeatHeader","source","MAX_LENGTH_TO_CACHE","getInlineImageCacheKey","Parser","#imageCache","#imageId","lexer","allowStreams","recoveryMode","cipherTransform","buf1","knownCommands","maybeEIPos","followingBytes","tmpLexer","Lexer","numArgs","nextObj","knownCommand","foundEOI","markerLength","tildePos","maybeEI","dictLength","filter","filterName","filterZero","#fetchIfRef","cacheKey","initialStreamPos","cacheEntry","imageStream","#hasCryptFilter","#findStreamLength","SCAN_BLOCK_LENGTH","signatureLength","END_SIGNATURE","endLength","PARTIAL_SIGNATURE","normalLength","scanBytes","scanLength","found","part","partLen","lastByte","filterArray","paramsArray","cryptName","specialChars","toHexDigit","divideBy","baseValue","currentDigit","numParen","charBuffered","previousCh","comment","nextCh","knownCommandFound","possibleCommand","Linearization","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","parser","obj1","obj2","obj3","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","builtInCMap","high","dstLow","nextCharCode","codespaceRanges","nn","codespaceRange","IdentityCMap","vertical","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","fetchBuiltInCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","cMapData","isCompressed","CMapFactory","parsedCMap","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getEncoding","encodingName","getGlyphsUnicode","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","getUnicodeForGlyph","glyphsUnicodeMap","unicode","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","lastPosition","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","clearUnicodeCaches","FontFlags","MacStandardGlyphOrdering","recoverGlyphName","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","baseEncoding","isSymbolicFont","differences","glyphName","standardGlyphName","normalizeFontName","getVerticalPresentationForm","MAX_SIZE_TO_COMPILE","compileType3Glyph","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pathBuf","pp","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","DataBuilder","#buf","#bufLength","#hasExactLength","#pos","#view","exactLength","minLength","#initBuf","newBuf","MAX_SUBR_NESTING","looksLikeUnsigned16BitNegative","recoverSigned16BitBBox","onlyLowerLeft","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","DEFAULT_BLUE_SCALE","DEFAULT_BLUE_SHIFT","DEFAULT_BLUE_FUZZ","DEFAULT_EXPANSION_FACTOR","CharstringValidationData","CharstringValidationData12","CFFParser","file","seacAnalysisEnabled","cff","CFF","nameIndex","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","topDict","CFFTopDict","charStringOffset","charStringIndex","fontMatrix","fontBBox","descriptorBBox","cffBBoxHasUnsignedLowerLeft","cffBBoxHasUnsignedCoords","recoveredFontBBox","descriptorCorroborates","charset","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","bytesLength","major","minor","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","entries","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","names","CFFStrings","Type","cffDict","localSubrIndex","stackSize","validationCommand","subrsIndex","bias","subrNumber","charStrings","fdSelect","fdArray","privateDict","seacs","widths","charstring","valid","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","defaultWidth","parentDict","CFFPrivateDict","privateOffset","privateDictEnd","dictData","blueScale","blueShift","blueFuzz","expansionFactor","maxZoneHeight","zones","lowerBound","minBlueScale","maxBlueScale","clamped","subrsOffset","relativeOffset","cid","CFFCharset","CFFCharsetPredefinedTypes","format","predefined","raw","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","CFFEncoding","CFFFDSelect","rawFileLength","glyphZero","CFFDict","tables","layout","CFFTopDictLayout","CFFPrivateDictLayout","glyphIndex","CFFOffsetTracker","location","offset0","offset1","offset2","offset3","offset4","CFFCompiler","compiled","topDictTracker","fontDictTrackers","epsilon","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","trackers","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","types","charStringsIndex","glyph","numGlyphs","isCIDFont","numGlyphsLessNotDef","nLeft","charsetIndex","numCharsets","warned","lastFD","currentFD","numRanges","objects","lastOffset","getStdFontMap","getFontNameToFileMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForMacOrderedFonts","glyphsUnicode","getGlyphMapForStandardFonts","getSupplementalGlyphMapForTrebuchetMS","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getStandardFontName","fontName","isKnownFontName","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","GLYPH_HEADER_SIZE","GlyfTable","glyfTable","isGlyphLocationsLong","locaTable","loca","glyf","prev","Glyph","isLocationLong","locaIndex","factors","simple","composites","read","GlyphHeader","composite","CompositeGlyph","SimpleGlyph","spos","xMiddle","numberOfContours","xMin","yMin","xMax","yMax","Contour","flags","xCoordinates","yCoordinates","contours","instructions","endPtsOfContours","endPt","numberOfPt","instructionLength","flag","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","contour","abs","argument1","argument2","transf","pruneCompositeGlyphCycles","locaEntries","WHITE","GRAY","BLACK","backEdges","top","compIdx","droppedGlyphs","gIdx","removeSet","remaining","writePos","isLast","newFlags","ToUnicodeMap","cmap","IdentityToUnicodeMap","firstChar","lastChar","CFFFont","compiler","cidToGidMap","charsets","invCidToGidMap","encodings","CSS_FONT_INFO","SYSTEM_FONT_INFO","FONT_INFO","PATTERN_INFO","InfoUtils","compileCssFontInfo","encoder","encodedStrings","stringsLength","encoded","compileSystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","compileFontInfo","font","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","point","metric","compilePatternInfo","ir","nCoord","nColor","nStop","dataView","u8data","hex","compileFontPathInfo","getFloat214","getSubroutineBias","numSubrs","parseCmap","segCount","idOffset","parseCff","parseGlyfTable","itemSize","itemDecode","dv","glyphs","lookupCmap","compileGlyf","cmds","visitedGlyphs","moveTo","firstPoint","lineTo","quadraticCurveTo","xa","ya","arg2","scale01","scale10","subglyph","numberOfPoints","startPoint","endPoint","compileCharString","charStringCode","bezierCurveTo","stems","parse","stackClean","xb","yb","subrCode","achar","bchar","Commands","currentTransform","CompiledFont","#compiledCharCodes","#compiledGlyphs","TrueTypeCompiled","Type2Compiled","cffInfo","FontRendererFactory","indexToLocFormat","unitsPerEm","numTables","tag","getMetrics","getFontBasicMetrics","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","OpenTypeFileBuilder","#tables","sfnt","entriesCount","entrySize","maxPower2","log2","searchRange","tablesNames","tableOffsets","paddedLength","searchParams","tableName","checksum","quad","COMMAND_MAP","Type1CharString","error","wx","sbx","dy","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","decrypted","decryptAscii","digit1","digit2","isSpecial","Type1Parser","encrypted","isBinary","token","lenIV","charstrings","privateData","program","subrsParsed","charStringsParsed","charString","charStringObject","cidCount","cidMapOffset","fdBytes","gdBytes","subrMapOffset","sdBytes","subrCount","startDataLength","startDataIsHex","foundStartData","previousTokens","rememberToken","dataType","maxLength","binary","cidEntrySize","readUint","byteCount","subrOffsets","prevOffset","nextOffset","notDef","encodingArg","findBlock","streamBytes","signature","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","actualLength","getEexecBlock","eexecBytes","isCidKeyedType1File","sample","text","Type1Font","#rawFileLength","#parseCidKeyedType1","#parseType1","type2Charstrings","headerBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","eexecBlock","fileStart","charstringsLen","seacMap","type1Charstrings","type1Charstring","type1Subrs","type2Subrs","charsetArray","fields","field","subrIndex","subr","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","glyphsWidths","adjustTrueTypeToUnicode","nameRecords","isWinNameRecord","toUnicode","adjustType1ToUnicode","amendFallbackToUnicode","fonts_Glyph","originalCharCode","fontChar","accent","vmetric","operatorListId","isSpace","isInFont","int16","writeSignedInt16","signedInt16","writeUint32","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","subtype","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","getSymbolGlyphIdEncoding","firstCharCode","lastCharCode","buildToFontChar","toFontChar","isMacNameRecord","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","toUnicodeExtraMap","usedGlyphIds","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","isInPrivateArea","LIGATURE_TO_UNICODE","fontCharCode","normalized","getRanges","codeIndices","createCmapTable","hasNonBmp","bmpLength","trailingRangesCount","segmentsLength","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","format4Overflow","contiguous","startCode","format314","useFormat4","useFormat12","format31012","header31012","format4Length","validateOS2Table","os2","version","selection","createOS2Table","override","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","createPostTable","post","createPostscriptName","createNameTable","proto","stringsBytes","stringsUnicodeBytes","strUnicode","namesBytes","platformsBytes","encodingsBytes","languagesBytes","strOffset","strs","nameRecord","namesRecordCount","nameTable","Font","#charsCache","#glyphCache","evaluatorOptions","isSerifFont","stdFontMap","nonStdFontMap","serifFonts","namePart","matches","renderer","#getExportData","props","isStandardFont","isMappedToStandardFont","metrics","isNarrow","unicodeCharCode","isCidKeyed","VALID_TABLES","readTables","readTableEntry","previousPosition","readOpenTypeHeader","ttf","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameArr","nameEntry","readCmapTable","hasEncoding","segment","potentialTable","canBreak","platformId","encodingId","useTable","correctlySorted","nextBytes","hasShortCmap","mappings","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","segments","segIndex","offsetsCount","offsetIndex","rangeOffset","firstCode","entryCount","nGroups","startCharCode","endCharCode","glyphCode","finalMappings","seenCharCodes","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","numMissing","sanitizeGlyph","sourceStart","sourceEnd","hintsValid","glyphProfile","contoursCount","flagsCount","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","glyphDataLength","sanitizeHead","head","locaLength","numGlyphsPlusOne","sanitizeGlyphLocations","maxSizeOfInstructions","itemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNameIndexes","customNames","strLen","records","numRecords","stringsStart","NAME_RECORD_LENGTH","record","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","newStackLength","stackDelta","content","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","isTrueType","parsedCff","numGlyphsFromCFF","sortedTables","nextTable","previousPos","scaleFactors","advanceWidth","lsb","newMaxp","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","forcePostTable","unicodeOrCharCode","mapping","glyphZeroId","newMapping","namePrototype","builder","tableTag","newCharCodeToGlyphId","getCharCodes","charCodes","createCharCode","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","dateArr","hhea","cffWidths","hmtx","maxp","possibleSpaceReplacements","glyphUnicode","charcode","widthCode","chars","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","ErrorFont","CalibriBoldFactors","CalibriBoldMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","getXFAFontMap","getXfaFontName","getXfaFontWidths","baseWidths","baseMapping","rescaledBaseWidths","w","currentCode","currentArray","newWidths","charUnicode","unicode1","unicode2","getXfaFontDict","descriptor","systemInfo","TOKEN","Token","lexer_Lexer","#singletons","#operatorSingletons","#initSingletons","singletons","operatorSingletons","isOperator","lf","eol","PS_VALUE_TYPE","PS_NODE","PsNode","PsProgram","body","PsBlock","PsNumber","PsOperator","PsIf","then","PsIfElse","otherwise","PsArgNode","PsConstNode","PsUnaryNode","operand","valueType","PsBinaryNode","PsTernaryNode","ast_Parser","tok","thenBlock","elseBlock","parsePostScriptFunction","_nodesEqual","_evalBinaryConst","deg","_evalUnaryConst","MAX_STACK_SIZE","_unaryValueType","operandType","_binaryValueType","firstType","secondType","PSStackToTree","#binaryOps","#unaryOps","#idempotentUnary","#negatedComparison","#init","numInputs","#markShared","outputs","refCount","visit","instr","saved","trueStack","falseStack","zero","snapshot","thenStack","elseStack","nNode","jNode","slice","sqrtOnce","square","negated","cop","cf","OP","_DEG_TO_RAD","_RAD_TO_DEG","PsJsCompiler","#stack","#tmp","domain","cached","slot","ifPatch","jumpPatch","ip","tgt","amt","PSStackBasedInterpreter","#sp","#push","#execOp","dx","sub","#execBlock","nIn","nOut","buildPostScriptJsFunction","forceInterpreter","wasm_compiler_OP","FUNC_TYPE","F64","SECTION","EXTERN_FUNC","EXTERN_MEM","unsignedLEB128","byte","encodeASCIIString","section","vec","items","MATH_IMPORTS","_mathImportObject","PsWasmCompiler","#initialized","#comparisonToOp","#importIdx","#degToRad","#radToDeg","#importTypeEntries","#importSection","#functionSection","#memorySection","#exportSection","#wasmMagicVersion","#f64View","#f64Arr","f64Buf","local","localA","localB","localR","wasmOp","nLocals","paramTypes","resultTypes","funcType","typeSectionBytes","localDecls","funcBodyLen","codeSectionBytes","magicVersion","importSection","functionSection","memorySection","exportSection","totalLen","off","compilePostScriptToWasm","_makeWrapper","exports","outView","writeOut","inBuf","buildPostScriptWasmFunction","BaseLocalCache","LocalImageCache","LocalColorSpaceCache","LocalFunctionCache","LocalGStateCache","LocalTilingPatternCache","RegionalImageCache","GlobalColorSpaceCache","GlobalImageCache","#decodeFailedSet","#byteSize","byteSize","#cacheLimitReached","pageIndex","pageIndexSet","onlyData","FunctionType","PDFFunctionFactory","parseArray","fnRef","parsedFn","cachedFn","PDFFunction","toNumberArray","outputSize","bps","sampleMul","strBytes","strIdx","factory","typeNum","interpolate","xmin","xmax","ymin","ymax","inputSize","order","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","fns","bounds","dmin","dmax","rmin","rmax","psCode","wasmFn","isPDFFunction","fnDict","textSinkWrapper","sink","resolved","_parseVisibilityExpression","nestingCounter","currentResult","operator","object","nestedResult","parseMarkedContentProps","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","baseTypes","arabicTypes","isOdd","isEven","findUnequal","reverseValues","temp","createBidiText","isLTR","dir","bidi","startLevel","strLength","numBidi","charType","levels","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","NORMAL","MEDIUM","BOLD","ITALIC","BOLDITALIC","substitutionMap","fontAliases","getStyleToAppend","style","getFamilyName","keywords","generateFont","alias","ultimate","localFontPath","useFallback","usePath","append","extra","substitution","aliasAppend","fallbackInfo","fallbackUltimate","getFontSubstitution","systemFontCache","idFactory","baseFontName","standardFontName","substitutionInfo","subst","mustAddBaseFont","loadedName","bold","italic","guessFallback","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","PDFImage","image","isInline","smask","validWidth","validHeight","hasColorSpace","matteColorSpace","isIndexed","smaskData","maskData","computedLength","imgArray","isSingleOpaquePixel","haveFullData","decodeAddends","decodeCoefficients","bufferPos","rowComps","loop1End","loop2End","remainingBits","rgbaBuf","apply","maxRows","stride","imageOffset","maskOffset","#undoPreblend","matteR","matteG","matteB","alpha","matte","matteRgb","drawWidth","drawHeight","mustBeResized","#getImage","isHandled","imageLength","rgba","maybeUndoPreblend","canvasImgData","destWidth","destHeight","invertOutput","srcWidth","srcHeight","resolvedDestWidth","resolvedDestHeight","needsResampling","outputWidth","xMap","destIndex","internal","imageBytes","DefaultPartialEvaluatorOptions","PatternType","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","addCachedImageOps","objId","TimeSlotManager","PartialEvaluator","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","newOptions","newEvaluator","nonBlendModesSet","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","standardFontNameToFileName","filename","xobj","task","initialState","seenRefs","f32bbox","groupOptions","newOpList","localResources","groupSubtype","cacheGlobally","localImageCache","maxImageSize","ignoreErrors","imageRef","imageMask","cacheData","SMALL_IMAGE_DIMENSIONS","globalCacheData","localLength","imageObj","#createTransferMap","transferFn","stateManager","smaskContent","smaskOptions","transferObj","tr","transferArray","transferMaps","numFns","numEffectfulFns","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","tilingPatternIR","fontArgs","fontRef","fallbackFontDict","translated","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","errorFont","TranslatedFont","fontRes","preEvaluatedFont","hash","fontRefIsRef","fontID","aliasFontRef","translatedFont","pathBuffer","xw","yh","startX","startY","csPromise","localShadingPatternCache","patternIR","patterns","patternName","rawPattern","localTilingPattern","prevRefs","EvalState","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","markedContentLevel","closePendingRestoreOPS","argument","closePendingMarkedContentOPS","promiseBody","operation","stop","isValidName","localImage","resolveXObject","rejectXObject","cachedImage","fontSize","combinedGlyphs","arrItem","fillCS","strokeCS","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","thickness","dashPhase","dashArray","pathMinMax","includeMarkedContent","seenStyles","viewBox","disableNormalization","keepWhiteSpace","intersector","TextState","textMarkedContentLevel","textContent","textContentItem","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","ret","shouldAddWhitepsace","resetLastChars","TRACKING_SPACE_FACTOR","NOT_A_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","VERTICAL_SHIFT_RATIO","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","currentTextState","pushWhitespace","getCurrentTextTransform","tsm","glyphHeight","ensureTextContentItem","trm","scaleLineX","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","handleSetFont","applyInverseRotation","compareWithLastPosition","glyphWidth","posX","posY","lastPosX","lastPosY","rotate","advanceY","advanceX","textOrientation","appendEOL","flushTextContentItem","addFakeSpaces","textRiseDelta","advanceYCorrected","buildTextContentItem","extraSpacing","baseCharSpacing","charSpacing","scaledDim","closePendingMarkedContentItems","enqueueChunk","batch","fontNameArg","fontSizeArg","spaceFactor","currentState","xObjStateManager","sinkWrapper","gStateFont","mcid","cidToGidBytes","toUnicodePromise","cidSystemInfo","baseEncodingName","diffEncoding","nonEmbeddedFont","isSymbolsFontName","isNonsymbolicFont","builtToUnicode","forceGlyphs","codeStr","registry","ordering","ucs2CMapName","ucs2CMap","ucs2","cmapObj","glyphsData","glyphID","glyphsVMetrics","defaultVMetrics","dw","dw2","vmetrics","missingWidth","isMonospace","firstWidth","fontNameWoStyle","monospace","Metrics","glyphWidths","widthsByGlyphName","baseDict","df","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","charProcs","isType3Font","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","fontFileN","length1","length2","length3","isInternalFont","glyphScaleFactors","systemFontInfo","subtypeEntry","ascent","descent","xHeight","capHeight","cidEncoding","buildPath","#sent","#type3Loaded","fontData","evaluator","type3Dependencies","type3Evaluator","type3FontRefs","fontResources","charProcOperatorList","fontBBoxSize","#removeType3ColorOperators","#guessType3FontBBox","charBBox","charBBoxSize","gStateKey","old","clone","newPath","opSpec","argsLength","nonProcessedArgs","DefaultAppearanceEvaluator","parseDefaultAppearance","AppearanceStreamEvaluator","breakLoop","tm","parseAppearanceStream","getPdfColor","isFill","gray","createDefaultAppearance","fontColor","FakeUnicodeFont","#fontNameId","fontDescriptor","descendantFont","currentChar","currentWidths","line","lineHeight","lineDescent","bgColor","strokeAlpha","lines","maxWidth","lineWidth","hscale","vscale","fscale","newFontSize","vShift","appearance","appearanceStreamDict","DateFormats","TimeFormats","NameOrNumberTree","root","isRaw","kids","kid","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","NameTree","NumberTree","clearGlobalCaches","FileSpec","desc","description","fileSpecDict","ef","XMLParserErrorCode","isWhitespace","isWhitespaceString","XMLParserBase","all","dec","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","attrStart","ch2","q2","complexDoctype","doctypeContent","isClosed","isEmpty","SimpleDOMNode","nodeName","nodeValue","childNodes","child","paths","siblingPos","attribute","SimpleXMLParser","hasAttributes","lowerCaseName","documentElement","lastElement","childNode","MetadataParser","xmlDocument","d1","d2","d3","charBuf","seqNode","rdf","WAV_HEADER_SIZE","getSoundFormat","sampleRate","channels","bitsPerSample","soundStreamToWav","blockAlign","wav","signed","MAX_DEPTH","TABLE_SPAN_ATTRIBUTES","StructElementType","StructTreeRoot","rootDict","rootRef","roleMap","parentTree","kidRef","#addIdToPage","pageRef","catalogRef","pdfManager","nextKey","hasNothingToUpdate","elements","changes","cache","structTreeRootRef","structTreeRoot","parentTreeRef","nums","#writeKids","numberTree","pageDict","#collectParents","numsRef","newNextKey","objr","structTreePageObjs","isPageRef","accessibilityData","parentTreeId","structTreeParent","structParent","objs","StructTreePage","objRef","tagDict","#writeProperties","tagRef","#updateParentTag","objDict","title","alt","expanded","actualText","idToElements","parentArray","updateElement","pageKid","elems","parentRef","newTagRef","fallbackKids","cachedParentDict","parentKidsRaw","cachedParentKids","parentKidsRef","StructElementNode","nameObj","AFs","af","fileStream","mathml","#collectAttributes","pending","classes","classMap","className","role","summary","headers","ids","scope","short","pageObjId","StructElement","refObjId","elemId","parentNode","save","nodeToSerializable","structId","mathML","kidElement","isValidExplicitDest","fetchDest","fetchRemoteDest","Catalog","#actualNumPages","#annotationAttachmentIdByRef","#annotationAttachmentRefById","#soundAttachmentIds","#catDict","isSound","baseId","needsRendering","collection","acroForm","streamRef","metadata","markInfo","#readMarkInfo","structTree","#readStructTreeRoot","rawObj","pagesObj","#readDocumentOutline","blackColor","outlineDict","rgbColor","outlineItem","permissions","#readPermissions","encrypt","config","defaultConfig","groupsData","groupRefCache","groupRef","#readOptionalContentGroup","#readOptionalContentConfig","usage","usageObj","print","printState","viewState","parseOnOff","refs","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","parseRBGroups","rbGroups","rbGroup","parsedRbGroup","dests","#readDests","rawDests","#readPageLabels","pageLabels","currentLabel","currentIndex","labelDict","st","LIMIT","letterIndex","pageLayout","pageMode","prefs","prefValue","openAction","destDict","resultObj","attachments","nameTree","#attachmentContentByName","namedContent","target","xfaImages","#collectJavaScript","javaScript","appendIfJavaScriptDict","jsDict","manuallyTriggered","nodesToVisit","visitedNodes","pagesRef","pageKidsCountCache","pageIndexCache","pageDictCache","currentPageIndex","currentNode","lastKid","addPageDict","addPageError","queueItem","posInKids","kidObj","cachedPageIndex","total","kidPromises","uri","#getDestFromStructElement","seRef","seDict","directPg","kidsArr","pg","current","depth","parentRaw","attrs","docBaseUrl","docAttachments","actionType","actionName","include","urlDict","remoteDest","newWindow","relationship","attachmentDest","namedAction","preserveRB","stateArr","jsAction","jsURL","seDest","FLATE_COLOR_COUNT_THRESHOLD","createImageDict","createRawImage","paethPredictor","above","upperLeft","applyPNGOptimumFilter","candidates","rowOffset","prevRowOffset","scores","cur","bestFilter","outOffset","deflate","writePromise","createPNGLikeImage","filtered","decodeParms","createImage","closeBitmap","buf32","isLE","colorCounter","hasAlpha","useFlate","imageStreamPromise","imageRenderStream","rgbBuffer","blob","smaskStreamPromise","smaskRenderStream","alphaBuffer","smaskRenderDict","smaskStream","mayHaveChildren","addChildren","rawValue","ObjectLoader","keys","#walk","nodesToRevisit","pendingRequests","foundMissingData","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","$buildXFAObject","NamespaceIds","ns","dimConverters","measurementPattern","stripQuotes","getInteger","defaultValue","validate","getFloat","getKeyword","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","getColor","getBBox","HTMLResult","success","html","breakNode","FontFinder","pdfFonts","reallyMissingFonts","pdfFont","myriad","maybe","family","selectFont","xfaFont","typeface","fonts_getMetrics","real","lineGap","WIDTH_FACTOR","FontInfo","margin","fontFinder","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","lastFont","fontInfo","TextMeasure","fonts","letterSpacing","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpacePos","lastSpaceWidth","currentLineWidth","currentLineHeight","isBroken","isFirstLine","isEOL","namePattern","indexPattern","operators","shortcuts","somCache","parseIndex","parseExpression","expr","dotDotAllowed","noExpr","parsed","searchNode","container","useCache","isQualified","cacheName","children","createDataNode","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","XFAObject","nsId","hasChildren","XmlObject","XFAObjectArray","dumped","availableSpace","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","protoProto","unsetAttrName","protoValue","$symbol","clonedChild","allTransparent","XFAAttribute","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","hasNS","ContentObject","OptionObject","StringObject","IntegerObject","validator","Option01","Option10","measureToString","converters","colSpan","setMinMaxDimensions","layoutText","measure","layoutNode","marginH","marginV","computeBbox","fixDimensions","layoutClass","toStyle","newStyle","createWrapper","wrapper","insets","insetsH","insetsW","classNames","isPrintOnly","border","fixTextIndent","styles","indent","setAccess","getCurrentPara","setPara","nodeStyle","para","valueStyle","paraStyle","setFontFamily","fixURL","createLine","flushHTML","htmlFromFailing","addHTML","getAvailableSpace","getTransformedBBox","centerX","centerY","checkDimensions","ERROR","attempt","TEMPLATE_NS_ID","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","borderExtra","hasMargin","_setValue","templateNode","Value","getContainedChildren","SubformSet","isRequired","setTabIndex","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","valueToHtml","setFirstUnsplittable","unsetFirstUnsplittable","handleBreak","currentPageArea","currentContentArea","PageArea","ContentArea","pageArea","nextPageArea","contentAreas","indexForCurrent","indexForTarget","handleOverflow","extraNode","savedMethod","AppearanceFilter","Arc","edge","Edge","edgeStyle","arc","startAngle","sweepAngle","largeArc","svg","Area","Assist","Barcode","Bind","BindItems","Bookend","BooleanElement","Border","edges","defaultEdge","edgeStyles","cornerStyles","Break","BreakAfter","BreakBefore","Button","grandpa","htmlButton","event","href","Calculate","Caption","savedReserve","Certificate","Certificates","CheckButton","groupId","exportedValue","checked","fieldId","dataId","ExclGroup","ChoiceList","optionStyle","displayedIndex","saveIndex","displayed","selected","option","selectAttributes","Color","Comb","Connect","Corner","DateElement","DateTime","DateTimeEdit","Decimal","DefaultUi","Desc","DigestMethod","DigestMethods","Draw","savedW","savedH","Encoding","Encodings","Encrypt","EncryptData","Encryption","EncryptionMethod","EncryptionMethods","Event","ExData","ExObject","isSplittable","columnWidths","isLrTb","maxRun","Execute","Extras","Field","Ui","TextEdit","caption","borderDims","uiW","uiH","borderStyle","ui","aElement","htmlValue","captionHeight","inputHeight","Fill","ggrandpa","propName","altPropName","Rectangle","Filter","Float","template_Font","Format","Handler","Hyphenation","Image","ImageEdit","Integer","Issuers","Items","Keep","KeyUsage","Line","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","Medium","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","Overflow","leader","trailer","pageNumber","parity","Para","PasswordEdit","template_Pattern","Picture","Proto","Radial","Reason","Reasons","cornerStyle","RefElement","Script","SetProperty","SignData","Signature","Signing","Solid","Speak","Stipple","Subform","breakBefore","savedNoLayoutFailure","overflowExtra","breakAfter","SubjectDN","kv","SubjectDNs","Submit","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","flush","contentArea","Text","Time","TimeStamp","ToolTip","Traversal","Traverse","Validate","valueName","Variables","TemplateNamespace","bind_NS_DATASETS","createText","Binder","formNode","picture","isValue","global","generator","connection","targetNodes","targetNode","targetParent","labels","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","baseClone","occur","currentNumber","nodeClone","uselessNodes","dataChildren","dataChild","DataHandler","storage","storageEntry","CONFIG_NS_ID","Acrobat","Acrobat7","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","config_Area","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","Change","Common","Compress","CompressLogicalStructure","CompressObjectStream","Compression","Config","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","Debug","DefaultTypeface","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","config_Encrypt","config_Encryption","EncryptionLevel","Enforce","Equate","EquateRange","unicodeRegex","unicodeRange","Exclude","ExcludeNS","FlipLabel","config_FontInfo","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","Layout","Level","Linearized","Locale","LocaleSet","Log","MapElement","MediumInfo","config_Message","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","Pdf","Pdfa","Permissions","PickTrayByPDFSize","config_Picture","PlaintextMetadata","Presence","Present","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","config_Script","ScriptModel","Severity","SilentPrint","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","config_Template","Threshold","To","TemplateCache","Trace","Transform","Uri","config_Validate","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","ViewerPreferences","WebClient","Whitespace","Window","pair","Xdc","Xdp","Xsl","Zpl","ConfigNamespace","CONNECTION_SET_NS_ID","ConnectionSet","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","connection_set_Uri","WsdlAddress","WsdlConnection","XmlConnection","XsdConnection","ConnectionSetNamespace","DATASETS_NS_ID","datasets_Data","Datasets","DatasetsNamespace","LOCALE_SET_NS_ID","CalendarSymbols","CurrencySymbol","CurrencySymbols","DatePattern","DatePatterns","DateTimeSymbols","Day","DayNames","Era","EraNames","locale_set_Locale","locale_set_LocaleSet","Meridiem","MeridiemNames","Month","MonthNames","NumberPattern","NumberPatterns","NumberSymbol","NumberSymbols","TimePattern","TimePatterns","TypeFace","TypeFaces","LocaleSetNamespace","SIGNATURE_NS_ID","signature_Signature","SignatureNamespace","STYLESHEET_NS_ID","Stylesheet","StylesheetNamespace","XDP_NS_ID","xdp_Xdp","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","richText","newValue","checkStyle","NoWhites","XhtmlObject","mustPop","Body","Br","Html","I","Li","Ol","P","Span","Sub","Sup","Ul","XhtmlNamespace","NamespaceSetUp","UnknownNamespace","Root","Empty","Builder","rootNameSpace","nsPrefix","namespace","prefixes","hasNamespaceDef","dataTemplate","nsAttrs","xfaAttrs","nsName","prefixStack","hasNamespace","nsAgnostic","XFAParser","attributeObj","attributesObj","XFAFactory","binder","iterator","nextIteration","missingFonts","rc","newRoot","attr","AnnotationFactory","xfaDatasets","annotationGlobals","collectFields","orphanFields","collectByType","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","RichMediaAnnotation","ScreenAnnotation","SoundAnnotation","Annotation","annotDict","numPages","annotations","annotRef","imagePromises","bitmapId","baseFontRef","annotation","smaskRef","getRgbColor","defaultColor","getPdfColorArray","getQuadPoints","quadPoints","newQuadPoints","x4","y4","getTransformMatrix","writeLineToCurveToAppearance","maybeClose","curve","#setOptionalContent","MK","isLocked","isContentLocked","kidIds","it","noView","noPrint","_renderForms","isEditing","modifiedIds","defaultAppearance","contents","modificationDate","rectangle","lineEndings","mk","AnnotationBorderStyle","dictType","appearanceStates","normalAppearanceState","hasOwnCanvas","isUsingOwnCanvas","appearanceDict","firstPositionX","firstPositionY","firstPosition","fieldName","loopDict","fsDict","fsRef","forceStyle","isValid","allZeros","radius","MarkupAnnotation","rawIRT","rt","popupRef","creationDate","strokeColor","fillColor","blendMode","fillAlpha","pointsCallback","pointsArray","formDict","appearanceStream","gsDict","stateDict","annotationRef","ap","annotationDict","apRef","retRef","popup","popupDict","newAnnotation","fieldValue","defaultFieldValue","acroFormResources","appearanceResources","formValue","renderForms","borderWidth","newParentDict","needAppearances","originalDict","rawVal","xfa","maybeMK","newRef","AP","rotationMatrix","exportValue","lineCount","defaultPadding","defaultHPadding","totalWidth","totalHeight","encodedLines","encodingError","encodedString","fakeUnicodeFont","newFont","oldFont","savedDefaultAppearance","defaultVPadding","fontAscent","fontDescent","bottomPadding","prevInfo","renderedText","appearanceData","numberOfLines","roundWithTwoDigits","textWidth","cachedLines","isTooBig","fsize","hPadding","vPadding","shiftStr","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","AFDateTime","canUseHTMLDateTime","aFormat","aKeystroke","actionsToVisit","formatAction","isDate","isRTL","combWidth","cells","hShift","previousWidth","renderedComb","lastSpacePosInStringStart","lastSpacePosInStringEnd","startChunk","currentWidth","allText","regex","_m","isRadio","isPushButton","#getOperatorListForAppearance","savedAppearance","savedMatrix","setCanvasName","unchecked","xShift","yShift","normalAppearance","opt","onState","stateToIndex","fieldParent","kidDict","kidOnState","optInfo","customAppearance","asValue","yes","exportValues","otherYes","checkedAppearance","uncheckedAppearance","fieldParentValue","isOptionArray","indices","valueIndices","displayValue","numberOfVisibleLines","firstIndex","minIndex","maxIndex","vpadding","parentItem","parentFlags","oldAnnotation","user","freetext","da","helv","lineAscent","clipBox","lineCoordinates","interiorColor","borderAdjust","controlPointsDistance","xMid","yMid","xOffset","yOffset","rawVertices","vertices","rawInkLists","rawInkList","inkList","outlines","ink","appearanceBuffer","outline","highlight","xEnd","#savedHasOwnCanvas","stamp","#createNewAppearanceStreamForDrawing","areContours","xobject","MediaAnnotation","#MEDIA_MIME_TYPE_RE","assetRef","assetDict","contentType","wrapSound","asset","#findAsset","configurations","configRef","instances","instanceRef","rawAsset","#renditionActions","#findRenditionAsset","#isPlayAction","aa","rendition","seen","#findClipAsset","renditions","clip","rawData","contentTypeHint","explicitType","soundRef","sound","PARAMS","calculateMD5","h0","h3","padded","rotateArg","decodeString","DatasetXMLParser","DatasetReader","SingleIntersector","#annotation","#quadPoints","#text","#extraChars","#lastIntersectingQuadIndex","#canTakeExtraChars","#intersects","STEPS","Intersector","#intersectors","#grid","#minX","#maxX","#minY","#maxY","#invXRatio","#invYRatio","intersectors","iMin","#getGridIndex","iMax","Word64","highInteger","lowInteger","word","places","lowAdd","highAdd","calculate_sha_other_PARAMS","maj","sigma","sigmaPrime","littleSigma","littleSigmaPrime","calculateSHA512","mode384","h4","h5","h6","h7","t2","calculateSHA384","calculate_sha256_PARAMS","rotr","calculate_sha256_ch","calculate_sha256_maj","calculate_sha256_sigma","calculate_sha256_sigmaPrime","calculate_sha256_littleSigma","calculate_sha256_littleSigmaPrime","calculateSHA256","DecryptStream","#nextChunk","hasMoreData","NON_ASCII_SPACES","COMMONLY_MAPPED_TO_NOTHING","saslPrep","mapped","ARCFourCipher","keyLength","NullCipher","AESBaseCipher","cipherKey","s0","finalize","sourceLength","iv","plain","lastBlock","psLen","cipher","AES128Cipher","rcon","t3","t4","AES256Cipher","PDFBase","password","userBytes","ownerValidationSalt","ownerPassword","hashData","userValidationSalt","userPassword","ownerKeySalt","ownerEncryption","userKeySalt","userEncryption","PDF17","PDF20","combinedLength","combinedArray","CipherTransform","#cipherCache","resolveCipher","stringFilterName","streamFilterName","#getCipher","cryptFilterName","defaultFilterName","Cipher","pad","utf8PasswordToBytes","CipherTransformFactory","#fileId","#createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","#prepareKeyData","fileId","encryptMetadata","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","#decodeUserPassword","#buildObjectKey","isAes","algorithm","cfDict","streamCryptoName","stmf","strf","eff","ownerBytes","fileIdBytes","passwordBytes","rawPasswordBytes","preppedPassword","candidate","authEvent","decodedPassword","cfm","XRef","#cacheMap","#entries","#newPersistentRefNum","#newTemporaryRefNum","#parsedWithRecovery","#pendingRefs","#persistentRefsCache","#xrefSectionOffsets","#xrefSectionsComplete","#xrefStms","startXRef","trailerDict","tableState","byteWidths","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","entryRanges","generation","typeByte","offsetByte","generationByte","readToken","skipUntil","skipped","gEndobjRegExp","gStartxrefRegExp","objRegExp","trailerBytes","startxrefBytes","xrefBytes","bufferStr","trailers","xrefStms","contentLength","updateEntries","xrefTagOffset","xrefStm","trailerDicts","isEncrypted","trailerError","validPagesDict","pagesDict","pagesCount","startXRefParsedCache","sectionOffset","suppressEncryption","xrefEntry","LETTER_SIZE_MEDIABOX","SIGNATURE_TAIL_CHUNK_SIZE","Page","#resourcesPromise","globalIdFactory","xfaFactory","idCounters","#getInheritableProperty","box","cropBox","mediaBox","#onSubStreamError","#replaceIdByRef","deletedAnnotations","existingAnnotations","partialEvaluator","annotationsArray","deletedRef","#getMergedResources","streamDict","contentStreamPromise","resourcesPromise","newAnnots","newAnnotationsPromise","annotationGlobalsPromise","missingBitmaps","annotationWithBitmaps","pageListPromise","contentStream","pageOpList","newAnnotations","intentAny","intentDisplay","intentPrint","opListPromises","opLists","form","separateForm","separateCanvas","langPromise","annotationsData","textContentPromises","highlightedAnnotations","isVisible","annots","fieldObjects","annotationPromises","sortedAnnotations","popupAnnotations","widgetAnnotations","cachedAnnotations","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","find","backwards","signatureEnd","PDFDocument","#pagePromises","#signatureData","#version","linearization","startXRefLength","#hasOnlyDocumentSignatures","recursionDepth","isSignature","isInvisible","#loadXfaImages","#loadXfaFonts","parseFont","formInfo","hasFields","hasSignatures","hasOnlyDocumentSignatures","catalog","docInfo","infoDict","customValue","EMPTY_FINGERPRINT","hashOriginal","hashModified","#getLinearizationPage","cachedPromise","pagesTree","reasonAll","#collectFieldObjects","fieldRef","visitedRefs","partName","walkedRefs","allFields","fieldPromises","allPromises","#collectSignatureFields","sigDict","#parseSignatureDict","#getByteRange","#coversWholeDocument","signedEnd","modificationsAfterSignature","tail","byteRange","subFilterName","contactInfo","subFilter","signatureType","collected","sig","signatureData","pkcs7","rest","catalogJsActions","fieldObj","calculationOrder","firstCall","parseDocBaseUrl","BasePdfManager","docId","enableXfa","LocalPdfManager","NetworkPdfManager","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","#messageAC","sourceName","targetName","comObj","#onMessage","#processStreamMessage","callbackId","#createStreamSink","ah","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","lastDesiredSize","streamController","#deleteStreamController","dataReason","writeObject","encryptRef","writeValue","writeDict","writeStream","isFilterZeroFlateDecode","isFilterZeroImageDecode","newFilter","newParams","writeArray","numberToPDFString","writeInt","writeString","computeMD5","filesize","xrefInfo","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","nodePath","updateAcroform","acroFormRef","hasXfa","hasXfaDatasetsEntry","xfaDatasetsRef","newXfa","updateXFA","xfaData","datasets","xfaDataStream","getXRefTable","baseOffset","newRefs","indexes","getIndexes","indexesPosition","computeIDs","getXRefStreamTable","xrefTableData","maxGen","objStreamRef","maxGenSize","sizes","structSize","objOffset","md5","getTrailerDict","useXrefStream","refForXrefTable","writeChanges","incrementalUpdate","originalData","MAX_LEAVES_PER_PAGES_NODE","MAX_IN_NAME_TREE_NODE","PageData","documentData","DocumentData","document","XRefWrapper","getNewRef","PDFEditor","#newAnnotationsParams","#primaryDocument","#resourceStreamCache","useObjectStreams","author","#cloneObject","#collectDependencies","newDict","mustClone","resourceStreamPath","fieldToParent","oldRefMapping","existingRef","oldRef","mappedRef","#isResourceStream","#collectResourceStream","cloneSource","postponedRefCopies","postponedActions","newObj","#rawStreamBytes","#serializeDict","#resourceStreamKey","dictStr","resourceStreamPromises","childPath","cycleRef","#dedupResourceStream","bucket","#resolveStructKids","rawKids","fetched","#cloneStructTreeNode","parentStructRef","removedStructElements","dedupIDs","dedupClasses","dedupRoles","pagesMap","newKids","structElemIndices","pgRef","setAsSpan","newKidRef","oldObjRef","newKid","newNodeRef","newNode","newClassName","newClassNames","roleName","newRoleName","stringId","newId","structElemRef","#getFilteredPageIndices","includePages","excludePages","compile","inc","exc","#resolveInsertAfterIndices","pageInfos","counts","insertAfterList","hasContent","updatedPageInfos","maxExistingPos","insertAfter","threshold","existingInfo","pageIndices","insertPos","pageIndicesArr","infoIdx","primaryDocument","reservePageSlot","newPageIndex","allDocumentData","imageEntries","pageInfo","filteredPageIndices","#collectDocumentData","copyCounts","documents","pageData","copyLevel","#collectValidDestinations","#collectOutlineDestinations","#collectPageLabels","#postCollectPageData","#findDuplicateNamedDestinations","#setPostponedRefCopies","imageSlots","modalPageSize","#modalPageSize","imageEntry","#makeImagePage","#makePageCopy","#fixPostponedRefCopies","#mergeStructTrees","#mergeAcroForms","#buildOutline","#collectEmbeddedFiles","destinations","idTree","namespaces","usedNamedDestinations","hasSignatureAnnotations","newAnnotationIndex","destString","oldPageRef","#visitObject","newStructParentId","newParentTree","oldStructParentMapping","usedStructParents","newStructParent","structTreeKids","newIdTree","newClassMap","newRoleMap","newNamespaces","newStructTreeAF","newStructTreePronunciationLexicon","structTreeAF","structTreePronunciationLexicon","nodeRef","_id","classDict","mappedName","newMappedName","namespaceRef","newNamespace","afRef","lexiconRef","newParent","newParents","newDestinations","namedDestinations","getUniqueDestinationName","dedupedName","dedupNamedDestinations","pointingNamedDestinations","pointingDest","newName","#fixNamedDestinations","fixDestination","collect","#isValidOutlineDest","unsafeUrl","attachment","setOCGState","#filterOutlineItems","filteredChildren","hasValidOwnDest","outlineItems","#setOutlineItemDest","itemDict","rawDict","newDest","actionRef","#makeOutline","outlineRootRef","outlineRootDict","assignRefs","fillItems","totalCount","childCount","#setAcroFormDefaultBasicValues","#setAcroFormDefaultAppearance","#setAcroFormQ","#setAcroFormDefaultResources","newFields","#fixFields","#cloneFields","#setAcroFormCalculationOrder","firstQ","firstDocData","sigFlags","sf","co","coRef","newCoRef","firstDA","firstDR","firstDRRef","dr","lastNonNullParent","acroFormDefaultAppearance","acroFormDefaultResources","acroFormQ","daToFix","drToFix","lastData","oldKidRef","kidsArray","resourcesValuesCache","fixAppearanceResources","newResourcesRef","resKey","resValue","newResValue","firstRealPage","labelsByPageIndex","oldPageIndices","stFirstIndex","newLabel","defaultLabel","newPageLabels","lastRef","boxName","userUnit","imagesPromises","newLastRef","pageObjectRefs","best","pageSize","pageW","pageH","availW","availH","imgW","imgH","drawW","drawH","tx","ty","xobjectDict","resourcesDict","contentsStream","contentsRef","#makePageTree","maxLeaves","kidsChunks","kidsRefs","#makeNameNumTree","areNames","allEntries","keyA","keyB","treeRef","treeDict","isRoot","entriesChunks","entriesRefs","entriesRef","entriesDict","#makePageLabelsTree","pageLabelsRef","embeddedFiles","docEmbeddedFiles","displayName","deduped","#makeEmbeddedFilesTree","#makeDestinationsTree","#makeStructTree","structTreeRef","idTreeRef","classMapRef","roleMapRef","namespacesRef","structTreeAFRef","structTreePronunciationLexiconRef","#makeAcroForm","#makeRoot","#makeInfo","infoMap","oldInfoDict","#makeEncrypt","encryptDict","#createChanges","#createObjectStream","objRefs","streamBuffer","objOffsets","objStream","fileIds","xrefTableRef","BasePDFStream","#PDFStreamReader","#PDFStreamRangeReader","PDFStreamReader","PDFStreamRangeReader","BasePDFStreamReader","BasePDFStreamRangeReader","PDFWorkerStream","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","msgHandler","readableStream","WorkerTask","#capability","_WorkerMessageHandler","port","testMessageProcessed","docParams","terminated","cancelXHRs","WorkerTasks","apiVersion","workerVersion","buildMsg","workerHandlerName","ensureNotTerminated","startWorkerTask","finishWorkerTask","loadDocument","isPureXfa","fingerprints","htmlForXfa","getPdfManager","disableAutoFetch","rangeChunkSize","pdfManagerArgs","fullReader","newPdfManager","cachedChunks","readData","loaded","getPassword","setupDoc","onSuccess","doc","onFailure","pdfManagerReady","passwordEx","pageIndexesToSkip","pagePromises","newDocumentId","pdfEditor","globalPromises","_structTreeRoot","newAnnotationPromises","newXrefInfo","pageId","opListInfo","waitOn","cleanupPromise","WorkerMessageHandler"],"mappings":"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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAA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,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,KAAM,KAAM,OAAQ,KAAM,KAAM,KAAM,OAAQ,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,EAAE,EAC1tD,SAASC,GAAYC,EAAc,CACjC,OAAQA,EAAY,CAClB,IAAK,kBACH,OAAOJ,GACT,IAAK,mBACH,OAAOD,GACT,IAAK,mBACH,OAAOD,GACT,IAAK,oBACH,OAAOG,GACT,IAAK,uBACH,OAAOC,GACT,IAAK,iBACH,OAAON,GACT,IAAK,oBACH,OAAOC,GACT,QACE,OAAO,IACb,CACA,CAIA,MAAMQ,GAAmBl+C,GAAsB,SAAU,EAAG,CAC1D,EAAE,EAAI,GACN,EAAE,GAAK,IACP,EAAE,QAAU,IACZ,EAAE,SAAW,IACb,EAAE,QAAU,MACZ,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,OAAS,IACX,EAAE,YAAc,KAChB,EAAE,eAAiB,KACnB,EAAE,eAAiB,KACnB,EAAE,YAAc,KAChB,EAAE,gBAAkB,KACpB,EAAE,YAAc,KAChB,EAAE,OAAS,IACX,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,KACrB,EAAE,oBAAsB,KACxB,EAAE,iBAAmB,KACrB,EAAE,qBAAuB,KACzB,EAAE,iBAAmB,MACrB,EAAE,iBAAmB,KACrB,EAAE,MAAQ,MACV,EAAE,WAAa,MACf,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,kBAAoB,KACtB,EAAE,gBAAkB,IACpB,EAAE,eAAiB,MACnB,EAAE,UAAY,KACd,EAAE,WAAa,IACf,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,eAAiB,IACnB,EAAE,MAAQ,IACV,EAAE,WAAa,IACf,EAAE,QAAU,IACZ,EAAE,WAAa,MACf,EAAE,QAAU,IACZ,EAAE,MAAQ,IACV,EAAE,WAAa,IACf,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,YAAc,KAChB,EAAE,EAAI,GACN,EAAE,QAAU,KACZ,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,KAAO,IACT,EAAE,MAAQ,IACV,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,QAAU,IACZ,EAAE,EAAI,GACN,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,MAAQ,MACV,EAAE,WAAa,MACf,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,cAAgB,KAClB,EAAE,cAAgB,MAClB,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,aAAe,MACjB,EAAE,YAAc,KAChB,EAAE,qBAAuB,KACzB,EAAE,YAAc,KAChB,EAAE,8BAAgC,KAClC,EAAE,qBAAuB,KACzB,EAAE,oBAAsB,KACxB,EAAE,aAAe,KACjB,EAAE,sBAAwB,KAC1B,EAAE,0BAA4B,KAC9B,EAAE,IAAM,IACR,EAAE,MAAQ,IACV,EAAE,gBAAkB,MACpB,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,GAAK,IACP,EAAE,QAAU,IACZ,EAAE,WAAa,KACf,EAAE,SAAW,IACb,EAAE,OAAS,IACX,EAAE,SAAW,KACb,EAAE,QAAU,KACZ,EAAE,iBAAmB,KACrB,EAAE,OAAS,IACX,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,MAAQ,KACV,EAAE,WAAa,IACf,EAAE,MAAQ,IACV,EAAE,SAAW,MACb,EAAE,cAAgB,MAClB,EAAE,cAAgB,MAClB,EAAE,cAAgB,MAClB,EAAE,aAAe,IACjB,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,eAAiB,MACnB,EAAE,OAAS,IACX,EAAE,OAAS,MACX,EAAE,QAAU,IACZ,EAAE,GAAK,IACP,EAAE,QAAU,IACZ,EAAE,qBAAuB,KACzB,EAAE,YAAc,KAChB,EAAE,aAAe,KACjB,EAAE,EAAI,GACN,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,cAAgB,KAClB,EAAE,YAAc,KAChB,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,KACrB,EAAE,iBAAmB,KACrB,EAAE,oBAAsB,KACxB,EAAE,iBAAmB,KACrB,EAAE,qBAAuB,KACzB,EAAE,iBAAmB,MACrB,EAAE,iBAAmB,KACrB,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,eAAiB,MACnB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,eAAiB,IACnB,EAAE,kBAAoB,KACtB,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,QAAU,IACZ,EAAE,aAAe,KACjB,EAAE,aAAe,KACjB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,oBAAsB,KACxB,EAAE,IAAM,IACR,EAAE,cAAgB,KAClB,EAAE,eAAiB,KACnB,EAAE,QAAU,IACZ,EAAE,MAAQ,IACV,EAAE,QAAU,IACZ,EAAE,aAAe,IACjB,EAAE,WAAa,KACf,EAAE,UAAY,IACd,EAAE,kBAAoB,KACtB,EAAE,WAAa,KACf,EAAE,oBAAsB,KACxB,EAAE,IAAM,IACR,EAAE,OAAS,MACX,EAAE,IAAM,IACR,EAAE,WAAa,KACf,EAAE,SAAW,IACb,EAAE,IAAM,IACR,EAAE,SAAW,MACb,EAAE,OAAS,KACX,EAAE,YAAc,KAChB,EAAE,KAAO,KACT,EAAE,IAAM,IACR,EAAE,SAAW,IACb,EAAE,YAAc,IAChB,EAAE,EAAI,GACN,EAAE,QAAU,KACZ,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,UAAY,IACd,EAAE,MAAQ,IACV,EAAE,aAAe,KACjB,EAAE,UAAY,KACd,EAAE,WAAa,MACf,EAAE,UAAY,KACd,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,SAAW,MACb,EAAE,OAAS,IACX,EAAE,MAAQ,IACV,EAAE,aAAe,IACjB,EAAE,aAAe,KACjB,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,aAAe,IACjB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,WAAa,KACf,EAAE,aAAe,KACjB,EAAE,sBAAwB,KAC1B,EAAE,kBAAoB,KACtB,EAAE,kBAAoB,KACtB,EAAE,MAAQ,IACV,EAAE,YAAc,KAChB,EAAE,YAAc,KAChB,EAAE,QAAU,KACZ,EAAE,WAAa,MACf,EAAE,MAAQ,MACV,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,WAAa,IACf,EAAE,QAAU,IACZ,EAAE,EAAI,GACN,EAAE,OAAS,KACX,EAAE,OAAS,KACX,EAAE,OAAS,KACX,EAAE,OAAS,KACX,EAAE,SAAW,MACb,EAAE,oBAAsB,KACxB,EAAE,oBAAsB,KACxB,EAAE,iBAAmB,KACrB,EAAE,KAAO,IACT,EAAE,YAAc,KAChB,EAAE,SAAW,KACb,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,WAAa,IACf,EAAE,OAAS,MACX,EAAE,aAAe,MACjB,EAAE,kBAAoB,MACtB,EAAE,SAAW,MACb,EAAE,EAAI,GACN,EAAE,WAAa,KACf,EAAE,GAAK,IACP,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,MACrB,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,eAAiB,KACnB,EAAE,kBAAoB,KACtB,EAAE,eAAiB,MACnB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,UAAY,KACd,EAAE,gBAAkB,KACpB,EAAE,WAAa,KACf,EAAE,SAAW,KACb,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,eAAiB,IACnB,EAAE,gBAAkB,KACpB,EAAE,QAAU,IACZ,EAAE,gBAAkB,KACpB,EAAE,WAAa,MACf,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,QAAU,IACZ,EAAE,KAAO,IACT,EAAE,YAAc,IAChB,EAAE,aAAe,IACjB,EAAE,UAAY,IACd,EAAE,OAAS,MACX,EAAE,QAAU,IACZ,EAAE,OAAS,IACX,EAAE,YAAc,KAChB,EAAE,gBAAkB,KACpB,EAAE,wBAA0B,KAC5B,EAAE,EAAI,GACN,EAAE,WAAa,KACf,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,WAAa,KACf,EAAE,aAAe,KACjB,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,SAAW,MACb,EAAE,SAAW,MACb,EAAE,kBAAoB,KACtB,EAAE,OAAS,KACX,EAAE,WAAa,KACf,EAAE,oBAAsB,KACxB,EAAE,eAAiB,KACnB,EAAE,MAAQ,IACV,EAAE,iBAAmB,KACrB,EAAE,yBAA2B,KAC7B,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,aAAe,IACjB,EAAE,UAAY,KACd,EAAE,YAAc,KAChB,EAAE,YAAc,KAChB,EAAE,YAAc,KAChB,EAAE,WAAa,IACf,EAAE,MAAQ,IACV,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,cAAgB,KAClB,EAAE,WAAa,IACf,EAAE,YAAc,KAChB,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,GAAK,IACP,EAAE,GAAK,MACP,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,iBAAmB,KACrB,EAAE,aAAe,IACjB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,UAAY,KACd,EAAE,gBAAkB,KACpB,EAAE,aAAe,KACjB,EAAE,GAAK,IACP,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,SAAW,MACb,EAAE,OAAS,MACX,EAAE,YAAc,MAChB,EAAE,OAAS,KACX,EAAE,QAAU,KACZ,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,YAAc,KAChB,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,QAAU,IACZ,EAAE,GAAK,IACP,EAAE,EAAI,GACN,EAAE,GAAK,IACP,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,iBAAmB,KACrB,EAAE,aAAe,IACjB,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,KACd,EAAE,GAAK,IACP,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,YAAc,KAChB,EAAE,OAAS,MACX,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,GAAK,IACP,EAAE,EAAI,GACN,EAAE,GAAK,IACP,EAAE,QAAU,MACZ,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,gBAAkB,KACpB,EAAE,wBAA0B,KAC5B,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,eAAiB,IACnB,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,KACrB,EAAE,oBAAsB,KACxB,EAAE,iBAAmB,KACrB,EAAE,qBAAuB,KACzB,EAAE,iBAAmB,MACrB,EAAE,iBAAmB,KACrB,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,kBAAoB,KACtB,EAAE,eAAiB,MACnB,EAAE,UAAY,KACd,EAAE,YAAc,MAChB,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,WAAa,KACf,EAAE,IAAM,KACR,EAAE,WAAa,KACf,EAAE,MAAQ,IACV,EAAE,WAAa,KACf,EAAE,cAAgB,KAClB,EAAE,WAAa,KACf,EAAE,eAAiB,KACnB,EAAE,WAAa,KACf,EAAE,cAAgB,IAClB,EAAE,GAAK,IACP,EAAE,eAAiB,IACnB,EAAE,QAAU,IACZ,EAAE,aAAe,KACjB,EAAE,aAAe,KACjB,EAAE,MAAQ,KACV,EAAE,cAAgB,KAClB,EAAE,WAAa,IACf,EAAE,mBAAqB,KACvB,EAAE,mBAAqB,KACvB,EAAE,WAAa,IACf,EAAE,QAAU,IACZ,EAAE,aAAe,IACjB,EAAE,WAAa,MACf,EAAE,SAAW,KACb,EAAE,QAAU,IACZ,EAAE,cAAgB,IAClB,EAAE,MAAQ,IACV,EAAE,OAAS,IACX,EAAE,YAAc,IAChB,EAAE,YAAc,MAChB,EAAE,OAAS,MACX,EAAE,aAAe,IACjB,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,YAAc,KAChB,EAAE,eAAiB,KACnB,EAAE,YAAc,MAChB,EAAE,EAAI,GACN,EAAE,OAAS,KACX,EAAE,QAAU,KACZ,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,qBAAuB,KACzB,EAAE,IAAM,IACR,EAAE,MAAQ,IACV,EAAE,GAAK,IACP,EAAE,aAAe,KACjB,EAAE,WAAa,MACf,EAAE,IAAM,IACR,EAAE,YAAc,KAChB,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,QAAU,KACZ,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,aAAe,IACjB,EAAE,UAAY,IACd,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,gBAAkB,KACpB,EAAE,YAAc,KAChB,EAAE,SAAW,KACb,EAAE,IAAM,IACR,EAAE,UAAY,MACd,EAAE,eAAiB,IACnB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,eAAiB,IACnB,EAAE,uBAAyB,IAC3B,EAAE,EAAI,GACN,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,SAAW,KACb,EAAE,OAAS,IACX,EAAE,gBAAkB,KACpB,EAAE,WAAa,IACf,EAAE,OAAS,IACX,EAAE,gBAAkB,KACpB,EAAE,YAAc,MAChB,EAAE,SAAW,IACb,EAAE,MAAQ,IACV,EAAE,cAAgB,KAClB,EAAE,sBAAwB,KAC1B,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,aAAe,IACjB,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,mBAAqB,KACvB,EAAE,YAAc,KAChB,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,YAAc,KAChB,EAAE,cAAgB,KAClB,EAAE,WAAa,IACf,EAAE,aAAe,KACjB,EAAE,YAAc,KAChB,EAAE,MAAQ,IACV,EAAE,SAAW,KACb,EAAE,WAAa,MACf,EAAE,iBAAmB,KACrB,EAAE,OAAS,MACX,EAAE,YAAc,IAChB,EAAE,EAAI,GACN,EAAE,IAAM,IACR,EAAE,KAAO,IACT,EAAE,OAAS,IACX,EAAE,SAAW,IACb,EAAE,QAAU,KACZ,EAAE,iBAAmB,KACrB,EAAE,aAAe,IACjB,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,oBAAsB,KACxB,EAAE,SAAW,KACb,EAAE,cAAgB,KAClB,EAAE,MAAQ,IACV,EAAE,MAAQ,IACV,EAAE,MAAQ,IACV,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,aAAe,KACjB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,SAAW,IACb,EAAE,QAAU,IACZ,EAAE,QAAU,IACZ,EAAE,eAAiB,IACnB,EAAE,YAAc,KAChB,EAAE,aAAe,KACjB,EAAE,OAAS,MACX,EAAE,YAAc,KAChB,EAAE,SAAW,KACb,EAAE,EAAI,GACN,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,KACrB,EAAE,iBAAmB,MACrB,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,UAAY,IACd,EAAE,eAAiB,IACnB,EAAE,eAAiB,KACnB,EAAE,eAAiB,IACnB,EAAE,kBAAoB,KACtB,EAAE,eAAiB,IACnB,EAAE,gBAAkB,IACpB,EAAE,eAAiB,MACnB,EAAE,UAAY,KACd,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,WAAa,KACf,EAAE,MAAQ,IACV,EAAE,WAAa,KACf,EAAE,cAAgB,KAClB,EAAE,WAAa,KACf,EAAE,eAAiB,KACnB,EAAE,WAAa,KACf,EAAE,cAAgB,IAClB,EAAE,sBAAwB,KAC1B,EAAE,eAAiB,IACnB,EAAE,WAAa,KACf,EAAE,QAAU,IACZ,EAAE,gBAAkB,KACpB,EAAE,gBAAkB,KACpB,EAAE,WAAa,MACf,EAAE,QAAU,IACZ,EAAE,QAAU,IACZ,EAAE,SAAW,IACb,EAAE,4BAA8B,IAChC,EAAE,eAAiB,IACnB,EAAE,gBAAkB,IACpB,EAAE,+BAAiC,IACnC,EAAE,kBAAoB,IACtB,EAAE,aAAe,IACjB,EAAE,MAAQ,IACV,EAAE,eAAiB,KACnB,EAAE,OAAS,MACX,EAAE,kBAAoB,KACtB,EAAE,wBAA0B,KAC5B,EAAE,OAAS,IACX,EAAE,YAAc,KAChB,EAAE,YAAc,KAChB,EAAE,EAAI,GACN,EAAE,QAAU,KACZ,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,MAAQ,IACV,EAAE,WAAa,MACf,EAAE,WAAa,KACf,EAAE,OAAS,MACX,EAAE,OAAS,KACX,EAAE,EAAI,GACN,EAAE,OAAS,KACX,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,OAAS,KACX,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,QAAU,KACZ,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,YAAc,KAChB,EAAE,GAAK,IACP,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,EAAI,GACN,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,YAAc,KAChB,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,UAAY,IACd,EAAE,eAAiB,MACnB,EAAE,WAAa,KACf,EAAE,UAAY,KACd,EAAE,aAAe,KACjB,EAAE,qBAAuB,KACzB,EAAE,OAAS,KACX,EAAE,MAAQ,IACV,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,aAAe,KACjB,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,OAAS,KACX,EAAE,eAAiB,KACnB,EAAE,uBAAyB,KAC3B,EAAE,kBAAoB,KACtB,EAAE,0BAA4B,KAC9B,EAAE,EAAI,GACN,EAAE,WAAa,KACf,EAAE,OAAS,IACX,EAAE,OAAS,IACX,EAAE,YAAc,MAChB,EAAE,QAAU,KACZ,EAAE,YAAc,KAChB,EAAE,KAAO,IACT,EAAE,WAAa,IACf,EAAE,UAAY,KACd,EAAE,WAAa,KACf,EAAE,oBAAsB,KACxB,EAAE,mBAAqB,KACvB,EAAE,KAAO,IACT,EAAE,YAAc,KAChB,EAAE,iBAAmB,KACrB,EAAE,YAAc,KAChB,EAAE,qBAAuB,KACzB,EAAE,oBAAsB,KACxB,EAAE,WAAa,KACf,EAAE,WAAa,MACf,EAAE,OAAS,MACX,EAAE,QAAU,IACZ,EAAE,EAAI,GACN,EAAE,UAAY,KACd,EAAE,OAAS,IACX,EAAE,OAAS,KACX,EAAE,WAAa,KACf,EAAE,WAAa,KACf,EAAE,gBAAkB,KACpB,EAAE,WAAa,MACf,EAAE,mBAAqB,KACvB,EAAE,gBAAkB,KACpB,EAAE,oBAAsB,KACxB,EAAE,yBAA2B,KAC7B,EAAE,qBAAuB,KACzB,EAAE,SAAW,KACb,EAAE,UAAY,MACd,EAAE,OAAS,IACX,EAAE,YAAc,KAChB,EAAE,eAAiB,KACnB,EAAE,eAAiB,KACnB,EAAE,YAAc,KAChB,EAAE,gBAAkB,KACpB,EAAE,YAAc,KAChB,EAAE,OAAS,IACX,EAAE,QAAU,KACZ,EAAE,YAAc,IAChB,EAAE,iBAAmB,KACrB,EAAE,oBAAsB,KACxB,EAAE,iBAAmB,KACrB,EAAE,qBAAuB,KACzB,EAAE,iBAAmB,KACrB,EAAE,MAAQ,IACV,EAAE,cAAgB,IAClB,EAAE,SAAW,IACb,EAAE,UAAY,IACd,EAAE,UAAY,KACd,EAAE,YAAc,IAChB,EAAE,aAAe,IACjB,EAAE,UAAY,KACd,EAAE,UAAY,IACd,EAAE,cAAgB,KAClB,EAAE,MAAQ,KACV,EAAE,UAAY,IACd,EAAE,kBAAoB,KACtB,EAAE,gBAAkB,IACpB,EAAE,UAAY,KACd,EAAE,WAAa,IACf,EAAE,GAAK,IACP,EAAE,QAAU,IACZ,EAAE,SAAW,MACb,EAAE,SAAW,IACb,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,MACd,EAAE,UAAY,MACd,EAAE,UAAY,KACd,EAAE,QAAU,KACZ,EAAE,QAAU,KACZ,EAAE,QAAU,KACZ,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,EAAE,UAAY,KACd,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IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,IAAM,KACR,EAAE,IAAM,KACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,KACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,IAAM,MACR,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,KACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,KAAO,MACT,EAAE,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AAM,EAAG,CAAC,IAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,IAAM,EAAG,CAAC,KAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAQ,KAAM,EAAG,CAAC,MAAS,K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AE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,GAAG,EAAI,MACT,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,IACV,EAAE,IAAI,EAAI,MACV,EAAE,IAAI,EAAI,KACV,EAAE,IAAI,EAAI,IACZ,CAAC,EACK+rD,GAAwC/rD,GAAsB,SAAU,EAAG,CAC/E,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,KACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACX,CAAC,EACKgsD,GAAuChsD,GAAsB,SAAU,EAAG,CAC9E,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACX,CAAC,EACKisD,GAAoCjsD,GAAsB,SAAU,EAAG,CAC3E,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,GACP,EAAE,CAAC,EAAI,IACP,EAAE,CAAC,EAAI,IACP,EAAE,CAAC,EAAI,IACP,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,EAAE,EAAI,GACR,EAAE,EAAE,EAAI,IACR,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,IACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,EAAI,GACT,EAAE,GAAG,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IACTA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,EAAG,EAAG,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3tJC,GAAqB,CACzB,WAAY,OACZ,QAAS,KACX,EACMC,GAA2B,CAAC,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACzwJC,GAA2B,CAC/B,WAAY,OACZ,QAAS,KACX,EACMC,GAAuB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,MAAQ,QAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,KAAO,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,MAAQ,KAAO,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC1rJC,GAAuB,CAC3B,WAAY,OACZ,QAAS,KACX,EACMC,GAAwB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACpvJC,GAAwB,CAC5B,WAAY,OACZ,QAAS,KACX,EAGMC,GAAuB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,EAAG,OAAQ,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,MAAQ,OAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAChjLC,GAAuB,CAC3B,WAAY,IACZ,QAAS,EACX,EACMC,GAA6B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACzjLC,GAA6B,CACjC,WAAY,KACZ,QAAS,EACX,EACMC,GAAyB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAQ,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,EAAG,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACv6KC,GAAyB,CAC7B,WAAY,KACZ,QAAS,EACX,EACMC,GAA0B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,QAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,QAAS,EAAG,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,EAAG,OAAQ,EAAG,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,MAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC52KC,GAA0B,CAC9B,WAAY,IACZ,QAAS,EACX,EAGMC,GAA2B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC13GC,GAA4B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/gHC,GAAiC,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC93GC,GAAkC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACrhHC,GAA6B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACz3GC,GAA8B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACjhHC,GAA8B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC53GC,GAA+B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGlhHC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,KAAO,QAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,EAAG,EAAG,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,MAAQ,KAAO,MAAQ,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,IAAM,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAQ,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC36IC,GAAuB,CAC3B,WAAY,IACZ,QAAS,EACX,EACMC,GAA6B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,GAAK,OAAS,GAAK,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAA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AAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,KAAO,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,IAAM,MAAQ,IAAM,MAAQ,IAAM,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,OAAS,OAAS,IAAM,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,MAAO,MAAO,MAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACj5IC,GAAyB,CAC7B,WAAY,IACZ,QAAS,EACX,EACMC,GAA0B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAM,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAQ,KAAO,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,KAAO,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,KAAO,QAAS,OAAS,KAAO,QAAS,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,IAAM,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,MAAO,QAAS,EAAG,EAAG,OAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACp6IC,GAA0B,CAC9B,WAAY,IACZ,QAAS,EACX,EAGMC,GAAqB,CAAC,QAAS,EAAG,EAAG,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,QAAS,OAAQ,MAAQ,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,KAAO,QAAS,OAAQ,MAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,MAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,MAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,KAAO,QAAS,KAAO,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7rJC,GAAqB,CACzB,WAAY,QACZ,QAAS,CACX,EACMC,GAA2B,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,MAAO,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,MAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,MAAO,MAAO,EAAG,MAAO,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,MAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAQ,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,MAAO,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7tJC,GAA2B,CAC/B,WAAY,QACZ,QAAS,CACX,EACMC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,MAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAQ,KAAM,QAAS,IAAK,OAAQ,OAAQ,OAAS,QAAS,QAAS,KAAM,OAAS,QAAS,QAAS,IAAK,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,OAAQ,OAAQ,IAAK,OAAQ,OAAS,OAAQ,OAAQ,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC/uJC,GAAuB,CAC3B,WAAY,QACZ,QAAS,CACX,EACMC,GAAwB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,MAAQ,QAAS,MAAQ,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAQ,OAAS,MAAQ,OAAQ,OAAS,QAAS,IAAK,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,IAAK,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,E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,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC74CC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,K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aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,WACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,gBACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,KACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,OACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,UACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,WACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,QACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,qBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,mBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,cACR,QAAS,EACT,aAAc,EACtB,EACM,KAAM,CACJ,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,SACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,2BACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,sBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,oBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,eACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,gBACR,QAAS,GACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,aACR,QAAS,EACT,aAAc,EACtB,EACM,IAAK,CACH,GAAIA,EAAI,cACR,QAAS,GACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,cACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,kBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,gBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,mBACR,QAAS,EACT,aAAc,EACtB,EACM,EAAG,CACD,GAAIA,EAAI,iBACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,YACR,QAAS,EACT,aAAc,EACtB,EACM,GAAI,CACF,GAAIA,EAAI,iBACR,QAA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AO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,SAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,UAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,SAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,WAAY,UAAU,EAAG,IAAIA,GAAO,U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,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,CAAC,EACphD,OAAS,IAAI,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IA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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/suites-experimental/pdf-viewer/dist/document.pdf b/suites-experimental/pdf-viewer/dist/document.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2db4915a96f23a5eed46ac62eb9d43142a0072d3 GIT binary patch literal 1280744 zcmb4qRajeJ^kpD;@!~E4iWYbGAjMq@1PdOZK%jV`Kp_y^-QBfN+}(;pfkJ^IMSn

    ~yzM;yr4;lP?I7;9 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ƠzIINUA0o3uZ&Rvhn8T>bifmDnEad9y4`u*n*} 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

    cISFmsB$x{vL+nLT5oD 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