From e1b5e60aafb855ef590e9f22093f3578b4373b3f Mon Sep 17 00:00:00 2001 From: Local Dev Date: Sun, 20 Sep 2026 20:58:21 +0200 Subject: [PATCH] feat(pdf-editor): read, mark up and reshape a PDF without leaving the browser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A PDF that needs a signature, a highlight or a page removed currently sends the user out to a desktop application or, worse, to a web service that wants the document uploaded first. Both are poor answers for a browser whose point is that nothing has to leave the machine. This is a full-tab editor that opens a PDF, marks it up, fills its forms and saves a new copy, entirely locally. Two engines, vendored rather than installed, because an add-on ships as a self-contained folder over the signed update channel and nothing runs a package manager on the way: pdf.js reads and renders, pdf-lib writes. They share no state. Everything in between lives in PDF user space — points, origin bottom-left — which is the one coordinate vocabulary both speak, so a mark survives zooming, rotating and reordering with no conversion table and save-time needs to know nothing about how a page happened to be displayed. The page strip is built from pdf.js's PDFPageView components rather than its PDFViewer, which renders pages in the file's own order and cannot hide, reorder or individually rotate one — three of the features here. Text layers are ours and stay attached for every page, drawn or not, because Theseus's find bar is Chromium's findInPage over the live DOM and a torn-down text layer is a page Ctrl+F cannot see. Canvases are virtualised; a letter page at 100% is 3.4 MB of bitmap. Redaction is the part worth being careful about. A black box over text hides nothing — the text stays in the content stream and comes straight out of a copy-paste — so the editor says so in a modal before the tool can be used, and on save rebuilds each redacted page as an image, which genuinely removes it. Pages that were not redacted are untouched. Form widgets and links are kept, since they were never the leak. Saving never writes over the original: every save reloads the source bytes and replays the session onto a fresh copy, so a botched save cannot poison the next one. Out of scope for this first version: editing the text that is already in the document, and writing XFA forms back (pdf-lib cannot, so those are fill-and- print only, and the editor says so on open). --- bundled-addons/pdf-editor/VENDOR.md | 62 + bundled-addons/pdf-editor/addon.json | 26 + bundled-addons/pdf-editor/editor.css | 227 + bundled-addons/pdf-editor/editor.html | 216 + bundled-addons/pdf-editor/editor.js | 707 ++ bundled-addons/pdf-editor/index.js | 189 + bundled-addons/pdf-editor/lib/model.js | 188 + bundled-addons/pdf-editor/lib/overlay.js | 197 + bundled-addons/pdf-editor/lib/rail.js | 161 + bundled-addons/pdf-editor/lib/save.js | 274 + bundled-addons/pdf-editor/lib/shape.js | 111 + bundled-addons/pdf-editor/lib/signature.js | 114 + bundled-addons/pdf-editor/lib/tools.js | 287 + bundled-addons/pdf-editor/lib/view.js | 441 + .../pdf-editor/vendor/pdf-lib/LICENSE.md | 21 + .../vendor/pdf-lib/pdf-lib.esm.min.js | 16 + .../pdf-editor/vendor/pdfjs/LICENSE | 177 + .../pdfjs/iccs/CGATS001Compat-v2-micro.icc | Bin 0 -> 8464 bytes .../pdf-editor/vendor/pdfjs/iccs/LICENSE | 116 + .../pdf-editor/vendor/pdfjs/pdf.min.mjs | 29 + .../vendor/pdfjs/pdf.worker.min.mjs | 29 + .../pdfjs/standard_fonts/FoxitDingbats.pfb | Bin 0 -> 29513 bytes .../pdfjs/standard_fonts/FoxitFixed.pfb | Bin 0 -> 17597 bytes .../pdfjs/standard_fonts/FoxitFixedBold.pfb | Bin 0 -> 18055 bytes .../standard_fonts/FoxitFixedBoldItalic.pfb | Bin 0 -> 19151 bytes .../pdfjs/standard_fonts/FoxitFixedItalic.pfb | Bin 0 -> 18746 bytes .../pdfjs/standard_fonts/FoxitSerif.pfb | Bin 0 -> 19469 bytes .../pdfjs/standard_fonts/FoxitSerifBold.pfb | Bin 0 -> 19395 bytes .../standard_fonts/FoxitSerifBoldItalic.pfb | Bin 0 -> 20733 bytes .../pdfjs/standard_fonts/FoxitSerifItalic.pfb | Bin 0 -> 21227 bytes .../pdfjs/standard_fonts/FoxitSymbol.pfb | Bin 0 -> 16729 bytes .../vendor/pdfjs/standard_fonts/LICENSE_FOXIT | 27 + .../pdfjs/standard_fonts/LICENSE_LIBERATION | 363 + .../standard_fonts/LiberationSans-Bold.ttf | Bin 0 -> 137052 bytes .../LiberationSans-BoldItalic.ttf | Bin 0 -> 135124 bytes .../standard_fonts/LiberationSans-Italic.ttf | Bin 0 -> 162036 bytes .../standard_fonts/LiberationSans-Regular.ttf | Bin 0 -> 139512 bytes .../vendor/pdfjs/wasm/LICENSE_JBIG2 | 196 + .../vendor/pdfjs/wasm/LICENSE_OPENJPEG | 39 + .../vendor/pdfjs/wasm/LICENSE_PDFJS_JBIG2 | 13 + .../vendor/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG | 22 + .../vendor/pdfjs/wasm/LICENSE_PDFJS_QCMS | 19 + .../pdf-editor/vendor/pdfjs/wasm/LICENSE_QCMS | 21 + .../pdf-editor/vendor/pdfjs/wasm/jbig2.wasm | Bin 0 -> 104852 bytes .../vendor/pdfjs/wasm/openjpeg.wasm | Bin 0 -> 252032 bytes .../pdf-editor/vendor/pdfjs/wasm/qcms_bg.wasm | Bin 0 -> 96589 bytes .../vendor/pdfjs/web/images/altText_add.svg | 3 + .../pdfjs/web/images/altText_disclaimer.svg | 3 + .../vendor/pdfjs/web/images/altText_done.svg | 3 + .../pdfjs/web/images/altText_spinner.svg | 30 + .../pdfjs/web/images/altText_warning.svg | 3 + .../pdfjs/web/images/annotation-check.svg | 11 + .../pdfjs/web/images/annotation-comment.svg | 16 + .../pdfjs/web/images/annotation-help.svg | 26 + .../pdfjs/web/images/annotation-insert.svg | 10 + .../pdfjs/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../pdfjs/web/images/annotation-noicon.svg | 7 + .../pdfjs/web/images/annotation-note.svg | 42 + .../pdfjs/web/images/annotation-paperclip.svg | 6 + .../pdfjs/web/images/annotation-paragraph.svg | 16 + .../pdfjs/web/images/annotation-pushpin.svg | 7 + .../vendor/pdfjs/web/images/checkmark.svg | 5 + .../web/images/comment-actionsButton.svg | 3 + .../pdfjs/web/images/comment-closeButton.svg | 3 + .../pdfjs/web/images/comment-editButton.svg | 8 + .../web/images/comment-popup-editButton.svg | 5 + .../web/images/cursor-editorFreeHighlight.svg | 6 + .../web/images/cursor-editorFreeText.svg | 3 + .../pdfjs/web/images/cursor-editorInk.svg | 4 + .../web/images/cursor-editorTextHighlight.svg | 8 + .../web/images/editor-toolbar-delete.svg | 5 + .../pdfjs/web/images/editor-toolbar-edit.svg | 3 + .../pdfjs/web/images/findbarButton-next.svg | 3 + .../web/images/findbarButton-previous.svg | 3 + .../web/images/gv-toolbarButton-download.svg | 3 + .../vendor/pdfjs/web/images/loading-icon.gif | Bin 0 -> 2545 bytes .../vendor/pdfjs/web/images/loading.svg | 1 + .../web/images/messageBar_closingButton.svg | 3 + .../pdfjs/web/images/messageBar_info.svg | 3 + .../pdfjs/web/images/messageBar_warning.svg | 3 + .../pdfjs/web/images/pages_closeButton.svg | 3 + .../pdfjs/web/images/pages_selected.svg | 7 + .../pdfjs/web/images/pages_viewArrow.svg | 3 + .../pdfjs/web/images/pages_viewButton.svg | 3 + ...ondaryToolbarButton-documentProperties.svg | 3 + .../secondaryToolbarButton-firstPage.svg | 3 + .../secondaryToolbarButton-handTool.svg | 3 + .../secondaryToolbarButton-lastPage.svg | 3 + .../secondaryToolbarButton-rotateCcw.svg | 3 + .../secondaryToolbarButton-rotateCw.svg | 3 + ...econdaryToolbarButton-scrollHorizontal.svg | 3 + .../secondaryToolbarButton-scrollPage.svg | 3 + .../secondaryToolbarButton-scrollVertical.svg | 3 + .../secondaryToolbarButton-scrollWrapped.svg | 3 + .../secondaryToolbarButton-selectTool.svg | 3 + .../secondaryToolbarButton-spreadEven.svg | 3 + .../secondaryToolbarButton-spreadNone.svg | 3 + .../secondaryToolbarButton-spreadOdd.svg | 3 + .../images/signature-properties-row-check.svg | 4 + .../web/images/toolbarButton-bookmark.svg | 3 + .../toolbarButton-currentOutlineItem.svg | 3 + .../web/images/toolbarButton-download.svg | 4 + .../images/toolbarButton-editorFreeText.svg | 5 + .../images/toolbarButton-editorHighlight.svg | 6 + .../web/images/toolbarButton-editorInk.svg | 4 + .../images/toolbarButton-editorSignature.svg | 6 + .../web/images/toolbarButton-editorStamp.svg | 8 + .../web/images/toolbarButton-menuArrow.svg | 3 + .../images/toolbarButton-menuArrowNova.svg | 3 + .../web/images/toolbarButton-openFile.svg | 3 + .../web/images/toolbarButton-pageDown.svg | 3 + .../pdfjs/web/images/toolbarButton-pageUp.svg | 3 + .../images/toolbarButton-presentationMode.svg | 3 + .../pdfjs/web/images/toolbarButton-print.svg | 3 + .../pdfjs/web/images/toolbarButton-search.svg | 3 + .../toolbarButton-secondaryToolbarToggle.svg | 3 + ...toolbarButton-signaturePropertiesError.svg | 7 + ...lbarButton-signaturePropertiesVerified.svg | 7 + .../images/toolbarButton-viewAttachments.svg | 3 + .../web/images/toolbarButton-viewLayers.svg | 3 + .../web/images/toolbarButton-viewOutline.svg | 3 + .../images/toolbarButton-viewThumbnail.svg | 3 + .../toolbarButton-viewsManagerToggle.svg | 3 + .../pdfjs/web/images/toolbarButton-zoomIn.svg | 3 + .../web/images/toolbarButton-zoomOut.svg | 3 + .../pdfjs/web/images/treeitem-collapsed.svg | 1 + .../pdfjs/web/images/treeitem-expanded.svg | 1 + .../vendor/pdfjs/web/pdf_viewer.css | 6409 +++++++++++ .../vendor/pdfjs/web/pdf_viewer.mjs | 9834 +++++++++++++++++ docs/ADDON-UPDATES.md | 14 +- 131 files changed, 20986 insertions(+), 1 deletion(-) create mode 100644 bundled-addons/pdf-editor/VENDOR.md create mode 100644 bundled-addons/pdf-editor/addon.json create mode 100644 bundled-addons/pdf-editor/editor.css create mode 100644 bundled-addons/pdf-editor/editor.html create mode 100644 bundled-addons/pdf-editor/editor.js create mode 100644 bundled-addons/pdf-editor/index.js create mode 100644 bundled-addons/pdf-editor/lib/model.js create mode 100644 bundled-addons/pdf-editor/lib/overlay.js create mode 100644 bundled-addons/pdf-editor/lib/rail.js create mode 100644 bundled-addons/pdf-editor/lib/save.js create mode 100644 bundled-addons/pdf-editor/lib/shape.js create mode 100644 bundled-addons/pdf-editor/lib/signature.js create mode 100644 bundled-addons/pdf-editor/lib/tools.js create mode 100644 bundled-addons/pdf-editor/lib/view.js create mode 100644 bundled-addons/pdf-editor/vendor/pdf-lib/LICENSE.md create mode 100644 bundled-addons/pdf-editor/vendor/pdf-lib/pdf-lib.esm.min.js create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/LICENSE create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/iccs/CGATS001Compat-v2-micro.icc create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/iccs/LICENSE create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/pdf.min.mjs create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/pdf.worker.min.mjs create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixed.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerif.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LICENSE_FOXIT create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_JBIG2 create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_OPENJPEG create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_PDFJS_JBIG2 create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_PDFJS_QCMS create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/LICENSE_QCMS create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/jbig2.wasm create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/openjpeg.wasm create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/wasm/qcms_bg.wasm create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/altText_add.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/altText_disclaimer.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/altText_done.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/altText_spinner.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/altText_warning.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-check.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-comment.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-help.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-insert.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-key.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-newparagraph.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-noicon.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-note.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-paperclip.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-paragraph.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/annotation-pushpin.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/checkmark.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/comment-actionsButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/comment-closeButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/comment-editButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/comment-popup-editButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/cursor-editorFreeHighlight.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/cursor-editorFreeText.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/cursor-editorInk.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/cursor-editorTextHighlight.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/editor-toolbar-delete.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/editor-toolbar-edit.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/findbarButton-next.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/findbarButton-previous.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/gv-toolbarButton-download.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/loading-icon.gif create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/loading.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/messageBar_closingButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/messageBar_info.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/messageBar_warning.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/pages_closeButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/pages_selected.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/pages_viewArrow.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/pages_viewButton.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-firstPage.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-handTool.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-lastPage.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-selectTool.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/signature-properties-row-check.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-bookmark.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-currentOutlineItem.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-download.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-editorFreeText.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-editorHighlight.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-editorInk.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-editorSignature.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-editorStamp.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-menuArrow.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-menuArrowNova.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-openFile.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-pageDown.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-pageUp.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-presentationMode.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-print.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-search.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-signaturePropertiesError.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-signaturePropertiesVerified.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-viewAttachments.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-viewLayers.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-viewOutline.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-viewThumbnail.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-viewsManagerToggle.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-zoomIn.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/toolbarButton-zoomOut.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/treeitem-collapsed.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/images/treeitem-expanded.svg create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/pdf_viewer.css create mode 100644 bundled-addons/pdf-editor/vendor/pdfjs/web/pdf_viewer.mjs diff --git a/bundled-addons/pdf-editor/VENDOR.md b/bundled-addons/pdf-editor/VENDOR.md new file mode 100644 index 00000000..ea03c29e --- /dev/null +++ b/bundled-addons/pdf-editor/VENDOR.md @@ -0,0 +1,62 @@ +# Vendored libraries + +Both engines are copied in rather than installed, because Theseus's own +`node_modules` is a build-time tree and an add-on has to be a self-contained +folder: it is copied to `/addons/pdf-editor/` on first run and +shipped as a tarball over the signed update channel, neither of which runs a +package manager. + +| Path | Library | Version | Licence | +|---|---|---|---| +| `vendor/pdfjs/` | [pdf.js](https://mozilla.github.io/pdf.js/) (`pdfjs-dist`) | 6.3.289 | Apache-2.0 | +| `vendor/pdf-lib/` | [pdf-lib](https://pdf-lib.js.org/) | 1.17.1 | MIT | + +Licence texts ship beside the code: `vendor/pdfjs/LICENSE`, +`vendor/pdfjs/wasm/LICENSE_*` and `vendor/pdf-lib/LICENSE.md`. + +pdf.js reads; pdf-lib writes. They never look at each other's state — the +editor holds the document model in between, in PDF user-space coordinates, +which is the only vocabulary both of them speak. + +## What was taken, and what was left behind + +From `pdfjs-dist`: + +- `build/pdf.min.mjs`, `build/pdf.worker.min.mjs` — the API and its worker. +- `web/pdf_viewer.mjs` + `web/pdf_viewer.css` + `web/images/` — the viewer + *components*, for `PDFPageView`, `PDFLinkService` and `EventBus`. Not the + full viewer application. There is no minified build of this file upstream. +- `standard_fonts/` — the base-14 metrics. A PDF that names Helvetica without + embedding it is extremely common, and without these it renders wrong. +- `wasm/*.wasm` — JPEG 2000, JBIG2 and colour management. +- `iccs/` — ICC profiles for the colour management above. + +Left out on purpose: + +- `cmaps/` (~1.5 MB) — needed only for CJK documents that use a non-embedded + CID font. Dropping it keeps the add-on at about 4 MB. If CJK support is + wanted, copy `cmaps/` in and pass `cMapUrl: "vendor/pdfjs/cmaps/"` to + `getDocument` in `editor.js`; nothing else changes. +- `wasm/*_nowasm_fallback.js` (~580 KB) — pure-JS fallbacks for engines + without WebAssembly. Electron always has it. +- `wasm/quickjs-eval.*` and `build/pdf.sandbox.*` (~525 KB) — the interpreter + for JavaScript embedded in a PDF. The editor loads documents with + `enableScripting: false`, so a document's own scripts never run. +- Every `.map` file, the TypeScript definitions, the CommonJS and `legacy` + builds, and `image_decoders/`. + +From `pdf-lib`, only `dist/pdf-lib.esm.min.js`. + +## Upgrading + +Re-run the extraction against a fresh tarball, keeping the list above, then +run the verification suite in `scratchpad/verify-pdf-editor/`. Two things to +watch, because both have bitten this add-on already: + +- `web/pdf_viewer.mjs` reads the core API off `globalThis.pdfjsLib` instead of + importing it, so `editor.js` must keep assigning that global *before* it + imports the components bundle. +- pdf.js's `AnnotationStorage` has no stable public shape. `getAll()`, which + older releases had, does not exist in 6.x — form values are read through + `has(id)` and `getRawValue(id)` against the ids from `getFieldObjects()`. + A silent change here looks like a form that saves nothing. diff --git a/bundled-addons/pdf-editor/addon.json b/bundled-addons/pdf-editor/addon.json new file mode 100644 index 00000000..d0899b12 --- /dev/null +++ b/bundled-addons/pdf-editor/addon.json @@ -0,0 +1,26 @@ +{ + "id": "pdf-editor", + "name": "PDF Editor", + "version": "0.1.0", + "description": "Open a PDF in a full tab: read it, highlight and mark it up, reorder or rotate or drop pages, fill in its form fields, then save a new copy. Annotations are written into the saved file as real PDF content. The original is never touched.", + "author": "Silent Mode", + "icon": "📄", + "main": "index.js", + "capabilities": ["toolbar-menu", "open-tab", "context-menu-item"], + "toolbar-menu": { + "title": "PDF Editor", + "icon": "📄", + "items": [ + { "id": "open", "label": "Open a PDF…", "icon": "📄" } + ] + }, + "context-menu-items": [ + { + "id": "open-link", + "label": "Open PDF in editor", + "when": "linkURL", + "icon": "📄" + } + ], + "updateURL": "https://navigate.st/bns/theseus.x/extensions/pdf-editor/updates.json" +} diff --git a/bundled-addons/pdf-editor/editor.css b/bundled-addons/pdf-editor/editor.css new file mode 100644 index 00000000..e5ddaaa0 --- /dev/null +++ b/bundled-addons/pdf-editor/editor.css @@ -0,0 +1,227 @@ +/* PDF Editor — full-tab. Same palette and control shapes as the screenshot + editor so the two add-ons read as one family; loaded AFTER pdf.js's + pdf_viewer.css so the overrides at the bottom win. */ +:root { color-scheme: light dark; + --bg:#0e131c; --panel:#141a24; --panel2:#191f2b; --line:rgba(255,255,255,.09); + --ink:#e7eaf1; --mut:#8b98a9; --dim:#5e6678; --acid:#d6ff3d; + --danger:#ff5b5b; --board:#0a0d13; --shadow:rgba(0,0,0,.45); } +@media (prefers-color-scheme: light) { + :root { --bg:#f8faff; --panel:#ffffff; --panel2:#eff3fb; --line:rgba(0,0,0,.10); + --ink:#1a1f2b; --mut:#5c6577; --dim:#8a93a5; --acid:#0AC18E; + --board:#dde3ee; --shadow:rgba(20,30,50,.20); } +} +* { box-sizing: border-box; } +html, body { margin: 0; height: 100%; } +body { background: var(--bg); color: var(--ink); + font: 13px/1.5 system-ui, -apple-system, Segoe UI, Roboto, sans-serif; + display: flex; flex-direction: column; overflow: hidden; } +/* pdf.js's stylesheet sets display on some of the nodes we toggle, so plain + [hidden] loses the cascade fight. */ +[hidden] { display: none !important; } + +/* ---- bars ----------------------------------------------------------- */ +.topbar, .toolbar { display: flex; align-items: center; gap: 4px; padding: 6px 8px; + border-bottom: 1px solid var(--line); background: var(--panel); + user-select: none; } +.topbar { flex-wrap: nowrap; } +.toolbar { align-items: flex-start; gap: 8px; row-gap: 6px; flex-wrap: wrap; } +.tool-cluster { display: flex; flex-wrap: wrap; align-items: center; + gap: 10px; row-gap: 6px; flex: 1 1 auto; justify-content: center; } +.tgroup { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; } +.tgroup.zoomgroup { align-self: center; } +.spacer { flex: 1; } +.sep { width: 1px; height: 20px; background: var(--line); margin: 0 4px; flex: 0 0 auto; } + +.docname { color: var(--mut); font-size: 12.5px; overflow: hidden; min-width: 0; + text-overflow: ellipsis; white-space: nowrap; max-width: 46vw; } +.docname.dirty::after { content: " •"; color: var(--acid); font-weight: 700; } + +.btn, .tool { + border: 1px solid var(--line); background: var(--panel2); color: var(--ink); + width: 30px; height: 30px; border-radius: 6px; cursor: pointer; + display: inline-flex; align-items: center; justify-content: center; + padding: 0; transition: background 100ms, border-color 100ms; + font: inherit; line-height: 0; flex: 0 0 auto; +} +.btn:hover, .tool:hover { border-color: rgb(from var(--acid) r g b / .5); } +.btn:disabled, .tool:disabled { opacity: .4; cursor: default; } +.btn:disabled:hover { border-color: var(--line); } +.btn svg, .tool svg { width: 16px; height: 16px; display: block; } +.btn.wide { width: auto; padding: 0 10px; gap: 6px; line-height: 1; } +.btn.wide span { font-size: 12px; } +.btn.primary { background: var(--acid); color: #101418; border-color: transparent; font-weight: 600; } +.btn.primary:hover { filter: brightness(1.06); border-color: transparent; } +.btn.primary:disabled:hover { filter: none; } +.btn.danger { color: var(--danger); } +.btn.danger:hover { border-color: rgba(255,91,91,.55); } +.tool.active { background: rgb(from var(--acid) r g b / .15); + border-color: rgb(from var(--acid) r g b / .7); color: var(--acid); } +/* Redact is destructive; it reads red when armed rather than acid. */ +.tool[data-tool="redact"].active { background: rgba(255,91,91,.16); + border-color: rgba(255,91,91,.7); color: var(--danger); } + +.swatch { width: 22px; height: 22px; border-radius: 50%; padding: 0; + border: 2px solid var(--line); cursor: pointer; flex: 0 0 auto; + /* The near-black ink swatch would otherwise disappear into a dark + toolbar; a faint inner ring keeps every colour countable. */ + box-shadow: inset 0 0 0 1px rgb(from var(--ink) r g b / .28); } +.swatch.active { border-color: var(--acid); + outline: 1px solid rgb(from var(--acid) r g b / .35); outline-offset: 1px; } +.width { border: 1px solid var(--line); background: var(--panel2); color: var(--ink); + width: 30px; height: 30px; border-radius: 6px; cursor: pointer; + display: inline-flex; align-items: center; justify-content: center; padding: 0; } +.width.active { border-color: rgb(from var(--acid) r g b / .7); + background: rgb(from var(--acid) r g b / .15); } +.width .dot { border-radius: 50%; background: currentColor; color: var(--ink); } +.width.active .dot { color: var(--acid); } + +select, input[type="text"], textarea { + border: 1px solid var(--line); background: var(--panel2); color: var(--ink); + border-radius: 6px; padding: 5px 7px; font: inherit; height: 30px; +} +textarea { height: auto; resize: vertical; width: 100%; line-height: 1.45; } +select:focus, input:focus, textarea:focus { outline: none; border-color: rgb(from var(--acid) r g b / .6); } + +/* ---- body: viewer + rail -------------------------------------------- */ +.body { flex: 1; display: flex; min-height: 0; } +.viewerContainer { position: absolute; inset: 0; overflow: auto; background: var(--board); } +.body { position: relative; } +.viewerContainer { position: relative; flex: 1 1 auto; min-width: 0; } + +.rail { flex: 0 0 176px; border-left: 1px solid var(--line); background: var(--panel); + display: flex; flex-direction: column; min-height: 0; } +body[data-rail="off"] .rail { display: none; } +.rail-head { display: flex; align-items: center; gap: 6px; padding: 7px 10px; + border-bottom: 1px solid var(--line); color: var(--dim); font-size: 11.5px; } +.rail-list { flex: 1; overflow: auto; padding: 8px; display: flex; + flex-direction: column; gap: 8px; } + +.thumb { position: relative; border: 1px solid var(--line); border-radius: 6px; + background: var(--panel2); padding: 6px; cursor: grab; } +.thumb.current { border-color: rgb(from var(--acid) r g b / .75); } +.thumb.dragging { opacity: .45; } +.thumb.dropbefore { box-shadow: 0 -3px 0 0 var(--acid); } +.thumb.dropafter { box-shadow: 0 3px 0 0 var(--acid); } +.thumb.deleted { opacity: .38; } +.thumb.deleted .tcanvas { filter: grayscale(1); } +.thumb .tcanvas { display: block; width: 100%; height: auto; background: #fff; + border-radius: 3px; box-shadow: 0 1px 4px var(--shadow); } +.thumb .tfoot { display: flex; align-items: center; gap: 3px; margin-top: 5px; } +.thumb .tnum { color: var(--dim); font-size: 11px; font-variant-numeric: tabular-nums; + flex: 1 1 auto; min-width: 0; } +.thumb .tbtn { width: 20px; height: 20px; border-radius: 4px; border: 1px solid var(--line); + background: var(--panel); color: var(--ink); cursor: pointer; padding: 0; + display: inline-flex; align-items: center; justify-content: center; } +.thumb .tbtn svg { width: 12px; height: 12px; display: block; } +.thumb .tbtn:hover { border-color: rgb(from var(--acid) r g b / .55); } +.thumb .tbtn.del:hover { border-color: rgba(255,91,91,.6); color: var(--danger); } + +.fbtn { border: 1px solid var(--line); background: var(--panel2); color: var(--ink); + border-radius: 6px; cursor: pointer; padding: 3px 7px; font: inherit; + font-size: 11px; line-height: 1.4; } +.fbtn:hover { border-color: rgb(from var(--acid) r g b / .55); } + +/* ---- footer --------------------------------------------------------- */ +.footer { display: flex; align-items: center; gap: 8px; padding: 5px 10px; + border-top: 1px solid var(--line); background: var(--panel); font-size: 11.5px; } +.fstat { color: var(--dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.fstat.err { color: var(--danger); } + +/* ---- drop zone ------------------------------------------------------ */ +.dropzone { position: absolute; inset: 0; display: none; align-items: center; + justify-content: center; pointer-events: none; z-index: 20; } +body[data-empty="1"] .dropzone { display: flex; pointer-events: auto; } +body[data-dragover="1"] .dropzone { display: flex; pointer-events: none; + background: rgb(from var(--acid) r g b / .08); } +.dz-inner { text-align: center; color: var(--dim); border: 2px dashed var(--line); + border-radius: 14px; padding: 40px 54px; background: var(--panel); + max-width: 82%; } +body[data-dragover="1"] .dz-inner { border-color: rgb(from var(--acid) r g b / .8); color: var(--ink); } +.dz-inner svg { width: 48px; height: 48px; margin-bottom: 10px; } +.dz-title { font-size: 15px; color: var(--ink); font-weight: 600; } +.dz-sub { margin-top: 5px; } +.linkish { background: none; border: none; padding: 0; font: inherit; cursor: pointer; + color: var(--acid); text-decoration: underline; } + +/* ---- modals --------------------------------------------------------- */ +.scrim { position: fixed; inset: 0; background: rgba(4,7,12,.62); z-index: 50; + display: flex; align-items: center; justify-content: center; padding: 24px; } +.modal { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; + box-shadow: 0 18px 60px rgba(0,0,0,.5); padding: 18px 20px; max-width: 560px; + width: 100%; max-height: 90vh; overflow: auto; } +.modal h2 { margin: 0 0 10px; font-size: 15px; } +.modal p { margin: 0 0 10px; color: var(--mut); } +.modal p strong { color: var(--ink); } +.mhint { font-size: 12px; } +.mhint.warn { color: var(--danger); } +.mrow { display: flex; align-items: center; gap: 8px; margin-top: 14px; } +.mfield { display: inline-flex; align-items: center; gap: 6px; color: var(--mut); font-size: 12px; } +.mfield.block { display: flex; flex-direction: column; align-items: stretch; gap: 5px; } +.check { display: flex; align-items: flex-start; gap: 8px; margin: 12px 0 0; + color: var(--ink); font-size: 12.5px; cursor: pointer; } +.check input { margin: 2px 0 0; accent-color: var(--acid); } +#sign-pad { width: 100%; height: auto; aspect-ratio: 640 / 220; background: #fff; + border: 1px solid var(--line); border-radius: 8px; cursor: crosshair; + touch-action: none; display: block; } +.summary { margin: 10px 0 0; padding-left: 18px; color: var(--mut); font-size: 12px; } +.summary li { margin: 2px 0; } +.summary li.warn { color: var(--danger); } + +.toast { position: fixed; left: 50%; bottom: 44px; transform: translateX(-50%) translateY(20px); + padding: 8px 14px; border-radius: 6px; background: rgba(11,14,20,.95); + color: #e7eaf1; font-size: 12.5px; border: 1px solid var(--line); + opacity: 0; pointer-events: none; transition: opacity 180ms, transform 180ms; + z-index: 100; max-width: 80vw; text-align: center; } +.toast.on { opacity: 1; transform: translateX(-50%) translateY(0); } +.toast.err { border-color: rgba(255,91,91,.6); color: #ffb3b3; } + +/* ---- pdf.js layer overrides ----------------------------------------- */ +/* A real gap between pages plus a drop shadow, instead of pdf.js's + transparent-border trick. */ +/* overflow-anchor off: pages change height as they take their real size and + again on every zoom, and scroll anchoring "helpfully" moves the scroll + position to compensate — which walks the reader away from the page they + were on and, worse, can park the whole document outside the viewport. */ +.viewerContainer { overflow-anchor: none; } +.pdfViewer { --page-margin: 0 auto 14px; --page-border: none; padding: 14px 0 4px; } +.pdfViewer .page { box-shadow: 0 2px 14px var(--shadow); } + +/* Our overlay sits above the canvas but below the annotation (form) layer, so + a form field stays clickable even with marks drawn around it. */ +/* Clipped to the page, because the saved file is too: a PDF viewer shows + nothing outside the crop box, so a mark that spilled past the edge on + screen would simply vanish on save. */ +.pdfViewer .page .smOverlay { position: absolute; inset: 0; z-index: 3; + pointer-events: none; overflow: hidden; } +.pdfViewer .page .annotationLayer { z-index: 4; } +.pdfViewer .page .textLayer { z-index: 2; } + +/* Tool modality. When a drawing tool is armed the text and form layers stop + taking pointer events, so a drag paints instead of selecting text or + landing in a field. Highlight is the exception: it works BY selecting + text, so the text layer stays live for it. */ +body[data-mode="draw"] .textLayer, +body[data-mode="draw"] .annotationLayer { pointer-events: none !important; } +body[data-mode="draw"] .pdfViewer .page { cursor: crosshair; } +body[data-mode="stamp"] .textLayer, +body[data-mode="stamp"] .annotationLayer { pointer-events: none !important; } +body[data-mode="stamp"] .pdfViewer .page { cursor: copy; } +body[data-mode="highlight"] .annotationLayer { pointer-events: none !important; } +body[data-mode="highlight"] .pdfViewer .page { cursor: text; } + +/* Marks are only hit-testable with the select tool, so a drawing drag is + never stolen by something already on the page. */ +body[data-mode="select"] .smOverlay { pointer-events: none; } +body[data-mode="select"] .smOverlay .mark { pointer-events: stroke; cursor: move; } +body[data-mode="select"] .smOverlay .mark[data-fill="1"] { pointer-events: all; } +.smOverlay .mark.sel { outline: none; } +.smOverlay .selbox { fill: none; stroke: var(--acid); stroke-width: 1; + stroke-dasharray: 4 3; vector-effect: non-scaling-stroke; } +.smOverlay .handle { fill: var(--acid); stroke: #101418; stroke-width: 1; + vector-effect: non-scaling-stroke; cursor: pointer; pointer-events: all; } + +/* pdf.js renders form widgets with a coloured backdrop; keep it, it is the + only cue that a field is fillable. */ +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea, +.annotationLayer .choiceWidgetAnnotation select { font: inherit; } diff --git a/bundled-addons/pdf-editor/editor.html b/bundled-addons/pdf-editor/editor.html new file mode 100644 index 00000000..f4ae57a1 --- /dev/null +++ b/bundled-addons/pdf-editor/editor.html @@ -0,0 +1,216 @@ + + + + +PDF Editor + + + + + + +
+ + + No document + + + +
+ + +
+
+
+ + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + +
+ +
+ + +
+
+ +
+ + + + +
+
+ +
+ +
+
+ +
+
+ + + +
Drop a PDF here
+
or
+
+
+
+ + + +
+ + + + + + +
+ + + + + + diff --git a/bundled-addons/pdf-editor/editor.js b/bundled-addons/pdf-editor/editor.js new file mode 100644 index 00000000..4238201c --- /dev/null +++ b/bundled-addons/pdf-editor/editor.js @@ -0,0 +1,707 @@ +// PDF Editor — the page. A full Theseus tab, opened through the "open-tab" +// capability, talking to the add-on's Node half over window.silentmode. +// +// Boot order matters: pdf.js's viewer components are published as a bundle +// that reads its API off globalThis.pdfjsLib rather than importing it, so the +// core has to be imported and parked on the global BEFORE the components +// bundle is pulled in. +// +// Find is deliberately absent from this file. Theseus captures Ctrl+F at the +// app level (main.js's before-input-event handler) and drives Chromium's own +// findInPage over the tab — so the browser's find bar already searches this +// document, with the count and next/previous the user knows from every other +// page. A second find UI inside the tab would be the worse one. What this file +// owes that arrangement is a text layer for every page, drawn or not, which is +// why lib/view.js keeps its own (see the comment there). + +import { DocModel } from "./lib/model.js"; +import { PageStrip } from "./lib/view.js"; +import { Rail } from "./lib/rail.js"; +import { Tools } from "./lib/tools.js"; +import { SignaturePad } from "./lib/signature.js"; +import { buildPdf, unencodableStamps } from "./lib/save.js"; + +const $ = (id) => document.getElementById(id); +const sm = window.silentmode || null; + +const FLATTEN_DPI = 150; // raster resolution when rebuilding a redacted page + +// ---- boot pdf.js ------------------------------------------------------ +let pdfjsLib = null; +async function bootPdfjs() { + if (pdfjsLib) return pdfjsLib; + const core = await import("./vendor/pdfjs/pdf.min.mjs"); + core.GlobalWorkerOptions.workerSrc = new URL("./vendor/pdfjs/pdf.worker.min.mjs", import.meta.url).href; + // pdf_viewer.mjs is built with the core as an external and reads it off the + // global at module-evaluation time, so this assignment has to happen first. + globalThis.pdfjsLib = core; + const viewer = await import("./vendor/pdfjs/web/pdf_viewer.mjs"); + // A module namespace object is frozen, so the components go on a wrapper + // rather than onto `core` itself. + pdfjsLib = { + getDocument: core.getDocument, + TextLayer: core.TextLayer, + setLayerDimensions: core.setLayerDimensions, + AnnotationMode: core.AnnotationMode, + viewer, + }; + return pdfjsLib; +} + +// ---- session ---------------------------------------------------------- +const session = { + bytes: null, // Uint8Array, the untouched original + pdf: null, // pdf.js PDFDocumentProxy + model: null, + strip: null, + rail: null, + tools: null, + scratchId: null, // set when the document came from the add-on's scratch dir + name: "document.pdf", +}; + +// ---- chrome ----------------------------------------------------------- +function toast(msg, err) { + const t = $("toast"); + t.textContent = msg; + t.classList.toggle("err", !!err); + t.classList.add("on"); + clearTimeout(toast._t); + toast._t = setTimeout(() => t.classList.remove("on"), err ? 4200 : 2000); +} +function status(msg, err) { + const s = $("status"); + s.textContent = msg; + s.classList.toggle("err", !!err); +} +function setBusy(on, why) { + document.body.dataset.busy = on ? "1" : ""; + if (on && why) status(why); +} + +function paintChrome() { + const m = session.model; + $("save").disabled = !m; + $("undo").disabled = !m || !m.canUndo(); + $("redo").disabled = !m || !m.canRedo(); + const nameEl = $("docname"); + nameEl.textContent = session.name || "No document"; + nameEl.classList.toggle("dirty", !!m && m.isDirty()); + document.body.dataset.empty = m ? "" : "1"; +} + +function paintPageInfo() { + const m = session.model, strip = session.strip; + if (!m || !strip) { $("pageinfo").textContent = ""; return; } + const vis = m.visible(); + const at = strip.current ? vis.indexOf(strip.current) + 1 : 1; + const pct = Math.round(strip.scale * 100); + $("pageinfo").textContent = `Page ${at} of ${vis.length} · ${pct}%`; +} + +// ---- modals ----------------------------------------------------------- +let modalResolve = null; +function openModal(id) { + for (const m of document.querySelectorAll(".modal")) m.hidden = true; + $(id).hidden = false; + $("scrim").hidden = false; + return new Promise((res) => { modalResolve = res; }); +} +function closeModal(value) { + $("scrim").hidden = true; + for (const m of document.querySelectorAll(".modal")) m.hidden = true; + const r = modalResolve; modalResolve = null; + r?.(value); +} +$("scrim").addEventListener("pointerdown", (e) => { if (e.target === $("scrim")) closeModal(null); }); + +// ---- loading ---------------------------------------------------------- +async function loadBytes(bytes, name, scratchId = null) { + if (session.pdf) await teardown(); + // pdf.js TRANSFERS the buffer it is given to its worker, which detaches our + // view of it — and pdf-lib needs those same bytes at save time. Keep the + // original and hand the worker a copy. + session.bytes = bytes; + session.name = name; + session.scratchId = scratchId; + setBusy(true, "Opening…"); + const lib = await bootPdfjs(); + const task = lib.getDocument({ + data: bytes.slice(), + standardFontDataUrl: "vendor/pdfjs/standard_fonts/", + wasmUrl: "vendor/pdfjs/wasm/", + iccUrl: "vendor/pdfjs/iccs/", + // XFA forms render best-effort. pdf-lib cannot write XFA back, so a + // dynamic XFA form is view-and-print only here; see the warning below. + enableXfa: true, + enableScripting: false, + isEvalSupported: false, + }); + let pdf; + try { pdf = await task.promise; } + catch (e) { + setBusy(false); + status(`Could not open ${name}: ${e?.message || e}`, true); + toast(`Could not open that PDF: ${e?.message || e}`, true); + return false; + } + session.pdf = pdf; + + const pageInfo = []; + for (let i = 1; i <= pdf.numPages; i++) { + const p = await pdf.getPage(i); + const vp = p.getViewport({ scale: 1, rotation: 0 }); + pageInfo.push({ width: vp.width, height: vp.height, rotate: p.rotate }); + } + session.model = new DocModel({ name, pageCount: pdf.numPages, pageInfo }); + + const eventBus = new lib.viewer.EventBus(); + const linkService = new lib.viewer.PDFLinkService({ + eventBus, externalLinkTarget: lib.viewer.LinkTarget.BLANK, + }); + const layerProperties = { + annotationEditorUIManager: null, + annotationStorage: pdf.annotationStorage, + downloadManager: null, + enableScripting: false, + fieldObjectsPromise: pdf.getFieldObjects().catch(() => null), + findController: null, + hasJSActionsPromise: pdf.hasJSActions().catch(() => false), + linkService, + }; + + session.strip = new PageStrip({ + container: $("viewerContainer"), viewer: $("viewer"), + pdfjsLib: lib, pdf, model: session.model, eventBus, layerProperties, + }); + await session.strip.build(); + + // A shim is all PDFLinkService needs to make a PDF's own table-of-contents + // links jump to the right page. + linkService.setViewer(linkShim(session.strip, session.model)); + linkService.setDocument(pdf, null); + + session.rail = new Rail({ + list: $("rail-list"), countEl: $("rail-count"), + model: session.model, strip: session.strip, + host: { rotate: onRotate, toggleDelete: onToggleDelete, reorder: onReorder }, + }); + session.rail.build(); + + session.tools = new Tools({ + strip: session.strip, model: session.model, + host: { + toast, onChange: () => { paintChrome(); }, + openTextModal: onTextModal, + openSignaturePad: onSignaturePad, + signature: () => savedSignature, + }, + }); + session.tools.setTool("select"); + + session.strip.onCurrentChange((uid) => { session.rail.markCurrent(uid); paintPageInfo(); }); + session.model.onChange(() => { paintChrome(); }); + + setBusy(false); + const forms = await countFields(pdf); + const notes = [`${pdf.numPages} page${pdf.numPages === 1 ? "" : "s"}`]; + if (forms.fields) notes.push(`${forms.fields} form field${forms.fields === 1 ? "" : "s"}`); + if (forms.xfa) notes.push("XFA form — fields can be filled here but cannot be saved back"); + status(notes.join(" · "), !!forms.xfa); + paintChrome(); + paintPageInfo(); + return true; +} + +async function countFields(pdf) { + let fields = 0, xfa = false; + try { + const fo = await pdf.getFieldObjects(); + if (fo) for (const v of fo.values()) fields += v.length; + } catch {} + try { xfa = !!(await pdf.getMetadata())?.info?.IsXFAPresent; } catch {} + return { fields, xfa }; +} + +function linkShim(strip, model) { + return { + get pagesCount() { return model.visible().length; }, + get currentPageNumber() { return Math.max(1, model.visible().indexOf(strip.current) + 1); }, + set currentPageNumber(n) { const uid = model.visible()[n - 1]; if (uid) strip.scrollTo(uid); }, + get currentScaleValue() { return strip.scaleMode; }, + set currentScaleValue(v) { strip.setScaleMode(Number.isFinite(+v) ? +v : v); }, + get currentScale() { return strip.scale; }, + get isInPresentationMode() { return false; }, + scrollPageIntoView({ pageNumber }) { + // pageNumber is a SOURCE page number; map it through our order so a link + // still lands on the right page after a reorder. + const uid = model.order.find((u) => model.page(u).src === pageNumber - 1); + if (uid && !model.page(uid).deleted) strip.scrollTo(uid); + }, + get pageViewsReady() { return true; }, + getPageView(i) { const uid = model.visible()[i]; return uid ? strip.views.get(uid)?.pv : null; }, + }; +} + +async function teardown() { + // Tools first: it is the one holding listeners on the container, and a stale + // one would go on handling clicks against a strip that no longer exists. + try { session.tools?.destroy(); } catch {} + try { session.strip?.destroy(); } catch {} + try { session.rail?.destroy(); } catch {} + try { await session.pdf?.destroy(); } catch {} + session.pdf = null; session.model = null; session.strip = null; + session.rail = null; session.tools = null; + $("viewer").textContent = ""; +} + +// ---- open paths ------------------------------------------------------- +async function openFile(file) { + if (!file) return; + const looksPdf = /\.pdf$/i.test(file.name) || file.type === "application/pdf"; + if (!looksPdf) { toast(`${file.name} is not a PDF`, true); return; } + if (!(await confirmDiscard())) return; + const buf = new Uint8Array(await file.arrayBuffer()); + if (buf.subarray(0, 5).every((b, i) => b === "%PDF-".charCodeAt(i)) === false) { + toast("That file does not start with a PDF header", true); + return; + } + await loadBytes(buf, file.name); +} + +$("file-input").addEventListener("change", (e) => { + const f = e.target.files?.[0]; + e.target.value = ""; + openFile(f); +}); +const pick = () => $("file-input").click(); +$("open").addEventListener("click", pick); +$("open2").addEventListener("click", pick); + +// Drag and drop anywhere in the tab. +for (const type of ["dragenter", "dragover"]) { + window.addEventListener(type, (e) => { + if (![...(e.dataTransfer?.types || [])].includes("Files")) return; + e.preventDefault(); + e.dataTransfer.dropEffect = "copy"; + document.body.dataset.dragover = "1"; + }); +} +window.addEventListener("dragleave", (e) => { + if (e.relatedTarget) return; // still inside the window + document.body.dataset.dragover = ""; +}); +window.addEventListener("drop", (e) => { + if (![...(e.dataTransfer?.types || [])].includes("Files")) return; + e.preventDefault(); + document.body.dataset.dragover = ""; + openFile(e.dataTransfer.files?.[0]); +}); + +// ---- page operations -------------------------------------------------- +async function onRotate(uid) { + session.model.rotatePage(uid, 90); + session.strip.layout(); + await session.strip.redraw(uid); + session.rail.refresh(uid); + paintChrome(); +} +function onToggleDelete(uid) { + const was = session.model.page(uid).deleted; + const ok = session.model.setDeleted(uid, !was); + if (!ok && !was) { toast("A PDF needs at least one page", true); return; } + session.strip.layout(); + session.rail.build(); + paintChrome(); + paintPageInfo(); +} +function onReorder(uid, beforeUid) { + session.model.reorder(uid, beforeUid); + session.strip.layout(); + session.rail.build(); + paintChrome(); + paintPageInfo(); +} +$("restore-pages").addEventListener("click", () => { + session.model.restoreAllPages(); + session.strip.layout(); + session.rail.build(); + paintChrome(); +}); + +// ---- toolbar ---------------------------------------------------------- +let redactAcknowledged = false; +let flattenRedactions = true; + +for (const b of document.querySelectorAll(".tool[data-tool]")) { + b.addEventListener("click", async () => { + const t = b.dataset.tool; + if (t === "redact" && !redactAcknowledged) { + const ok = await openModal("modal-redact"); + if (!ok) return; + redactAcknowledged = true; + flattenRedactions = $("redact-flatten").checked; + try { await sm?.storage?.set("redactAcknowledged", true); } catch {} + } + for (const o of document.querySelectorAll(".tool")) o.classList.toggle("active", o === b); + session.tools?.setTool(t); + status(TOOL_HINTS[t] || ""); + }); +} +$("redact-ok").addEventListener("click", () => closeModal(true)); +$("redact-cancel").addEventListener("click", () => closeModal(null)); + +const TOOL_HINTS = { + select: "Click a mark to select it, drag to move it, Delete to remove it.", + highlight: "Drag across text to highlight it.", + pen: "Drag to draw.", + rect: "Drag to draw a rectangle.", + ellipse: "Drag to draw an ellipse.", + arrow: "Drag from tail to head.", + text: "Click where the text should start.", + signature: "Click to place your signature.", + redact: "Drag a box over what has to go. Redacted pages are rebuilt as images on save.", +}; + +for (const s of document.querySelectorAll(".swatch")) { + s.addEventListener("click", () => { + for (const o of document.querySelectorAll(".swatch")) o.classList.toggle("active", o === s); + session.tools?.setColor(s.dataset.color); + }); +} +for (const w of document.querySelectorAll(".width")) { + w.addEventListener("click", () => { + for (const o of document.querySelectorAll(".width")) o.classList.toggle("active", o === w); + session.tools?.setWidth(parseFloat(w.dataset.width)); + }); +} + +$("undo").addEventListener("click", () => { session.model?.undo(); afterHistory(); }); +$("redo").addEventListener("click", () => { session.model?.redo(); afterHistory(); }); +function afterHistory() { + if (!session.model) return; + session.strip.layout(); + session.rail.build(); + session.tools.selected = null; + session.strip.refreshAllOverlays(null); + paintChrome(); + paintPageInfo(); +} + +$("zoom").addEventListener("change", (e) => { + const v = e.target.value; + session.strip?.setScaleMode(/^[\d.]+$/.test(v) ? parseFloat(v) : v); + paintPageInfo(); +}); +$("zoom-in").addEventListener("click", () => { session.strip?.stepScale(1); syncZoomSelect(); }); +$("zoom-out").addEventListener("click", () => { session.strip?.stepScale(-1); syncZoomSelect(); }); +function syncZoomSelect() { + if (!session.strip) return; + const exact = String(session.strip.scale); + const opt = [...$("zoom").options].find((o) => o.value === exact); + $("zoom").value = opt ? exact : $("zoom").value; + paintPageInfo(); +} +$("toggle-rail").addEventListener("click", () => { + const off = document.body.dataset.rail === "off"; + document.body.dataset.rail = off ? "" : "off"; + if (off) session.rail?.build(); + session.strip?.computeScale(); + session.strip?.layout(); + paintPageInfo(); +}); + +let resizeT = null; +window.addEventListener("resize", () => { + clearTimeout(resizeT); + resizeT = setTimeout(() => { + if (!session.strip) return; + if (typeof session.strip.scaleMode === "string") { session.strip.computeScale(); session.strip.layout(); } + paintPageInfo(); + }, 140); +}); + +// ---- text stamp ------------------------------------------------------- +async function onTextModal(at) { + $("text-body").value = ""; + $("text-warn").hidden = true; + const p = openModal("modal-text"); + setTimeout(() => $("text-body").focus(), 30); + const ok = await p; + if (!ok) return null; + const text = $("text-body").value; + const size = parseFloat($("text-size").value) || 12; + return session.tools.placeText(at, text, size); +} +$("text-ok").addEventListener("click", () => closeModal(true)); +$("text-cancel").addEventListener("click", () => closeModal(null)); +$("text-body").addEventListener("input", () => { + const n = unencodableStampsIn($("text-body").value); + const w = $("text-warn"); + w.hidden = n === 0; + w.classList.add("warn"); + if (n) w.textContent = `${n} character${n === 1 ? "" : "s"} cannot be written with the built-in font and will be saved as "?".`; +}); +function unencodableStampsIn(text) { + // Same WinAnsi test the writer uses, applied live so the user finds out + // before placing the stamp rather than after saving. + let n = 0; + for (const ch of String(text)) { + const code = ch.codePointAt(0); + const ok = (code >= 0x20 && code <= 0x7e) || (code >= 0xa0 && code <= 0xff) || + [0x2018, 0x2019, 0x201c, 0x201d, 0x2013, 0x2014, 0x2022, 0x20ac, 0x2026, 0x2122].includes(code) || + ch === "\n"; + if (!ok) n++; + } + return n; +} + +// ---- signature -------------------------------------------------------- +let savedSignature = null; +let pad = null; +async function onSignaturePad() { + if (!pad) { + pad = new SignaturePad($("sign-pad")); + pad.onChange((has) => { $("sign-ok").disabled = !has; }); + } + pad.clear(); + const ok = await openModal("modal-sign"); + if (!ok) return null; + const res = pad.result(); + if (!res) return null; + savedSignature = res; + try { await sm?.storage?.set("signature", res); } catch {} + return res; +} +$("sign-ok").addEventListener("click", () => closeModal(true)); +$("sign-cancel").addEventListener("click", () => closeModal(null)); +$("sign-clear").addEventListener("click", () => pad?.clear()); + +// ---- save ------------------------------------------------------------- +function defaultSaveName() { + const base = String(session.name || "document.pdf").replace(/\.pdf$/i, ""); + return `${base}-edited.pdf`; +} + +/** + * Everything the user typed into a form field, keyed by field NAME. + * + * Driven from the document's field list rather than from the storage's + * contents. pdf.js keys its annotation storage by annotation id ("11R"), which + * means nothing to pdf-lib — pdf-lib addresses fields by name — so the field + * list is needed for the mapping either way, and iterating it also keeps + * pdf.js's own editor bookkeeping out of the results for free. + */ +async function harvestFormValues(pdf) { + const out = []; + let fields = null; + try { fields = await pdf.getFieldObjects(); } catch { return out; } + if (!fields) return out; + const storage = pdf.annotationStorage; + for (const [name, objs] of fields) { + for (const o of objs || []) { + // `has` distinguishes a field the user touched from one they left alone; + // writing back every field would rewrite appearances across the whole + // document for no reason. + if (!o?.id || !storage.has(o.id)) continue; + const entry = storage.getRawValue(o.id); + if (!entry || typeof entry !== "object" || !("value" in entry)) continue; + out.push({ name, value: entry.value }); + break; // a field's kids (radio buttons) share one value + } + } + return out; +} + +/** Render one page to a PNG at FLATTEN_DPI, unrotated, for the flatten pass. */ +async function rasterizePage(uid) { + const entry = session.strip.views.get(uid); + const scale = FLATTEN_DPI / 72; + // rotation 0, so the image lands in the page's own unrotated coordinate + // space — the page's /Rotate then presents it exactly as before. + const vp = entry.pdfPage.getViewport({ scale, rotation: 0 }); + const canvas = document.createElement("canvas"); + canvas.width = Math.max(1, Math.ceil(vp.width)); + canvas.height = Math.max(1, Math.ceil(vp.height)); + const ctx = canvas.getContext("2d", { alpha: false }); + ctx.fillStyle = "#ffffff"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + await entry.pdfPage.render({ canvasContext: ctx, viewport: vp, intent: "print" }).promise; + const blob = await new Promise((res, rej) => + canvas.toBlob((b) => b ? res(b) : rej(new Error("toBlob returned null")), "image/png")); + return new Uint8Array(await blob.arrayBuffer()); +} + +async function doSave() { + const m = session.model; + if (!m) return; + $("save-name").value = defaultSaveName(); + const summary = $("save-summary"); + summary.textContent = ""; + const lines = []; + if (m.annots.length) lines.push([`${m.annots.length} mark${m.annots.length === 1 ? "" : "s"} written into the file`, false]); + const formValues = await harvestFormValues(session.pdf); + if (formValues.length) lines.push([`${formValues.length} form field${formValues.length === 1 ? "" : "s"} filled in`, false]); + if (m.deletedCount()) lines.push([`${m.deletedCount()} page${m.deletedCount() === 1 ? "" : "s"} removed`, false]); + if (m.pagesChanged() && !m.deletedCount()) lines.push(["pages reordered", false]); + if (m.rotationsChanged()) lines.push(["page rotation changed", false]); + const red = m.redactedPages(); + if (red.size) { + lines.push([flattenRedactions + ? `${red.size} redacted page${red.size === 1 ? "" : "s"} rebuilt as an image, so the text under the boxes is gone` + : `${red.size} redacted page${red.size === 1 ? "" : "s"} — the text under the boxes stays extractable`, + !flattenRedactions]); + } + const bad = unencodableStamps(m); + if (bad) lines.push([`${bad} text stamp${bad === 1 ? "" : "s"} contain characters the built-in font cannot write`, true]); + if (!lines.length) lines.push(["no changes — this saves a copy of the original", false]); + for (const [text, warn] of lines) { + const li = document.createElement("li"); + li.textContent = text; + if (warn) li.className = "warn"; + summary.append(li); + } + + const go = await openModal("modal-save"); + if (!go) return; + let filename = String($("save-name").value || "").trim() || defaultSaveName(); + if (!/\.pdf$/i.test(filename)) filename += ".pdf"; + + setBusy(true, "Writing…"); + try { + const { bytes, report } = await buildPdf({ + originalBytes: session.bytes, + model: m, + formValues, + flatten: flattenRedactions, + rasterize: rasterizePage, + }); + const blob = new Blob([bytes], { type: "application/pdf" }); + const url = URL.createObjectURL(blob); + const a = $("download-link"); + a.href = url; + a.download = filename; + a.click(); + setTimeout(() => URL.revokeObjectURL(url), 8000); + m.markSaved(); + paintChrome(); + const kb = (bytes.length / 1024).toFixed(0); + status(`Saved ${filename} · ${kb} KB${report.flattened ? ` · ${report.flattened} page(s) rebuilt as images` : ""}`); + toast(`Saved ${filename} (${kb} KB)`); + for (const w of report.warn) toast(w, true); + } catch (e) { + console.error("save failed:", e); + status(`Save failed: ${e?.message || e}`, true); + toast(`Save failed: ${e?.message || e}`, true); + } finally { + setBusy(false); + } +} +$("save").addEventListener("click", doSave); +$("save-go").addEventListener("click", () => closeModal(true)); +$("save-cancel").addEventListener("click", () => closeModal(null)); + +// ---- discard / close -------------------------------------------------- +async function confirmDiscard() { + if (!session.model || !session.model.isDirty()) return true; + // Deliberately the browser's own confirm(): it is modal against the tab, it + // cannot be dismissed by a stray click the way the in-page scrim can, and + // losing an hour of markup to a misplaced click is not a risk worth a + // prettier dialog. + return window.confirm("This document has unsaved changes. Discard them?"); +} +$("discard").addEventListener("click", async () => { + if (!(await confirmDiscard())) return; + if (session.scratchId && sm?.invoke) { + try { await sm.invoke("release", { id: session.scratchId }); } catch {} + } + try { sm?.closeTab?.(); } catch {} +}); +// Belt and braces for a tab closed from the tab strip rather than our button. +window.addEventListener("beforeunload", (e) => { + if (session.model?.isDirty()) { e.preventDefault(); e.returnValue = ""; } +}); + +// A link inside a PDF must not navigate this tab — that would drop the whole +// editing session on the floor. Hand it to the add-on, which opens a new tab. +$("viewerContainer").addEventListener("click", (e) => { + const a = e.target?.closest?.("a[href]"); + if (!a) return; + const href = a.getAttribute("href") || ""; + if (!/^https?:/i.test(href)) return; + e.preventDefault(); + e.stopPropagation(); + sm?.invoke?.("openExternal", { url: href }) + .catch((err) => toast(`Could not open that link: ${err?.message || err}`, true)); +}, true); + +// ---- keyboard --------------------------------------------------------- +// Ctrl+F, Ctrl+B and Ctrl +/-/0 never reach this page — Theseus claims them +// app-wide for find, the add-on sidebar and tab zoom. PDF zoom therefore lives +// on bare +/-/0, which is what desktop readers use anyway. +const TOOL_KEYS = { v: "select", h: "highlight", p: "pen", r: "rect", o: "ellipse", a: "arrow", t: "text", g: "signature" }; +window.addEventListener("keydown", (e) => { + // A modal owns the keyboard while it is up: Escape cancels, and Enter + // commits unless the focus is in the textarea, where it means a newline. + if (!$("scrim").hidden) { + if (e.key === "Escape") { closeModal(null); e.preventDefault(); return; } + if (e.key === "Enter" && e.target?.tagName !== "TEXTAREA" && !e.shiftKey) { + const go = document.querySelector(".modal:not([hidden]) .btn.primary:not(:disabled)"); + if (go) { go.click(); e.preventDefault(); } + } + return; + } + const typing = /^(INPUT|TEXTAREA|SELECT)$/.test(e.target?.tagName || "") || e.target?.isContentEditable; + const meta = e.ctrlKey || e.metaKey; + + if (meta && e.key.toLowerCase() === "s") { e.preventDefault(); doSave(); return; } + if (meta && e.key.toLowerCase() === "o") { e.preventDefault(); pick(); return; } + if (meta && e.key.toLowerCase() === "z") { + e.preventDefault(); + if (e.shiftKey) session.model?.redo(); else session.model?.undo(); + afterHistory(); + return; + } + if (typing) return; + + if (e.key === "Escape") { + if (session.tools?.tool !== "select") { + document.querySelector('.tool[data-tool="select"]')?.click(); + e.preventDefault(); + } + return; + } + if (e.key === "Delete" || e.key === "Backspace") { + if (session.tools?.deleteSelected()) { paintChrome(); e.preventDefault(); } + return; + } + if (e.key === "+" || e.key === "=") { session.strip?.stepScale(1); syncZoomSelect(); e.preventDefault(); return; } + if (e.key === "-") { session.strip?.stepScale(-1); syncZoomSelect(); e.preventDefault(); return; } + if (e.key === "0") { $("zoom").value = "page-width"; session.strip?.setScaleMode("page-width"); paintPageInfo(); e.preventDefault(); return; } + + const t = TOOL_KEYS[e.key.toLowerCase()]; + if (t) { document.querySelector(`.tool[data-tool="${t}"]`)?.click(); e.preventDefault(); } +}); + +// ---- start ------------------------------------------------------------ +(async function start() { + try { + redactAcknowledged = (await sm?.storage?.get("redactAcknowledged", false)) === true; + const sig = await sm?.storage?.get("signature", null); + if (sig && Array.isArray(sig.strokes)) savedSignature = sig; + } catch {} + + const id = new URLSearchParams(location.search).get("doc"); + if (!id) { status("Drop a PDF here, or use Open."); paintChrome(); return; } + if (!sm?.invoke) { status("This page has to be opened from the PDF Editor add-on.", true); return; } + setBusy(true, "Fetching…"); + try { + const res = await sm.invoke("getBytes", { id }); + const bytes = res.data instanceof Uint8Array ? res.data : new Uint8Array(res.data); + await loadBytes(bytes, res.name || "document.pdf", id); + } catch (e) { + setBusy(false); + status(`Could not load that document: ${e?.message || e}`, true); + paintChrome(); + } +})(); diff --git a/bundled-addons/pdf-editor/index.js b/bundled-addons/pdf-editor/index.js new file mode 100644 index 00000000..b84cb92d --- /dev/null +++ b/bundled-addons/pdf-editor/index.js @@ -0,0 +1,189 @@ +// PDF Editor — the Node half. Small on purpose: everything interesting +// happens in editor.html, which is a full Theseus tab (the "open-tab" +// capability) rendering with pdf.js and writing with pdf-lib. +// +// This file exists for the three things a file:// page cannot do itself: +// +// 1. Launch. The dock's "Open a PDF…" item opens the editor tab. Nothing +// is handed over; the editor shows its own drop zone. +// 2. Fetch a PDF the user right-clicked. A file:// page has an opaque +// origin, so its cross-origin fetch of https://host/doc.pdf is refused +// by CORS on essentially every real server. electron's `net.fetch` +// runs on the app session instead, so it follows whatever proxy the +// user configured, and the bytes land in a scratch file. +// 3. Serve those bytes back. The editor pulls them with +// invoke("getBytes", {id}). +// +// Handoff is a scratch FILE plus an id in the query string, not a +// storage.__pending entry. The screenshot add-on shipped __pending first +// and had to abandon it: the receiving page drains the entry on first +// paint, so a reload — or Theseus restoring the tab on next launch — finds +// an empty slot and an editor with no document. An id in the URL survives +// both, because the bytes are still on disk. It also keeps a 20 MB PDF out +// of a kv store whose every write rewrites the whole JSON file. + +const fs = require("node:fs"); +const path = require("node:path"); + +const SCRATCH_DIR = "pdf-editor-scratch"; +const MAX_RECENT = 8; // scratch files kept before the oldest is reaped +const MAX_BYTES = 200 * 1024 * 1024; // refuse anything absurd before we buffer it + +module.exports = { + activate(api) { + // Per-add-on scratch dir under /addons-data/, a sibling of the + // kv JSON. We never write inside the add-on folder — a user reading the + // shipped source should see only what shipped. + const dataParent = path.dirname(path.join(api.folder, "..")); + const scratchDir = path.join(dataParent, "addons-data", SCRATCH_DIR); + try { fs.mkdirSync(scratchDir, { recursive: true }); } + catch (e) { api.log("scratch mkdir failed:", e?.message); } + + // ---- scratch bookkeeping ------------------------------------------ + // The ring lives in api.storage so it survives restarts, and every read + // prunes entries whose file has gone missing. + function readRing() { + const r = api.storage.get("recent", []); + return Array.isArray(r) ? r : []; + } + function pruneRing(ring) { + const alive = ring.filter((r) => { try { fs.accessSync(r.path); return true; } catch { return false; } }); + const keep = alive.slice(0, MAX_RECENT); + for (const r of alive.slice(MAX_RECENT)) { try { fs.unlinkSync(r.path); } catch {} } + return keep; + } + function remember(entry) { + let ring = readRing(); + ring.unshift(entry); + ring = pruneRing(ring); + api.storage.set("recent", ring); + } + function findEntry(id) { + return pruneRing(readRing()).find((r) => r.id === id) || null; + } + function newId() { + return "doc-" + Date.now().toString(36) + "-" + Math.random().toString(36).slice(2, 8); + } + + // A filename we are willing to put on disk and later show as the + // document's name. Anything path-ish or non-printable is discarded, not + // escaped — the fallback name is always acceptable. + function safeName(raw) { + const base = String(raw || "").split(/[\\/]/).pop().trim(); + const clean = base.replace(/[\x00-\x1f<>:"|?*]/g, "").slice(0, 120); + if (!clean || clean === "." || clean === "..") return "document.pdf"; + return /\.pdf$/i.test(clean) ? clean : clean + ".pdf"; + } + // The last path segment of a URL is the best filename guess we have. + function nameFromUrl(url) { + try { + const u = new URL(url); + const seg = decodeURIComponent(u.pathname.split("/").filter(Boolean).pop() || ""); + return safeName(seg || u.hostname + ".pdf"); + } catch { return "document.pdf"; } + } + + function writeScratch(buf, name) { + const id = newId(); + const file = path.join(scratchDir, id + ".pdf"); + fs.writeFileSync(file, buf); + const entry = { id, name, path: file, size: buf.length, at: Date.now() }; + remember(entry); + return entry; + } + + // ---- launch paths ------------------------------------------------- + // Dock → "Open a PDF…": a bare editor tab. The editor's own drop zone + // and File → Open take it from there, so no bytes cross IPC at all. + api.onMessage("menu-select", (payload) => { + const item = String(payload && payload.id || ""); + if (item !== "open") throw new Error(`unknown menu item: ${item}`); + api.openTab("editor.html"); + api.log("opened an empty editor tab"); + return { ok: true }; + }); + + // Right-click a link → fetch it here, hand the editor an id. + api.onMessage("context-menu", async (payload) => { + if (String(payload && payload.itemId || "") !== "open-link") return; + const url = String(payload && payload.linkURL || "").trim(); + if (!url) { api.log("context-menu fired with no link"); return { ok: false }; } + let parsed; + try { parsed = new URL(url); } catch { throw new Error(`not a URL: ${url.slice(0, 80)}`); } + if (!/^https?:$/.test(parsed.protocol)) { + throw new Error(`refusing to fetch a ${parsed.protocol} link`); + } + const { net } = api.require("electron"); + api.log(`fetching ${parsed.origin}${parsed.pathname.slice(0, 60)} …`); + const res = await net.fetch(url); + if (!res.ok) throw new Error(`${res.status} ${res.statusText || "fetch failed"}`); + const len = Number(res.headers.get("content-length") || 0); + if (len > MAX_BYTES) throw new Error(`refusing ${(len / 1048576).toFixed(0)} MB — over the ${MAX_BYTES / 1048576} MB cap`); + const buf = Buffer.from(await res.arrayBuffer()); + if (buf.length > MAX_BYTES) throw new Error(`refusing ${(buf.length / 1048576).toFixed(0)} MB — over the cap`); + // %PDF is the only header a PDF can start with. A server that answered + // an HTML error page with 200 would otherwise reach the editor and + // fail there with a much less useful message. + if (buf.subarray(0, 5).toString("latin1") !== "%PDF-") { + throw new Error("that link did not answer with a PDF"); + } + const entry = writeScratch(buf, nameFromUrl(url)); + api.openTab("editor.html", { query: { doc: entry.id } }); + api.log(`fetched ${entry.name} (${entry.size} bytes) → ${entry.id}`); + return { ok: true, id: entry.id }; + }); + + // ---- editor-facing handlers --------------------------------------- + // Bytes go across as a Buffer, which structured-clones into a + // Uint8Array on the page side. Base64 would inflate a 20 MB file to 27 + // MB of string for no benefit. + api.onMessage("getBytes", (payload) => { + const id = String(payload && payload.id || ""); + const hit = findEntry(id); + if (!hit) throw new Error(`no scratch document "${id}"`); + return { id: hit.id, name: hit.name, size: hit.size, at: hit.at, data: fs.readFileSync(hit.path) }; + }); + + // The editor calls this when the user closes a document it had been + // handed, so a fetched PDF does not sit in scratch forever. Missing ids + // are fine — the ring may already have reaped it. + api.onMessage("release", (payload) => { + const id = String(payload && payload.id || ""); + const hit = findEntry(id); + if (hit) { try { fs.unlinkSync(hit.path); } catch {} } + api.storage.set("recent", readRing().filter((r) => r.id !== id)); + return { ok: true }; + }); + + // A link inside a PDF, clicked. It must NOT navigate the editor's own tab — + // that would throw away an unsaved editing session — so the editor hands + // the URL here and we open it as a new tab instead. + api.onMessage("openExternal", (payload) => { + const url = String(payload && payload.url || "").trim(); + let parsed; + try { parsed = new URL(url); } catch { throw new Error("not a URL"); } + if (!/^https?:$/.test(parsed.protocol)) throw new Error(`refusing to open a ${parsed.protocol} link`); + api.openTab(parsed.href); + return { ok: true }; + }); + + // Reveal the scratch dir. Useful when a save went somewhere the user + // cannot find, and for support questions about what is cached. + api.onMessage("openScratch", () => { + const { shell } = api.require("electron"); + shell.openPath(scratchDir); + return { ok: true, path: scratchDir }; + }); + + // Reap on activation: scratch is a cache, and a crash mid-session can + // leave files with no ring entry pointing at them. + try { + const known = new Set(readRing().map((r) => path.basename(r.path))); + for (const f of fs.readdirSync(scratchDir)) { + if (!known.has(f)) fs.unlinkSync(path.join(scratchDir, f)); + } + } catch (e) { api.log("scratch reap skipped:", e?.message); } + + api.log("registered pdf-editor toolbar menu + link context-menu item"); + }, +}; diff --git a/bundled-addons/pdf-editor/lib/model.js b/bundled-addons/pdf-editor/lib/model.js new file mode 100644 index 00000000..0f560125 --- /dev/null +++ b/bundled-addons/pdf-editor/lib/model.js @@ -0,0 +1,188 @@ +// The editable state of one open document, and the undo stack over it. +// +// Two rules hold this together: +// +// 1. Every mark is stored in PDF user space — points, origin bottom-left, +// the page's own unrotated coordinate system. Not screen pixels. That +// is the one space shared by pdf.js (viewport.convertToPdfPoint) and +// pdf-lib (page.drawX), so a mark survives zooming, rotating and +// reordering without a conversion table, and save-time needs no +// knowledge of how the page happened to be displayed. +// +// 2. Marks are keyed to a page's UID, never to its position. Reordering +// rewrites `order`; it does not touch a single annotation. A UID also +// stays valid while a page is deleted, so undeleting restores that +// page's marks with it. +// +// Undo is snapshot-based, like the screenshot editor's. The alternative — +// paired do/undo commands — needs a correct inverse for each of nine mark +// types plus reorder, rotate and delete, and one wrong inverse corrupts the +// document silently. A snapshot of this state is a few KB even with long pen +// paths, so there is nothing to win by being clever. + +const UNDO_MAX = 60; + +let seq = 0; +export function nextId(prefix = "m") { return `${prefix}${++seq}-${Math.random().toString(36).slice(2, 7)}`; } + +export class DocModel { + constructor({ name, pageCount, pageInfo }) { + this.name = name; + // pageInfo[i] = { width, height, rotate } straight from pdf.js, in the + // source document's order. Immutable — it describes the file, not our + // edits. + this.pageInfo = pageInfo; + this.pages = new Map(); + this.order = []; + for (let i = 0; i < pageCount; i++) { + const uid = `p${i}`; + this.pages.set(uid, { uid, src: i, rotate: 0, deleted: false }); + this.order.push(uid); + } + this.annots = []; + this._undo = []; + this._redo = []; + this._onChange = []; + this.savedMark = this._key(); // snapshot identity at last save, for the dirty flag + } + + onChange(fn) { this._onChange.push(fn); } + _emit(what) { for (const fn of this._onChange) { try { fn(what); } catch (e) { console.warn("model listener threw:", e); } } } + + // ---- derived views ------------------------------------------------ + /** UIDs in display order, deleted pages left out. */ + visible() { return this.order.filter((uid) => !this.pages.get(uid).deleted); } + page(uid) { return this.pages.get(uid); } + /** Total rotation to display a page at: the file's own /Rotate plus ours. */ + displayRotation(uid) { + const p = this.pages.get(uid); + return (((this.pageInfo[p.src].rotate + p.rotate) % 360) + 360) % 360; + } + /** Our added rotation only — what PDFPageView.update({rotation}) wants. */ + extraRotation(uid) { return ((this.pages.get(uid).rotate % 360) + 360) % 360; } + size(uid) { const p = this.pages.get(uid); return this.pageInfo[p.src]; } + annotsFor(uid) { return this.annots.filter((a) => a.page === uid); } + annot(id) { return this.annots.find((a) => a.id === id) || null; } + deletedCount() { return this.order.filter((uid) => this.pages.get(uid).deleted).length; } + + hasRedactions() { return this.annots.some((a) => a.kind === "redact"); } + redactedPages() { + return new Set(this.annots.filter((a) => a.kind === "redact").map((a) => a.page)); + } + /** True when the page list differs from the file's, so save must rebuild it. */ + pagesChanged() { + if (this.deletedCount() > 0) return true; + return this.order.some((uid, i) => this.pages.get(uid).src !== i); + } + rotationsChanged() { return this.order.some((uid) => this.pages.get(uid).rotate % 360 !== 0); } + + // ---- history ------------------------------------------------------ + _snapshot() { + return { + annots: structuredClone(this.annots), + order: this.order.slice(), + pages: this.order.map((uid) => { const p = this.pages.get(uid); return [uid, p.rotate, p.deleted]; }), + }; + } + _restore(s) { + this.annots = structuredClone(s.annots); + this.order = s.order.slice(); + for (const [uid, rotate, deleted] of s.pages) { + const p = this.pages.get(uid); + if (p) { p.rotate = rotate; p.deleted = deleted; } + } + } + // A cheap identity for "has anything changed since the last save". + _key() { + return JSON.stringify([this.order, this.order.map((u) => [this.pages.get(u).rotate, this.pages.get(u).deleted]), this.annots.length, + this.annots.map((a) => a.id)]); + } + + /** Wrap a mutation so it lands on the undo stack as one step. */ + edit(label, fn) { + const before = this._snapshot(); + const r = fn(); + this._undo.push({ label, before }); + if (this._undo.length > UNDO_MAX) this._undo.shift(); + this._redo = []; + this._emit(label); + return r; + } + canUndo() { return this._undo.length > 0; } + canRedo() { return this._redo.length > 0; } + undo() { + const step = this._undo.pop(); + if (!step) return null; + this._redo.push({ label: step.label, before: this._snapshot() }); + this._restore(step.before); + this._emit("undo:" + step.label); + return step.label; + } + redo() { + const step = this._redo.pop(); + if (!step) return null; + this._undo.push({ label: step.label, before: this._snapshot() }); + this._restore(step.before); + this._emit("redo:" + step.label); + return step.label; + } + markSaved() { this.savedMark = this._key(); this._emit("saved"); } + isDirty() { return this._key() !== this.savedMark; } + + // ---- mutations ---------------------------------------------------- + addAnnot(a) { + return this.edit(a.kind, () => { + const full = { id: nextId("a"), ...a }; + this.annots.push(full); + return full; + }); + } + removeAnnot(id) { + const a = this.annot(id); + if (!a) return false; + return this.edit("delete " + a.kind, () => { + this.annots = this.annots.filter((x) => x.id !== id); + return true; + }); + } + /** Shift a mark by a user-space delta. `patch` is applied to the mark. */ + moveAnnot(id, patch) { + const a = this.annot(id); + if (!a) return false; + return this.edit("move " + a.kind, () => { Object.assign(a, patch); return true; }); + } + + rotatePage(uid, deltaDeg) { + return this.edit("rotate", () => { + const p = this.pages.get(uid); + p.rotate = (((p.rotate + deltaDeg) % 360) + 360) % 360; + return p.rotate; + }); + } + setDeleted(uid, deleted) { + return this.edit(deleted ? "delete page" : "restore page", () => { + this.pages.get(uid).deleted = !!deleted; + // Never leave nothing behind — a zero-page PDF cannot be written. + if (this.visible().length === 0) { this.pages.get(uid).deleted = false; return false; } + return true; + }); + } + restoreAllPages() { + return this.edit("restore pages", () => { + for (const uid of this.order) this.pages.get(uid).deleted = false; + return true; + }); + } + /** Move `uid` so it sits immediately before `beforeUid` (or last if null). */ + reorder(uid, beforeUid) { + if (uid === beforeUid) return false; + return this.edit("reorder", () => { + const from = this.order.indexOf(uid); + if (from < 0) return false; + this.order.splice(from, 1); + const at = beforeUid == null ? this.order.length : this.order.indexOf(beforeUid); + this.order.splice(at < 0 ? this.order.length : at, 0, uid); + return true; + }); + } +} diff --git a/bundled-addons/pdf-editor/lib/overlay.js b/bundled-addons/pdf-editor/lib/overlay.js new file mode 100644 index 00000000..e65bb207 --- /dev/null +++ b/bundled-addons/pdf-editor/lib/overlay.js @@ -0,0 +1,197 @@ +// The on-screen layer that draws marks over a rendered page. +// +// One SVG per page, sized to that page's current viewport in CSS pixels. +// Every mark is stored in PDF user space, so drawing means running each point +// through `viewport.convertToViewportPoint` — which already accounts for the +// page's scale AND its rotation. That is why rotating a page needs no special +// handling here: the viewport changes, we re-render, and the marks turn with +// the content they were drawn on. +// +// SVG rather than a canvas because marks have to be individually +// hit-testable, selectable and movable, and because it stays crisp when the +// user zooms without us re-rasterising anything. + +import { arrowBarbs, boundsOf, signatureStrokes, textLayout } from "./shape.js"; + +const NS = "http://www.w3.org/2000/svg"; +function el(name, attrs) { + const n = document.createElementNS(NS, name); + for (const k in attrs) if (attrs[k] != null) n.setAttribute(k, attrs[k]); + return n; +} + +export class Overlay { + /** @param {HTMLElement} pageDiv the .page div owned by a PDFPageView */ + constructor(pageDiv) { + this.svg = el("svg", { class: "smOverlay", xmlns: NS }); + this.marks = el("g", { class: "marks" }); + this.chrome = el("g", { class: "chrome" }); // selection box + handles + this.svg.append(this.marks, this.chrome); + pageDiv.append(this.svg); + this.viewport = null; + } + + destroy() { this.svg.remove(); } + + /** Map a user-space point to CSS pixels inside the page div. */ + toView(x, y) { + const [vx, vy] = this.viewport.convertToViewportPoint(x, y); + return [vx, vy]; + } + /** Map a page-relative CSS pixel point back to user space. */ + toPdf(vx, vy) { + const [x, y] = this.viewport.convertToPdfPoint(vx, vy); + return [x, y]; + } + + render(viewport, annots, selectedId) { + this.viewport = viewport; + this.svg.setAttribute("width", viewport.width); + this.svg.setAttribute("height", viewport.height); + this.svg.setAttribute("viewBox", `0 0 ${viewport.width} ${viewport.height}`); + this.marks.textContent = ""; + for (const a of annots) { + const node = this._draw(a); + if (!node) continue; + node.classList.add("mark"); + node.dataset.id = a.id; + if (a.id === selectedId) node.classList.add("sel"); + this.marks.append(node); + } + this._drawChrome(annots.find((a) => a.id === selectedId) || null); + } + + // Scale a user-space length (a stroke width, a font size) into CSS pixels. + // The viewport's scale already carries zoom; rotation does not change length. + get k() { return this.viewport ? this.viewport.scale : 1; } + + _draw(a) { + const g = el("g", {}); + switch (a.kind) { + case "highlight": { + for (const r of a.rects || []) { + const [x0, y1] = this.toView(r.x, r.y + r.h); + const [x1, y0] = this.toView(r.x + r.w, r.y); + g.append(el("rect", { + x: Math.min(x0, x1), y: Math.min(y0, y1), + width: Math.abs(x1 - x0), height: Math.abs(y0 - y1), + fill: a.color, "fill-opacity": a.opacity ?? 0.38, + style: "mix-blend-mode:multiply", + })); + } + g.dataset.fill = "1"; + return g; + } + case "pen": { + const pts = (a.pts || []).map(([x, y]) => this.toView(x, y)); + if (pts.length < 2) return null; + g.append(el("polyline", { + points: pts.map((p) => `${p[0]},${p[1]}`).join(" "), + fill: "none", stroke: a.color, "stroke-width": (a.width || 2) * this.k, + "stroke-linecap": "round", "stroke-linejoin": "round", + })); + return g; + } + case "rect": { + const b = this._box(a); + g.append(el("rect", { ...b, fill: "none", stroke: a.color, "stroke-width": (a.width || 2) * this.k })); + return g; + } + case "ellipse": { + const b = this._box(a); + g.append(el("ellipse", { + cx: b.x + b.width / 2, cy: b.y + b.height / 2, + rx: Math.max(0.5, b.width / 2), ry: Math.max(0.5, b.height / 2), + fill: "none", stroke: a.color, "stroke-width": (a.width || 2) * this.k, + })); + return g; + } + case "arrow": { + const [x1, y1] = this.toView(a.x1, a.y1); + const [x2, y2] = this.toView(a.x2, a.y2); + const w = (a.width || 2) * this.k; + const barbs = arrowBarbs(a.x1, a.y1, a.x2, a.y2, a.width || 2).map((p) => this.toView(p.x, p.y)); + g.append(el("line", { x1, y1, x2, y2, stroke: a.color, "stroke-width": w, "stroke-linecap": "round" })); + g.append(el("polyline", { + points: `${barbs[0][0]},${barbs[0][1]} ${x2},${y2} ${barbs[1][0]},${barbs[1][1]}`, + fill: "none", stroke: a.color, "stroke-width": w, + "stroke-linecap": "round", "stroke-linejoin": "round", + })); + return g; + } + case "text": { + const size = (a.size || 12) * this.k; + let widest = 0; + for (const line of textLayout(a)) { + const [vx, vy] = this.toView(line.x, line.y); + const t = el("text", { + x: vx, y: vy, fill: a.color, + "font-family": "Helvetica, Arial, sans-serif", + "font-size": size, "xml:space": "preserve", + }); + t.textContent = line.text; + g.append(t); + } + g.dataset.fill = "1"; + // Measure once attached so the selection box is tight. Cached on the + // mark in user-space units; boundsOf() reads it. + requestAnimationFrame(() => { + try { + for (const t of g.querySelectorAll("text")) widest = Math.max(widest, t.getComputedTextLength()); + if (widest > 0) a._w = widest / this.k; + } catch {} + }); + return g; + } + case "signature": { + const w = (a.width || 1.6) * this.k; + for (const stroke of signatureStrokes(a)) { + if (stroke.length < 2) continue; + g.append(el("polyline", { + points: stroke.map(([x, y]) => this.toView(x, y).join(",")).join(" "), + fill: "none", stroke: a.color, "stroke-width": w, + "stroke-linecap": "round", "stroke-linejoin": "round", + })); + } + return g; + } + case "redact": { + const b = this._box(a); + g.append(el("rect", { ...b, fill: "#000" })); + g.dataset.fill = "1"; + return g; + } + default: return null; + } + } + + // A user-space {x,y,w,h} box as an SVG rect's attributes. Done through both + // corners so a rotated viewport lands the right way up. + _box(a) { + const [ax, ay] = this.toView(a.x, a.y); + const [bx, by] = this.toView(a.x + a.w, a.y + a.h); + return { x: Math.min(ax, bx), y: Math.min(ay, by), + width: Math.abs(bx - ax), height: Math.abs(by - ay) }; + } + + _drawChrome(sel) { + this.chrome.textContent = ""; + if (!sel) return; + const b = boundsOf(sel); + const r = this._box({ x: b.x, y: b.y, w: b.w, h: b.h }); + const pad = 3; + this.chrome.append(el("rect", { + class: "selbox", x: r.x - pad, y: r.y - pad, + width: r.width + pad * 2, height: r.height + pad * 2, + })); + } + + /** The mark id under a page-relative CSS pixel point, or null. */ + hitTest(vx, vy) { + const node = document.elementFromPoint( + vx + this.svg.getBoundingClientRect().left, + vy + this.svg.getBoundingClientRect().top); + const mark = node?.closest?.(".mark"); + return mark ? mark.dataset.id : null; + } +} diff --git a/bundled-addons/pdf-editor/lib/rail.js b/bundled-addons/pdf-editor/lib/rail.js new file mode 100644 index 00000000..e7912b0d --- /dev/null +++ b/bundled-addons/pdf-editor/lib/rail.js @@ -0,0 +1,161 @@ +// The page rail: a thumbnail per page, draggable to reorder, with rotate and +// delete on each one. +// +// Thumbnails render off the same pdf.js page objects as the main strip but at +// a fixed small width, lazily, and are cached as bitmaps. A rotation re-renders +// just that one; a reorder re-renders nothing at all, because the canvas is +// already correct and only its position in the list changes. +// +// Reordering uses HTML5 drag-and-drop rather than pointer maths: it gives us +// the drag image, the escape-to-cancel and the autoscroll for free, all of +// which a hand-rolled version gets wrong first. + +const THUMB_W = 148; + +export class Rail { + constructor({ list, countEl, model, strip, host }) { + this.list = list; + this.countEl = countEl; + this.model = model; + this.strip = strip; + this.host = host; + this.cache = new Map(); // uid -> canvas + this.dragUid = null; + this._io = new IntersectionObserver((entries) => { + for (const ent of entries) { + if (ent.isIntersecting) this._render(ent.target.dataset.uid); + } + }, { root: this.list, rootMargin: "300px 0px" }); + } + + build() { + this.list.textContent = ""; + this._io.disconnect(); + const visible = this.model.visible(); + this.model.order.forEach((uid) => { + const p = this.model.page(uid); + const el = document.createElement("div"); + el.className = "thumb" + (p.deleted ? " deleted" : ""); + el.dataset.uid = uid; + el.draggable = !p.deleted; + const pos = visible.indexOf(uid); + el.innerHTML = ` + +
+ ${p.deleted ? "removed" : pos + 1} + + +
`; + this.list.append(el); + this._io.observe(el); + this._wire(el, uid); + }); + this._paintCount(); + this.markCurrent(this.strip.current); + } + + _paintCount() { + const n = this.model.visible().length; + const gone = this.model.deletedCount(); + this.countEl.textContent = `${n} page${n === 1 ? "" : "s"}${gone ? ` · ${gone} removed` : ""}`; + const restore = document.getElementById("restore-pages"); + if (restore) restore.hidden = gone === 0; + } + + _wire(el, uid) { + el.querySelector(".rot").addEventListener("click", (e) => { + e.stopPropagation(); + this.host.rotate(uid); + }); + el.querySelector(".del").addEventListener("click", (e) => { + e.stopPropagation(); + this.host.toggleDelete(uid); + }); + el.addEventListener("click", () => { + if (this.model.page(uid).deleted) return; + this.strip.scrollTo(uid); + }); + + el.addEventListener("dragstart", (e) => { + this.dragUid = uid; + el.classList.add("dragging"); + e.dataTransfer.effectAllowed = "move"; + // Firefox and Chromium both need *something* set or the drag aborts. + e.dataTransfer.setData("text/plain", uid); + }); + el.addEventListener("dragend", () => { + this.dragUid = null; + el.classList.remove("dragging"); + for (const t of this.list.children) t.classList.remove("dropbefore", "dropafter"); + }); + el.addEventListener("dragover", (e) => { + if (!this.dragUid || this.dragUid === uid) return; + e.preventDefault(); + const r = el.getBoundingClientRect(); + const after = e.clientY > r.top + r.height / 2; + for (const t of this.list.children) t.classList.remove("dropbefore", "dropafter"); + el.classList.add(after ? "dropafter" : "dropbefore"); + }); + el.addEventListener("drop", (e) => { + if (!this.dragUid || this.dragUid === uid) return; + e.preventDefault(); + const r = el.getBoundingClientRect(); + const after = e.clientY > r.top + r.height / 2; + const order = this.model.order; + let beforeUid = uid; + if (after) { + const i = order.indexOf(uid); + beforeUid = order[i + 1] ?? null; + } + this.host.reorder(this.dragUid, beforeUid); + }); + } + + async _render(uid) { + const el = this.list.querySelector(`.thumb[data-uid="${uid}"]`); + if (!el) return; + const canvas = el.querySelector(".tcanvas"); + if (canvas.dataset.done === this._sig(uid)) return; + const entry = this.strip.views.get(uid); + if (!entry) return; + const base = entry.pdfPage.getViewport({ scale: 1, rotation: this.model.displayRotation(uid) }); + const scale = THUMB_W / base.width; + const vp = entry.pdfPage.getViewport({ scale, rotation: this.model.displayRotation(uid) }); + const dpr = Math.min(2, window.devicePixelRatio || 1); + canvas.width = Math.max(1, Math.floor(vp.width * dpr)); + canvas.height = Math.max(1, Math.floor(vp.height * dpr)); + canvas.style.aspectRatio = `${vp.width} / ${vp.height}`; + const ctx = canvas.getContext("2d", { alpha: false }); + ctx.fillStyle = "#fff"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.scale(dpr, dpr); + try { + await entry.pdfPage.render({ canvasContext: ctx, viewport: vp, intent: "display" }).promise; + canvas.dataset.done = this._sig(uid); + } catch (e) { + if (e?.name !== "RenderingCancelledException") console.warn(`thumb ${uid}:`, e?.message || e); + } + } + + // A thumbnail only needs re-rendering when its rotation changes. + _sig(uid) { return String(this.model.displayRotation(uid)); } + + /** Re-render one thumbnail — after a rotation. */ + refresh(uid) { + const el = this.list.querySelector(`.thumb[data-uid="${uid}"]`); + if (el) el.querySelector(".tcanvas").dataset.done = ""; + this._render(uid); + } + + markCurrent(uid) { + for (const t of this.list.children) t.classList.toggle("current", t.dataset.uid === uid); + } + + destroy() { this._io.disconnect(); this.list.textContent = ""; } +} diff --git a/bundled-addons/pdf-editor/lib/save.js b/bundled-addons/pdf-editor/lib/save.js new file mode 100644 index 00000000..3048d0ba --- /dev/null +++ b/bundled-addons/pdf-editor/lib/save.js @@ -0,0 +1,274 @@ +// Turning the editing session back into a PDF, with pdf-lib. +// +// The source bytes are never mutated. Every save re-loads the original and +// replays the session onto that fresh copy, so a botched save cannot poison +// the next one and the file on disk stays whatever it was. +// +// Step order is load-bearing: +// +// 1. form values — before anything strips a widget +// 2. flatten — replaces a redacted page's content stream, which +// would wipe marks drawn in step 3 +// 3. marks — drawn against ORIGINAL page indices, which are still +// valid because nothing has moved yet +// 4. page tree — reorder and delete last, so step 3's indices held +// 5. rotation — independent of order, done in the same pass +// +// Marks are drawn with pdf-lib's operator helpers rather than drawSvgPath. +// drawSvgPath takes an SVG-shaped path with y running downwards from an +// anchor, so every mark would need a second coordinate convention and a +// matching inverse in the overlay. Raw operators take the user-space points we +// already store, unchanged. + +import { + PDFDocument, PDFName, StandardFonts, rgb, degrees, + pushGraphicsState, popGraphicsState, moveTo, lineTo, stroke, fill, + setStrokingColor, setFillingColor, setLineWidth, setLineCap, setLineJoin, + LineCapStyle, LineJoinStyle, +} from "../vendor/pdf-lib/pdf-lib.esm.min.js"; + +import { arrowBarbs, signatureStrokes, textLayout } from "./shape.js"; + +/** #rrggbb -> pdf-lib rgb(). */ +function colorOf(hex) { + const m = /^#?([0-9a-f]{6})$/i.exec(String(hex || "#000000")); + const n = m ? parseInt(m[1], 16) : 0; + return rgb(((n >> 16) & 255) / 255, ((n >> 8) & 255) / 255, (n & 255) / 255); +} + +// Helvetica is a WinAnsi font: it simply cannot encode most of Unicode. +// Embedding a font that could would mean shipping a several-MB typeface for a +// feature most stamps never need, so instead we substitute and say so. +const WIN_ANSI_OK = /^[\x20-\x7E\xA0-\xFF‘’“”–—•€…‰‹›ŒœŠšŸŽžƒˆ˜™†‡‰]*$/; +export function winAnsiSafe(text) { + const s = String(text ?? ""); + if (WIN_ANSI_OK.test(s)) return { text: s, dropped: 0 }; + let dropped = 0; + const out = Array.from(s).map((ch) => { + if (WIN_ANSI_OK.test(ch)) return ch; + dropped++; + return "?"; + }).join(""); + return { text: out, dropped }; +} + +/** True when any text stamp carries characters Helvetica cannot write. */ +export function unencodableStamps(model) { + return model.annots.filter((a) => a.kind === "text" && winAnsiSafe(a.text).dropped > 0).length; +} + +// ---- mark drawing ----------------------------------------------------- +function strokePolyline(page, pts, color, width) { + if (pts.length < 2) return; + const ops = [ + pushGraphicsState(), + setStrokingColor(colorOf(color)), + setLineWidth(width), + setLineCap(LineCapStyle.Round), + setLineJoin(LineJoinStyle.Round), + moveTo(pts[0][0], pts[0][1]), + ]; + for (let i = 1; i < pts.length; i++) ops.push(lineTo(pts[i][0], pts[i][1])); + ops.push(stroke(), popGraphicsState()); + page.pushOperators(...ops); +} + +function fillRect(page, x, y, w, h, color, opacity) { + if (opacity != null && opacity < 1) { + // drawRectangle is the only path that can set a fill opacity, because it + // registers the ExtGState for us. + page.drawRectangle({ x, y, width: w, height: h, color: colorOf(color), opacity, borderWidth: 0 }); + return; + } + page.pushOperators( + pushGraphicsState(), setFillingColor(colorOf(color)), + moveTo(x, y), lineTo(x + w, y), lineTo(x + w, y + h), lineTo(x, y + h), + fill(), popGraphicsState()); +} + +function drawMark(page, a, font) { + switch (a.kind) { + case "highlight": + for (const r of a.rects || []) { + if (r.w <= 0 || r.h <= 0) continue; + fillRect(page, r.x, r.y, r.w, r.h, a.color, a.opacity ?? 0.38); + } + return; + case "pen": + strokePolyline(page, a.pts || [], a.color, a.width || 2); + return; + case "rect": + page.drawRectangle({ x: a.x, y: a.y, width: a.w, height: a.h, + borderColor: colorOf(a.color), borderWidth: a.width || 2, opacity: 0 }); + return; + case "ellipse": + page.drawEllipse({ x: a.x + a.w / 2, y: a.y + a.h / 2, + xScale: Math.max(0.5, a.w / 2), yScale: Math.max(0.5, a.h / 2), + borderColor: colorOf(a.color), borderWidth: a.width || 2, opacity: 0 }); + return; + case "arrow": { + const w = a.width || 2; + strokePolyline(page, [[a.x1, a.y1], [a.x2, a.y2]], a.color, w); + const b = arrowBarbs(a.x1, a.y1, a.x2, a.y2, w); + strokePolyline(page, [[b[0].x, b[0].y], [a.x2, a.y2], [b[1].x, b[1].y]], a.color, w); + return; + } + case "text": { + const size = a.size || 12; + for (const line of textLayout(a)) { + const { text } = winAnsiSafe(line.text); + if (!text) continue; + page.drawText(text, { x: line.x, y: line.y, size, font, color: colorOf(a.color) }); + } + return; + } + case "signature": + for (const s of signatureStrokes(a)) strokePolyline(page, s, a.color, a.width || 1.6); + return; + case "redact": + // Opaque, no border, no transparency — a redaction that can be seen + // through is not a redaction. + fillRect(page, a.x, a.y, a.w, a.h, "#000000", 1); + return; + default: + console.warn("save: unknown mark kind", a.kind); + } +} + +// ---- form fields ------------------------------------------------------ +function applyFormValues(doc, values, font, report) { + if (!values.length) return; + let form; + try { form = doc.getForm(); } + catch (e) { report.warn.push("This file's form could not be opened, so field values were not saved."); return; } + const byName = new Map(); + try { for (const f of form.getFields()) byName.set(f.getName(), f); } + catch (e) { report.warn.push("This file's field list could not be read."); return; } + + let wrote = 0, missed = 0; + for (const { name, value } of values) { + const f = byName.get(name); + if (!f) { missed++; continue; } + try { + if (typeof f.setText === "function") { + const { text, dropped } = winAnsiSafe(value == null ? "" : String(value)); + if (dropped) report.substituted += dropped; + f.setText(text); + } else if (typeof f.check === "function") { + const on = value === true || value === "On" || (typeof value === "string" && value !== "Off" && value !== ""); + if (on) f.check(); else f.uncheck(); + } else if (typeof f.select === "function") { + if (value == null || value === "") { if (typeof f.clear === "function") f.clear(); } + else f.select(Array.isArray(value) ? value[0] : String(value)); + } else { missed++; continue; } + // Per-field so one field Helvetica cannot draw does not abort the save. + try { if (typeof f.updateAppearances === "function") f.updateAppearances(font); } catch {} + wrote++; + } catch (e) { + missed++; + console.warn(`form field "${name}":`, e?.message || e); + } + } + report.fieldsWritten = wrote; + if (missed) report.warn.push(`${missed} field${missed === 1 ? "" : "s"} could not be written back.`); +} + +// ---- flattening ------------------------------------------------------- +// A redaction box that only paints over text is theatre: the text is still in +// the content stream and still comes out of a copy-paste. The only fix that +// pdf-lib alone can reach is to replace the page's whole content stream with a +// picture of it, which is what this does. Annotations (form widgets, links) are +// deliberately KEPT — they are not part of the content stream, so they were +// never the leak, and dropping them would quietly break a form. +async function flattenPage(doc, page, pngBytes, report) { + const img = await doc.embedPng(pngBytes); + const box = page.getCropBox(); + // Empty array, not a fresh empty stream: pdf-lib appends its own stream to + // this array on the first draw call, so the original marks are simply gone. + page.node.set(PDFName.of("Contents"), doc.context.obj([])); + page.drawImage(img, { x: box.x, y: box.y, width: box.width, height: box.height }); + report.flattened++; +} + +// ---- page tree -------------------------------------------------------- +function rebuildPages(doc, originalPages, srcOrder) { + const wanted = srcOrder.map((i) => originalPages[i]).filter(Boolean); + if (!wanted.length) throw new Error("a PDF needs at least one page"); + for (let i = doc.getPageCount() - 1; i >= 0; i--) doc.removePage(i); + // addPage re-registers a page whose ref was dropped by removePage, so the + // same page objects (and the widget annotations that point at them) come + // back intact in the new order. + for (const p of wanted) doc.addPage(p); +} + +/** + * @param {object} o + * @param {Uint8Array} o.originalBytes untouched source + * @param {DocModel} o.model + * @param {{name:string,value:any}[]} o.formValues harvested from pdf.js + * @param {boolean} o.flatten rebuild redacted pages as images + * @param {(uid:string)=>Promise} o.rasterize renders one page to PNG + * @returns {Promise<{bytes:Uint8Array, report:object}>} + */ +export async function buildPdf({ originalBytes, model, formValues = [], flatten = true, rasterize }) { + const report = { flattened: 0, marks: 0, fieldsWritten: 0, substituted: 0, warn: [] }; + const doc = await PDFDocument.load(originalBytes, { + ignoreEncryption: true, + // Leave the file's own Producer/ModDate alone. A privacy-minded browser + // should not stamp "this was edited, with this library, at this time" into + // every document that passes through it. + updateMetadata: false, + }); + const font = await doc.embedFont(StandardFonts.Helvetica); + const originalPages = doc.getPages(); + + // 1. form values + applyFormValues(doc, formValues, font, report); + + // 2. flatten redacted pages + const redacted = model.redactedPages(); + if (flatten && redacted.size && typeof rasterize === "function") { + for (const uid of redacted) { + const src = model.page(uid).src; + const page = originalPages[src]; + if (!page) continue; + try { await flattenPage(doc, page, await rasterize(uid), report); } + catch (e) { + report.warn.push(`Page ${src + 1} could not be rebuilt as an image; its redaction only covers the text.`); + console.warn("flatten failed:", e); + } + } + } else if (redacted.size && !flatten) { + report.warn.push("Redactions cover the text but do not remove it — it is still extractable from the saved file."); + } + + // 3. marks, against original indices + for (const uid of model.visible()) { + const page = originalPages[model.page(uid).src]; + if (!page) continue; + // Redaction boxes go on top of everything else on their page. + const marks = model.annotsFor(uid); + for (const a of marks) if (a.kind !== "redact") { drawMark(page, a, font); report.marks++; } + for (const a of marks) if (a.kind === "redact") { drawMark(page, a, font); report.marks++; } + } + + // 4. page tree + const srcOrder = model.visible().map((uid) => model.page(uid).src); + if (model.pagesChanged()) { + rebuildPages(doc, originalPages, srcOrder); + report.pagesRebuilt = true; + } + + // 5. rotation — applied to the page objects, so order does not matter + for (const uid of model.visible()) { + const extra = model.extraRotation(uid); + if (!extra) continue; + const page = originalPages[model.page(uid).src]; + if (!page) continue; + try { page.setRotation(degrees((page.getRotation().angle + extra) % 360)); } + catch (e) { console.warn("setRotation:", e?.message); } + } + + const bytes = await doc.save({ useObjectStreams: true }); + return { bytes, report }; +} diff --git a/bundled-addons/pdf-editor/lib/shape.js b/bundled-addons/pdf-editor/lib/shape.js new file mode 100644 index 00000000..9f46029a --- /dev/null +++ b/bundled-addons/pdf-editor/lib/shape.js @@ -0,0 +1,111 @@ +// Geometry shared by the on-screen overlay and the pdf-lib writer. +// +// Both need to agree exactly on where an arrowhead's barbs land, where each +// line of a text stamp sits, and how a normalised signature stroke maps into +// its placed box. Keeping that arithmetic in one place is what makes "what I +// drew" and "what got saved" the same picture; two copies of it drift the +// first time either side is touched. +// +// Everything here works in PDF user space: points, origin bottom-left, y up. + +/** Approximate ascent as a fraction of font size, for Helvetica. */ +export const ASCENT = 0.76; +/** Line advance as a fraction of font size. */ +export const LINE_GAP = 1.2; + +/** + * Where each line of a text stamp is drawn. `a.y` is the TOP of the block — + * that is what the user clicked — so every baseline hangs below it. + * @returns {{text:string, x:number, y:number}[]} y is the baseline. + */ +export function textLayout(a) { + const lines = String(a.text ?? "").split("\n"); + const size = a.size || 12; + return lines.map((text, i) => ({ + text, + x: a.x, + y: a.y - size * ASCENT - i * size * LINE_GAP, + })); +} + +/** Height of a text stamp's block, for hit-testing and the selection box. */ +export function textBlockHeight(a) { + const lines = String(a.text ?? "").split("\n").length; + const size = a.size || 12; + return size * ASCENT + (lines - 1) * size * LINE_GAP + size * 0.24; +} + +/** + * The two barb points of an arrowhead at (x2,y2) coming from (x1,y1). + * Head length scales with stroke width but is floored so a thin arrow still + * reads as an arrow. + */ +export function arrowBarbs(x1, y1, x2, y2, width) { + const dx = x2 - x1, dy = y2 - y1; + const len = Math.hypot(dx, dy) || 1; + const head = Math.max(6, Math.min(len * 0.34, (width || 2) * 4.5)); + const ux = dx / len, uy = dy / len; + // 24° either side of the shaft. + const cos = Math.cos(0.42), sin = Math.sin(0.42); + return [ + { x: x2 - head * (ux * cos - uy * sin), y: y2 - head * (uy * cos + ux * sin) }, + { x: x2 - head * (ux * cos + uy * sin), y: y2 - head * (uy * cos - ux * sin) }, + ]; +} + +/** + * A placed signature's strokes in user space. Strokes are stored normalised + * (0..1, y measured DOWN from the top of the pad) so the same drawing can be + * dropped at any size, on any page, any number of times. + */ +export function signatureStrokes(a) { + const { x, y, w, h } = a; + return (a.strokes || []).map((s) => s.map(([nx, ny]) => [x + nx * w, y + (1 - ny) * h])); +} + +/** Normalise a box that may have been dragged right-to-left or bottom-to-top. */ +export function normBox(x0, y0, x1, y1) { + return { x: Math.min(x0, x1), y: Math.min(y0, y1), w: Math.abs(x1 - x0), h: Math.abs(y1 - y0) }; +} + +/** Axis-aligned bounds of a mark, in user space. Used for selection and hit-testing. */ +export function boundsOf(a) { + switch (a.kind) { + case "highlight": { + const rs = a.rects || []; + if (!rs.length) return { x: 0, y: 0, w: 0, h: 0 }; + const x0 = Math.min(...rs.map((r) => r.x)), y0 = Math.min(...rs.map((r) => r.y)); + const x1 = Math.max(...rs.map((r) => r.x + r.w)), y1 = Math.max(...rs.map((r) => r.y + r.h)); + return { x: x0, y: y0, w: x1 - x0, h: y1 - y0 }; + } + case "pen": { + const pts = a.pts || []; + if (!pts.length) return { x: 0, y: 0, w: 0, h: 0 }; + const xs = pts.map((p) => p[0]), ys = pts.map((p) => p[1]); + const pad = (a.width || 2) / 2; + return { x: Math.min(...xs) - pad, y: Math.min(...ys) - pad, + w: Math.max(...xs) - Math.min(...xs) + pad * 2, h: Math.max(...ys) - Math.min(...ys) + pad * 2 }; + } + case "arrow": return normBox(a.x1, a.y1, a.x2, a.y2); + case "text": { + // Width is unknown without measuring the font; the renderer measures it + // and caches it on the mark as `_w` so selection boxes are tight. + return { x: a.x, y: a.y - textBlockHeight(a), w: a._w || (a.size || 12) * 6, h: textBlockHeight(a) }; + } + default: return { x: a.x, y: a.y, w: a.w, h: a.h }; + } +} + +/** Shift a mark by (dx,dy) in user space. Returns the patch, does not mutate. */ +export function translatePatch(a, dx, dy) { + switch (a.kind) { + case "highlight": + return { rects: (a.rects || []).map((r) => ({ ...r, x: r.x + dx, y: r.y + dy })) }; + case "pen": + return { pts: (a.pts || []).map(([x, y]) => [x + dx, y + dy]) }; + case "arrow": + return { x1: a.x1 + dx, y1: a.y1 + dy, x2: a.x2 + dx, y2: a.y2 + dy }; + default: + return { x: a.x + dx, y: a.y + dy }; + } +} diff --git a/bundled-addons/pdf-editor/lib/signature.js b/bundled-addons/pdf-editor/lib/signature.js new file mode 100644 index 00000000..d317f271 --- /dev/null +++ b/bundled-addons/pdf-editor/lib/signature.js @@ -0,0 +1,114 @@ +// The signature pad. +// +// What comes out is a list of strokes, each a list of points normalised to +// 0..1 inside the pad's box, y measured downwards. Not a picture. That matters +// for three reasons: the same signature can be dropped at any size on any page +// and stay sharp, it survives into the saved PDF as vector line art rather +// than a fuzzy PNG, and it is a few hundred bytes in storage instead of tens +// of kilobytes of base64. +// +// The pad also trims the drawing to its own bounding box before normalising, +// so a signature scrawled in the top-left corner of the pad still fills the +// box it gets placed in. + +export class SignaturePad { + constructor(canvas) { + this.canvas = canvas; + this.ctx = canvas.getContext("2d"); + this.strokes = []; // in canvas pixel space while drawing + this.cur = null; + this._onChange = null; + canvas.addEventListener("pointerdown", (e) => this._down(e)); + canvas.addEventListener("pointermove", (e) => this._move(e)); + window.addEventListener("pointerup", () => this._up()); + this.clear(); + } + + onChange(fn) { this._onChange = fn; } + + clear() { + this.strokes = []; + this.cur = null; + this._paint(); + this._onChange?.(false); + } + + get isEmpty() { return !this.strokes.some((s) => s.length > 1); } + + _pt(e) { + const r = this.canvas.getBoundingClientRect(); + // The canvas is CSS-scaled to the modal's width, so a client point has to + // come back through that ratio to land in the backing store's pixels. + return [ + (e.clientX - r.left) * (this.canvas.width / r.width), + (e.clientY - r.top) * (this.canvas.height / r.height), + ]; + } + _down(e) { + if (e.button !== 0) return; + this.cur = [this._pt(e)]; + this.strokes.push(this.cur); + this.canvas.setPointerCapture?.(e.pointerId); + e.preventDefault(); + } + _move(e) { + if (!this.cur) return; + this.cur.push(this._pt(e)); + this._paint(); + } + _up() { + if (!this.cur) return; + if (this.cur.length < 2) this.strokes.pop(); + this.cur = null; + this._paint(); + this._onChange?.(!this.isEmpty); + } + + _paint() { + const { ctx, canvas } = this; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.fillStyle = "#ffffff"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + // A baseline, so people sign at a sensible height rather than in a corner. + ctx.strokeStyle = "rgba(20,30,50,.18)"; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.moveTo(24, canvas.height * 0.72); + ctx.lineTo(canvas.width - 24, canvas.height * 0.72); + ctx.stroke(); + ctx.strokeStyle = "#101418"; + ctx.lineWidth = 2.6; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + for (const s of this.strokes) { + if (s.length < 2) continue; + ctx.beginPath(); + ctx.moveTo(s[0][0], s[0][1]); + for (let i = 1; i < s.length; i++) ctx.lineTo(s[i][0], s[i][1]); + ctx.stroke(); + } + ctx.restore(); + } + + /** + * @returns {{strokes:[number,number][][], aspect:number}|null} + * strokes normalised into 0..1 over the drawing's own bounds; `aspect` is + * height/width of those bounds, so the caller can place it undistorted. + */ + result() { + const live = this.strokes.filter((s) => s.length > 1); + if (!live.length) return null; + const xs = live.flat().map((p) => p[0]); + const ys = live.flat().map((p) => p[1]); + const x0 = Math.min(...xs), x1 = Math.max(...xs); + const y0 = Math.min(...ys), y1 = Math.max(...ys); + // A single horizontal or vertical line has zero extent on one axis; floor + // it so the division below cannot produce Infinity. + const w = Math.max(1, x1 - x0), h = Math.max(1, y1 - y0); + return { + strokes: live.map((s) => s.map(([x, y]) => [(x - x0) / w, (y - y0) / h])), + aspect: Math.min(1.2, Math.max(0.12, h / w)), + }; + } +} diff --git a/bundled-addons/pdf-editor/lib/tools.js b/bundled-addons/pdf-editor/lib/tools.js new file mode 100644 index 00000000..0b09df3c --- /dev/null +++ b/bundled-addons/pdf-editor/lib/tools.js @@ -0,0 +1,287 @@ +// Pointer behaviour for every tool. +// +// The editor is modal: one tool is armed, and what a drag does depends only on +// which. The alternative — inferring intent from what is under the cursor — is +// what makes PDF annotators infuriating, because a drag meant to draw a box +// selects a paragraph instead. Modality is enforced in CSS (see the +// body[data-mode] rules): with a drawing tool armed, the text and form layers +// stop taking pointer events entirely, so a drag cannot be stolen. +// +// Highlight is the deliberate exception. It works BY selecting text — the +// text layer stays live, the browser does the selection, and on release we +// convert the selection's client rects into user space. Rebuilding text +// selection from scratch over pdf.js's span soup would be worse at it. + +import { boundsOf, normBox, translatePatch } from "./shape.js"; + +const MIN_DRAG = 3; // CSS px before a press counts as a drag +const SIG_WIDTH_PT = 170; // default placed width of a signature + +export class Tools { + constructor({ strip, model, host }) { + this.strip = strip; + this.model = model; + this.host = host; // editor.js: {toast, openTextModal, openSignaturePad, signature(), onChange} + this.tool = "select"; + this.color = "#ffd400"; + this.width = 2.5; + this.selected = null; + this.drag = null; + // Opening a second document builds a second Tools over the same container. + // Without a way to unbind, the first one stays subscribed, keeps pointing + // at a torn-down strip, and throws on the next click — so every listener + // goes on one signal and destroy() drops the lot. + this._abort = new AbortController(); + const opts = { signal: this._abort.signal }; + const c = strip.container; + c.addEventListener("pointerdown", (e) => this.onDown(e), opts); + c.addEventListener("pointermove", (e) => this.onMove(e), opts); + window.addEventListener("pointerup", (e) => this.onUp(e), opts); + } + + destroy() { + this._abort.abort(); + this.drag = null; + this.selected = null; + } + + get mode() { + if (this.tool === "select") return "select"; + if (this.tool === "highlight") return "highlight"; + if (this.tool === "text" || this.tool === "signature") return "stamp"; + return "draw"; + } + + setTool(t) { + this.tool = t; + this.selected = null; + document.body.dataset.mode = this.mode; + this.strip.refreshAllOverlays(null); + this.host.onChange?.(); + } + setColor(c) { this.color = c; if (this.selected) this._recolorSelected(c); } + setWidth(w) { this.width = w; } + + _recolorSelected(c) { + const a = this.model.annot(this.selected); + if (!a || a.kind === "redact") return; + this.model.moveAnnot(a.id, { color: c }); + this.strip.refreshAllOverlays(this.selected); + } + + deleteSelected() { + if (!this.selected) return false; + const ok = this.model.removeAnnot(this.selected); + this.selected = null; + this.strip.refreshAllOverlays(null); + return ok; + } + + // ---- pointer ------------------------------------------------------ + onDown(e) { + if (e.button !== 0) return; + const hit = this.strip.pageAt(e.clientX, e.clientY); + if (!hit) return; + const ov = this.strip.overlayFor(hit.uid); + if (!ov || !ov.viewport) return; + + if (this.tool === "highlight") { this._selDirty = false; return; } // let the browser select + + const [x, y] = ov.toPdf(hit.vx, hit.vy); + + if (this.tool === "select") { + const id = e.target?.closest?.(".mark")?.dataset?.id || null; + this.selected = id; + this.strip.refreshAllOverlays(id); + if (id) { + const a = this.model.annot(id); + this.drag = { kind: "move", uid: hit.uid, id, x0: x, y0: y, orig: structuredClone(a), moved: false }; + e.preventDefault(); + } + return; + } + + if (this.tool === "text") { + this.host.openTextModal({ uid: hit.uid, x, y }); + e.preventDefault(); + return; + } + if (this.tool === "signature") { + this._placeSignature(hit.uid, x, y); + e.preventDefault(); + return; + } + + // Drawing tools: start a drag with a live preview. + this.drag = { kind: this.tool, uid: hit.uid, x0: x, y0: y, x, y, + pts: this.tool === "pen" ? [[x, y]] : null, + cx: e.clientX, cy: e.clientY, moved: false }; + e.preventDefault(); + } + + onMove(e) { + const d = this.drag; + if (!d) return; + const ov = this.strip.overlayFor(d.uid); + if (!ov || !ov.viewport) return; + const view = this.strip.views.get(d.uid); + if (!view) { this.drag = null; return; } + const rect = view.pv.div.getBoundingClientRect(); + // A drag that wanders off the page stays on it. Marks outside the page + // box are invisible in any PDF reader, so letting one be drawn there + // would only produce something that disappears on save. + const cx = Math.min(Math.max(e.clientX, rect.left), rect.right); + const cy = Math.min(Math.max(e.clientY, rect.top), rect.bottom); + const [x, y] = ov.toPdf(cx - rect.left, cy - rect.top); + d.x = x; d.y = y; + if (!d.moved && Math.hypot(e.clientX - (d.cx ?? e.clientX), e.clientY - (d.cy ?? e.clientY)) > MIN_DRAG) d.moved = true; + + if (d.kind === "move") { + const a = this.model.annot(d.id); + if (!a) return; + const patch = translatePatch(d.orig, x - d.x0, y - d.y0); + Object.assign(a, patch); // live, un-journalled; committed on up + d.moved = true; + this.strip.refreshOverlay(d.uid, d.id); + return; + } + if (d.kind === "pen") { d.pts.push([x, y]); } + this.strip.setPreview(d.uid, this._previewAnnot(d)); + } + + onUp(e) { + if (this.tool === "highlight") { this._commitHighlight(); return; } + const d = this.drag; + this.drag = null; + if (!d) return; + this.strip.setPreview(null, null); + + if (d.kind === "move") { + const a = this.model.annot(d.id); + if (!a || !d.moved) { this.strip.refreshOverlay(d.uid, this.selected); return; } + // Put the mark back where it started, then move it through the model so + // the whole gesture lands on the undo stack as one step. + const moved = structuredClone(a); + Object.assign(a, d.orig); + const patch = {}; + for (const k of Object.keys(moved)) if (k !== "id" && k !== "page" && k !== "kind") patch[k] = moved[k]; + this.model.moveAnnot(d.id, patch); + this.strip.refreshAllOverlays(d.id); + return; + } + + const a = this._previewAnnot(d, true); + if (a) { + const made = this.model.addAnnot(a); + this.selected = this.tool === "select" ? made.id : null; + } + this.strip.refreshAllOverlays(this.selected); + this.host.onChange?.(); + } + + // The mark a drag currently describes. `final` rejects degenerate ones so a + // stray click does not leave an invisible zero-size rectangle behind. + _previewAnnot(d, final = false) { + const common = { page: d.uid, color: this.color, width: this.width }; + switch (d.kind) { + case "pen": { + if (final && d.pts.length < 2) return null; + return { kind: "pen", ...common, pts: d.pts.slice() }; + } + case "arrow": { + if (final && !d.moved) return null; + return { kind: "arrow", ...common, x1: d.x0, y1: d.y0, x2: d.x, y2: d.y }; + } + case "rect": case "ellipse": case "redact": { + const b = normBox(d.x0, d.y0, d.x, d.y); + if (final && (b.w < 2 || b.h < 2)) return null; + if (d.kind === "redact") return { kind: "redact", page: d.uid, ...b }; + return { kind: d.kind, ...common, ...b }; + } + default: return null; + } + } + + // ---- highlight ---------------------------------------------------- + // Take the live selection's client rects, drop them onto whichever page + // each one sits on, and convert to user space. A selection spanning a page + // break therefore produces one highlight mark per page, which is also what + // the PDF format wants. + _commitHighlight() { + const sel = window.getSelection(); + if (!sel || sel.isCollapsed || sel.rangeCount === 0) return; + const byPage = new Map(); + for (let i = 0; i < sel.rangeCount; i++) { + for (const cr of sel.getRangeAt(i).getClientRects()) { + if (cr.width < 0.5 || cr.height < 0.5) continue; + const hit = this.strip.pageAt(cr.left + cr.width / 2, cr.top + cr.height / 2); + if (!hit) continue; + const ov = this.strip.overlayFor(hit.uid); + if (!ov || !ov.viewport) continue; + const r = this.strip.views.get(hit.uid).pv.div.getBoundingClientRect(); + const [ax, ay] = ov.toPdf(cr.left - r.left, cr.top - r.top); + const [bx, by] = ov.toPdf(cr.right - r.left, cr.bottom - r.top); + const box = normBox(ax, ay, bx, by); + if (box.w < 0.5 || box.h < 0.5) continue; + if (!byPage.has(hit.uid)) byPage.set(hit.uid, []); + byPage.get(hit.uid).push(box); + } + } + if (!byPage.size) return; + for (const [uid, rects] of byPage) { + this.model.addAnnot({ kind: "highlight", page: uid, color: this.color, opacity: 0.38, rects: mergeRows(rects) }); + } + sel.removeAllRanges(); + this.strip.refreshAllOverlays(null); + this.host.onChange?.(); + } + + // ---- stamps ------------------------------------------------------- + placeText({ uid, x, y }, text, size) { + if (!String(text || "").trim()) return null; + const a = this.model.addAnnot({ kind: "text", page: uid, color: this.color, size, x, y, text }); + this.strip.refreshAllOverlays(a.id); + this.selected = a.id; + this.host.onChange?.(); + return a; + } + + async _placeSignature(uid, x, y) { + let sig = this.host.signature(); + if (!sig) { + sig = await this.host.openSignaturePad(); + if (!sig) return; + } + const w = SIG_WIDTH_PT; + const h = w * (sig.aspect || 0.34); + const a = this.model.addAnnot({ + kind: "signature", page: uid, color: this.color === "#ffd400" ? "#1a1f2b" : this.color, + width: 1.6, x, y: y - h, w, h, strokes: sig.strokes, + }); + this.selected = a.id; + this.strip.refreshAllOverlays(a.id); + this.host.onChange?.(); + } + + /** Bounds of the current selection, for the status line. */ + selectedBounds() { + const a = this.model.annot(this.selected); + return a ? boundsOf(a) : null; + } +} + +// Client rects for a text selection come one per text run, so a single +// highlighted line arrives as a dozen slivers. Merging the ones that share a +// baseline turns them back into one band per line — fewer objects in the saved +// file, and no seams where two slivers overlap at 38% opacity. +function mergeRows(rects) { + const rows = []; + for (const r of rects.slice().sort((a, b) => b.y - a.y || a.x - b.x)) { + const row = rows.find((q) => Math.abs((q.y + q.h / 2) - (r.y + r.h / 2)) < Math.min(q.h, r.h) * 0.5); + if (!row) { rows.push({ ...r }); continue; } + const x0 = Math.min(row.x, r.x), x1 = Math.max(row.x + row.w, r.x + r.w); + const y0 = Math.min(row.y, r.y), y1 = Math.max(row.y + row.h, r.y + r.h); + row.x = x0; row.w = x1 - x0; row.y = y0; row.h = y1 - y0; + } + return rows; +} diff --git a/bundled-addons/pdf-editor/lib/view.js b/bundled-addons/pdf-editor/lib/view.js new file mode 100644 index 00000000..1303a2e8 --- /dev/null +++ b/bundled-addons/pdf-editor/lib/view.js @@ -0,0 +1,441 @@ +// The scrolling page strip. +// +// Built out of pdf.js's PDFPageView components rather than its PDFViewer. +// PDFViewer renders `pdfDocument.numPages` pages in the file's own order and +// offers no way to hide, reorder or individually rotate one — which is three +// of this editor's features. Owning the strip costs us a scroll observer and +// a scale calculation; it buys pages that move the instant the user drags a +// thumbnail, with no round-trip through the file. +// +// Two layers are ours rather than PDFPageView's: +// +// * The text layer. PDFPageView builds one, but tears it down whenever the +// page's canvas is discarded — and Theseus's find bar is Chromium's +// findInPage over the live DOM, so a torn-down text layer is a page that +// Ctrl+F cannot see. We build our own from cached text content and keep it +// attached for every page, drawn or not, so find covers the whole +// document rather than the dozen pages currently rasterised. +// +// * The overlay (lib/overlay.js), for the same reason plus hit-testing. +// +// Canvases ARE virtualised: a letter page at 100% is ~3.4 MB of bitmap, so a +// few hundred of them is gigabytes. Only pages near the viewport hold one. + +import { Overlay } from "./overlay.js"; + +const GUTTER = 28; // px of breathing room either side at fit-width +const DRAW_MARGIN = "180% 0px"; // how far outside the viewport to keep canvases +const MAX_PUMP_PASSES = 12; // retry sweeps before the pump gives up +const MAX_DRAW_RETRIES = 6; // per-page redraw attempts before we stop asking + +export class PageStrip { + constructor({ container, viewer, pdfjsLib, pdf, model, eventBus, layerProperties }) { + this.container = container; // the scrolling element + this.viewer = viewer; // #viewer, holds the .page divs + this.lib = pdfjsLib; + this.pdf = pdf; + this.model = model; + this.eventBus = eventBus; + this.layerProperties = layerProperties; + this.views = new Map(); // uid -> {pv, overlay, textDiv, textContent, stale} + this.scaleMode = "page-width"; // "page-width" | "page-fit" | number + this.scale = 1; + this.current = null; // uid of the page nearest the top of the view + this._onCurrent = []; + this._io = null; + this._visIo = null; + // A hidden tab produces no frames: requestAnimationFrame never runs, the + // IntersectionObserver never reports, and pdf.js's own render never + // publishes its canvas. Nothing can be done about that while hidden — and + // nothing needs to be, since nobody is looking — but the moment the tab + // comes back we have to re-measure and rasterise, or it stays blank. + this._onVisibility = () => { + if (document.hidden) return; + this._markVisibleByGeometry(); + this._pump(); + }; + document.addEventListener("visibilitychange", this._onVisibility); + } + + onCurrentChange(fn) { this._onCurrent.push(fn); } + + // ---- construction ------------------------------------------------- + async build() { + const { PDFPageView } = this.lib.viewer; + for (const uid of this.model.order) { + const p = this.model.page(uid); + const pdfPage = await this.pdf.getPage(p.src + 1); + const defaultViewport = pdfPage.getViewport({ scale: 1 }); + const pv = new PDFPageView({ + container: null, // we place the div ourselves + id: p.src + 1, + scale: 1, + defaultViewport, + eventBus: this.eventBus, + layerProperties: this.layerProperties, + // TextLayerMode is internal to the components bundle and not exported, + // hence the literal; 0 is DISABLE. We supply our own text layer, for + // the find-bar reason at the top of this file. + textLayerMode: 0, + annotationMode: this.lib.AnnotationMode.ENABLE_FORMS, + imageResourcesPath: "vendor/pdfjs/web/images/", + enableAutoLinking: false, + }); + pv.setPdfPage(pdfPage); + const entry = { pv, pdfPage, overlay: null, textDiv: null, textContent: null, + drawn: false, drawing: false, visible: false }; + this.views.set(uid, entry); + } + this.computeScale(); + this.layout(); + // Start at the top. Without this the container keeps whatever scroll + // offset the previous document left behind — and because the observer + // only rasterises what is near the viewport, a short document opened + // after a long one can land entirely out of view and never draw at all. + // Page divs also change height as they take their real dimensions, and + // Chromium's scroll anchoring happily follows that, so reset again once + // the layout has settled. + this.container.scrollTop = 0; + this._observe(); + this._trackCurrent(); + this._markVisibleByGeometry(); + this._pump(); + // Page divs settle into their real heights a frame later; re-measure then + // so the second screenful is queued without waiting for a scroll. + requestAnimationFrame(() => { + this.container.scrollTop = 0; + this._markVisibleByGeometry(); + this._pump(); + }); + } + + /** Viewport for a page at the current scale and rotation. */ + viewportOf(uid) { + const e = this.views.get(uid); + if (!e) return null; + return e.pdfPage.getViewport({ + scale: this.scale, + rotation: this.model.displayRotation(uid), + }); + } + + // ---- scale -------------------------------------------------------- + computeScale() { + const uid = this.current || this.model.visible()[0]; + if (!uid) { this.scale = 1; return; } + const e = this.views.get(uid); + const base = e.pdfPage.getViewport({ scale: 1, rotation: this.model.displayRotation(uid) }); + if (typeof this.scaleMode === "number") { this.scale = this.scaleMode; return; } + const availW = Math.max(120, this.container.clientWidth - GUTTER * 2); + if (this.scaleMode === "page-width") { + this.scale = availW / base.width; + } else { + const availH = Math.max(120, this.container.clientHeight - GUTTER); + this.scale = Math.min(availW / base.width, availH / base.height); + } + // pdf.js clamps its own viewer to this band; going outside it produces + // canvases the compositor refuses or a page too small to read. + this.scale = Math.min(10, Math.max(0.1, this.scale)); + } + + setScaleMode(mode) { + this.scaleMode = mode; + this.computeScale(); + this.layout(); + } + /** Step the numeric zoom, switching out of a fit mode if we are in one. */ + stepScale(dir) { + const steps = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 3, 4, 6]; + const at = this.scale; + const next = dir > 0 ? steps.find((s) => s > at + 0.001) : [...steps].reverse().find((s) => s < at - 0.001); + if (next) this.setScaleMode(next); + } + + // ---- layout ------------------------------------------------------- + /** Re-place every page div in display order and re-size all layers. */ + layout() { + this.viewer.style.setProperty("--scale-factor", String(this.scale)); + const visible = this.model.visible(); + // Detach deleted pages, then append in order. appendChild on an element + // already in the tree moves it, so this is also the reorder path. + for (const [uid, e] of this.views) { + if (!visible.includes(uid)) e.pv.div.remove(); + } + visible.forEach((uid, i) => { + const e = this.views.get(uid); + this.viewer.append(e.pv.div); + e.pv.updatePageNumber(i + 1); + e.pv.div.dataset.uid = uid; + }); + for (const uid of visible) this.applyPageGeometry(uid); + this._observe(); + this._markVisibleByGeometry(); + this._pump(); + } + + /** Push the current scale + rotation into one page's view and its layers. */ + applyPageGeometry(uid) { + const e = this.views.get(uid); + if (!e) return; + const rotation = this.model.extraRotation(uid); + // A window resize recomputes a fit scale and lands on a value a hair off + // the old one. Re-rendering every page for a difference nobody can see + // would also cancel whatever was mid-render, so ignore the noise. + const scaleChanged = Math.abs(e.pv.scale - this.scale) > 0.0005; + if (scaleChanged || e.pv.rotation !== rotation) { + e.pv.update({ scale: this.scale, rotation }); + e.drawn = false; // update() resets the canvas + // update() wipes the div's children, ours included. + if (e.textDiv) { e.textDiv.remove(); e.textDiv = null; } + if (e.overlay) { e.overlay.destroy(); e.overlay = null; } + } + this.ensureOverlay(uid); + this.refreshOverlay(uid); + if (!e.textDiv) this.buildTextLayer(uid); + } + + ensureOverlay(uid) { + const e = this.views.get(uid); + if (!e) return null; + if (!e.overlay) e.overlay = new Overlay(e.pv.div); + return e.overlay; + } + refreshOverlay(uid, selectedId = this._selectedId) { + const e = this.views.get(uid); + if (!e || !e.overlay) return; + const viewport = this.viewportOf(uid); + if (!viewport) return; + this._selectedId = selectedId; + let marks = this.model.annotsFor(uid); + // The in-progress drag is drawn from the same code as a committed mark, so + // what the user sees mid-drag is exactly what lands when they release. + if (this._preview && this._preview.uid === uid && this._preview.annot) { + marks = marks.concat([{ id: "__preview", ...this._preview.annot }]); + } + e.overlay.render(viewport, marks, selectedId); + } + + /** Show a not-yet-committed mark on one page. Pass (null, null) to clear. */ + setPreview(uid, annot) { + const prev = this._preview?.uid; + this._preview = uid ? { uid, annot } : null; + if (prev && prev !== uid) this.refreshOverlay(prev); + if (uid) this.refreshOverlay(uid); + } + refreshAllOverlays(selectedId) { + this._selectedId = selectedId; + for (const uid of this.model.visible()) this.refreshOverlay(uid, selectedId); + } + overlayFor(uid) { return this.views.get(uid)?.overlay || null; } + + // ---- text layer --------------------------------------------------- + // Built from cached text content so a re-layout is DOM work only — no + // second trip to the worker. Kept attached for every page regardless of + // whether its canvas is currently alive. + async buildTextLayer(uid) { + const e = this.views.get(uid); + if (!e || e.textDiv) return; + const div = document.createElement("div"); + div.className = "textLayer"; + e.textDiv = div; + e.pv.div.append(div); + const viewport = this.viewportOf(uid); + this.lib.setLayerDimensions(div, viewport); + try { + if (!e.textContent) e.textContent = await e.pdfPage.getTextContent(); + const tl = new this.lib.TextLayer({ textContentSource: e.textContent, container: div, viewport }); + await tl.render(); + } catch (err) { + // A page with no extractable text is normal (a scan). Anything else is + // worth a line in the console but must not stop the page rendering. + if (err?.name !== "AbortException") console.warn(`text layer for ${uid}:`, err?.message || err); + } + } + + // ---- canvas virtualisation ---------------------------------------- + // + // The observer only records what the user can see; the pump decides what to + // rasterise. Keeping those apart is what makes this survive a relayout: a + // render cancelled because the scale changed mid-flight simply leaves the + // page wanted-but-not-drawn, and the next pump picks it up. An earlier + // version drew straight from the observer callback, and a resize during + // startup — Theseus restoring its window bounds — could cancel the first + // render of every page, after which nothing ever asked again and the user + // sat looking at blank pages. + _observe() { + this._io?.disconnect(); + this._io = new IntersectionObserver((entries) => { + for (const ent of entries) { + const uid = ent.target.dataset.uid; + const e = uid && this.views.get(uid); + if (!e) continue; + e.visible = ent.isIntersecting; + } + this._pump(); + }, { root: this.container, rootMargin: DRAW_MARGIN }); + for (const uid of this.model.visible()) { + const e = this.views.get(uid); + if (e) this._io.observe(e.pv.div); + } + } + + /** + * Work out what is on screen by measuring, instead of waiting to be told. + * + * An IntersectionObserver only reports from the browser's rendering step, so + * a tab that has not produced a frame yet never gets its first callback — + * and an editor whose whole render schedule hangs off that observer then + * shows a document of blank pages until something else forces a paint. That + * is not hypothetical: it was intermittent on every cold open of a tab. The + * observer stays, because it is the efficient way to follow scrolling, but + * the first paint no longer depends on it. + */ + _markVisibleByGeometry() { + const root = this.container.getBoundingClientRect(); + if (!root.height) return; + const margin = root.height * 1.8; // matches DRAW_MARGIN + for (const uid of this.model.visible()) { + const e = this.views.get(uid); + if (!e) continue; + const r = e.pv.div.getBoundingClientRect(); + e.visible = r.bottom >= root.top - margin && r.top <= root.bottom + margin; + } + } + + /** Bring every page's canvas into line with whether it is currently wanted. */ + _pump() { + if (this._dead) return; + if (this._pumping) { this._pumpAgain = true; return; } + this._pumping = true; + queueMicrotask(async () => { + try { + let passes = 0; + this._pumpAgain = false; + do { + for (const uid of this.model.visible()) { + if (this._dead) return; + const e = this.views.get(uid); + if (!e) continue; + if (e.visible && !e.drawn) await this._draw(uid); + else if (!e.visible && e.drawn) this._undraw(uid); + } + if (!this._pumpAgain) break; + this._pumpAgain = false; + // Hand the frame back between passes. A retry that fails the same + // way every time would otherwise spin as fast as pdf.js can reject, + // freezing the tab instead of just failing one page. setTimeout, not + // rAF: a tab that is not painting never runs a rAF callback, which is + // exactly the situation a retry may be recovering from. + if (++passes < MAX_PUMP_PASSES) { + await new Promise((r) => setTimeout(r, 16)); + this._pumpAgain = true; + } else { + console.warn("page rendering gave up after", passes, "passes"); + break; + } + } while (this._pumpAgain); + } finally { this._pumping = false; } + }); + } + + async _draw(uid) { + const e = this.views.get(uid); + if (!e || e.drawn || e.drawing) return; + e.drawing = true; + try { + await e.pv.draw(); + e.drawn = true; + e.retries = 0; + } catch (err) { + // A cancelled render is routine — the scale or rotation moved under it. + // Leave the page undrawn and let the next pump have another go, but + // give up eventually so one unrenderable page cannot hold the pump open. + if (err?.name !== "RenderingCancelledException") console.warn(`draw ${uid}:`, err?.message || err); + if ((e.retries = (e.retries || 0) + 1) <= MAX_DRAW_RETRIES) this._pumpAgain = true; + return; + } finally { e.drawing = false; } + // draw() appends the canvas wrapper and the annotation layer; ours have to + // end up above them, and update()/reset() may have removed them entirely. + if (this._dead || !this.views.has(uid)) return; + if (!e.textDiv) await this.buildTextLayer(uid); + else e.pv.div.append(e.textDiv); + if (this._dead || !this.views.has(uid)) return; + this.ensureOverlay(uid); + e.pv.div.append(e.overlay.svg); + this.refreshOverlay(uid); + } + + _undraw(uid) { + const e = this.views.get(uid); + if (!e || !e.drawn) return; + e.drawn = false; + // Drop the canvas and the form layer; keep ours. reset() removes every + // child it was not told to keep, so re-attach after. + e.pv.reset(); + if (e.textDiv) e.pv.div.append(e.textDiv); + if (e.overlay) e.pv.div.append(e.overlay.svg); + } + + /** Force a redraw of one page — after a rotation, say. */ + async redraw(uid) { + const e = this.views.get(uid); + if (!e) return; + this.applyPageGeometry(uid); + e.drawn = false; + this._pump(); + } + + // ---- current page tracking ---------------------------------------- + _trackCurrent() { + this._visIo?.disconnect(); + // A page counts as "current" once its top edge is in the upper half of + // the viewport; that matches how every PDF reader reports a page number. + this._visIo = new IntersectionObserver((entries) => { + let best = null, bestTop = Infinity; + for (const ent of entries) { + if (!ent.isIntersecting) continue; + const top = Math.abs(ent.boundingClientRect.top - ent.rootBounds.top); + if (top < bestTop) { bestTop = top; best = ent.target.dataset.uid; } + } + if (best && best !== this.current) { + this.current = best; + for (const fn of this._onCurrent) { try { fn(best); } catch {} } + } + }, { root: this.container, threshold: [0, 0.1, 0.5] }); + for (const uid of this.model.visible()) { + const e = this.views.get(uid); + if (e) this._visIo.observe(e.pv.div); + } + } + + scrollTo(uid) { + const e = this.views.get(uid); + if (e) e.pv.div.scrollIntoView({ block: "start", behavior: "smooth" }); + } + + /** Which page div is under a client point, and where inside it. */ + pageAt(clientX, clientY) { + for (const uid of this.model.visible()) { + const e = this.views.get(uid); + if (!e) continue; + const r = e.pv.div.getBoundingClientRect(); + if (clientX >= r.left && clientX <= r.right && clientY >= r.top && clientY <= r.bottom) { + return { uid, vx: clientX - r.left, vy: clientY - r.top, rect: r }; + } + } + return null; + } + + destroy() { + this._dead = true; + document.removeEventListener("visibilitychange", this._onVisibility); + this._io?.disconnect(); + this._visIo?.disconnect(); + for (const e of this.views.values()) { + try { e.overlay?.destroy(); } catch {} + try { e.pv.destroy(); } catch {} + } + this.views.clear(); + this.viewer.textContent = ""; + } +} diff --git a/bundled-addons/pdf-editor/vendor/pdf-lib/LICENSE.md b/bundled-addons/pdf-editor/vendor/pdf-lib/LICENSE.md new file mode 100644 index 00000000..7a237e68 --- /dev/null +++ b/bundled-addons/pdf-editor/vendor/pdf-lib/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Andrew Dillon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bundled-addons/pdf-editor/vendor/pdf-lib/pdf-lib.esm.min.js b/bundled-addons/pdf-editor/vendor/pdf-lib/pdf-lib.esm.min.js new file mode 100644 index 00000000..861bff48 --- /dev/null +++ b/bundled-addons/pdf-editor/vendor/pdf-lib/pdf-lib.esm.min.js @@ -0,0 +1,16 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(e,n)};function e(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var n=function(){return(n=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]>2],e+=a[(3&t[r])<<4|t[r+1]>>4],e+=a[(15&t[r+1])<<2|t[r+2]>>6],e+=a[63&t[r+2]];return n%3==2?e=e.substring(0,e.length-1)+"=":n%3==1&&(e=e.substring(0,e.length-2)+"=="),e},c=function(t){var e,n,r,i,o,a=.75*t.length,h=t.length,l=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var u=new Uint8Array(a);for(e=0;e>4,u[l++]=(15&r)<<4|i>>2,u[l++]=(3&i)<<6|63&o;return u},d=/^(data)?:?([\w\/\+]+)?;?(charset=[\w-]+|base64)?.*,/i,f=function(t){var e=t.trim(),n=e.substring(0,100).match(d);if(!n)return c(e);var r=n[0],i=e.substring(r.length);return c(i)},p=function(t){return t.charCodeAt(0)},g=function(t){return t.codePointAt(0)},v=function(t,e){return w(t.toString(16),e,"0").toUpperCase()},y=function(t){return v(t,2)},m=function(t){return String.fromCharCode(t)},b=function(t){return m(parseInt(t,16))},w=function(t,e,n){for(var r="",i=0,o=e-t.length;i=55296&&r<=56319&&t.length>i&&(n=t.charCodeAt(i))>=56320&&n<=57343&&(o=2),[t.slice(e,e+o),o]},B=function(t){for(var e=[],n=0,r=t.length;nn&&l(),a+=d,s+=f}}return l(),h},P=/^D:(\d\d\d\d)(\d\d)?(\d\d)?(\d\d)?(\d\d)?(\d\d)?([+\-Z])?(\d\d)?'?(\d\d)?'?$/,D=function(t){var e=t.match(P);if(e){var n=e[1],r=e[2],i=void 0===r?"01":r,o=e[3],a=void 0===o?"01":o,s=e[4],h=void 0===s?"00":s,l=e[5],u=void 0===l?"00":l,c=e[6],d=void 0===c?"00":c,f=e[7],p=void 0===f?"Z":f,g=e[8],v=void 0===g?"00":g,y=e[9];return new Date(n+"-"+i+"-"+a+"T"+h+":"+u+":"+d+("Z"===p?"Z":""+p+v+":"+(void 0===y?"00":y)))}},j=function(t,e){for(var n,r,i=0;i>6&31|192;var s=63&o|128;n.push(a,s),r+=1}else if(o<65536){a=o>>12&15|224,s=o>>6&63|128;var h=63&o|128;n.push(a,s,h),r+=1}else{if(!(o<1114112))throw new Error("Invalid code point: 0x"+y(o));a=o>>18&7|240,s=o>>12&63|128,h=o>>6&63|128;var l=o>>0&63|128;n.push(a,s,h,l),r+=2}}return new Uint8Array(n)},J=function(t,e){void 0===e&&(e=!0);var n=[];e&&n.push(65279);for(var r=0,i=t.length;r=0&&t<=65535},$=function(t){return t>=65536&&t<=1114111},tt=function(t){return Math.floor((t-65536)/1024)+55296},et=function(t){return(t-65536)%1024+56320};!function(t){t.BigEndian="BigEndian",t.LittleEndian="LittleEndian"}(l||(l={}));var nt="�".codePointAt(0),rt=function(t,e){if(void 0===e&&(e=!0),t.length<=1)return String.fromCodePoint(nt);for(var n=e?st(t):l.BigEndian,r=e?2:0,i=[];t.length-r>=2;){var o=at(t[r++],t[r++],n);if(it(o))if(t.length-r<2)i.push(nt);else{var a=at(t[r++],t[r++],n);ot(a)?i.push(o,a):i.push(nt)}else ot(o)?(r+=2,i.push(nt)):i.push(o)}return r=55296&&t<=56319},ot=function(t){return t>=56320&&t<=57343},at=function(t,e,n){if(n===l.LittleEndian)return e<<8|t;if(n===l.BigEndian)return t<<8|e;throw new Error("Invalid byteOrder: "+n)},st=function(t){return ht(t)?l.BigEndian:lt(t)?l.LittleEndian:l.BigEndian},ht=function(t){return 254===t[0]&&255===t[1]},lt=function(t){return 255===t[0]&&254===t[1]},ut=function(t){return ht(t)||lt(t)},ct=function(t){var e,n=String(t);if(Math.abs(t)<1){if(e=parseInt(t.toString().split("e-")[1])){var r=t<0;r&&(t*=-1),t*=Math.pow(10,e-1),n="0."+new Array(e).join("0")+t.toString().substring(2),r&&(n="-"+n)}}else(e=parseInt(t.toString().split("+")[1]))>20&&(e-=20,n=(t/=Math.pow(10,e)).toString()+new Array(e+1).join("0"));return n},dt=function(t){return Math.ceil(t.toString(2).length/8)},ft=function(t){for(var e=new Uint8Array(dt(t)),n=1;n<=e.length;n++)e[n-1]=t>>8*(e.length-n);return e},pt=function(t){throw new Error(t)};function gt(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var vt=gt((function(t,e){var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var i in n)r(n,i)&&(t[i]=n[i])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var i={arraySet:function(t,e,n,r,i){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+r),i);else for(var o=0;o=0;)t[e]=0}var mt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],bt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],wt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],xt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],kt=new Array(576);yt(kt);var St=new Array(60);yt(St);var Ft=new Array(512);yt(Ft);var Ct=new Array(256);yt(Ct);var At=new Array(29);yt(At);var zt,Tt,Ot,Rt=new Array(30);function Bt(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function Nt(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function Pt(t){return t<256?Ft[t]:Ft[256+(t>>>7)]}function Dt(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function jt(t,e,n){t.bi_valid>16-n?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=n-16):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function Mt(t,e,n){var r,i,o=new Array(16),a=0;for(r=1;r<=15;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=It(o[s]++,s))}}function Ut(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Vt(t){t.bi_valid>8?Dt(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function Wt(t,e,n,r){var i=2*e,o=2*n;return t[i]>1;n>=1;n--)qt(t,o,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],qt(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,qt(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,r,i,o,a,s,h=e.dyn_tree,l=e.max_code,u=e.stat_desc.static_tree,c=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<573;n++)(o=h[2*h[2*(r=t.heap[n])+1]+1]+1)>p&&(o=p,g++),h[2*r+1]=o,r>l||(t.bl_count[o]++,a=0,r>=f&&(a=d[r-f]),s=h[2*r],t.opt_len+=s*(o+a),c&&(t.static_len+=s*(u[2*r+1]+a)));if(0!==g){do{for(o=p-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(r=t.bl_count[o];0!==r;)(i=t.heap[--n])>l||(h[2*i+1]!==o&&(t.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),r--)}}(t,e),Mt(o,l,t.bl_count)}function Gt(t,e,n){var r,i,o=-1,a=e[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++s>=7;r<30;r++)for(Rt[r]=i<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),Lt(t,t.l_desc),Lt(t,t.d_desc),a=function(t){var e;for(Gt(t,t.dyn_ltree,t.l_desc.max_code),Gt(t,t.dyn_dtree,t.d_desc.max_code),Lt(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*xt[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==e?Xt(t,e,n,r):4===t.strategy||o===i?(jt(t,2+(r?1:0),3),Kt(t,kt,St)):(jt(t,4+(r?1:0),3),function(t,e,n,r){var i;for(jt(t,e-257,5),jt(t,n-1,5),jt(t,r-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(Ct[n]+256+1)]++,t.dyn_dtree[2*Pt(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){jt(t,2,3),Et(t,256,kt),function(t){16===t.bi_valid?(Dt(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}};var Yt=function(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(i=i+e[r++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0};var Jt=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();var Qt,$t=function(t,e,n,r){var i=Jt,o=r+n;t^=-1;for(var a=r;a>>8^i[255&(t^e[a])];return-1^t},te={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function ee(t,e){return t.msg=te[e],e}function ne(t){return(t<<1)-(t>4?9:0)}function re(t){for(var e=t.length;--e>=0;)t[e]=0}function ie(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(vt.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function oe(t,e){Zt._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ie(t.strm)}function ae(t,e){t.pending_buf[t.pending++]=e}function se(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function he(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,vt.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=Yt(t.adler,e,i,n):2===t.state.wrap&&(t.adler=$t(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function le(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,l=t.window,u=t.w_mask,c=t.prev,d=t.strstart+258,f=l[o+a-1],p=l[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(l[(n=e)+a]===p&&l[n+a-1]===f&&l[n]===l[o]&&l[++n]===l[o+1]){o+=2,n++;do{}while(l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&oa){if(t.match_start=e,a=r,r>=s)break;f=l[o+a-1],p=l[o+a]}}}while((e=c[e&u])>h&&0!=--i);return a<=t.lookahead?a:t.lookahead}function ue(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-262)){vt.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,e=n=t.hash_size;do{r=t.head[--e],t.head[e]=r>=a?r-a:0}while(--n);e=n=a;do{r=t.prev[--e],t.prev[e]=r>=a?r-a:0}while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=he(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=3)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(r=Zt._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,r=Zt._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<15&&(a=2,r-=16),i<1||i>9||8!==n||r<8||r>15||e<0||e>9||o<0||o>4)return ee(t,-2);8===r&&(r=9);var s=new pe;return t.state=s,s.strm=t,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(ue(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,oe(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(oe(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(oe(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(oe(t,!1),t.strm.avail_out),1)})),new fe(4,4,8,4,ce),new fe(4,5,16,8,ce),new fe(4,6,32,32,ce),new fe(4,4,16,16,de),new fe(8,16,32,32,de),new fe(8,16,128,128,de),new fe(8,32,128,256,de),new fe(32,128,258,1024,de),new fe(32,258,258,4096,de)];var me={deflateInit:function(t,e){return ye(t,e,8,15,8,0)},deflateInit2:ye,deflateReset:ve,deflateResetKeep:ge,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?-2:(t.state.gzhead=e,0):-2},deflate:function(t,e){var n,r,i,o;if(!t||!t.state||e>5||e<0)return t?ee(t,-2):-2;if(r=t.state,!t.output||!t.input&&0!==t.avail_in||666===r.status&&4!==e)return ee(t,0===t.avail_out?-5:-2);if(r.strm=t,n=r.last_flush,r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,ae(r,31),ae(r,139),ae(r,8),r.gzhead?(ae(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ae(r,255&r.gzhead.time),ae(r,r.gzhead.time>>8&255),ae(r,r.gzhead.time>>16&255),ae(r,r.gzhead.time>>24&255),ae(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ae(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(ae(r,255&r.gzhead.extra.length),ae(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=$t(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(ae(r,0),ae(r,0),ae(r,0),ae(r,0),ae(r,0),ae(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ae(r,3),r.status=113);else{var a=8+(r.w_bits-8<<4)<<8;a|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(a|=32),a+=31-a%31,r.status=113,se(r,a),0!==r.strstart&&(se(r,t.adler>>>16),se(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>i&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),ie(t),i=r.pending,r.pending!==r.pending_buf_size));)ae(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),ie(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),ie(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=$t(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.status=103)}else r.status=103;if(103===r.status&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&ie(t),r.pending+2<=r.pending_buf_size&&(ae(r,255&t.adler),ae(r,t.adler>>8&255),t.adler=0,r.status=113)):r.status=113),0!==r.pending){if(ie(t),0===t.avail_out)return r.last_flush=-1,0}else if(0===t.avail_in&&ne(e)<=ne(n)&&4!==e)return ee(t,-5);if(666===r.status&&0!==t.avail_in)return ee(t,-5);if(0!==t.avail_in||0!==r.lookahead||0!==e&&666!==r.status){var s=2===r.strategy?function(t,e){for(var n;;){if(0===t.lookahead&&(ue(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,n=Zt._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(oe(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(oe(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(oe(t,!1),0===t.strm.avail_out)?1:2}(r,e):3===r.strategy?function(t,e){for(var n,r,i,o,a=t.window;;){if(t.lookahead<=258){if(ue(t),t.lookahead<=258&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(r=a[i=t.strstart-1])===a[++i]&&r===a[++i]&&r===a[++i]){o=t.strstart+258;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(n=Zt._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=Zt._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(oe(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(oe(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(oe(t,!1),0===t.strm.avail_out)?1:2}(r,e):Qt[r.level].func(r,e);if(3!==s&&4!==s||(r.status=666),1===s||3===s)return 0===t.avail_out&&(r.last_flush=-1),0;if(2===s&&(1===e?Zt._tr_align(r):5!==e&&(Zt._tr_stored_block(r,0,0,!1),3===e&&(re(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),ie(t),0===t.avail_out))return r.last_flush=-1,0}return 4!==e?0:r.wrap<=0?1:(2===r.wrap?(ae(r,255&t.adler),ae(r,t.adler>>8&255),ae(r,t.adler>>16&255),ae(r,t.adler>>24&255),ae(r,255&t.total_in),ae(r,t.total_in>>8&255),ae(r,t.total_in>>16&255),ae(r,t.total_in>>24&255)):(se(r,t.adler>>>16),se(r,65535&t.adler)),ie(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},deflateEnd:function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?ee(t,-2):(t.state=null,113===e?ee(t,-3):0):-2},deflateSetDictionary:function(t,e){var n,r,i,o,a,s,h,l,u=e.length;if(!t||!t.state)return-2;if(2===(o=(n=t.state).wrap)||1===o&&42!==n.status||n.lookahead)return-2;for(1===o&&(t.adler=Yt(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&(re(n.head),n.strstart=0,n.block_start=0,n.insert=0),l=new vt.Buf8(n.w_size),vt.arraySet(l,e,u-n.w_size,n.w_size,0),e=l,u=n.w_size),a=t.avail_in,s=t.next_in,h=t.input,t.avail_in=u,t.next_in=0,t.input=e,ue(n);n.lookahead>=3;){r=n.strstart,i=n.lookahead-2;do{n.ins_h=(n.ins_h<=252?6:ke>=248?5:ke>=240?4:ke>=224?3:ke>=192?2:1;xe[254]=xe[254]=1;function Se(t,e){if(e<65534&&(t.subarray&&we||!t.subarray&&be))return String.fromCharCode.apply(null,vt.shrinkBuf(t,e));for(var n="",r=0;r>>6,e[o++]=128|63&n):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|63&n):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|63&n);return e},Ce=function(t){return Se(t,t.length)},Ae=function(t){for(var e=new vt.Buf8(t.length),n=0,r=e.length;n4)s[r++]=65533,n+=o-1;else{for(i&=2===o?31:3===o?15:7;o>1&&n1?s[r++]=65533:i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|1023&i)}return Se(s,r)},Te=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0||0===n?e:n+xe[t[n]]>e?n:e};var Oe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},Re=Object.prototype.toString;function Be(t){if(!(this instanceof Be))return new Be(t);this.options=vt.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Oe,this.strm.avail_out=0;var n=me.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(0!==n)throw new Error(te[n]);if(e.header&&me.deflateSetHeader(this.strm,e.header),e.dictionary){var r;if(r="string"==typeof e.dictionary?Fe(e.dictionary):"[object ArrayBuffer]"===Re.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,0!==(n=me.deflateSetDictionary(this.strm,r)))throw new Error(te[n]);this._dict_set=!0}}function Ne(t,e){var n=new Be(e);if(n.push(t,!0),n.err)throw n.msg||te[n.err];return n.result}Be.prototype.push=function(t,e){var n,r,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;r=e===~~e?e:!0===e?4:0,"string"==typeof t?i.input=Fe(t):"[object ArrayBuffer]"===Re.call(t)?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new vt.Buf8(o),i.next_out=0,i.avail_out=o),1!==(n=me.deflate(i,r))&&0!==n)return this.onEnd(n),this.ended=!0,!1;0!==i.avail_out&&(0!==i.avail_in||4!==r&&2!==r)||("string"===this.options.to?this.onData(Ce(vt.shrinkBuf(i.output,i.next_out))):this.onData(vt.shrinkBuf(i.output,i.next_out)))}while((i.avail_in>0||0===i.avail_out)&&1!==n);return 4===r?(n=me.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n):2!==r||(this.onEnd(0),i.avail_out=0,!0)},Be.prototype.onData=function(t){this.chunks.push(t)},Be.prototype.onEnd=function(t){0===t&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=vt.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Pe={Deflate:Be,deflate:Ne,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Ne(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Ne(t,e)}},De=function(t,e){var n,r,i,o,a,s,h,l,u,c,d,f,p,g,v,y,m,b,w,x,k,S,F,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),o=t.next_out,A=t.output,a=o-(e-t.avail_out),s=o+(t.avail_out-257),h=n.dmax,l=n.wsize,u=n.whave,c=n.wnext,d=n.window,f=n.hold,p=n.bits,g=n.lencode,v=n.distcode,y=(1<>>=w=b>>>24,p-=w,0===(w=b>>>16&255))A[o++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=g[(65535&b)+(f&(1<>>=w,p-=w),p<15&&(f+=C[r++]<>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=v[(65535&b)+(f&(1<h){t.msg="invalid distance too far back",n.mode=30;break t}if(f>>>=w,p-=w,k>(w=o-a)){if((w=k-w)>u&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(S=0,F=d,0===c){if(S+=l-w,w2;)A[o++]=F[S++],A[o++]=F[S++],A[o++]=F[S++],x-=3;x&&(A[o++]=F[S++],x>1&&(A[o++]=F[S++]))}else{S=o-k;do{A[o++]=A[S++],A[o++]=A[S++],A[o++]=A[S++],x-=3}while(x>2);x&&(A[o++]=A[S++],x>1&&(A[o++]=A[S++]))}break}}break}}while(r>3,f&=(1<<(p-=x<<3))-1,t.next_in=r,t.next_out=o,t.avail_in=r=1&&0===R[x];x--);if(k>x&&(k=x),0===x)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(w=1;w0&&(0===t||1!==x))return-1;for(B[1]=0,m=1;m<15;m++)B[m+1]=B[m]+R[m];for(b=0;b852||2===t&&A>592)return 1;for(;;){p=m-F,a[b]f?(g=N[P+a[b]],v=T[O+a[b]]):(g=96,v=0),h=1<>F)+(l-=h)]=p<<24|g<<16|v|0}while(0!==l);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,b++,0==--R[m]){if(m===x)break;m=e[n+a[b]]}if(m>k&&(z&c)!==u){for(0===F&&(F=k),d+=w,C=1<<(S=m-F);S+F852||2===t&&A>592)return 1;i[u=z&c]=k<<24|S<<16|d-o|0}}return 0!==z&&(i[d+z]=m-F<<24|64<<16|0),s.bits=k,0};function Ve(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function We(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new vt.Buf16(320),this.work=new vt.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function qe(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new vt.Buf32(852),e.distcode=e.distdyn=new vt.Buf32(592),e.sane=1,e.back=-1,0):-2}function Ke(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,qe(t)):-2}function Le(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?-2:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,Ke(t))):-2}function Ge(t,e){var n,r;return t?(r=new We,t.state=r,r.window=null,0!==(n=Le(t,e))&&(t.state=null),n):-2}var He,_e,Xe=!0;function Ze(t){if(Xe){var e;for(He=new vt.Buf32(512),_e=new vt.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Ue(1,t.lens,0,288,He,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Ue(2,t.lens,0,32,_e,0,t.work,{bits:5}),Xe=!1}t.lencode=He,t.lenbits=9,t.distcode=_e,t.distbits=5}function Ye(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<=o.wsize?(vt.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>r&&(i=r),vt.arraySet(o.window,e,n-r,i,o.wnext),(r-=i)?(vt.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=$t(n.check,z,2,0),l=0,u=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",n.mode=30;break}if(8!=(15&l)){t.msg="unknown compression method",n.mode=30;break}if(u-=4,k=8+(15&(l>>>=4)),0===n.wbits)n.wbits=k;else if(k>n.wbits){t.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=$t(n.check,z,2,0)),l=0,u=0,n.mode=3;case 3:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>8&255,z[2]=l>>>16&255,z[3]=l>>>24&255,n.check=$t(n.check,z,4,0)),l=0,u=0,n.mode=4;case 4:for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>8),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=$t(n.check,z,2,0)),l=0,u=0,n.mode=5;case 5:if(1024&n.flags){for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>>8&255,n.check=$t(n.check,z,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((f=n.length)>s&&(f=s),f&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),vt.arraySet(n.head.extra,r,o,f,k)),512&n.flags&&(n.check=$t(n.check,r,f,o)),s-=f,o+=f,n.length-=f),n.length))break t;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===s)break t;f=0;do{k=r[o+f++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&f>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=12;break;case 10:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>=7&u,u-=7&u,n.mode=27;break}for(;u<3;){if(0===s)break t;s--,l+=r[o++]<>>=1)){case 0:n.mode=14;break;case 1:if(Ze(n),n.mode=20,6===e){l>>>=2,u-=2;break t}break;case 2:n.mode=17;break;case 3:t.msg="invalid block type",n.mode=30}l>>>=2,u-=2;break;case 14:for(l>>>=7&u,u-=7&u;u<32;){if(0===s)break t;s--,l+=r[o++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&l,l=0,u=0,n.mode=15,6===e)break t;case 15:n.mode=16;case 16:if(f=n.length){if(f>s&&(f=s),f>h&&(f=h),0===f)break t;vt.arraySet(i,r,o,f,a),s-=f,o+=f,h-=f,a+=f,n.length-=f;break}n.mode=12;break;case 17:for(;u<14;){if(0===s)break t;s--,l+=r[o++]<>>=5,u-=5,n.ndist=1+(31&l),l>>>=5,u-=5,n.ncode=4+(15&l),l>>>=4,u-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[T[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,F={bits:n.lenbits},S=Ue(0,n.lens,0,19,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=v,u-=v,n.lens[n.have++]=m;else{if(16===m){for(C=v+2;u>>=v,u-=v,0===n.have){t.msg="invalid bit length repeat",n.mode=30;break}k=n.lens[n.have-1],f=3+(3&l),l>>>=2,u-=2}else if(17===m){for(C=v+3;u>>=v)),l>>>=3,u-=3}else{for(C=v+7;u>>=v)),l>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=30;break}for(;f--;)n.lens[n.have++]=k}}if(30===n.mode)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,F={bits:n.lenbits},S=Ue(1,n.lens,0,n.nlen,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,F={bits:n.distbits},S=Ue(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,F),n.distbits=F.bits,S){t.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===e)break t;case 20:n.mode=21;case 21:if(s>=6&&h>=258){t.next_out=a,t.avail_out=h,t.next_in=o,t.avail_in=s,n.hold=l,n.bits=u,De(t,d),a=t.next_out,i=t.output,h=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,l=n.hold,u=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;y=(A=n.lencode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,n.length=m,0===y){n.mode=26;break}if(32&y){n.back=-1,n.mode=12;break}if(64&y){t.msg="invalid literal/length code",n.mode=30;break}n.extra=15&y,n.mode=22;case 22:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;y=(A=n.distcode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,64&y){t.msg="invalid distance code",n.mode=30;break}n.offset=m,n.extra=15&y,n.mode=24;case 24:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===h)break t;if(f=d-h,n.offset>f){if((f=n.offset-f)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=30;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),g=n.window}else g=i,p=a-n.offset,f=n.length;f>h&&(f=h),h-=f,n.length-=f;do{i[a++]=g[p++]}while(--f);0===n.length&&(n.mode=21);break;case 26:if(0===h)break t;i[a++]=n.length,h--,n.mode=21;break;case 27:if(n.wrap){for(;u<32;){if(0===s)break t;s--,l|=r[o++]<=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Oe,this.strm.avail_out=0;var n=Je.inflateInit2(this.strm,e.windowBits);if(n!==Qe.Z_OK)throw new Error(te[n]);if(this.header=new $e,Je.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Fe(e.dictionary):"[object ArrayBuffer]"===tn.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=Je.inflateSetDictionary(this.strm,e.dictionary))!==Qe.Z_OK))throw new Error(te[n])}function nn(t,e){var n=new en(e);if(n.push(t,!0),n.err)throw n.msg||te[n.err];return n.result}en.prototype.push=function(t,e){var n,r,i,o,a,s=this.strm,h=this.options.chunkSize,l=this.options.dictionary,u=!1;if(this.ended)return!1;r=e===~~e?e:!0===e?Qe.Z_FINISH:Qe.Z_NO_FLUSH,"string"==typeof t?s.input=Ae(t):"[object ArrayBuffer]"===tn.call(t)?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new vt.Buf8(h),s.next_out=0,s.avail_out=h),(n=Je.inflate(s,Qe.Z_NO_FLUSH))===Qe.Z_NEED_DICT&&l&&(n=Je.inflateSetDictionary(this.strm,l)),n===Qe.Z_BUF_ERROR&&!0===u&&(n=Qe.Z_OK,u=!1),n!==Qe.Z_STREAM_END&&n!==Qe.Z_OK)return this.onEnd(n),this.ended=!0,!1;s.next_out&&(0!==s.avail_out&&n!==Qe.Z_STREAM_END&&(0!==s.avail_in||r!==Qe.Z_FINISH&&r!==Qe.Z_SYNC_FLUSH)||("string"===this.options.to?(i=Te(s.output,s.next_out),o=s.next_out-i,a=ze(s.output,i),s.next_out=o,s.avail_out=h-o,o&&vt.arraySet(s.output,s.output,i,o,0),this.onData(a)):this.onData(vt.shrinkBuf(s.output,s.next_out)))),0===s.avail_in&&0===s.avail_out&&(u=!0)}while((s.avail_in>0||0===s.avail_out)&&n!==Qe.Z_STREAM_END);return n===Qe.Z_STREAM_END&&(r=Qe.Z_FINISH),r===Qe.Z_FINISH?(n=Je.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Qe.Z_OK):r!==Qe.Z_SYNC_FLUSH||(this.onEnd(Qe.Z_OK),s.avail_out=0,!0)},en.prototype.onData=function(t){this.chunks.push(t)},en.prototype.onEnd=function(t){t===Qe.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=vt.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var rn={Inflate:en,inflate:nn,inflateRaw:function(t,e){return(e=e||{}).raw=!0,nn(t,e)},ungzip:nn},on={};(0,vt.assign)(on,Pe,rn,Qe);for(var an=on,sn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",hn=new Uint8Array(256),ln=0;ln>4,l[h++]=(15&r)<<4|i>>2,l[h++]=(3&i)<<6|63&o;return l}(t)))},dn={Courier:"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","Courier-Bold":"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","Courier-Oblique":"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","Courier-BoldOblique":"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",Helvetica:"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","Helvetica-Bold":"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","Helvetica-Oblique":"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","Helvetica-BoldOblique":"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","Times-Roman":"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","Times-Bold":"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","Times-Italic":"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","Times-BoldItalic":"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",Symbol:"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",ZapfDingbats:"eJxtmNtu20YQhl+F4FULyMGeD7pz3AY1ChtG7NpFA18w1NomIlECSRcxgrx7SVk7+wOdG8H5OJydf2Z2d5gf9cV+t0v9VK/r+6vXsXlOlbHe28paq229qj/t++m62aXZ4J/m8PRb1z9/baZxefK63Z6eXN5dVMvTCh83u277xr/6kLrnl2XNq7TpXnczuZyabdee98/b2VzM/x4/dd/T5qab2pd6PQ2vaVVfvDRD005puE3Lu7eH1HbN9hTjx4/77/X6y5lcnUmjVzHIVVDicVX/1W/SsO36dLMfu6nb9/X6TAoBD+5euvZbn8axXtuZ36dhPJrVQqgPQoh5hev91LWLkIv94W1Ygq9+aX+tZAx2tfz64284/sblN/rqfLP/mqrbt3FKu7G67Nv9cNgPzZQ2H6rz7bb6vLgZq89pTMO/M/xfEqturJpqSM/d7GJIm2oamk3aNcO3av80O5xh3yyKmm1193ZIT02bqovTKjP+MAf++7zsZvZ3276kYyWWXB0z99S18/PbafPHQ71W4fjn/fxnFO+ZvkrT0LVzTr78qB/+nk38bHM9exgP8zr1z9U7jt6840YW5uSJKcZOCaBBnKgm5mU8MVNYyMwWFvO7Ukagkmgg6sDWQ5yFFqjzUrLEaQ3BEmiwNsMSaZS0vgWfOkPHWQowNeTUc0kumnxZvsgPxlGai6VTGUqAVCTQ6QkWnc77DKEiLktSUBJKqHIQZ86d8gCpHYoiEzMsb1ubYy8vW50DChB5ZhGqrijD0EqUIeiaEHIfCg5Kpuu0ApiToaGPSY0uaQsyr65L2oKi1yFt1PLaQ3lzfXTgXodGoJYzglndSLDMPg1sTPJpQJHJigw0QrGERqD9YhyTOgONQDUyuF1zaxuokc/BW2ztXCMrGZ9WMW1oQZHIXWNBkSCfRZEL5BMUiZw6CzVSFCfUSGZFNjIldoKDkonTKQiJIGzWmFd3BizJJ9SINoLDriOfUCOZS+zg+KGD1qGiLNMLxtJD1/ns00ON6EzyUCM6vbxhoBKaqbG3DFQCNiL1iHccBPV0DHhQH/JW8EW90dkyFKGywCJU0WkVSvSGeiSUODWFFD0HYdPQVoiRgfPMA+/nnRgiAyNYSjpWNQcNSMrtFCUH4ZIRpSCWocFCSuhCEY6hoUClc0WC52BJlCYYLQdhN+hygRRRlo5BKRRLS6oihSqh+ZzzRGG1Mo4Iz1LoP0qsxDGFzk0JE42ji0jCPejomJKCuwil4m5CiRMEUMVSzVLDUstSx1Juc0oVWMpqY295qVltmtWmWW2a1aZZbZrVplltmtWmWW2G1WZYbYbVZlhthtVmWG2G1WZYbYbVZlhtltVmWW2W1WZZbZbVZlltltVmWW2W1QYjQCh7E2aAQHeGhCFgPoNoy8KNb2wxBhmGKBxoUZXlLGsLI6AsftEDHV0wIURVbANLcTKlGGBIKPOAxCmhePCKUwFzAmpDFRQvjA9R06Hq8TONvshgKDCuRAZTXigUxjxNFfKRo3CLhnIJBMFRvMZpqpNBMlQJzGT5WFQMVQI/AikPMIhEU1aDjqJvQwmjSHB05cC9jbYwc5UtAHNLhDw41ha+lEqF4JaH3gmB61SYcqInxTDmQK8v08vjqv4zDf1N0w3Lf4A8/vwPpfK11w=="};!function(t){t.Courier="Courier",t.CourierBold="Courier-Bold",t.CourierOblique="Courier-Oblique",t.CourierBoldOblique="Courier-BoldOblique",t.Helvetica="Helvetica",t.HelveticaBold="Helvetica-Bold",t.HelveticaOblique="Helvetica-Oblique",t.HelveticaBoldOblique="Helvetica-BoldOblique",t.TimesRoman="Times-Roman",t.TimesRomanBold="Times-Bold",t.TimesRomanItalic="Times-Italic",t.TimesRomanBoldItalic="Times-BoldItalic",t.Symbol="Symbol",t.ZapfDingbats="ZapfDingbats"}(un||(un={}));for(var fn={},pn=function(){function t(){var t=this;this.getWidthOfGlyph=function(e){return t.CharWidths[e]},this.getXAxisKerningForPair=function(e,n){return(t.KernPairXAmounts[e]||{})[n]}}return t.load=function(e){var n=fn[e];if(n)return n;var r=cn(dn[e]),i=Object.assign(new t,JSON.parse(r));return i.CharWidths=i.CharMetrics.reduce((function(t,e){return t[e.N]=e.WX,t}),{}),i.KernPairXAmounts=i.KernPairs.reduce((function(t,e){var n=e[0],r=e[1],i=e[2];return t[n]||(t[n]={}),t[n][r]=i,t}),{}),fn[e]=i,i},t}(),gn=cn("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"),vn=JSON.parse(gn),yn=function(t,e){var n=this;this.canEncodeUnicodeCodePoint=function(t){return t in n.unicodeMappings},this.encodeUnicodeCodePoint=function(t){var e=n.unicodeMappings[t];if(!e){var r=String.fromCharCode(t),i="0x"+function(t,e,n){for(var r="",i=0,o=e-t.length;ir)throw new Error(Sn(e)+" must be at least "+n+" and at most "+r+", but was actually "+t)},In=function(t,e,n,r){Pn(t,e,["number","undefined"]),"number"==typeof t&&En(t,e,n,r)},Mn=function(t,e,n){if(Pn(t,e,["number"]),t%n!=0)throw new Error(Sn(e)+" must be a multiple of "+n+", but was actually "+t)},Un=function(t,e){if(!Number.isInteger(t))throw new Error(Sn(e)+" must be an integer, but was actually "+t)},Vn=function(t,e){if(![1,0].includes(Math.sign(t)))throw new Error(Sn(e)+" must be a positive number or 0, but was actually "+t)},Wn=new Uint16Array(256),qn=0;qn<256;qn++)Wn[qn]=qn;Wn[22]=p(""),Wn[24]=p("˘"),Wn[25]=p("ˇ"),Wn[26]=p("ˆ"),Wn[27]=p("˙"),Wn[28]=p("˝"),Wn[29]=p("˛"),Wn[30]=p("˚"),Wn[31]=p("˜"),Wn[127]=p("�"),Wn[128]=p("•"),Wn[129]=p("†"),Wn[130]=p("‡"),Wn[131]=p("…"),Wn[132]=p("—"),Wn[133]=p("–"),Wn[134]=p("ƒ"),Wn[135]=p("⁄"),Wn[136]=p("‹"),Wn[137]=p("›"),Wn[138]=p("−"),Wn[139]=p("‰"),Wn[140]=p("„"),Wn[141]=p("“"),Wn[142]=p("”"),Wn[143]=p("‘"),Wn[144]=p("’"),Wn[145]=p("‚"),Wn[146]=p("™"),Wn[147]=p("fi"),Wn[148]=p("fl"),Wn[149]=p("Ł"),Wn[150]=p("Œ"),Wn[151]=p("Š"),Wn[152]=p("Ÿ"),Wn[153]=p("Ž"),Wn[154]=p("ı"),Wn[155]=p("ł"),Wn[156]=p("œ"),Wn[157]=p("š"),Wn[158]=p("ž"),Wn[159]=p("�"),Wn[160]=p("€"),Wn[173]=p("�");var Kn,Ln=function(t){for(var e=new Array(t.length),n=0,r=t.length;n=0;)t[e]=0}var Sr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Fr=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Cr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Ar=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],zr=new Array(576);kr(zr);var Tr=new Array(60);kr(Tr);var Or=new Array(512);kr(Or);var Rr=new Array(256);kr(Rr);var Br=new Array(29);kr(Br);var Nr,Pr,Dr,jr=new Array(30);function Er(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function Ir(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function Mr(t){return t<256?Or[t]:Or[256+(t>>>7)]}function Ur(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function Vr(t,e,n){t.bi_valid>16-n?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=n-16):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function Kr(t,e,n){var r,i,o=new Array(16),a=0;for(r=1;r<=15;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=qr(o[s]++,s))}}function Lr(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Gr(t){t.bi_valid>8?Ur(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function Hr(t,e,n,r){var i=2*e,o=2*n;return t[i]>1;n>=1;n--)_r(t,o,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],_r(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,_r(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,r,i,o,a,s,h=e.dyn_tree,l=e.max_code,u=e.stat_desc.static_tree,c=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<573;n++)(o=h[2*h[2*(r=t.heap[n])+1]+1]+1)>p&&(o=p,g++),h[2*r+1]=o,r>l||(t.bl_count[o]++,a=0,r>=f&&(a=d[r-f]),s=h[2*r],t.opt_len+=s*(o+a),c&&(t.static_len+=s*(u[2*r+1]+a)));if(0!==g){do{for(o=p-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(r=t.bl_count[o];0!==r;)(i=t.heap[--n])>l||(h[2*i+1]!==o&&(t.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),r--)}}(t,e),Kr(o,l,t.bl_count)}function Yr(t,e,n){var r,i,o=-1,a=e[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++s>=7;r<30;r++)for(jr[r]=i<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),Zr(t,t.l_desc),Zr(t,t.d_desc),a=function(t){var e;for(Yr(t,t.dyn_ltree,t.l_desc.max_code),Yr(t,t.dyn_dtree,t.d_desc.max_code),Zr(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*Ar[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==e?$r(t,e,n,r):4===t.strategy||o===i?(Vr(t,2+(r?1:0),3),Xr(t,zr,Tr)):(Vr(t,4+(r?1:0),3),function(t,e,n,r){var i;for(Vr(t,e-257,5),Vr(t,n-1,5),Vr(t,r-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(Rr[n]+256+1)]++,t.dyn_dtree[2*Mr(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){Vr(t,2,3),Wr(t,256,zr),function(t){16===t.bi_valid?(Ur(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}};var ei=function(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(i=i+e[r++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0};var ni=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();var ri,ii=function(t,e,n,r){var i=ni,o=r+n;t^=-1;for(var a=r;a>>8^i[255&(t^e[a])];return-1^t},oi={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function ai(t,e){return t.msg=oi[e],e}function si(t){return(t<<1)-(t>4?9:0)}function hi(t){for(var e=t.length;--e>=0;)t[e]=0}function li(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(xr.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function ui(t,e){ti._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,li(t.strm)}function ci(t,e){t.pending_buf[t.pending++]=e}function di(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function fi(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,xr.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=ei(t.adler,e,i,n):2===t.state.wrap&&(t.adler=ii(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function pi(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,l=t.window,u=t.w_mask,c=t.prev,d=t.strstart+258,f=l[o+a-1],p=l[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(l[(n=e)+a]===p&&l[n+a-1]===f&&l[n]===l[o]&&l[++n]===l[o+1]){o+=2,n++;do{}while(l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&oa){if(t.match_start=e,a=r,r>=s)break;f=l[o+a-1],p=l[o+a]}}}while((e=c[e&u])>h&&0!=--i);return a<=t.lookahead?a:t.lookahead}function gi(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-262)){xr.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,e=n=t.hash_size;do{r=t.head[--e],t.head[e]=r>=a?r-a:0}while(--n);e=n=a;do{r=t.prev[--e],t.prev[e]=r>=a?r-a:0}while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=fi(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=3)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(r=ti._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,r=ti._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<15&&(a=2,r-=16),i<1||i>9||8!==n||r<8||r>15||e<0||e>9||o<0||o>4)return ai(t,-2);8===r&&(r=9);var s=new bi;return t.state=s,s.strm=t,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(gi(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,ui(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(ui(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(ui(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(ui(t,!1),t.strm.avail_out),1)})),new mi(4,4,8,4,vi),new mi(4,5,16,8,vi),new mi(4,6,32,32,vi),new mi(4,4,16,16,yi),new mi(8,16,32,32,yi),new mi(8,16,128,128,yi),new mi(8,32,128,256,yi),new mi(32,128,258,1024,yi),new mi(32,258,258,4096,yi)];var Si={deflateInit:function(t,e){return ki(t,e,8,15,8,0)},deflateInit2:ki,deflateReset:xi,deflateResetKeep:wi,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?-2:(t.state.gzhead=e,0):-2},deflate:function(t,e){var n,r,i,o;if(!t||!t.state||e>5||e<0)return t?ai(t,-2):-2;if(r=t.state,!t.output||!t.input&&0!==t.avail_in||666===r.status&&4!==e)return ai(t,0===t.avail_out?-5:-2);if(r.strm=t,n=r.last_flush,r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,ci(r,31),ci(r,139),ci(r,8),r.gzhead?(ci(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ci(r,255&r.gzhead.time),ci(r,r.gzhead.time>>8&255),ci(r,r.gzhead.time>>16&255),ci(r,r.gzhead.time>>24&255),ci(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ci(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(ci(r,255&r.gzhead.extra.length),ci(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=ii(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(ci(r,0),ci(r,0),ci(r,0),ci(r,0),ci(r,0),ci(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ci(r,3),r.status=113);else{var a=8+(r.w_bits-8<<4)<<8;a|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(a|=32),a+=31-a%31,r.status=113,di(r,a),0!==r.strstart&&(di(r,t.adler>>>16),di(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>i&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),li(t),i=r.pending,r.pending!==r.pending_buf_size));)ci(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),li(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),li(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=ii(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.status=103)}else r.status=103;if(103===r.status&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&li(t),r.pending+2<=r.pending_buf_size&&(ci(r,255&t.adler),ci(r,t.adler>>8&255),t.adler=0,r.status=113)):r.status=113),0!==r.pending){if(li(t),0===t.avail_out)return r.last_flush=-1,0}else if(0===t.avail_in&&si(e)<=si(n)&&4!==e)return ai(t,-5);if(666===r.status&&0!==t.avail_in)return ai(t,-5);if(0!==t.avail_in||0!==r.lookahead||0!==e&&666!==r.status){var s=2===r.strategy?function(t,e){for(var n;;){if(0===t.lookahead&&(gi(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,n=ti._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(ui(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(ui(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(ui(t,!1),0===t.strm.avail_out)?1:2}(r,e):3===r.strategy?function(t,e){for(var n,r,i,o,a=t.window;;){if(t.lookahead<=258){if(gi(t),t.lookahead<=258&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(r=a[i=t.strstart-1])===a[++i]&&r===a[++i]&&r===a[++i]){o=t.strstart+258;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(n=ti._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=ti._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(ui(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(ui(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(ui(t,!1),0===t.strm.avail_out)?1:2}(r,e):ri[r.level].func(r,e);if(3!==s&&4!==s||(r.status=666),1===s||3===s)return 0===t.avail_out&&(r.last_flush=-1),0;if(2===s&&(1===e?ti._tr_align(r):5!==e&&(ti._tr_stored_block(r,0,0,!1),3===e&&(hi(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),li(t),0===t.avail_out))return r.last_flush=-1,0}return 4!==e?0:r.wrap<=0?1:(2===r.wrap?(ci(r,255&t.adler),ci(r,t.adler>>8&255),ci(r,t.adler>>16&255),ci(r,t.adler>>24&255),ci(r,255&t.total_in),ci(r,t.total_in>>8&255),ci(r,t.total_in>>16&255),ci(r,t.total_in>>24&255)):(di(r,t.adler>>>16),di(r,65535&t.adler)),li(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},deflateEnd:function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?ai(t,-2):(t.state=null,113===e?ai(t,-3):0):-2},deflateSetDictionary:function(t,e){var n,r,i,o,a,s,h,l,u=e.length;if(!t||!t.state)return-2;if(2===(o=(n=t.state).wrap)||1===o&&42!==n.status||n.lookahead)return-2;for(1===o&&(t.adler=ei(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&(hi(n.head),n.strstart=0,n.block_start=0,n.insert=0),l=new xr.Buf8(n.w_size),xr.arraySet(l,e,u-n.w_size,n.w_size,0),e=l,u=n.w_size),a=t.avail_in,s=t.next_in,h=t.input,t.avail_in=u,t.next_in=0,t.input=e,gi(n);n.lookahead>=3;){r=n.strstart,i=n.lookahead-2;do{n.ins_h=(n.ins_h<=252?6:zi>=248?5:zi>=240?4:zi>=224?3:zi>=192?2:1;Ai[254]=Ai[254]=1;function Ti(t,e){if(e<65534&&(t.subarray&&Ci||!t.subarray&&Fi))return String.fromCharCode.apply(null,xr.shrinkBuf(t,e));for(var n="",r=0;r>>6,e[o++]=128|63&n):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|63&n):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|63&n);return e},Ri=function(t){return Ti(t,t.length)},Bi=function(t){for(var e=new xr.Buf8(t.length),n=0,r=e.length;n4)s[r++]=65533,n+=o-1;else{for(i&=2===o?31:3===o?15:7;o>1&&n1?s[r++]=65533:i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|1023&i)}return Ti(s,r)},Pi=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0||0===n?e:n+Ai[t[n]]>e?n:e};var Di=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},ji=Object.prototype.toString;function Ei(t){if(!(this instanceof Ei))return new Ei(t);this.options=xr.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Di,this.strm.avail_out=0;var n=Si.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(0!==n)throw new Error(oi[n]);if(e.header&&Si.deflateSetHeader(this.strm,e.header),e.dictionary){var r;if(r="string"==typeof e.dictionary?Oi(e.dictionary):"[object ArrayBuffer]"===ji.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,0!==(n=Si.deflateSetDictionary(this.strm,r)))throw new Error(oi[n]);this._dict_set=!0}}function Ii(t,e){var n=new Ei(e);if(n.push(t,!0),n.err)throw n.msg||oi[n.err];return n.result}Ei.prototype.push=function(t,e){var n,r,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;r=e===~~e?e:!0===e?4:0,"string"==typeof t?i.input=Oi(t):"[object ArrayBuffer]"===ji.call(t)?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new xr.Buf8(o),i.next_out=0,i.avail_out=o),1!==(n=Si.deflate(i,r))&&0!==n)return this.onEnd(n),this.ended=!0,!1;0!==i.avail_out&&(0!==i.avail_in||4!==r&&2!==r)||("string"===this.options.to?this.onData(Ri(xr.shrinkBuf(i.output,i.next_out))):this.onData(xr.shrinkBuf(i.output,i.next_out)))}while((i.avail_in>0||0===i.avail_out)&&1!==n);return 4===r?(n=Si.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n):2!==r||(this.onEnd(0),i.avail_out=0,!0)},Ei.prototype.onData=function(t){this.chunks.push(t)},Ei.prototype.onEnd=function(t){0===t&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=xr.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Mi={Deflate:Ei,deflate:Ii,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Ii(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Ii(t,e)}},Ui=function(t,e){var n,r,i,o,a,s,h,l,u,c,d,f,p,g,v,y,m,b,w,x,k,S,F,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),o=t.next_out,A=t.output,a=o-(e-t.avail_out),s=o+(t.avail_out-257),h=n.dmax,l=n.wsize,u=n.whave,c=n.wnext,d=n.window,f=n.hold,p=n.bits,g=n.lencode,v=n.distcode,y=(1<>>=w=b>>>24,p-=w,0===(w=b>>>16&255))A[o++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=g[(65535&b)+(f&(1<>>=w,p-=w),p<15&&(f+=C[r++]<>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=v[(65535&b)+(f&(1<h){t.msg="invalid distance too far back",n.mode=30;break t}if(f>>>=w,p-=w,k>(w=o-a)){if((w=k-w)>u&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(S=0,F=d,0===c){if(S+=l-w,w2;)A[o++]=F[S++],A[o++]=F[S++],A[o++]=F[S++],x-=3;x&&(A[o++]=F[S++],x>1&&(A[o++]=F[S++]))}else{S=o-k;do{A[o++]=A[S++],A[o++]=A[S++],A[o++]=A[S++],x-=3}while(x>2);x&&(A[o++]=A[S++],x>1&&(A[o++]=A[S++]))}break}}break}}while(r>3,f&=(1<<(p-=x<<3))-1,t.next_in=r,t.next_out=o,t.avail_in=r=1&&0===R[x];x--);if(k>x&&(k=x),0===x)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(w=1;w0&&(0===t||1!==x))return-1;for(B[1]=0,m=1;m<15;m++)B[m+1]=B[m]+R[m];for(b=0;b852||2===t&&A>592)return 1;for(;;){p=m-F,a[b]f?(g=N[P+a[b]],v=T[O+a[b]]):(g=96,v=0),h=1<>F)+(l-=h)]=p<<24|g<<16|v|0}while(0!==l);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,b++,0==--R[m]){if(m===x)break;m=e[n+a[b]]}if(m>k&&(z&c)!==u){for(0===F&&(F=k),d+=w,C=1<<(S=m-F);S+F852||2===t&&A>592)return 1;i[u=z&c]=k<<24|S<<16|d-o|0}}return 0!==z&&(i[d+z]=m-F<<24|64<<16|0),s.bits=k,0};function Gi(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function Hi(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new xr.Buf16(320),this.work=new xr.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function _i(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new xr.Buf32(852),e.distcode=e.distdyn=new xr.Buf32(592),e.sane=1,e.back=-1,0):-2}function Xi(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,_i(t)):-2}function Zi(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?-2:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,Xi(t))):-2}function Yi(t,e){var n,r;return t?(r=new Hi,t.state=r,r.window=null,0!==(n=Zi(t,e))&&(t.state=null),n):-2}var Ji,Qi,$i=!0;function to(t){if($i){var e;for(Ji=new xr.Buf32(512),Qi=new xr.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Li(1,t.lens,0,288,Ji,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Li(2,t.lens,0,32,Qi,0,t.work,{bits:5}),$i=!1}t.lencode=Ji,t.lenbits=9,t.distcode=Qi,t.distbits=5}function eo(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<=o.wsize?(xr.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>r&&(i=r),xr.arraySet(o.window,e,n-r,i,o.wnext),(r-=i)?(xr.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=ii(n.check,z,2,0),l=0,u=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",n.mode=30;break}if(8!=(15&l)){t.msg="unknown compression method",n.mode=30;break}if(u-=4,k=8+(15&(l>>>=4)),0===n.wbits)n.wbits=k;else if(k>n.wbits){t.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=ii(n.check,z,2,0)),l=0,u=0,n.mode=3;case 3:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>8&255,z[2]=l>>>16&255,z[3]=l>>>24&255,n.check=ii(n.check,z,4,0)),l=0,u=0,n.mode=4;case 4:for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>8),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=ii(n.check,z,2,0)),l=0,u=0,n.mode=5;case 5:if(1024&n.flags){for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>>8&255,n.check=ii(n.check,z,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((f=n.length)>s&&(f=s),f&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),xr.arraySet(n.head.extra,r,o,f,k)),512&n.flags&&(n.check=ii(n.check,r,f,o)),s-=f,o+=f,n.length-=f),n.length))break t;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===s)break t;f=0;do{k=r[o+f++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&f>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=12;break;case 10:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>=7&u,u-=7&u,n.mode=27;break}for(;u<3;){if(0===s)break t;s--,l+=r[o++]<>>=1)){case 0:n.mode=14;break;case 1:if(to(n),n.mode=20,6===e){l>>>=2,u-=2;break t}break;case 2:n.mode=17;break;case 3:t.msg="invalid block type",n.mode=30}l>>>=2,u-=2;break;case 14:for(l>>>=7&u,u-=7&u;u<32;){if(0===s)break t;s--,l+=r[o++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&l,l=0,u=0,n.mode=15,6===e)break t;case 15:n.mode=16;case 16:if(f=n.length){if(f>s&&(f=s),f>h&&(f=h),0===f)break t;xr.arraySet(i,r,o,f,a),s-=f,o+=f,h-=f,a+=f,n.length-=f;break}n.mode=12;break;case 17:for(;u<14;){if(0===s)break t;s--,l+=r[o++]<>>=5,u-=5,n.ndist=1+(31&l),l>>>=5,u-=5,n.ncode=4+(15&l),l>>>=4,u-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[T[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,F={bits:n.lenbits},S=Li(0,n.lens,0,19,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=v,u-=v,n.lens[n.have++]=m;else{if(16===m){for(C=v+2;u>>=v,u-=v,0===n.have){t.msg="invalid bit length repeat",n.mode=30;break}k=n.lens[n.have-1],f=3+(3&l),l>>>=2,u-=2}else if(17===m){for(C=v+3;u>>=v)),l>>>=3,u-=3}else{for(C=v+7;u>>=v)),l>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=30;break}for(;f--;)n.lens[n.have++]=k}}if(30===n.mode)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,F={bits:n.lenbits},S=Li(1,n.lens,0,n.nlen,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,F={bits:n.distbits},S=Li(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,F),n.distbits=F.bits,S){t.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===e)break t;case 20:n.mode=21;case 21:if(s>=6&&h>=258){t.next_out=a,t.avail_out=h,t.next_in=o,t.avail_in=s,n.hold=l,n.bits=u,Ui(t,d),a=t.next_out,i=t.output,h=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,l=n.hold,u=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;y=(A=n.lencode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,n.length=m,0===y){n.mode=26;break}if(32&y){n.back=-1,n.mode=12;break}if(64&y){t.msg="invalid literal/length code",n.mode=30;break}n.extra=15&y,n.mode=22;case 22:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;y=(A=n.distcode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,64&y){t.msg="invalid distance code",n.mode=30;break}n.offset=m,n.extra=15&y,n.mode=24;case 24:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===h)break t;if(f=d-h,n.offset>f){if((f=n.offset-f)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=30;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),g=n.window}else g=i,p=a-n.offset,f=n.length;f>h&&(f=h),h-=f,n.length-=f;do{i[a++]=g[p++]}while(--f);0===n.length&&(n.mode=21);break;case 26:if(0===h)break t;i[a++]=n.length,h--,n.mode=21;break;case 27:if(n.wrap){for(;u<32;){if(0===s)break t;s--,l|=r[o++]<=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Di,this.strm.avail_out=0;var n=no.inflateInit2(this.strm,e.windowBits);if(n!==ro.Z_OK)throw new Error(oi[n]);if(this.header=new io,no.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Oi(e.dictionary):"[object ArrayBuffer]"===oo.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=no.inflateSetDictionary(this.strm,e.dictionary))!==ro.Z_OK))throw new Error(oi[n])}function so(t,e){var n=new ao(e);if(n.push(t,!0),n.err)throw n.msg||oi[n.err];return n.result}ao.prototype.push=function(t,e){var n,r,i,o,a,s=this.strm,h=this.options.chunkSize,l=this.options.dictionary,u=!1;if(this.ended)return!1;r=e===~~e?e:!0===e?ro.Z_FINISH:ro.Z_NO_FLUSH,"string"==typeof t?s.input=Bi(t):"[object ArrayBuffer]"===oo.call(t)?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new xr.Buf8(h),s.next_out=0,s.avail_out=h),(n=no.inflate(s,ro.Z_NO_FLUSH))===ro.Z_NEED_DICT&&l&&(n=no.inflateSetDictionary(this.strm,l)),n===ro.Z_BUF_ERROR&&!0===u&&(n=ro.Z_OK,u=!1),n!==ro.Z_STREAM_END&&n!==ro.Z_OK)return this.onEnd(n),this.ended=!0,!1;s.next_out&&(0!==s.avail_out&&n!==ro.Z_STREAM_END&&(0!==s.avail_in||r!==ro.Z_FINISH&&r!==ro.Z_SYNC_FLUSH)||("string"===this.options.to?(i=Pi(s.output,s.next_out),o=s.next_out-i,a=Ni(s.output,i),s.next_out=o,s.avail_out=h-o,o&&xr.arraySet(s.output,s.output,i,o,0),this.onData(a)):this.onData(xr.shrinkBuf(s.output,s.next_out)))),0===s.avail_in&&0===s.avail_out&&(u=!0)}while((s.avail_in>0||0===s.avail_out)&&n!==ro.Z_STREAM_END);return n===ro.Z_STREAM_END&&(r=ro.Z_FINISH),r===ro.Z_FINISH?(n=no.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ro.Z_OK):r!==ro.Z_SYNC_FLUSH||(this.onEnd(ro.Z_OK),s.avail_out=0,!0)},ao.prototype.onData=function(t){this.chunks.push(t)},ao.prototype.onEnd=function(t){t===ro.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=xr.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ho={Inflate:ao,inflate:so,inflateRaw:function(t,e){return(e=e||{}).raw=!0,so(t,e)},ungzip:so},lo={};(0,xr.assign)(lo,Mi,ho,ro);var uo=lo,co=function(){function t(t,e){this.major=String(t),this.minor=String(e)}return t.prototype.toString=function(){var t=m(129);return"%PDF-"+this.major+"."+this.minor+"\n%"+t+t+t+t},t.prototype.sizeInBytes=function(){return 12+this.major.length+this.minor.length},t.prototype.copyBytesInto=function(t,e){var n=e;return t[e++]=wr.Percent,t[e++]=wr.P,t[e++]=wr.D,t[e++]=wr.F,t[e++]=wr.Dash,e+=x(this.major,t,e),t[e++]=wr.Period,e+=x(this.minor,t,e),t[e++]=wr.Newline,t[e++]=wr.Percent,t[e++]=129,t[e++]=129,t[e++]=129,t[e++]=129,e-n},t.forVersion=function(e,n){return new t(e,n)},t}(),fo=function(){function t(){}return t.prototype.clone=function(t){throw new Hn(this.constructor.name,"clone")},t.prototype.toString=function(){throw new Hn(this.constructor.name,"toString")},t.prototype.sizeInBytes=function(){throw new Hn(this.constructor.name,"sizeInBytes")},t.prototype.copyBytesInto=function(t,e){throw new Hn(this.constructor.name,"copyBytesInto")},t}(),po=function(t){function n(e){var n=t.call(this)||this;return n.numberValue=e,n.stringValue=ct(e),n}return e(n,t),n.prototype.asNumber=function(){return this.numberValue},n.prototype.value=function(){return this.numberValue},n.prototype.clone=function(){return n.of(this.numberValue)},n.prototype.toString=function(){return this.stringValue},n.prototype.sizeInBytes=function(){return this.stringValue.length},n.prototype.copyBytesInto=function(t,e){return e+=x(this.stringValue,t,e),this.stringValue.length},n.of=function(t){return new n(t)},n}(fo),go=function(t){function n(e){var n=t.call(this)||this;return n.array=[],n.context=e,n}return e(n,t),n.prototype.size=function(){return this.array.length},n.prototype.push=function(t){this.array.push(t)},n.prototype.insert=function(t,e){this.array.splice(t,0,e)},n.prototype.indexOf=function(t){var e=this.array.indexOf(t);return-1===e?void 0:e},n.prototype.remove=function(t){this.array.splice(t,1)},n.prototype.set=function(t,e){this.array[t]=e},n.prototype.get=function(t){return this.array[t]},n.prototype.lookupMaybe=function(t){for(var e,n=[],r=1;r=wr.ExclamationPoint&&i<=wr.Tilde&&!wo[i]?h:"#"+y(l)}return r.encodedName=o,r}return e(n,t),n.prototype.asBytes=function(){for(var t=[],e="",n=!1,r=function(e){void 0!==e&&t.push(e),n=!1},i=1,o=this.encodedName.length;i=wr.Zero&&s<=wr.Nine||s>=wr.a&&s<=wr.f||s>=wr.A&&s<=wr.F?2!==(e+=a).length&&(h>="0"&&h<="9"||h>="a"&&h<="f"||h>="A"&&h<="F")||(r(parseInt(e,16)),e=""):r(s):s===wr.Hash?n=!0:r(s)}return new Uint8Array(t)},n.prototype.decodeText=function(){var t=this.asBytes();return String.fromCharCode.apply(String,Array.from(t))},n.prototype.asString=function(){return this.encodedName},n.prototype.value=function(){return this.encodedName},n.prototype.clone=function(){return this},n.prototype.toString=function(){return this.encodedName},n.prototype.sizeInBytes=function(){return this.encodedName.length},n.prototype.copyBytesInto=function(t,e){return e+=x(this.encodedName,t,e),this.encodedName.length},n.of=function(t){var e=function(t){return t.replace(/#([\dABCDEF]{2})/g,(function(t,e){return b(e)}))}(t),r=Fo.get(e);return r||(r=new n(So,e),Fo.set(e,r)),r},n.Length=n.of("Length"),n.FlateDecode=n.of("FlateDecode"),n.Resources=n.of("Resources"),n.Font=n.of("Font"),n.XObject=n.of("XObject"),n.ExtGState=n.of("ExtGState"),n.Contents=n.of("Contents"),n.Type=n.of("Type"),n.Parent=n.of("Parent"),n.MediaBox=n.of("MediaBox"),n.Page=n.of("Page"),n.Annots=n.of("Annots"),n.TrimBox=n.of("TrimBox"),n.ArtBox=n.of("ArtBox"),n.BleedBox=n.of("BleedBox"),n.CropBox=n.of("CropBox"),n.Rotate=n.of("Rotate"),n.Title=n.of("Title"),n.Author=n.of("Author"),n.Subject=n.of("Subject"),n.Creator=n.of("Creator"),n.Keywords=n.of("Keywords"),n.Producer=n.of("Producer"),n.CreationDate=n.of("CreationDate"),n.ModDate=n.of("ModDate"),n}(fo),Ao=new(function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.asNull=function(){return null},n.prototype.clone=function(){return this},n.prototype.toString=function(){return"null"},n.prototype.sizeInBytes=function(){return 4},n.prototype.copyBytesInto=function(t,e){return t[e++]=wr.n,t[e++]=wr.u,t[e++]=wr.l,t[e++]=wr.l,4},n}(fo)),zo=function(t){function n(e,n){var r=t.call(this)||this;return r.dict=e,r.context=n,r}return e(n,t),n.prototype.keys=function(){return Array.from(this.dict.keys())},n.prototype.values=function(){return Array.from(this.dict.values())},n.prototype.entries=function(){return Array.from(this.dict.entries())},n.prototype.set=function(t,e){this.dict.set(t,e)},n.prototype.get=function(t,e){void 0===e&&(e=!1);var n=this.dict.get(t);if(n!==Ao||e)return n},n.prototype.has=function(t){var e=this.dict.get(t);return void 0!==e&&e!==Ao},n.prototype.lookupMaybe=function(t){for(var e,n=[],r=1;rthis.largestObjectNumber&&(this.largestObjectNumber=t.objectNumber)},t.prototype.nextRef=function(){return this.largestObjectNumber+=1,No.of(this.largestObjectNumber)},t.prototype.register=function(t){var e=this.nextRef();return this.assign(e,t),e},t.prototype.delete=function(t){return this.indirectObjects.delete(t)},t.prototype.lookupMaybe=function(t){for(var e=[],n=1;n1?(this.subsections.push([t]),this.chunkIdx+=1,this.chunkLength=1):(e.push(t),this.chunkLength+=1)},t.create=function(){return new t({ref:No.of(0,65535),offset:0,deleted:!0})},t.createEmpty=function(){return new t},t}(),Lo=function(){function t(t){this.lastXRefOffset=String(t)}return t.prototype.toString=function(){return"startxref\n"+this.lastXRefOffset+"\n%%EOF"},t.prototype.sizeInBytes=function(){return 16+this.lastXRefOffset.length},t.prototype.copyBytesInto=function(t,e){var n=e;return t[e++]=wr.s,t[e++]=wr.t,t[e++]=wr.a,t[e++]=wr.r,t[e++]=wr.t,t[e++]=wr.x,t[e++]=wr.r,t[e++]=wr.e,t[e++]=wr.f,t[e++]=wr.Newline,e+=x(this.lastXRefOffset,t,e),t[e++]=wr.Newline,t[e++]=wr.Percent,t[e++]=wr.Percent,t[e++]=wr.E,t[e++]=wr.O,t[e++]=wr.F,e-n},t.forLastCrossRefSectionOffset=function(e){return new t(e)},t}(),Go=function(){function t(t){this.dict=t}return t.prototype.toString=function(){return"trailer\n"+this.dict.toString()},t.prototype.sizeInBytes=function(){return 8+this.dict.sizeInBytes()},t.prototype.copyBytesInto=function(t,e){var n=e;return t[e++]=wr.t,t[e++]=wr.r,t[e++]=wr.a,t[e++]=wr.i,t[e++]=wr.l,t[e++]=wr.e,t[e++]=wr.r,t[e++]=wr.Newline,(e+=this.dict.copyBytesInto(t,e))-n},t.of=function(e){return new t(e)},t}(),Ho=function(t){function n(e,n,r){void 0===r&&(r=!0);var i=t.call(this,e.obj({}),r)||this;return i.objects=n,i.offsets=i.computeObjectOffsets(),i.offsetsString=i.computeOffsetsString(),i.dict.set(Co.of("Type"),Co.of("ObjStm")),i.dict.set(Co.of("N"),po.of(i.objects.length)),i.dict.set(Co.of("First"),po.of(i.offsetsString.length)),i}return e(n,t),n.prototype.getObjectsCount=function(){return this.objects.length},n.prototype.clone=function(t){return n.withContextAndObjects(t||this.dict.context,this.objects.slice(),this.encode)},n.prototype.getContentsString=function(){for(var t=this.offsetsString,e=0,n=this.objects.length;e1&&(t.push(e),t.push(o.ref.objectNumber),e=0),e+=1}return t.push(e),t},i.computeEntryTuples=function(){for(var t=new Array(i.entries.length),e=0,n=i.entries.length;ee[0]&&(e[0]=l),u>e[1]&&(e[1]=u),c>e[2]&&(e[2]=c)}return e},i.entries=n||[],i.entryTuplesCache=Gn.populatedBy(i.computeEntryTuples),i.maxByteWidthsCache=Gn.populatedBy(i.computeMaxEntryByteWidths),i.indexCache=Gn.populatedBy(i.computeIndex),e.set(Co.of("Type"),Co.of("XRef")),i}return e(n,t),n.prototype.addDeletedEntry=function(t,e){var n=Do.Deleted;this.entries.push({type:n,ref:t,nextFreeObjectNumber:e}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},n.prototype.addUncompressedEntry=function(t,e){var n=Do.Uncompressed;this.entries.push({type:n,ref:t,offset:e}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},n.prototype.addCompressedEntry=function(t,e,n){var r=Do.Compressed;this.entries.push({type:r,ref:t,objectStreamRef:e,index:n}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},n.prototype.clone=function(t){var e=this.dict,r=this.entries,i=this.encode;return n.of(e.clone(t),r.slice(),i)},n.prototype.getContentsString=function(){for(var t=this.entryTuplesCache.access(),e=this.maxByteWidthsCache.access(),n="",r=0,i=t.length;r=0;d--)n+=(l[d]||0).toString(2);for(d=e[1]-1;d>=0;d--)n+=(u[d]||0).toString(2);for(d=e[2]-1;d>=0;d--)n+=(c[d]||0).toString(2)}return n},n.prototype.getUnencodedContents=function(){for(var t=this.entryTuplesCache.access(),e=this.maxByteWidthsCache.access(),n=new Uint8Array(this.getUnencodedContentsSize()),r=0,i=0,o=t.length;i=0;f--)n[r++]=u[f]||0;for(f=e[1]-1;f>=0;f--)n[r++]=c[f]||0;for(f=e[2]-1;f>=0;f--)n[r++]=d[f]||0}return n},n.prototype.getUnencodedContentsSize=function(){var t=this.maxByteWidthsCache.access();return L(t)*this.entries.length},n.prototype.updateDict=function(){t.prototype.updateDict.call(this);var e=this.maxByteWidthsCache.access(),n=this.indexCache.access(),r=this.dict.context;this.dict.set(Co.of("W"),r.obj(e)),this.dict.set(Co.of("Index"),r.obj(n))},n.create=function(t,e){void 0===e&&(e=!0);var r=new n(t,[],e);return r.addDeletedEntry(No.of(0,65535),0),r},n.of=function(t,e,r){return void 0===r&&(r=!0),new n(t,e,r)},n}(Eo),Jo=function(t){function n(e,n,r,i){var o=t.call(this,e,n)||this;return o.encodeStreams=r,o.objectsPerStream=i,o}return e(n,t),n.prototype.computeBufferSize=function(){return r(this,void 0,void 0,(function(){var t,e,n,r,o,a,s,h,l,u,c,d,f,p,g,v,y,m,b;return i(this,(function(i){switch(i.label){case 0:t=this.context.largestObjectNumber+1,e=co.forVersion(1,7),n=e.sizeInBytes()+2,r=Yo.create(this.createTrailerDict(),this.encodeStreams),o=[],a=[],s=[],h=this.context.enumerateIndirectObjects(),d=0,f=h.length,i.label=1;case 1:return d"},n.prototype.sizeInBytes=function(){return this.value.length+2},n.prototype.copyBytesInto=function(t,e){return t[e++]=wr.LessThan,e+=x(this.value,t,e),t[e++]=wr.GreaterThan,this.value.length+2},n.of=function(t){return new n(t)},n.fromText=function(t){for(var e=J(t),r="",i=0,o=e.length;i> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000>\nendcodespacerange\n"+t.length+" beginbfchar\n"+t.map((function(t){return t[0]+" "+t[1]})).join("\n")+"\nendbfchar\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"},ea=function(){for(var t=[],e=0;e"},na=function(t){return v(t,4)},ra=function(t){if(Q(t))return na(t);if($(t)){var e=tt(t),n=et(t);return""+na(e)+na(n)}var r=y(t);throw new Error("0x"+r+" is not a valid UTF-8 or UTF-16 codepoint.")},ia=function(t){function n(e){var n=t.call(this)||this;return n.value=e,n}return e(n,t),n.prototype.asBytes=function(){for(var t=[],e="",n=!1,r=function(e){void 0!==e&&t.push(e),n=!1},i=0,o=this.value.length;i=wr.Zero&&s<=wr.Seven?3!==(e+=a).length&&h>="0"&&h<="7"||(r(parseInt(e,8)),e=""):r(s):s===wr.BackSlash?n=!0:r(s)}return new Uint8Array(t)},n.prototype.decodeText=function(){var t=this.asBytes();return ut(t)?rt(t):Ln(t)},n.prototype.decodeDate=function(){var t=this.decodeText(),e=D(t);if(!e)throw new nr(t);return e},n.prototype.asString=function(){return this.value},n.prototype.clone=function(){return n.of(this.value)},n.prototype.toString=function(){return"("+this.value+")"},n.prototype.sizeInBytes=function(){return this.value.length+2},n.prototype.copyBytesInto=function(t,e){return t[e++]=wr.LeftParen,e+=x(this.value,t,e),t[e++]=wr.RightParen,this.value.length+2},n.of=function(t){return new n(t)},n.fromDate=function(t){return new n("D:"+w(String(t.getUTCFullYear()),4,"0")+w(String(t.getUTCMonth()+1),2,"0")+w(String(t.getUTCDate()),2,"0")+w(String(t.getUTCHours()),2,"0")+w(String(t.getUTCMinutes()),2,"0")+w(String(t.getUTCSeconds()),2,"0")+"Z")},n}(fo),oa=function(){function t(t,e,n,r){var i=this;this.allGlyphsInFontSortedById=function(){for(var t=new Array(i.font.characterSet.length),e=0,n=t.length;e=0;)t[e]=0}var pa=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ga=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],va=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ya=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ma=new Array(576);fa(ma);var ba=new Array(60);fa(ba);var wa=new Array(512);fa(wa);var xa=new Array(256);fa(xa);var ka=new Array(29);fa(ka);var Sa,Fa,Ca,Aa=new Array(30);function za(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function Ta(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function Oa(t){return t<256?wa[t]:wa[256+(t>>>7)]}function Ra(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function Ba(t,e,n){t.bi_valid>16-n?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=n-16):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function Da(t,e,n){var r,i,o=new Array(16),a=0;for(r=1;r<=15;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=Pa(o[s]++,s))}}function ja(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Ea(t){t.bi_valid>8?Ra(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function Ia(t,e,n,r){var i=2*e,o=2*n;return t[i]>1;n>=1;n--)Ma(t,o,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Ma(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,Ma(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,r,i,o,a,s,h=e.dyn_tree,l=e.max_code,u=e.stat_desc.static_tree,c=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<573;n++)(o=h[2*h[2*(r=t.heap[n])+1]+1]+1)>p&&(o=p,g++),h[2*r+1]=o,r>l||(t.bl_count[o]++,a=0,r>=f&&(a=d[r-f]),s=h[2*r],t.opt_len+=s*(o+a),c&&(t.static_len+=s*(u[2*r+1]+a)));if(0!==g){do{for(o=p-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(r=t.bl_count[o];0!==r;)(i=t.heap[--n])>l||(h[2*i+1]!==o&&(t.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),r--)}}(t,e),Da(o,l,t.bl_count)}function Wa(t,e,n){var r,i,o=-1,a=e[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++s>=7;r<30;r++)for(Aa[r]=i<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),Va(t,t.l_desc),Va(t,t.d_desc),a=function(t){var e;for(Wa(t,t.dyn_ltree,t.l_desc.max_code),Wa(t,t.dyn_dtree,t.d_desc.max_code),Va(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*ya[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==e?La(t,e,n,r):4===t.strategy||o===i?(Ba(t,2+(r?1:0),3),Ua(t,ma,ba)):(Ba(t,4+(r?1:0),3),function(t,e,n,r){var i;for(Ba(t,e-257,5),Ba(t,n-1,5),Ba(t,r-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(xa[n]+256+1)]++,t.dyn_dtree[2*Oa(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){Ba(t,2,3),Na(t,256,ma),function(t){16===t.bi_valid?(Ra(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}};var Ha=function(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(i=i+e[r++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0};var _a=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();var Xa,Za=function(t,e,n,r){var i=_a,o=r+n;t^=-1;for(var a=r;a>>8^i[255&(t^e[a])];return-1^t},Ya={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Ja(t,e){return t.msg=Ya[e],e}function Qa(t){return(t<<1)-(t>4?9:0)}function $a(t){for(var e=t.length;--e>=0;)t[e]=0}function ts(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(da.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function es(t,e){Ga._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ts(t.strm)}function ns(t,e){t.pending_buf[t.pending++]=e}function rs(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function is(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,da.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=Ha(t.adler,e,i,n):2===t.state.wrap&&(t.adler=Za(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function os(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,l=t.window,u=t.w_mask,c=t.prev,d=t.strstart+258,f=l[o+a-1],p=l[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(l[(n=e)+a]===p&&l[n+a-1]===f&&l[n]===l[o]&&l[++n]===l[o+1]){o+=2,n++;do{}while(l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&oa){if(t.match_start=e,a=r,r>=s)break;f=l[o+a-1],p=l[o+a]}}}while((e=c[e&u])>h&&0!=--i);return a<=t.lookahead?a:t.lookahead}function as(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-262)){da.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,e=n=t.hash_size;do{r=t.head[--e],t.head[e]=r>=a?r-a:0}while(--n);e=n=a;do{r=t.prev[--e],t.prev[e]=r>=a?r-a:0}while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=is(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=3)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(r=Ga._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,r=Ga._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<15&&(a=2,r-=16),i<1||i>9||8!==n||r<8||r>15||e<0||e>9||o<0||o>4)return Ja(t,-2);8===r&&(r=9);var s=new us;return t.state=s,s.strm=t,s.wrap=a,s.gzhead=null,s.w_bits=r,s.w_size=1<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(as(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,es(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(es(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(es(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(es(t,!1),t.strm.avail_out),1)})),new ls(4,4,8,4,ss),new ls(4,5,16,8,ss),new ls(4,6,32,32,ss),new ls(4,4,16,16,hs),new ls(8,16,32,32,hs),new ls(8,16,128,128,hs),new ls(8,32,128,256,hs),new ls(32,128,258,1024,hs),new ls(32,258,258,4096,hs)];var ps={deflateInit:function(t,e){return fs(t,e,8,15,8,0)},deflateInit2:fs,deflateReset:ds,deflateResetKeep:cs,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?-2:(t.state.gzhead=e,0):-2},deflate:function(t,e){var n,r,i,o;if(!t||!t.state||e>5||e<0)return t?Ja(t,-2):-2;if(r=t.state,!t.output||!t.input&&0!==t.avail_in||666===r.status&&4!==e)return Ja(t,0===t.avail_out?-5:-2);if(r.strm=t,n=r.last_flush,r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,ns(r,31),ns(r,139),ns(r,8),r.gzhead?(ns(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ns(r,255&r.gzhead.time),ns(r,r.gzhead.time>>8&255),ns(r,r.gzhead.time>>16&255),ns(r,r.gzhead.time>>24&255),ns(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ns(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(ns(r,255&r.gzhead.extra.length),ns(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=Za(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(ns(r,0),ns(r,0),ns(r,0),ns(r,0),ns(r,0),ns(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),ns(r,3),r.status=113);else{var a=8+(r.w_bits-8<<4)<<8;a|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(a|=32),a+=31-a%31,r.status=113,rs(r,a),0!==r.strstart&&(rs(r,t.adler>>>16),rs(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>i&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),ts(t),i=r.pending,r.pending!==r.pending_buf_size));)ns(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),ts(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),ts(t),i=r.pending,r.pending===r.pending_buf_size)){o=1;break}o=r.gzindexi&&(t.adler=Za(t.adler,r.pending_buf,r.pending-i,i)),0===o&&(r.status=103)}else r.status=103;if(103===r.status&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&ts(t),r.pending+2<=r.pending_buf_size&&(ns(r,255&t.adler),ns(r,t.adler>>8&255),t.adler=0,r.status=113)):r.status=113),0!==r.pending){if(ts(t),0===t.avail_out)return r.last_flush=-1,0}else if(0===t.avail_in&&Qa(e)<=Qa(n)&&4!==e)return Ja(t,-5);if(666===r.status&&0!==t.avail_in)return Ja(t,-5);if(0!==t.avail_in||0!==r.lookahead||0!==e&&666!==r.status){var s=2===r.strategy?function(t,e){for(var n;;){if(0===t.lookahead&&(as(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,n=Ga._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(es(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(es(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(es(t,!1),0===t.strm.avail_out)?1:2}(r,e):3===r.strategy?function(t,e){for(var n,r,i,o,a=t.window;;){if(t.lookahead<=258){if(as(t),t.lookahead<=258&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(r=a[i=t.strstart-1])===a[++i]&&r===a[++i]&&r===a[++i]){o=t.strstart+258;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(n=Ga._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=Ga._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(es(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(es(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(es(t,!1),0===t.strm.avail_out)?1:2}(r,e):Xa[r.level].func(r,e);if(3!==s&&4!==s||(r.status=666),1===s||3===s)return 0===t.avail_out&&(r.last_flush=-1),0;if(2===s&&(1===e?Ga._tr_align(r):5!==e&&(Ga._tr_stored_block(r,0,0,!1),3===e&&($a(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),ts(t),0===t.avail_out))return r.last_flush=-1,0}return 4!==e?0:r.wrap<=0?1:(2===r.wrap?(ns(r,255&t.adler),ns(r,t.adler>>8&255),ns(r,t.adler>>16&255),ns(r,t.adler>>24&255),ns(r,255&t.total_in),ns(r,t.total_in>>8&255),ns(r,t.total_in>>16&255),ns(r,t.total_in>>24&255)):(rs(r,t.adler>>>16),rs(r,65535&t.adler)),ts(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},deflateEnd:function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?Ja(t,-2):(t.state=null,113===e?Ja(t,-3):0):-2},deflateSetDictionary:function(t,e){var n,r,i,o,a,s,h,l,u=e.length;if(!t||!t.state)return-2;if(2===(o=(n=t.state).wrap)||1===o&&42!==n.status||n.lookahead)return-2;for(1===o&&(t.adler=Ha(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&($a(n.head),n.strstart=0,n.block_start=0,n.insert=0),l=new da.Buf8(n.w_size),da.arraySet(l,e,u-n.w_size,n.w_size,0),e=l,u=n.w_size),a=t.avail_in,s=t.next_in,h=t.input,t.avail_in=u,t.next_in=0,t.input=e,as(n);n.lookahead>=3;){r=n.strstart,i=n.lookahead-2;do{n.ins_h=(n.ins_h<=252?6:ms>=248?5:ms>=240?4:ms>=224?3:ms>=192?2:1;ys[254]=ys[254]=1;function bs(t,e){if(e<65534&&(t.subarray&&vs||!t.subarray&&gs))return String.fromCharCode.apply(null,da.shrinkBuf(t,e));for(var n="",r=0;r>>6,e[o++]=128|63&n):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|63&n):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|63&n);return e},xs=function(t){return bs(t,t.length)},ks=function(t){for(var e=new da.Buf8(t.length),n=0,r=e.length;n4)s[r++]=65533,n+=o-1;else{for(i&=2===o?31:3===o?15:7;o>1&&n1?s[r++]=65533:i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|1023&i)}return bs(s,r)},Fs=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0||0===n?e:n+ys[t[n]]>e?n:e};var Cs=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},As=Object.prototype.toString;function zs(t){if(!(this instanceof zs))return new zs(t);this.options=da.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Cs,this.strm.avail_out=0;var n=ps.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(0!==n)throw new Error(Ya[n]);if(e.header&&ps.deflateSetHeader(this.strm,e.header),e.dictionary){var r;if(r="string"==typeof e.dictionary?ws(e.dictionary):"[object ArrayBuffer]"===As.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,0!==(n=ps.deflateSetDictionary(this.strm,r)))throw new Error(Ya[n]);this._dict_set=!0}}function Ts(t,e){var n=new zs(e);if(n.push(t,!0),n.err)throw n.msg||Ya[n.err];return n.result}zs.prototype.push=function(t,e){var n,r,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;r=e===~~e?e:!0===e?4:0,"string"==typeof t?i.input=ws(t):"[object ArrayBuffer]"===As.call(t)?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new da.Buf8(o),i.next_out=0,i.avail_out=o),1!==(n=ps.deflate(i,r))&&0!==n)return this.onEnd(n),this.ended=!0,!1;0!==i.avail_out&&(0!==i.avail_in||4!==r&&2!==r)||("string"===this.options.to?this.onData(xs(da.shrinkBuf(i.output,i.next_out))):this.onData(da.shrinkBuf(i.output,i.next_out)))}while((i.avail_in>0||0===i.avail_out)&&1!==n);return 4===r?(n=ps.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n):2!==r||(this.onEnd(0),i.avail_out=0,!0)},zs.prototype.onData=function(t){this.chunks.push(t)},zs.prototype.onEnd=function(t){0===t&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=da.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Os={Deflate:zs,deflate:Ts,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Ts(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Ts(t,e)}},Rs=function(t,e){var n,r,i,o,a,s,h,l,u,c,d,f,p,g,v,y,m,b,w,x,k,S,F,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),o=t.next_out,A=t.output,a=o-(e-t.avail_out),s=o+(t.avail_out-257),h=n.dmax,l=n.wsize,u=n.whave,c=n.wnext,d=n.window,f=n.hold,p=n.bits,g=n.lencode,v=n.distcode,y=(1<>>=w=b>>>24,p-=w,0===(w=b>>>16&255))A[o++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=g[(65535&b)+(f&(1<>>=w,p-=w),p<15&&(f+=C[r++]<>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=v[(65535&b)+(f&(1<h){t.msg="invalid distance too far back",n.mode=30;break t}if(f>>>=w,p-=w,k>(w=o-a)){if((w=k-w)>u&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(S=0,F=d,0===c){if(S+=l-w,w2;)A[o++]=F[S++],A[o++]=F[S++],A[o++]=F[S++],x-=3;x&&(A[o++]=F[S++],x>1&&(A[o++]=F[S++]))}else{S=o-k;do{A[o++]=A[S++],A[o++]=A[S++],A[o++]=A[S++],x-=3}while(x>2);x&&(A[o++]=A[S++],x>1&&(A[o++]=A[S++]))}break}}break}}while(r>3,f&=(1<<(p-=x<<3))-1,t.next_in=r,t.next_out=o,t.avail_in=r=1&&0===R[x];x--);if(k>x&&(k=x),0===x)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(w=1;w0&&(0===t||1!==x))return-1;for(B[1]=0,m=1;m<15;m++)B[m+1]=B[m]+R[m];for(b=0;b852||2===t&&A>592)return 1;for(;;){p=m-F,a[b]f?(g=N[P+a[b]],v=T[O+a[b]]):(g=96,v=0),h=1<>F)+(l-=h)]=p<<24|g<<16|v|0}while(0!==l);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,b++,0==--R[m]){if(m===x)break;m=e[n+a[b]]}if(m>k&&(z&c)!==u){for(0===F&&(F=k),d+=w,C=1<<(S=m-F);S+F852||2===t&&A>592)return 1;i[u=z&c]=k<<24|S<<16|d-o|0}}return 0!==z&&(i[d+z]=m-F<<24|64<<16|0),s.bits=k,0};function Es(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function Is(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new da.Buf16(320),this.work=new da.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ms(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new da.Buf32(852),e.distcode=e.distdyn=new da.Buf32(592),e.sane=1,e.back=-1,0):-2}function Us(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,Ms(t)):-2}function Vs(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?-2:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,Us(t))):-2}function Ws(t,e){var n,r;return t?(r=new Is,t.state=r,r.window=null,0!==(n=Vs(t,e))&&(t.state=null),n):-2}var qs,Ks,Ls=!0;function Gs(t){if(Ls){var e;for(qs=new da.Buf32(512),Ks=new da.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(js(1,t.lens,0,288,qs,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;js(2,t.lens,0,32,Ks,0,t.work,{bits:5}),Ls=!1}t.lencode=qs,t.lenbits=9,t.distcode=Ks,t.distbits=5}function Hs(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<=o.wsize?(da.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>r&&(i=r),da.arraySet(o.window,e,n-r,i,o.wnext),(r-=i)?(da.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,n.check=Za(n.check,z,2,0),l=0,u=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",n.mode=30;break}if(8!=(15&l)){t.msg="unknown compression method",n.mode=30;break}if(u-=4,k=8+(15&(l>>>=4)),0===n.wbits)n.wbits=k;else if(k>n.wbits){t.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=Za(n.check,z,2,0)),l=0,u=0,n.mode=3;case 3:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>8&255,z[2]=l>>>16&255,z[3]=l>>>24&255,n.check=Za(n.check,z,4,0)),l=0,u=0,n.mode=4;case 4:for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>8),512&n.flags&&(z[0]=255&l,z[1]=l>>>8&255,n.check=Za(n.check,z,2,0)),l=0,u=0,n.mode=5;case 5:if(1024&n.flags){for(;u<16;){if(0===s)break t;s--,l+=r[o++]<>>8&255,n.check=Za(n.check,z,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((f=n.length)>s&&(f=s),f&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),da.arraySet(n.head.extra,r,o,f,k)),512&n.flags&&(n.check=Za(n.check,r,f,o)),s-=f,o+=f,n.length-=f),n.length))break t;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===s)break t;f=0;do{k=r[o+f++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&f>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=12;break;case 10:for(;u<32;){if(0===s)break t;s--,l+=r[o++]<>>=7&u,u-=7&u,n.mode=27;break}for(;u<3;){if(0===s)break t;s--,l+=r[o++]<>>=1)){case 0:n.mode=14;break;case 1:if(Gs(n),n.mode=20,6===e){l>>>=2,u-=2;break t}break;case 2:n.mode=17;break;case 3:t.msg="invalid block type",n.mode=30}l>>>=2,u-=2;break;case 14:for(l>>>=7&u,u-=7&u;u<32;){if(0===s)break t;s--,l+=r[o++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&l,l=0,u=0,n.mode=15,6===e)break t;case 15:n.mode=16;case 16:if(f=n.length){if(f>s&&(f=s),f>h&&(f=h),0===f)break t;da.arraySet(i,r,o,f,a),s-=f,o+=f,h-=f,a+=f,n.length-=f;break}n.mode=12;break;case 17:for(;u<14;){if(0===s)break t;s--,l+=r[o++]<>>=5,u-=5,n.ndist=1+(31&l),l>>>=5,u-=5,n.ncode=4+(15&l),l>>>=4,u-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[T[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,F={bits:n.lenbits},S=js(0,n.lens,0,19,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=v,u-=v,n.lens[n.have++]=m;else{if(16===m){for(C=v+2;u>>=v,u-=v,0===n.have){t.msg="invalid bit length repeat",n.mode=30;break}k=n.lens[n.have-1],f=3+(3&l),l>>>=2,u-=2}else if(17===m){for(C=v+3;u>>=v)),l>>>=3,u-=3}else{for(C=v+7;u>>=v)),l>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=30;break}for(;f--;)n.lens[n.have++]=k}}if(30===n.mode)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,F={bits:n.lenbits},S=js(1,n.lens,0,n.nlen,n.lencode,0,n.work,F),n.lenbits=F.bits,S){t.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,F={bits:n.distbits},S=js(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,F),n.distbits=F.bits,S){t.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===e)break t;case 20:n.mode=21;case 21:if(s>=6&&h>=258){t.next_out=a,t.avail_out=h,t.next_in=o,t.avail_in=s,n.hold=l,n.bits=u,Rs(t,d),a=t.next_out,i=t.output,h=t.avail_out,o=t.next_in,r=t.input,s=t.avail_in,l=n.hold,u=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;y=(A=n.lencode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,n.length=m,0===y){n.mode=26;break}if(32&y){n.back=-1,n.mode=12;break}if(64&y){t.msg="invalid literal/length code",n.mode=30;break}n.extra=15&y,n.mode=22;case 22:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;y=(A=n.distcode[l&(1<>>16&255,m=65535&A,!((v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>b)])>>>16&255,m=65535&A,!(b+(v=A>>>24)<=u);){if(0===s)break t;s--,l+=r[o++]<>>=b,u-=b,n.back+=b}if(l>>>=v,u-=v,n.back+=v,64&y){t.msg="invalid distance code",n.mode=30;break}n.offset=m,n.extra=15&y,n.mode=24;case 24:if(n.extra){for(C=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===h)break t;if(f=d-h,n.offset>f){if((f=n.offset-f)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=30;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),g=n.window}else g=i,p=a-n.offset,f=n.length;f>h&&(f=h),h-=f,n.length-=f;do{i[a++]=g[p++]}while(--f);0===n.length&&(n.mode=21);break;case 26:if(0===h)break t;i[a++]=n.length,h--,n.mode=21;break;case 27:if(n.wrap){for(;u<32;){if(0===s)break t;s--,l|=r[o++]<=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Cs,this.strm.avail_out=0;var n=_s.inflateInit2(this.strm,e.windowBits);if(n!==Xs.Z_OK)throw new Error(Ya[n]);if(this.header=new Zs,_s.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=ws(e.dictionary):"[object ArrayBuffer]"===Ys.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=_s.inflateSetDictionary(this.strm,e.dictionary))!==Xs.Z_OK))throw new Error(Ya[n])}function Qs(t,e){var n=new Js(e);if(n.push(t,!0),n.err)throw n.msg||Ya[n.err];return n.result}Js.prototype.push=function(t,e){var n,r,i,o,a,s=this.strm,h=this.options.chunkSize,l=this.options.dictionary,u=!1;if(this.ended)return!1;r=e===~~e?e:!0===e?Xs.Z_FINISH:Xs.Z_NO_FLUSH,"string"==typeof t?s.input=ks(t):"[object ArrayBuffer]"===Ys.call(t)?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new da.Buf8(h),s.next_out=0,s.avail_out=h),(n=_s.inflate(s,Xs.Z_NO_FLUSH))===Xs.Z_NEED_DICT&&l&&(n=_s.inflateSetDictionary(this.strm,l)),n===Xs.Z_BUF_ERROR&&!0===u&&(n=Xs.Z_OK,u=!1),n!==Xs.Z_STREAM_END&&n!==Xs.Z_OK)return this.onEnd(n),this.ended=!0,!1;s.next_out&&(0!==s.avail_out&&n!==Xs.Z_STREAM_END&&(0!==s.avail_in||r!==Xs.Z_FINISH&&r!==Xs.Z_SYNC_FLUSH)||("string"===this.options.to?(i=Fs(s.output,s.next_out),o=s.next_out-i,a=Ss(s.output,i),s.next_out=o,s.avail_out=h-o,o&&da.arraySet(s.output,s.output,i,o,0),this.onData(a)):this.onData(da.shrinkBuf(s.output,s.next_out)))),0===s.avail_in&&0===s.avail_out&&(u=!0)}while((s.avail_in>0||0===s.avail_out)&&n!==Xs.Z_STREAM_END);return n===Xs.Z_STREAM_END&&(r=Xs.Z_FINISH),r===Xs.Z_FINISH?(n=_s.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Xs.Z_OK):r!==Xs.Z_SYNC_FLUSH||(this.onEnd(Xs.Z_OK),s.avail_out=0,!0)},Js.prototype.onData=function(t){this.chunks.push(t)},Js.prototype.onEnd=function(t){t===Xs.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=da.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var $s={Inflate:Js,inflate:Qs,inflateRaw:function(t,e){return(e=e||{}).raw=!0,Qs(t,e)},ungzip:Qs},th={};(0,da.assign)(th,Os,$s,Xs);var eh,nh,rh,ih=th,oh={};oh.toRGBA8=function(t){var e=t.width,n=t.height;if(null==t.tabs.acTL)return[oh.toRGBA8.decodeImage(t.data,e,n,t).buffer];var r=[];null==t.frames[0].data&&(t.frames[0].data=t.data);for(var i=e*n*4,o=new Uint8Array(i),a=new Uint8Array(i),s=new Uint8Array(i),h=0;h>3)]>>7-((7&f)<<0)&1);s[b]=w[A],s[b+1]=w[A+1],s[b+2]=w[A+2],s[b+3]=z>2)]>>6-((3&f)<<1)&3);s[b]=w[A],s[b+1]=w[A+1],s[b+2]=w[A+2],s[b+3]=z>1)]>>4-((1&f)<<2)&15);s[b]=w[A],s[b+1]=w[A+1],s[b+2]=w[A+2],s[b+3]=z>>3)]>>>7-(7&N)&1))==255*v?0:255;h[B+N]=P<<24|T<<16|T<<8|T}else if(2==u)for(N=0;N>>2)]>>>6-((3&N)<<1)&3))==85*v?0:255;h[B+N]=P<<24|T<<16|T<<8|T}else if(4==u)for(N=0;N>>1)]>>>4-((1&N)<<2)&15))==17*v?0:255;h[B+N]=P<<24|T<<16|T<<8|T}else if(8==u)for(N=0;N>>2<<3));0==o;)if(o=g(t,f,1),a=g(t,f+1,2),f+=3,0!=a){if(k&&(e=rh.H.W(e,d+(1<<17))),1==a&&(n=x.J,r=x.h,u=511,c=31),2==a){s=v(t,f,5)+257,h=v(t,f+5,5)+1,l=v(t,f+10,4)+4,f+=14;for(var S=1,F=0;F<38;F+=2)x.Q[F]=0,x.Q[F+1]=0;for(F=0;FS&&(S=C)}f+=3*l,m(x.Q,S),b(x.Q,S,x.u),n=x.w,r=x.d,f=y(x.u,(1<>>4;if(O>>>8==0)e[d++]=O;else{if(256==O)break;var R=d+O-254;if(O>264){var B=x.q[O-257];R=d+(B>>>3)+v(t,f,7&B),f+=7&B}var N=r[w(t,f)&c];f+=15&N;var P=N>>>4,D=x.c[P],j=(D>>>4)+g(t,f,15&D);for(f+=15&D;d>>3),I=t[E-4]|t[E-3]<<8;k&&(e=rh.H.W(e,d+I)),e.set(new i(t.buffer,t.byteOffset+E,I),d),f=E+I<<3,d+=I}return e.length==d?e:e.slice(0,d)},rh.H.W=function(t,e){var n=t.length;if(e<=n)return t;var r=new Uint8Array(n<<1);return r.set(t,0),r},rh.H.R=function(t,e,n,r,i,o){for(var a=rh.H.e,s=rh.H.Z,h=0;h>>4;if(u<=15)o[h]=u,h++;else{var c=0,d=0;16==u?(d=3+a(r,i,2),i+=2,c=o[h-1]):17==u?(d=3+a(r,i,3),i+=3):18==u&&(d=11+a(r,i,7),i+=7);for(var f=h+d;h>>1;oi&&(i=s),o++}for(;o>1,s=t[o+1],h=a<<4|s,l=e-s,u=t[o]<>>15-e]=h,u++},rh.H.l=function(t,e){for(var n=rh.H.m.r,r=15-e,i=0;i>>r}},rh.H.M=function(t,e,n){n<<=7&e;var r=e>>>3;t[r]|=n,t[r+1]|=n>>>8},rh.H.I=function(t,e,n){n<<=7&e;var r=e>>>3;t[r]|=n,t[r+1]|=n>>>8,t[r+2]|=n>>>16},rh.H.e=function(t,e,n){return(t[e>>>3]|t[1+(e>>>3)]<<8)>>>(7&e)&(1<>>3]|t[1+(e>>>3)]<<8|t[2+(e>>>3)]<<16)>>>(7&e)&(1<>>3]|t[1+(e>>>3)]<<8|t[2+(e>>>3)]<<16)>>>(7&e)},rh.H.i=function(t,e){return(t[e>>>3]|t[1+(e>>>3)]<<8|t[2+(e>>>3)]<<16|t[3+(e>>>3)]<<24)>>>(7&e)},rh.H.m=(eh=Uint16Array,nh=Uint32Array,{K:new eh(16),j:new eh(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new eh(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new nh(32),J:new eh(512),_:[],h:new eh(32),$:[],w:new eh(32768),C:[],v:[],d:new eh(32768),D:[],u:new eh(512),Q:[],r:new eh(32768),s:new nh(286),Y:new nh(30),a:new nh(19),t:new nh(15e3),k:new eh(65536),g:new eh(32768)}),function(){for(var t=rh.H.m,e=0;e<32768;e++){var n=e;n=(4278255360&(n=(4042322160&(n=(3435973836&(n=(2863311530&n)>>>1|(1431655765&n)<<1))>>>2|(858993459&n)<<2))>>>4|(252645135&n)<<4))>>>8|(16711935&n)<<8,t.r[e]=(n>>>16|n<<16)>>>17}function r(t,e,n){for(;0!=e--;)t.push(0,n)}for(e=0;e<32;e++)t.q[e]=t.S[e]<<3|t.T[e],t.c[e]=t.p[e]<<4|t.z[e];r(t._,144,8),r(t._,112,9),r(t._,24,7),r(t._,8,8),rh.H.n(t._,9),rh.H.A(t._,9,t.J),rh.H.l(t._,9),r(t.$,32,5),rh.H.n(t.$,5),rh.H.A(t.$,5,t.h),rh.H.l(t.$,5),r(t.Q,19,0),r(t.C,286,0),r(t.D,30,0),r(t.v,320,0)}(),rh.H.N),oh.decode._readInterlace=function(t,e){for(var n=e.width,r=e.height,i=oh.decode._getBPP(e),o=i>>3,a=Math.ceil(n*i/8),s=new Uint8Array(r*a),h=0,l=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],c=[8,8,8,4,4,2,2],d=[8,8,4,4,2,2,1],f=0;f<7;){for(var p=c[f],g=d[f],v=0,y=0,m=l[f];m>3])>>7-(7&F)&1,s[k*a+(S>>3)]|=C<<7-((7&S)<<0);if(2==i)C=(C=t[F>>3])>>6-(7&F)&3,s[k*a+(S>>2)]|=C<<6-((3&S)<<1);if(4==i)C=(C=t[F>>3])>>4-(7&F)&15,s[k*a+(S>>1)]|=C<<4-((1&S)<<2);if(i>=8)for(var A=k*a+S*o,z=0;z>3)+z];F+=i,S+=g}x++,k+=p}v*y!=0&&(h+=y*(1+w)),f+=1}return s},oh.decode._getBPP=function(t){return[1,null,3,1,2,null,4][t.ctype]*t.depth},oh.decode._filterZero=function(t,e,n,r,i){var o=oh.decode._getBPP(e),a=Math.ceil(r*o/8),s=oh.decode._paeth;o=Math.ceil(o/8);var h=0,l=1,u=t[n],c=0;if(u>1&&(t[n]=[0,0,1][u-2]),3==u)for(c=o;c>>1)&255;for(var d=0;d>>1);for(;c>>1)}else{for(;c>8&255,t[e+1]=255&n},readUint:function(t,e){return 16777216*t[e]+(t[e+1]<<16|t[e+2]<<8|t[e+3])},writeUint:function(t,e,n){t[e]=n>>24&255,t[e+1]=n>>16&255,t[e+2]=n>>8&255,t[e+3]=255&n},readASCII:function(t,e,n){for(var r="",i=0;i=0&&s>=0?(c=f*e+p<<2,d=(s+f)*i+a+p<<2):(c=(-s+f)*e-a+p<<2,d=f*i+p<<2),0==h)r[d]=t[c],r[d+1]=t[c+1],r[d+2]=t[c+2],r[d+3]=t[c+3];else if(1==h){var g=t[c+3]*(1/255),v=t[c]*g,y=t[c+1]*g,m=t[c+2]*g,b=r[d+3]*(1/255),w=r[d]*b,x=r[d+1]*b,k=r[d+2]*b,S=1-g,F=g+b*S,C=0==F?0:1/F;r[d+3]=255*F,r[d+0]=(v+w*S)*C,r[d+1]=(y+x*S)*C,r[d+2]=(m+k*S)*C}else if(2==h){g=t[c+3],v=t[c],y=t[c+1],m=t[c+2],b=r[d+3],w=r[d],x=r[d+1],k=r[d+2];g==b&&v==w&&y==x&&m==k?(r[d]=0,r[d+1]=0,r[d+2]=0,r[d+3]=0):(r[d]=v,r[d+1]=y,r[d+2]=m,r[d+3]=g)}else if(3==h){g=t[c+3],v=t[c],y=t[c+1],m=t[c+2],b=r[d+3],w=r[d],x=r[d+1],k=r[d+2];if(g==b&&v==w&&y==x&&m==k)continue;if(g<220&&b>20)return!1}return!0},oh.encode=function(t,e,n,r,i,o,a){null==r&&(r=0),null==a&&(a=!1);var s=oh.encode.compress(t,e,n,r,[!1,!1,!1,0,a]);return oh.encode.compressPNG(s,-1),oh.encode._main(s,e,n,i,o)},oh.encodeLL=function(t,e,n,r,i,o,a,s){for(var h={ctype:0+(1==r?0:2)+(0==i?0:4),depth:o,frames:[]},l=(r+i)*o,u=l*e,c=0;c1,c=!1,d=33+(u?20:0);if(null!=i.sRGB&&(d+=13),null!=i.pHYs&&(d+=21),3==t.ctype){for(var f=t.plte.length,p=0;p>>24!=255&&(c=!0);d+=8+3*f+4+(c?8+1*f+4:0)}for(var g=0;g>>8&255,k=b>>>16&255;v[l+m+0]=w,v[l+m+1]=x,v[l+m+2]=k}if(a(v,l+=3*f,o(v,l-3*f-4,3*f+4)),l+=4,c){a(v,l,f),h(v,l+=4,"tRNS"),l+=4;for(p=0;p>>24&255;a(v,l+=f,o(v,l-f-4,f+4)),l+=4}}var S=0;for(g=0;g>2,z>>2));for(f=0;fR&&N==O[v-R])B[v]=B[v-R];else{var P=b[N];if(null==P&&(b[N]=P=w.length,w.push(N),w.length>=300))break;B[v]=P}}}var D=w.length;D<=256&&0==l&&(c=D<=2?1:D<=4?2:D<=16?4:8,c=Math.max(c,h));for(f=0;f>1)]|=V[q+K]<<4-4*(1&K);else if(2==c)for(K=0;K>2)]|=V[q+K]<<6-2*(3&K);else if(1==c)for(K=0;K>3)]|=V[q+K]<<7-1*(7&K)}E=U,u=3,M=1}else if(0==y&&1==m.length){U=new Uint8Array(R*j*3);var L=R*j;for(v=0;vF&&(F=z),AC&&(C=A))}-1==F&&(k=S=F=C=0),i&&(1==(1&k)&&k--,1==(1&S)&&S--);var T=(F-k+1)*(C-S+1);Tv&&(v=w),xy&&(y=x))}-1==v&&(p=g=v=y=0),a&&(1==(1&p)&&p--,1==(1&g)&&g--),o={x:p,y:g,width:v-p+1,height:y-g+1};var F=r[i];F.rect=o,F.blend=1,F.img=new Uint8Array(o.width*o.height*4),0==r[i-1].dispose?(oh._copyTile(l,e,n,F.img,o.width,o.height,-o.x,-o.y,0),oh.encode._prepareDiff(d,e,n,F.img,o)):oh._copyTile(d,e,n,F.img,o.width,o.height,-o.x,-o.y,0)},oh.encode._prepareDiff=function(t,e,n,r,i){oh._copyTile(t,e,n,r,i.width,i.height,-i.x,-i.y,2)},oh.encode._filterZero=function(t,e,n,r,i,o,a){var s,h=[],l=[0,1,2,3,4];-1!=o?l=[o]:(e*r>5e5||1==n)&&(l=[0]),a&&(s={level:0});for(var u=a&&null!=UZIP?UZIP:ih,c=0;c>1)+256&255;if(4==o)for(l=i;l>1)&255;for(l=i;l>1)&255}if(4==o){for(l=0;l>>1:n>>>=1;t[e]=n}return t}(),update:function(t,e,n,r){for(var i=0;i>>8;return t},crc:function(t,e,n){return 4294967295^oh.crc.update(4294967295,t,e,n)}},oh.quantize=function(t,e){for(var n=new Uint8Array(t),r=n.slice(0),i=new Uint32Array(r.buffer),o=oh.quantize.getKDtree(r,e),a=o[0],s=o[1],h=(oh.quantize.planeDst,n),l=i,u=h.length,c=new Uint8Array(n.length>>2),d=0;d>2]=y.ind,l[d>>2]=y.est.rgba}return{abuf:r.buffer,inds:c,plte:s}},oh.quantize.getKDtree=function(t,e,n){null==n&&(n=1e-4);var r=new Uint32Array(t.buffer),i={i0:0,i1:t.length,bst:null,est:null,tdst:0,left:null,right:null};i.bst=oh.quantize.stats(t,i.i0,i.i1),i.est=oh.quantize.estats(i.bst);for(var o=[i];o.lengtha&&(a=o[h].est.L,s=h);if(a=u||l.i1<=u)l.est.L=0;else{var c={i0:l.i0,i1:u,bst:null,est:null,tdst:0,left:null,right:null};c.bst=oh.quantize.stats(t,c.i0,c.i1),c.est=oh.quantize.estats(c.bst);var d={i0:u,i1:l.i1,bst:null,est:null,tdst:0,left:null,right:null};d.bst={R:[],m:[],N:l.bst.N-c.bst.N};for(h=0;h<16;h++)d.bst.R[h]=l.bst.R[h]-c.bst.R[h];for(h=0;h<4;h++)d.bst.m[h]=l.bst.m[h]-c.bst.m[h];d.est=oh.quantize.estats(d.bst),l.left=c,l.right=d,o[s]=c,o.push(d)}}o.sort((function(t,e){return e.bst.N-t.bst.N}));for(h=0;h0&&(a=t.right,s=t.left);var h=oh.quantize.getNearest(a,e,n,r,i);if(h.tdst<=o*o)return h;var l=oh.quantize.getNearest(s,e,n,r,i);return l.tdsto;)r-=4;if(n>=r)break;var s=e[n>>2];e[n>>2]=e[r>>2],e[r>>2]=s,n+=4,r-=4}for(;a(t,n,i)>o;)n-=4;return n+4},oh.quantize.vecDot=function(t,e,n){return t[e]*n[0]+t[e+1]*n[1]+t[e+2]*n[2]+t[e+3]*n[3]},oh.quantize.stats=function(t,e,n){for(var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i=[0,0,0,0],o=n-e>>2,a=e;a>>0}},oh.M4={multVec:function(t,e){return[t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3],t[4]*e[0]+t[5]*e[1]+t[6]*e[2]+t[7]*e[3],t[8]*e[0]+t[9]*e[1]+t[10]*e[2]+t[11]*e[3],t[12]*e[0]+t[13]*e[1]+t[14]*e[2]+t[15]*e[3]]},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},sml:function(t,e){return[t*e[0],t*e[1],t*e[2],t*e[3]]}},oh.encode.concatRGBA=function(t){for(var e=0,n=0;n1)throw new Error("Animated PNGs are not supported");var r=function(t){for(var e=Math.floor(t.length/4),n=new Uint8Array(3*e),r=new Uint8Array(1*e),i=0,o=0,a=0;i=this.end?-1:this.bytes[this.pos++]},t.prototype.getUint16=function(){var t=this.getByte(),e=this.getByte();return-1===t||-1===e?-1:(t<<8)+e},t.prototype.getInt32=function(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()},t.prototype.getBytes=function(t,e){void 0===e&&(e=!1);var n=this.bytes,r=this.pos,i=this.end;if(t){var o=r+t;o>i&&(o=i),this.pos=o;a=n.subarray(r,o);return e?new Uint8ClampedArray(a):a}var a=n.subarray(r,i);return e?new Uint8ClampedArray(a):a},t.prototype.peekByte=function(){var t=this.getByte();return this.pos--,t},t.prototype.peekBytes=function(t,e){void 0===e&&(e=!1);var n=this.getBytes(t,e);return this.pos-=n.length,n},t.prototype.skip=function(t){t||(t=1),this.pos+=t},t.prototype.reset=function(){this.pos=this.start},t.prototype.moveStart=function(){this.start=this.pos},t.prototype.makeSubStream=function(e,n){return new t(this.bytes,e,n)},t.prototype.decode=function(){return this.bytes},t}(),ph=new Uint8Array(0),gh=function(){function t(t){if(this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=ph,this.minBufferLength=512,t)for(;this.minBufferLengthi&&(n=i)}else{for(;!this.eof;)this.readBlock();n=this.bufferLength}this.pos=n;var o=this.buffer.subarray(r,n);return!e||o instanceof Uint8ClampedArray?o:new Uint8ClampedArray(o)},t.prototype.peekByte=function(){var t=this.getByte();return this.pos--,t},t.prototype.peekBytes=function(t,e){void 0===e&&(e=!1);var n=this.getBytes(t,e);return this.pos-=n.length,n},t.prototype.skip=function(t){t||(t=1),this.pos+=t},t.prototype.reset=function(){this.pos=0},t.prototype.makeSubStream=function(t,e){for(var n=t+e;this.bufferLength<=n&&!this.eof;)this.readBlock();return new fh(this.buffer,t,e)},t.prototype.decode=function(){for(;!this.eof;)this.readBlock();return this.buffer.subarray(0,this.bufferLength)},t.prototype.readBlock=function(){throw new Hn(this.constructor.name,"readBlock")},t.prototype.ensureBuffer=function(t){var e=this.buffer;if(t<=e.byteLength)return e;for(var n=this.minBufferLength;n=0;--r)n[i+r]=255&a,a>>=8}}else this.eof=!0},n}(gh),mh=function(t){function n(e,n){var r=t.call(this,n)||this;return r.stream=e,r.firstDigit=-1,n&&(n*=.5),r}return e(n,t),n.prototype.readBlock=function(){var t=this.stream.getBytes(8e3);if(t.length){for(var e=t.length+1>>1,n=this.ensureBuffer(this.bufferLength+e),r=this.bufferLength,i=this.firstDigit,o=0,a=t.length;o=48&&s<=57)h=15&s;else{if(!(s>=65&&s<=70||s>=97&&s<=102)){if(62===s){this.eof=!0;break}continue}h=9+(15&s)}i<0?i=h:(n[r++]=i<<4|h,i=-1)}i>=0&&this.eof&&(n[r++]=i<<4,i=-1),this.firstDigit=i,this.bufferLength=r}else this.eof=!0},n}(gh),bh=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),wh=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]),xh=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]),kh=[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],Sh=[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],Fh=function(t){function n(e,n){var r=t.call(this,n)||this;r.stream=e;var i=e.getByte(),o=e.getByte();if(-1===i||-1===o)throw new Error("Invalid header in flate stream: "+i+", "+o);if(8!=(15&i))throw new Error("Unknown compression method in flate stream: "+i+", "+o);if(((i<<8)+o)%31!=0)throw new Error("Bad FCHECK in flate stream: "+i+", "+o);if(32&o)throw new Error("FDICT bit set in flate stream: "+i+", "+o);return r.codeSize=0,r.codeBuf=0,r}return e(n,t),n.prototype.readBlock=function(){var t,e,n=this.stream,r=this.getBits(3);if(1&r&&(this.eof=!0),0!==(r>>=1)){var i,o;if(1===r)i=kh,o=Sh;else{if(2!==r)throw new Error("Unknown block type in flate stream");var a=this.getBits(5)+257,s=this.getBits(5)+1,h=this.getBits(4)+4,l=new Uint8Array(bh.length),u=void 0;for(u=0;u0;)f[u++]=v}i=this.generateHuffmanTable(f.subarray(0,a)),o=this.generateHuffmanTable(f.subarray(a,d))}for(var b=(t=this.buffer)?t.length:0,w=this.bufferLength;;){var x=this.getCode(i);if(x<256)w+1>=b&&(b=(t=this.ensureBuffer(w+1)).length),t[w++]=x;else{if(256===x)return void(this.bufferLength=w);var k=(x=wh[x-=257])>>16;k>0&&(k=this.getBits(k)),e=(65535&x)+k,x=this.getCode(o),(k=(x=xh[x])>>16)>0&&(k=this.getBits(k));var S=(65535&x)+k;w+e>=b&&(b=(t=this.ensureBuffer(w+e)).length);for(var F=0;F>t,this.codeSize=r-=t,e},n.prototype.getCode=function(t){for(var e,n=this.stream,r=t[0],i=t[1],o=this.codeSize,a=this.codeBuf;o>16,l=65535&s;if(h<1||o>h,this.codeSize=o-h,l},n.prototype.generateHuffmanTable=function(t){var e,n=t.length,r=0;for(e=0;er&&(r=t[e]);for(var i=1<>=1;for(e=u;e0;if(!y||y<256)d[0]=y,f=1;else{if(!(y>=258)){if(256===y){u=9,a=258,f=0;continue}this.eof=!0,delete this.lzwState;break}if(y=0;e--)d[e]=s[n],n=l[n];else d[f++]=d[0]}if(m&&(l[a]=c,h[a]=h[c]+1,s[a]=d[0],u=++a+o&a+o-1?u:0|Math.min(Math.log(a+o)/.6931471805599453+1,12)),c=y,r<(p+=f)){do{r+=512}while(r>>e&(1<0){var i=this.stream.getBytes(r);e.set(i,n),n+=r}}else{r=257-r;var o=t[1];e=this.ensureBuffer(n+r+1);for(var a=0;ae.size())throw new or(t,0,e.size());e.remove(t)}else{if(0!==t)throw new or(t,0,0);this.setKids([])}},n.prototype.normalizedEntries=function(){var t=this.Kids();return t||(t=this.dict.context.obj([this.ref]),this.dict.set(Co.of("Kids"),t)),{Kids:t}},n.fromDict=function(t,e){return new n(t,e)},n}(Ih),Kh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.Opt=function(){return this.dict.lookupMaybe(Co.of("Opt"),ia,Qo,go)},n.prototype.setOpt=function(t){this.dict.set(Co.of("Opt"),this.dict.context.obj(t))},n.prototype.getExportValues=function(){var t=this.Opt();if(t){if(t instanceof ia||t instanceof Qo)return[t];for(var e=[],n=0,r=t.size();ne.size())throw new or(t,0,e.size());e.remove(t)}},n.prototype.normalizeExportValues=function(){for(var t,e,n,r,i=null!==(t=this.getExportValues())&&void 0!==t?t:[],o=[],a=this.getWidgets(),s=0,h=a.length;s1){if(!this.hasFlag(Dh.MultiSelect))throw new sr;this.dict.set(Co.of("V"),this.dict.context.obj(t))}this.updateSelectedIndices(t)},n.prototype.valuesAreValid=function(t){for(var e=this.getOptions(),n=function(n,r){var i=t[n].decodeText();if(!e.find((function(t){return i===(t.display||t.value).decodeText()})))return{value:!1}},r=0,i=t.length;r1){for(var e=new Array(t.length),n=this.getOptions(),r=function(r,i){var o=t[r].decodeText();e[r]=n.findIndex((function(t){return o===(t.display||t.value).decodeText()}))},i=0,o=t.length;i0){var o=i.lookup(0,ia,Qo),a=i.lookupMaybe(1,ia,Qo);e.push({value:o,display:a||o})}}return e}return[]},n}(qh),_h=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.fromDict=function(t,e){return new n(t,e)},n.create=function(t){var e=t.obj({FT:"Ch",Ff:Dh.Combo,Kids:[]});return new n(e,t.register(e))},n}(Hh),Xh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.addField=function(t){var e=this.normalizedEntries().Kids;null==e||e.push(t)},n.prototype.normalizedEntries=function(){var t=this.Kids();return t||(t=this.dict.context.obj([]),this.dict.set(Co.of("Kids"),t)),{Kids:t}},n.fromDict=function(t,e){return new n(t,e)},n.create=function(t){var e=t.obj({});return new n(e,t.register(e))},n}(Ih),Zh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.fromDict=function(t,e){return new n(t,e)},n}(qh),Yh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.MaxLen=function(){var t=this.dict.lookup(Co.of("MaxLen"));if(t instanceof po)return t},n.prototype.Q=function(){var t=this.dict.lookup(Co.of("Q"));if(t instanceof po)return t},n.prototype.setMaxLength=function(t){this.dict.set(Co.of("MaxLen"),po.of(t))},n.prototype.removeMaxLength=function(){this.dict.delete(Co.of("MaxLen"))},n.prototype.getMaxLength=function(){var t;return null===(t=this.MaxLen())||void 0===t?void 0:t.asNumber()},n.prototype.setQuadding=function(t){this.dict.set(Co.of("Q"),po.of(t))},n.prototype.getQuadding=function(){var t;return null===(t=this.Q())||void 0===t?void 0:t.asNumber()},n.prototype.setValue=function(t){this.dict.set(Co.of("V"),t)},n.prototype.removeValue=function(){this.dict.delete(Co.of("V"))},n.prototype.getValue=function(){var t=this.V();if(t instanceof ia||t instanceof Qo)return t},n.fromDict=function(t,e){return new n(t,e)},n.create=function(t){var e=t.obj({FT:"Tx",Kids:[]});return new n(e,t.register(e))},n}(qh),Jh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.fromDict=function(t,e){return new n(t,e)},n.create=function(t){var e=t.obj({FT:"Btn",Ff:Nh.PushButton,Kids:[]});return new n(e,t.register(e))},n}(Kh),Qh=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.setValue=function(t){if(!this.getOnValues().includes(t)&&t!==Co.of("Off"))throw new ar;this.dict.set(Co.of("V"),t);for(var e=this.getWidgets(),n=0,r=e.length;ni)throw new rr(e,i);for(var o=e,a=0,s=r.size();ao)return l.insertLeafNode(t,o)||h;o-=l.Count().asNumber()}l instanceof Wo&&(o-=1)}if(0!==o)throw new ir(e,"insertLeafNode");this.insertLeafKid(r.size(),t)},n.prototype.removeLeafNode=function(t,e){void 0===e&&(e=!0);var r=this.Kids(),i=this.Count().asNumber();if(t>=i)throw new rr(t,i);for(var o=t,a=0,s=r.size();ao)return l.removeLeafNode(o,e),void(e&&0===l.Kids().size()&&r.remove(a));o-=l.Count().asNumber()}if(l instanceof Wo){if(0===o)return void this.removeKid(a);o-=1}}throw new ir(t,"removeLeafNode")},n.prototype.ascend=function(t){t(this);var e=this.Parent();e&&e.ascend(t)},n.prototype.traverse=function(t){for(var e=this.Kids(),r=0,i=e.size();rNumber.MAX_SAFE_INTEGER){if(this.capNumbers){var r="Parsed number that is too large for some PDF readers: "+t+", using Number.MAX_SAFE_INTEGER instead.";return console.warn(r),Number.MAX_SAFE_INTEGER}r="Parsed number that is too large for some PDF readers: "+t+", not capping.";console.warn(r)}return n},t.prototype.skipWhitespace=function(){for(;!this.bytes.done()&&bo[this.bytes.peek()];)this.bytes.next()},t.prototype.skipLine=function(){for(;!this.bytes.done();){var t=this.bytes.peek();if(t===yl||t===ml)return;this.bytes.next()}},t.prototype.skipComment=function(){if(this.bytes.peek()!==wr.Percent)return!1;for(;!this.bytes.done();){var t=this.bytes.peek();if(t===yl||t===ml)return!0;this.bytes.next()}return!0},t.prototype.skipWhitespaceAndComments=function(){for(this.skipWhitespace();this.skipComment();)this.skipWhitespace()},t.prototype.matchKeyword=function(t){for(var e=this.bytes.offset(),n=0,r=t.length;n=this.length},t.prototype.offset=function(){return this.idx},t.prototype.slice=function(t,e){return this.bytes.slice(t,e)},t.prototype.position=function(){return{line:this.line,column:this.column,offset:this.idx}},t.of=function(e){return new t(e)},t.fromPDFRawStream=function(e){return t.of(Th(e).decode())},t}(),xl=wr.Space,kl=wr.CarriageReturn,Sl=wr.Newline,Fl=[wr.s,wr.t,wr.r,wr.e,wr.a,wr.m],Cl=[wr.e,wr.n,wr.d,wr.s,wr.t,wr.r,wr.e,wr.a,wr.m],Al={header:[wr.Percent,wr.P,wr.D,wr.F,wr.Dash],eof:[wr.Percent,wr.Percent,wr.E,wr.O,wr.F],obj:[wr.o,wr.b,wr.j],endobj:[wr.e,wr.n,wr.d,wr.o,wr.b,wr.j],xref:[wr.x,wr.r,wr.e,wr.f],trailer:[wr.t,wr.r,wr.a,wr.i,wr.l,wr.e,wr.r],startxref:[wr.s,wr.t,wr.a,wr.r,wr.t,wr.x,wr.r,wr.e,wr.f],true:[wr.t,wr.r,wr.u,wr.e],false:[wr.f,wr.a,wr.l,wr.s,wr.e],null:[wr.n,wr.u,wr.l,wr.l],stream:Fl,streamEOF1:o(Fl,[xl,kl,Sl]),streamEOF2:o(Fl,[kl,Sl]),streamEOF3:o(Fl,[kl]),streamEOF4:o(Fl,[Sl]),endstream:Cl,EOF1endstream:o([kl,Sl],Cl),EOF2endstream:o([kl],Cl),EOF3endstream:o([Sl],Cl)},zl=function(t){function n(e,n,r){void 0===r&&(r=!1);var i=t.call(this,e,r)||this;return i.context=n,i}return e(n,t),n.prototype.parseObject=function(){if(this.skipWhitespaceAndComments(),this.matchKeyword(Al.true))return yo.True;if(this.matchKeyword(Al.false))return yo.False;if(this.matchKeyword(Al.null))return Ao;var t=this.bytes.peek();if(t===wr.LessThan&&this.bytes.peekAhead(1)===wr.LessThan)return this.parseDictOrStream();if(t===wr.LessThan)return this.parseHexString();if(t===wr.LeftParen)return this.parseString();if(t===wr.ForwardSlash)return this.parseName();if(t===wr.LeftSquareBracket)return this.parseArray();if(pl[t])return this.parseNumberOrRef();throw new fr(this.bytes.position(),t)},n.prototype.parseNumberOrRef=function(){var t=this.parseRawNumber();this.skipWhitespaceAndComments();var e=this.bytes.offset();if(dl[this.bytes.peek()]){var n=this.parseRawNumber();if(this.skipWhitespaceAndComments(),this.bytes.peek()===wr.R)return this.bytes.assertNext(wr.R),No.of(t,n)}return this.bytes.moveTo(e),po.of(t)},n.prototype.parseHexString=function(){var t="";for(this.bytes.assertNext(wr.LessThan);!this.bytes.done()&&this.bytes.peek()!==wr.GreaterThan;)t+=m(this.bytes.next());return this.bytes.assertNext(wr.GreaterThan),Qo.of(t)},n.prototype.parseString=function(){for(var t=0,e=!1,n="";!this.bytes.done();){var r=this.bytes.next();if(n+=m(r),e||(r===wr.LeftParen&&(t+=1),r===wr.RightParen&&(t-=1)),r===wr.BackSlash?e=!e:e&&(e=!1),0===t)return ia.of(n.substring(1,n.length-1))}throw new vr(this.bytes.position())},n.prototype.parseName=function(){this.bytes.assertNext(wr.ForwardSlash);for(var t="";!this.bytes.done();){var e=this.bytes.peek();if(bo[e]||mo[e])break;t+=m(e),this.bytes.next()}return Co.of(t)},n.prototype.parseArray=function(){this.bytes.assertNext(wr.LeftSquareBracket),this.skipWhitespaceAndComments();for(var t=go.withContext(this.context);this.bytes.peek()!==wr.RightSquareBracket;){var e=this.parseObject();t.push(e),this.skipWhitespaceAndComments()}return this.bytes.assertNext(wr.RightSquareBracket),t},n.prototype.parseDict=function(){this.bytes.assertNext(wr.LessThan),this.bytes.assertNext(wr.LessThan),this.skipWhitespaceAndComments();for(var t=new Map;!this.bytes.done()&&this.bytes.peek()!==wr.GreaterThan&&this.bytes.peekAhead(1)!==wr.GreaterThan;){var e=this.parseName(),n=this.parseObject();t.set(e,n),this.skipWhitespaceAndComments()}this.skipWhitespaceAndComments(),this.bytes.assertNext(wr.GreaterThan),this.bytes.assertNext(wr.GreaterThan);var r=t.get(Co.of("Type"));return r===Co.of("Catalog")?ul.fromMapWithContext(t,this.context):r===Co.of("Pages")?cl.fromMapWithContext(t,this.context):r===Co.of("Page")?Wo.fromMapWithContext(t,this.context):zo.fromMapWithContext(t,this.context)},n.prototype.parseDictOrStream=function(){var t=this.bytes.position(),e=this.parseDict();if(this.skipWhitespaceAndComments(),!(this.matchKeyword(Al.streamEOF1)||this.matchKeyword(Al.streamEOF2)||this.matchKeyword(Al.streamEOF3)||this.matchKeyword(Al.streamEOF4)||this.matchKeyword(Al.stream)))return e;var n,r=this.bytes.offset(),i=e.get(Co.of("Length"));i instanceof po?(n=r+i.asNumber(),this.bytes.moveTo(n),this.skipWhitespaceAndComments(),this.matchKeyword(Al.endstream)||(this.bytes.moveTo(r),n=this.findEndOfStreamFallback(t))):n=this.findEndOfStreamFallback(t);var o=this.bytes.slice(r,n);return Oo.of(e,o)},n.prototype.findEndOfStreamFallback=function(t){for(var e=1,n=this.bytes.offset();!this.bytes.done()&&(n=this.bytes.offset(),this.matchKeyword(Al.stream)?e+=1:this.matchKeyword(Al.EOF1endstream)||this.matchKeyword(Al.EOF2endstream)||this.matchKeyword(Al.EOF3endstream)||this.matchKeyword(Al.endstream)?e-=1:this.bytes.next(),0!==e););if(0!==e)throw new gr(t);return n},n.forBytes=function(t,e,r){return new n(wl.of(t),e,r)},n.forByteStream=function(t,e,r){return void 0===r&&(r=!1),new n(t,e,r)},n}(bl),Tl=function(t){function n(e,n){var r=t.call(this,wl.fromPDFRawStream(e),e.dict.context)||this,i=e.dict;return r.alreadyParsed=!1,r.shouldWaitForTick=n||function(){return!1},r.firstOffset=i.lookup(Co.of("First"),po).asNumber(),r.objectCount=i.lookup(Co.of("N"),po).asNumber(),r}return e(n,t),n.prototype.parseIntoContext=function(){return r(this,void 0,void 0,(function(){var t,e,n,r,o,a,s,h;return i(this,(function(i){switch(i.label){case 0:if(this.alreadyParsed)throw new Yn("PDFObjectStreamParser","parseIntoContext");this.alreadyParsed=!0,t=this.parseOffsetsAndObjectNumbers(),e=0,n=t.length,i.label=1;case 1:return e=wr.Space&&e<=wr.Tilde&&(this.matchKeyword(Al.xref)||this.matchKeyword(Al.trailer)||this.matchKeyword(Al.startxref)||this.matchIndirectObjectHeader())){this.bytes.moveTo(t);break}this.bytes.next()}},n.prototype.skipBinaryHeaderComment=function(){this.skipWhitespaceAndComments();try{var t=this.bytes.offset();this.parseIndirectObjectHeader(),this.bytes.moveTo(t)}catch(t){this.bytes.next(),this.skipWhitespaceAndComments()}},n.forBytesWithOptions=function(t,e,r,i){return new n(t,e,r,i)},n}(zl),Bl=function(t){return 1<1&&(n*=d=Math.sqrt(d),r*=d);var f=c/n,p=u/n,g=-u/r,v=c/r,y=f*s+p*h,m=g*s+v*h,b=f*t+p*e,w=g*t+v*e,x=1/((b-y)*(b-y)+(w-m)*(w-m))-.25;x<0&&(x=0);var k=Math.sqrt(x);o===i&&(k=-k);var S=.5*(y+b)-k*(w-m),F=.5*(m+w)+k*(b-y),C=Math.atan2(m-F,y-S),A=Math.atan2(w-F,b-S)-C;A<0&&1===o?A+=2*Math.PI:A>0&&0===o&&(A-=2*Math.PI);for(var z=Math.ceil(Math.abs(A/(.5*Math.PI+.001))),T=[],O=0;O0&&(r[r.length]=+i),n[n.length]={cmd:e,args:r},r=[],i="",o=!1),e=l;else if([" ",","].includes(l)||"-"===l&&i.length>0&&"e"!==i[i.length-1]||"."===l&&o){if(0===i.length)continue;r.length===a?(n[n.length]={cmd:e,args:r},r=[+i],"M"===e&&(e="L"),"m"===e&&(e="l")):r[r.length]=+i,o="."===l,i=["-","."].includes(l)?l:""}else i+=l,"."===l&&(o=!0)}return i.length>0&&(r.length===a?(n[n.length]={cmd:e,args:r},r=[+i],"M"===e&&(e="L"),"m"===e&&(e="l")):r[r.length]=+i),n[n.length]={cmd:e,args:r},n}(t))},xc=function(t,e){return[fu(),e.graphicsState&&du(e.graphicsState),Ru(),oc(e.color),Nu(e.font,e.size),Wu(Kl(e.rotate),Kl(e.xSkew),Kl(e.ySkew),e.x,e.y),Ou(t),Bu(),pu()].filter(Boolean)},kc=function(t,e){for(var n=[fu(),e.graphicsState&&du(e.graphicsState),Ru(),oc(e.color),Nu(e.font,e.size),Eu(e.lineHeight),Wu(Kl(e.rotate),Kl(e.xSkew),Kl(e.ySkew),e.x,e.y)].filter(Boolean),r=0,i=t.length;rt.length)return i-1;var p=e.heightAtSize(i);if((p+.2*p)*o>Math.abs(n.height))return i-1;i+=1}return i},ed=function(t){for(var e=t.length;e>0;e--)if(/\s/.test(t[e]))return e},nd=function(t,e,n,r){for(var i,o=t.length;o>0;){var a=t.substring(0,o),s=n.encodeText(a),h=n.widthOfTextAtSize(a,r);if(hd&&(d=S+x),p+s>f&&(f=p+s),l.push({text:b,encoded:w,width:x,height:s,x:S,y:p}),y=null==k?void 0:k.trim()}return{fontSize:r,lineHeight:h,lines:l,bounds:{x:u,y:c,width:d-u,height:f-c}}},id=function(t,e){var n=e.fontSize,r=e.font,i=e.bounds,o=e.cellCount,a=O(F(t));if(a.length>o)throw new Yc(a.length,o);void 0!==n&&0!==n||(n=function(t,e,n,r){for(var i=n.width/r,o=n.height,a=4,s=B(t);a<500;){for(var h=0,l=s.length;h.75*i)return a-1}if(e.heightAtSize(a,{descender:!1})>o)return a-1;a+=1}return a}(a,r,i,o));for(var s=i.width/o,h=r.heightAtSize(n,{descender:!1}),l=i.y+(i.height/2-h/2),u=[],c=i.x,d=i.y,f=i.x+i.width,p=i.y+i.height,g=0,v=0;gf&&(f=k+x),l+h>p&&(p=l+h),u.push({text:a,encoded:w,width:x,height:h,x:k,y:l}),g+=1,v+=b}return{fontSize:n,cells:u,bounds:{x:c,y:d,width:f-c,height:p-d}}},od=function(t,e){var n=e.alignment,r=e.fontSize,i=e.font,o=e.bounds,a=O(F(t));void 0!==r&&0!==r||(r=td([a],i,o));var s=i.encodeText(a),h=i.widthOfTextAtSize(a,r),l=i.heightAtSize(r,{descender:!1}),u=n===Qu.Left?o.x:n===Qu.Center?o.x+o.width/2-h/2:n===Qu.Right?o.x+o.width-h:o.x,c=o.y+(o.height/2-l/2);return{fontSize:r,line:{text:a,encoded:s,width:h,height:l,x:u,y:c},bounds:{x:u,y:c,width:h,height:l}}},ad=function(t){return"normal"in t?t:{normal:t}},sd=/\/([^\0\t\n\f\r\ ]+)[\0\t\n\f\r\ ]+(\d*\.\d+|\d+)[\0\t\n\f\r\ ]+Tf/,hd=function(t){var e,n,r=null!==(e=t.getDefaultAppearance())&&void 0!==e?e:"",i=null!==(n=j(r,sd).match)&&void 0!==n?n:[],o=Number(i[2]);return isFinite(o)?o:void 0},ld=/(\d*\.\d+|\d+)[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]+(g|rg|k)/,ud=function(t){var e,n=null!==(e=t.getDefaultAppearance())&&void 0!==e?e:"",r=j(n,ld).match,i=null!=r?r:[],o=i[1],a=i[2],s=i[3],h=i[4],l=i[5];return"g"===l&&o?$u(Number(o)):"rg"===l&&o&&a&&s?tc(Number(o),Number(a),Number(s)):"k"===l&&o&&a&&s&&h?ec(Number(o),Number(a),Number(s),Number(h)):void 0},cd=function(t,e,n,r){var i;void 0===r&&(r=0);var o=[oc(e).toString(),Nu(null!==(i=null==n?void 0:n.name)&&void 0!==i?i:"dummy__noop",r).toString()].join("\n");t.setDefaultAppearance(o)},dd=function(t,e){var r,i,a,s=ud(e),h=ud(t.acroField),l=e.getRectangle(),u=e.getAppearanceCharacteristics(),c=e.getBorderStyle(),d=null!==(r=null==c?void 0:c.getWidth())&&void 0!==r?r:0,f=Gl(null==u?void 0:u.getRotation()),p=Hl(l,f),g=p.width,v=p.height,y=Nc(n(n({},l),{rotation:f})),m=tc(0,0,0),b=null!==(i=sc(null==u?void 0:u.getBorderColor()))&&void 0!==i?i:m,w=sc(null==u?void 0:u.getBackgroundColor()),x=sc(null==u?void 0:u.getBackgroundColor(),.8),k=null!==(a=null!=s?s:h)&&void 0!==a?a:m;cd(s?e:t.acroField,k);var S={x:0+d/2,y:0+d/2,width:g-d,height:v-d,thickness:1.5,borderWidth:d,borderColor:b,markColor:k};return{normal:{on:o(y,Pc(n(n({},S),{color:w,filled:!0}))),off:o(y,Pc(n(n({},S),{color:w,filled:!1})))},down:{on:o(y,Pc(n(n({},S),{color:x,filled:!0}))),off:o(y,Pc(n(n({},S),{color:x,filled:!1})))}}},fd=function(t,e){var r,i,a,s=ud(e),h=ud(t.acroField),l=e.getRectangle(),u=e.getAppearanceCharacteristics(),c=e.getBorderStyle(),d=null!==(r=null==c?void 0:c.getWidth())&&void 0!==r?r:0,f=Gl(null==u?void 0:u.getRotation()),p=Hl(l,f),g=p.width,v=p.height,y=Nc(n(n({},l),{rotation:f})),m=tc(0,0,0),b=null!==(i=sc(null==u?void 0:u.getBorderColor()))&&void 0!==i?i:m,w=sc(null==u?void 0:u.getBackgroundColor()),x=sc(null==u?void 0:u.getBackgroundColor(),.8),k=null!==(a=null!=s?s:h)&&void 0!==a?a:m;cd(s?e:t.acroField,k);var S={x:g/2,y:v/2,width:g-d,height:v-d,borderWidth:d,borderColor:b,dotColor:k};return{normal:{on:o(y,Dc(n(n({},S),{color:w,filled:!0}))),off:o(y,Dc(n(n({},S),{color:w,filled:!1})))},down:{on:o(y,Dc(n(n({},S),{color:x,filled:!0}))),off:o(y,Dc(n(n({},S),{color:x,filled:!1})))}}},pd=function(t,e,r){var i,a,s,h,l,u=ud(e),c=ud(t.acroField),d=hd(e),f=hd(t.acroField),p=e.getRectangle(),g=e.getAppearanceCharacteristics(),v=e.getBorderStyle(),y=null==g?void 0:g.getCaptions(),m=null!==(i=null==y?void 0:y.normal)&&void 0!==i?i:"",b=null!==(s=null!==(a=null==y?void 0:y.down)&&void 0!==a?a:m)&&void 0!==s?s:"",w=null!==(h=null==v?void 0:v.getWidth())&&void 0!==h?h:0,x=Gl(null==g?void 0:g.getRotation()),k=Hl(p,x),S=k.width,F=k.height,C=Nc(n(n({},p),{rotation:x})),A=tc(0,0,0),z=sc(null==g?void 0:g.getBorderColor()),T=sc(null==g?void 0:g.getBackgroundColor()),O=sc(null==g?void 0:g.getBackgroundColor(),.8),R={x:w,y:w,width:S-2*w,height:F-2*w},B=od(m,{alignment:Qu.Center,fontSize:null!=d?d:f,font:r,bounds:R}),N=od(b,{alignment:Qu.Center,fontSize:null!=d?d:f,font:r,bounds:R}),P=Math.min(B.fontSize,N.fontSize),D=null!==(l=null!=u?u:c)&&void 0!==l?l:A;cd(u||void 0!==d?e:t.acroField,D,r,P);var j={x:0+w/2,y:0+w/2,width:S-w,height:F-w,borderWidth:w,borderColor:z,textColor:D,font:r.name,fontSize:P};return{normal:o(C,jc(n(n({},j),{color:T,textLines:[B.line]}))),down:o(C,jc(n(n({},j),{color:O,textLines:[N.line]})))}},gd=function(t,e,r){var i,a,s,h,l,u,c=ud(e),d=ud(t.acroField),f=hd(e),p=hd(t.acroField),g=e.getRectangle(),v=e.getAppearanceCharacteristics(),y=e.getBorderStyle(),m=null!==(i=t.getText())&&void 0!==i?i:"",b=null!==(a=null==y?void 0:y.getWidth())&&void 0!==a?a:0,w=Gl(null==v?void 0:v.getRotation()),x=Hl(g,w),k=x.width,S=x.height,F=Nc(n(n({},g),{rotation:w})),C=tc(0,0,0),A=sc(null==v?void 0:v.getBorderColor()),z=sc(null==v?void 0:v.getBackgroundColor()),T=t.isCombed()?0:1,O={x:b+T,y:b+T,width:k-2*(b+T),height:S-2*(b+T)};if(t.isMultiline())l=(R=rd(m,{alignment:t.getAlignment(),fontSize:null!=f?f:p,font:r,bounds:O})).lines,u=R.fontSize;else if(t.isCombed()){l=(R=id(m,{fontSize:null!=f?f:p,font:r,bounds:O,cellCount:null!==(s=t.getMaxLength())&&void 0!==s?s:0})).cells,u=R.fontSize}else{var R;l=[(R=od(m,{alignment:t.getAlignment(),fontSize:null!=f?f:p,font:r,bounds:O})).line],u=R.fontSize}var B=null!==(h=null!=c?c:d)&&void 0!==h?h:C;cd(c||void 0!==f?e:t.acroField,B,r,u);var N={x:0+b/2,y:0+b/2,width:k-b,height:S-b,borderWidth:null!=b?b:0,borderColor:A,textColor:B,font:r.name,fontSize:u,color:z,textLines:l,padding:T};return o(F,Ic(N))},vd=function(t,e,r){var i,a,s,h=ud(e),l=ud(t.acroField),u=hd(e),c=hd(t.acroField),d=e.getRectangle(),f=e.getAppearanceCharacteristics(),p=e.getBorderStyle(),g=null!==(i=t.getSelected()[0])&&void 0!==i?i:"",v=null!==(a=null==p?void 0:p.getWidth())&&void 0!==a?a:0,y=Gl(null==f?void 0:f.getRotation()),m=Hl(d,y),b=m.width,w=m.height,x=Nc(n(n({},d),{rotation:y})),k=tc(0,0,0),S=sc(null==f?void 0:f.getBorderColor()),F=sc(null==f?void 0:f.getBackgroundColor()),C={x:v+1,y:v+1,width:b-2*(v+1),height:w-2*(v+1)},A=od(g,{alignment:Qu.Left,fontSize:null!=u?u:c,font:r,bounds:C}),z=A.line,T=A.fontSize,O=null!==(s=null!=h?h:l)&&void 0!==s?s:k;cd(h||void 0!==u?e:t.acroField,O,r,T);var R={x:0+v/2,y:0+v/2,width:b-v,height:w-v,borderWidth:null!=v?v:0,borderColor:S,textColor:O,font:r.name,fontSize:T,color:F,textLines:[z],padding:1};return o(x,Ic(R))},yd=function(t,e,r){var i,a,s=ud(e),h=ud(t.acroField),l=hd(e),u=hd(t.acroField),c=e.getRectangle(),d=e.getAppearanceCharacteristics(),f=e.getBorderStyle(),p=null!==(i=null==f?void 0:f.getWidth())&&void 0!==i?i:0,g=Gl(null==d?void 0:d.getRotation()),v=Hl(c,g),y=v.width,m=v.height,b=Nc(n(n({},c),{rotation:g})),w=tc(0,0,0),x=sc(null==d?void 0:d.getBorderColor()),k=sc(null==d?void 0:d.getBackgroundColor()),S=t.getOptions(),F=t.getSelected();t.isSorted()&&S.sort();for(var C="",A=0,z=S.length;A1||1===n.length&&e)&&this.enableMultiselect();for(var i=new Array(n.length),o=0,a=n.length;o1||1===n.length&&e)&&this.enableMultiselect();for(var i=new Array(n.length),o=0,a=n.length;oe)throw new Jc(t.length,e,this.getName());this.markAsDirty(),this.disableRichFormatting(),t?this.acroField.setValue(Qo.fromText(t)):this.acroField.removeValue()},n.prototype.getAlignment=function(){var t=this.acroField.getQuadding();return 0===t?Qu.Left:1===t?Qu.Center:2===t?Qu.Right:Qu.Left},n.prototype.setAlignment=function(t){zn(t,"alignment",Qu),this.markAsDirty(),this.acroField.setQuadding(t)},n.prototype.getMaxLength=function(){return this.acroField.getMaxLength()},n.prototype.setMaxLength=function(t){if(In(t,"maxLength",0,Number.MAX_SAFE_INTEGER),this.markAsDirty(),void 0===t)this.acroField.removeMaxLength();else{var e=this.getText();if(e&&e.length>t)throw new Qc(e.length,t,this.getName());this.acroField.setMaxLength(t)}},n.prototype.removeMaxLength=function(){this.markAsDirty(),this.acroField.removeMaxLength()},n.prototype.setImage=function(t){for(var e=this.getAlignment(),n=e===Qu.Center?$c.Center:e===Qu.Right?$c.Right:$c.Left,r=this.acroField.getWidgets(),i=0,o=r.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 U@I8Hy^1FWP|Gv&X!`9FL1Def^p8x;= literal 0 HcmV?d00001 diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/iccs/LICENSE b/bundled-addons/pdf-editor/vendor/pdfjs/iccs/LICENSE new file mode 100644 index 00000000..4ee29e09 --- /dev/null +++ b/bundled-addons/pdf-editor/vendor/pdfjs/iccs/LICENSE @@ -0,0 +1,116 @@ +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see +http://creativecommons.org/publicdomain/zero/1.0/ diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/pdf.min.mjs b/bundled-addons/pdf-editor/vendor/pdfjs/pdf.min.mjs new file mode 100644 index 00000000..baa7e4c4 --- /dev/null +++ b/bundled-addons/pdf-editor/vendor/pdfjs/pdf.min.mjs @@ -0,0 +1,29 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2024 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ +/** + * pdfjsVersion = 6.3.289 + * pdfjsBuild = 1c8020a7d + */ +const t=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),e=[1/0,1/0,-1/0,-1/0],i=new Float32Array(e),n=[.001,0,0,.001,0,0],s="http://www.w3.org/2000/svg",r=1,a=2,o=4,l=16,h=32,c=64,d=128,u=256,p={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},g="pdfjs_internal_id_",m="pdfjs_internal_editor_",f={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},b={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},y={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},v=0,w=1,A=2,x=3,C=3,E=4,S={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},T={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},_=1,k=2,D=3,P=4,M=5,I={ERRORS:0,WARNINGS:1,INFOS:5},F={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},O=0,B=1,R=2,L=3,N=4,U={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let H=I.WARNINGS;function setVerbosityLevel(t){Number.isInteger(t)&&(H=t)}function getVerbosityLevel(){return H}function info(t){H>=I.INFOS&&console.info(`Info: ${t}`)}function warn(t){H>=I.WARNINGS&&console.warn(`Warning: ${t}`)}function unreachable(t){throw new Error(t)}function assert(t,e){t||unreachable(e)}function createValidAbsoluteUrl(t,e=null,i=null){if(!t)return null;if(i&&"string"==typeof t){if(i.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);e?.length>=2&&(t=`http://${t}`)}if(i.tryConvertEncoding)try{t=function stringToUTF8String(t){return decodeURIComponent(escape(t))}(t)}catch{}}const n=e?URL.parse(t,e):URL.parse(t);return function _isValidProtocol(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(n)?n:null}function updateUrlHash(t,e,i=!1){const n=URL.parse(t);if(n){n.hash=e;return n.href}return i&&createValidAbsoluteUrl(t,"http://example.com")?t.split("#",1)[0]+""+(e?`#${e}`:""):""}function stripPath(t){return t.substring(t.lastIndexOf("/")+1)}function shadow(t,e,i,n=!1){Object.defineProperty(t,e,{value:i,enumerable:!n,configurable:!0,writable:!1});return i}const G=function BaseExceptionClosure(){function BaseException(t,e){this.message=t;this.name=e}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends G{constructor(t,e){super(t,"PasswordException");this.code=e}}class UnknownErrorException extends G{constructor(t,e){super(t,"UnknownErrorException");this.details=e}}class InvalidPDFException extends G{constructor(t){super(t,"InvalidPDFException")}}class ResponseException extends G{constructor(t,e,i){super(t,"ResponseException");this.status=e;this.missing=i}}class FormatError extends G{constructor(t){super(t,"FormatError")}}class AbortException extends G{constructor(t){super(t,"AbortException")}}function stringToBytes(t){"string"!=typeof t&&unreachable("Invalid argument for stringToBytes");const e=t.length,i=new Uint8Array(e);for(let n=0;ne.toString(16).padStart(2,"0")))}static makeHexColor(t,e,i){return`#${this.hexNums[t]}${this.hexNums[e]}${this.hexNums[i]}`}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,i=0){const n=t[i],s=t[i+1];t[i]=n*e[0]+s*e[2]+e[4];t[i+1]=n*e[1]+s*e[3]+e[5]}static applyTransformToBezier(t,e,i=0){const n=e[0],s=e[1],r=e[2],a=e[3],o=e[4],l=e[5];for(let e=0;e<6;e+=2){const h=t[i+e],c=t[i+e+1];t[i+e]=h*n+c*r+o;t[i+e+1]=h*s+c*a+l}}static applyInverseTransform(t,e){const i=t[0],n=t[1],s=e[0]*e[3]-e[1]*e[2];t[0]=(i*e[3]-n*e[2]+e[2]*e[5]-e[4]*e[3])/s;t[1]=(-i*e[1]+n*e[0]+e[4]*e[1]-e[5]*e[0])/s}static axialAlignedBoundingBox(t,e,i){const n=e[0],s=e[1],r=e[2],a=e[3],o=e[4],l=e[5],h=t[0],c=t[1],d=t[2],u=t[3];let p=n*h+o,g=p,m=n*d+o,f=m,b=a*c+l,y=b,v=a*u+l,w=v;if(0!==s||0!==r){const t=s*h,e=s*d,i=r*c,n=r*u;p+=i;f+=i;m+=n;g+=n;b+=t;w+=t;v+=e;y+=e}i[0]=Math.min(i[0],p,m,g,f);i[1]=Math.min(i[1],b,v,y,w);i[2]=Math.max(i[2],p,m,g,f);i[3]=Math.max(i[3],b,v,y,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 i=t[0],n=t[1],s=t[2],r=t[3],a=i**2+n**2,o=i*s+n*r,l=s**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);if(t[0]>t[2]){e[0]=t[2];e[2]=t[0]}if(t[1]>t[3]){e[1]=t[3];e[3]=t[1]}return e}static intersect(t,e){const i=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),n=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(i>n)return null;const s=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 s>r?null:[i,s,n,r]}static pointBoundingBox(t,e,i){i[0]=Math.min(i[0],t);i[1]=Math.min(i[1],e);i[2]=Math.max(i[2],t);i[3]=Math.max(i[3],e)}static rectBoundingBox(t,e,i,n,s){s[0]=Math.min(s[0],t,i);s[1]=Math.min(s[1],e,n);s[2]=Math.max(s[2],t,i);s[3]=Math.max(s[3],e,n)}static#t(t,e,i,n,s,r,a,o,l,h){if(l<=0||l>=1)return;const c=1-l,d=l*l,u=d*l,p=c*(c*(c*t+3*l*e)+3*d*i)+u*n,g=c*(c*(c*s+3*l*r)+3*d*a)+u*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,i,n,s,r,a,o,l,h,c,d){if(Math.abs(l)<1e-12){Math.abs(h)>=1e-12&&this.#t(t,e,i,n,s,r,a,o,-c/h,d);return}const u=h**2-4*c*l;if(u<0)return;const p=Math.sqrt(u),g=2*l;this.#t(t,e,i,n,s,r,a,o,(-h+p)/g,d);this.#t(t,e,i,n,s,r,a,o,(-h-p)/g,d)}static bezierBoundingBox(t,e,i,n,s,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,i,s,a,e,n,r,o,3*(3*(i-s)-t+a),6*(t-2*i+s),3*(i-t),l);this.#e(t,i,s,a,e,n,r,o,3*(3*(n-r)-e+o),6*(e-2*n+r),3*(n-e),l)}}let z=null,W=null;function normalizeUnicode(t){if(!z){z=/([\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;W=new Map([["ſt","ſt"]])}return t.replaceAll(z,(t,e,i)=>e?e.normalize("NFKC"):W.get(i))}function getUuid(){if("function"==typeof crypto.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);crypto.getRandomValues(t);return function bytesToString(t){"object"==typeof t&&void 0!==t?.length||unreachable("Invalid argument for bytesToString");const e=t.length,i=8192;if(e[],makeMap=()=>new Map,makeObj=()=>Object.create(null),makeSet=()=>new Set;"function"!=typeof Iterator.prototype.join&&(Iterator.prototype.join=function(t){return[...this].join(t)});function MathClamp(t,e,i){return Math.min(Math.max(t,e),i)}class PageViewport{constructor({viewBox:t,userUnit:e,scale:i,rotation:n,offsetX:s=0,offsetY:r=0,dontFlip:a=!1}){this.viewBox=t;this.userUnit=e;this.scale=i;this.rotation=n;this.offsetX=s;this.offsetY=r;i*=e;const o=(t[2]+t[0])/2,l=(t[3]+t[1])/2;let h,c,d,u,p,g,m,f;(n%=360)<0&&(n+=360);switch(n){case 180:h=-1;c=0;d=0;u=1;break;case 90:h=0;c=1;d=1;u=0;break;case 270:h=0;c=-1;d=-1;u=0;break;case 0:h=1;c=0;d=0;u=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}if(a){d=-d;u=-u}if(0===h){p=Math.abs(l-t[1])*i+s;g=Math.abs(o-t[0])*i+r;m=(t[3]-t[1])*i;f=(t[2]-t[0])*i}else{p=Math.abs(o-t[0])*i+s;g=Math.abs(l-t[1])*i+r;m=(t[2]-t[0])*i;f=(t[3]-t[1])*i}this.transform=[h*i,c*i,d*i,u*i,p-h*i*o-d*i*l,g-c*i*o-u*i*l];this.width=m;this.height=f}get rawDims(){const t=this.viewBox;return shadow(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:i=this.offsetX,offsetY:n=this.offsetY,dontFlip:s=!1}={}){return new PageViewport({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:i,offsetY:n,dontFlip:s})}convertToViewportPoint(t,e){const i=[t,e];Util.applyTransform(i,this.transform);return i}convertToPdfPoint(t,e){const i=[t,e];Util.applyInverseTransform(i,this.transform);return i}}class XfaText{static textContent(t){const e=[],i={items:e,styles:Object.create(null)};!function walk(t){if(!t)return;let i=null;const n=t.name;if("#text"===n)i=t.value;else{if(!XfaText.shouldBuildText(n))return;t?.attributes?.textContent?i=t.attributes.textContent:t.value&&(i=t.value)}null!==i&&e.push({str:i});if(t.children)for(const e of t.children)walk(e)}(t);return i}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}const V=/url\(|image-set\(/i,$=/^on/i;class XfaLayer{static get _allowedHtmlElements(){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"]))}static get _allowedSvgElements(){return shadow(this,"_allowedSvgElements",new Set(["ellipse","line","path","rect","svg"]))}static get _allowedRichTextElements(){return shadow(this,"_allowedRichTextElements",new Set(["a","b","br","div","i","li","ol","p","span","sub","sup","ul"]))}static get _allowedRichTextAttributes(){return shadow(this,"_allowedRichTextAttributes",new Set(["class","dir","style"]))}static get _allowedRichTextStyles(){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"]))}static setupStorage(t,e,i,n,s){const r=n.getValue(e,{value:null});switch(i.name){case"textarea":null!==r.value&&(t.textContent=r.value);if("print"===s)break;t.addEventListener("input",t=>{n.setValue(e,{value:t.target.value})});break;case"input":if("radio"===i.attributes.type||"checkbox"===i.attributes.type){r.value===i.attributes.xfaOn?t.setAttribute("checked",!0):r.value===i.attributes.xfaOff&&t.removeAttribute("checked");if("print"===s)break;t.addEventListener("change",t=>{n.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})})}else{null!==r.value&&t.setAttribute("value",r.value);if("print"===s)break;t.addEventListener("input",t=>{n.setValue(e,{value:t.target.value})})}break;case"select":if(null!==r.value){t.setAttribute("value",r.value);for(const t of i.children)t.attributes.value===r.value?t.attributes.selected=!0:Object.hasOwn(t.attributes,"selected")&&delete t.attributes.selected}t.addEventListener("input",t=>{const i=t.target.options,s=-1===i.selectedIndex?"":i[i.selectedIndex].value;n.setValue(e,{value:s})})}}static setAttributes({html:t,element:e,storage:i=null,intent:n,linkService:s}){const{attributes:r}=e,a=t instanceof HTMLAnchorElement;"radio"===r.type&&(r.name=`${r.name}-${n}`);for(const[e,i]of Object.entries(r))if(null!=i&&!$.test(e)&&("richText"!==n||this._allowedRichTextAttributes.has(e)))switch(e){case"class":i.length&&t.setAttribute(e,i.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",i);break;case"style":if("richText"===n){const e=this._allowedRichTextStyles;for(const[n,s]of Object.entries(i))e.has(n)&&!V.test(s)&&(t.style[n]=s)}else Object.assign(t.style,i);break;case"textContent":t.textContent=i;break;default:(!a||"href"!==e&&"newWindow"!==e)&&t.setAttribute(e,i)}a&&s?.addLinkAttributes(t,r.href,r.newWindow);i&&r.dataId&&this.setupStorage(t,r.dataId,e,i)}static#i(t,e,i){return"richText"===i?!e&&this._allowedRichTextElements.has(t)?document.createElement(t):null:e?e===s&&this._allowedSvgElements.has(t)?document.createElementNS(s,t):null:this._allowedHtmlElements.has(t)?document.createElement(t):null}static render(t){const e=t.annotationStorage,i=t.linkService,n=t.xfaHtml,s=t.intent||"display",r=this.#i(n.name,n.attributes?.xmlns,s)??document.createElement("div");n.attributes&&this.setAttributes({html:r,element:n,intent:s,linkService:i});const a="richText"!==s,o=t.div;o.append(r);if(t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;o.style.transform=e}a&&o.setAttribute("class","xfaLayer xfaFont");const l=[];if(0===n.children.length){if(n.value){const t=document.createTextNode(n.value);r.append(t);a&&XfaText.shouldBuildText(n.name)&&l.push(t)}return{textDivs:l}}const h=[[n,-1,r]];for(;h.length>0;){const[t,n,r]=h.at(-1);if(n+1===t.children.length){h.pop();continue}const o=t.children[++h.at(-1)[1]];if(null===o)continue;const{name:c}=o;if("#text"===c){const t=document.createTextNode(o.value);l.push(t);r.append(t);continue}const d=this.#i(c,o.attributes?.xmlns,s);if(d){r.append(d);o.attributes&&this.setAttributes({html:d,element:o,storage:e,intent:s,linkService:i});if(o.children?.length>0)h.push([o,-1,d]);else if(o.value){const t=document.createTextNode(o.value);a&&XfaText.shouldBuildText(c)&&l.push(t);d.append(t)}}}for(const t of o.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))t.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:i=0}){const{width:n,height:s}=t.attributes.style;return new PageViewport({viewBox:[0,0,parseInt(n,10),parseInt(s,10)],userUnit:1,scale:e,rotation:i})}}class PixelsPerInch{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}async function fetchData(t,e="text"){if(isValidFetchUrl(t,document.baseURI)){const i=await fetch(t);if(!i.ok)throw new Error(i.statusText);switch(e){case"blob":return i.blob();case"bytes":return i.bytes();case"json":return i.json()}return i.text()}return new Promise((i,n)=>{const s=new XMLHttpRequest;s.open("GET",t,!0);s.responseType="bytes"===e?"arraybuffer":e;s.onreadystatechange=()=>{if(s.readyState===XMLHttpRequest.DONE)if(200!==s.status&&0!==s.status)n(new Error(s.statusText));else{switch(e){case"bytes":i(new Uint8Array(s.response));return;case"blob":case"json":i(s.response);return}i(s.responseText)}};s.send(null)})}class RenderingCancelledException extends G{constructor(t,e=0){super(t,"RenderingCancelledException");this.extraDelay=e}}function isDataScheme(t){const e=t.length;let i=0;for(;i{try{return new URL(t)}catch{}try{return new URL(decodeURIComponent(t))}catch{}try{return new URL(t,"https://foo.bar")}catch{}try{return new URL(decodeURIComponent(t),"https://foo.bar")}catch{}return null})(t);if(!i)return e;const decode=t=>{try{let e=decodeURIComponent(t);if(e.includes("/")){e=stripPath(e);if(4===e.length&&n.test(e))return t}return e}catch{return t}},n=/\.pdf$/i,s=stripPath(i.pathname);if(n.test(s))return decode(s);if(i.searchParams.size>0){const getLast=t=>[...t].findLast(t=>n.test(t)),t=getLast(i.searchParams.values())??getLast(i.searchParams.keys());if(t)return decode(t)}if(i.hash){const{hash:t}=i;let e=-1;for(const{index:i}of t.matchAll(/\.pdf\b/gi))e=i;if(e>0){let i=e;for(;i>0&&!"/?#=".includes(t[i-1]);)i--;if(it.name.length));return this.times.map(e=>`${e.name.padEnd(t)} ${e.end-e.start}ms\n`).join("")}}function isValidFetchUrl(t,e){const i=e?URL.parse(t,e):URL.parse(t);return/https?:/.test(i?.protocol??"")}function noContextMenu(t){t.preventDefault()}function stopEvent(t){t.preventDefault();t.stopPropagation()}class PDFDateString{static#s;static toDateObject(t){if(t instanceof Date)return t;if(!t||"string"!=typeof t)return null;this.#s||=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?");const e=this.#s.exec(t);if(!e)return null;const i=parseInt(e[1],10);let n=parseInt(e[2],10);n=n>=1&&n<=12?n-1:0;let s=parseInt(e[3],10);s=s>=1&&s<=31?s: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;c=c>=0&&c<=59?c:0;if("-"===l){r+=h;a+=c}else if("+"===l){r-=h;a-=c}return new Date(Date.UTC(i,n,s,r,a,o))}}function getRGBA(t){if(t.startsWith("#")){const e=t.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(t.startsWith("rgb(")){const[e,i,n]=t.slice(4,-1).split(",").map(t=>parseInt(t,10));return[e,i,n,1]}if(t.startsWith("rgba(")){const e=t.slice(5,-1).split(",");return[parseInt(e[0],10),parseInt(e[1],10),parseInt(e[2],10),parseFloat(e[3])]}const e=t.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return e?[Math.round(255*parseFloat(e[1])),Math.round(255*parseFloat(e[2])),Math.round(255*parseFloat(e[3])),void 0!==e[4]&&"none"!==e[4]?parseFloat(e[4]):1]:null}function getRGB(t){const e=getRGBA(t);if(!e){warn(`Not a valid color format: "${t}"`);return[0,0,0]}return e.slice(0,3)}function getCurrentTransform(t){const{a:e,b:i,c:n,d:s,e:r,f:a}=t.getTransform();return[e,i,n,s,r,a]}function getCurrentTransformInverse(t){const{a:e,b:i,c:n,d:s,e:r,f:a}=t.getTransform().invertSelf();return[e,i,n,s,r,a]}function setLayerDimensions(t,e,i=!1,n=!0){if(e instanceof PageViewport){const{pageWidth:n,pageHeight:s}=e.rawDims,{style:r}=t,a=`round(down, var(--total-scale-factor) * ${n}px, var(--scale-round-x))`,o=`round(down, var(--total-scale-factor) * ${s}px, var(--scale-round-y))`;if(i&&e.rotation%180!=0){r.width=o;r.height=a}else{r.width=a;r.height=o}}n&&t.setAttribute("data-main-rotation",e.rotation)}class OutputScale{constructor(){const{pixelRatio:t}=OutputScale;this.sx=t;this.sy=t}get scaled(){return 1!==this.sx||1!==this.sy}get symmetric(){return this.sx===this.sy}limitCanvas(t,e,i,n,s=-1){let r=1/0,a=1/0,o=1/0;(i=OutputScale.capPixels(i,s))>0&&(r=Math.sqrt(i/(t*e)));if(-1!==n){a=n/t;o=n/e}const l=Math.min(r,a,o);if(this.sx>l||this.sy>l){this.sx=l;this.sy=l;return!0}return!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(t,e){if(e>=0){const i=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+e/100));return t>0?Math.min(t,i):i}return t}}const j=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];class ColorScheme{static get isDarkMode(){return shadow(this,"isDarkMode",!!window?.matchMedia?.("(prefers-color-scheme: dark)").matches)}}class CSSConstants{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:i}=window.getComputedStyle(t);t.remove();return shadow(this,"commentForegroundColor",getRGB(i))}}function applyOpacity(t,e){const i=255*(1-(e=MathClamp(e??1,0,1)));return t.map(t=>Math.round(t*e+i))}function RGBToHSL(t,e){const i=t[0]/255,n=t[1]/255,s=t[2]/255,r=Math.max(i,n,s),a=Math.min(i,n,s),o=(r+a)/2;if(r===a)e[0]=e[1]=0;else{const t=r-a;e[1]=o<.5?t/(r+a):t/(2-r-a);switch(r){case i:e[0]=60*((n-s)/t+(ns?(n+.05)/(s+.05):(s+.05)/(n+.05)}const X=new Map;function findContrastColor(t,e){const i=t[0]+256*t[1]+65536*t[2]+16777216*e[0]+4294967296*e[1]+1099511627776*e[2];let n=X.get(i);if(n)return n;const s=new Float32Array(9),r=s.subarray(0,3),a=s.subarray(3,6);RGBToHSL(t,a);const o=s.subarray(6,9);RGBToHSL(e,o);const l=o[2]<.5,h=l?12:4.5;a[2]=l?Math.sqrt(a[2]):1-Math.sqrt(1-a[2]);if(contrastRatio(a,o,r)i;){const i=a[2]=(t+e)/2;l===contrastRatio(a,o,r){e.delete()},{signal:e._signal});this.#l.append(i)}get#y(){const t=document.createElement("div");t.className="divider";return t}async addAltText(t){const e=await t.render();this.#b(e);this.#l.append(e,this.#y);this.#h=t}addComment(t,e=null){if(this.#c)return;const i=t.renderForToolbar();if(!i)return;this.#b(i);const n=this.#d=this.#y;if(e){this.#l.insertBefore(i,e);this.#l.insertBefore(n,e)}else this.#l.append(i,n);this.#c=t;t.toolbar=this}addColorPicker(t){if(this.#a)return;this.#a=t;const e=t.renderButton();this.#b(e);this.#l.append(e,this.#y)}async addEditSignatureButton(t){const e=this.#u=await t.renderEditButton(this.#o);this.#b(e);this.#l.append(e,this.#y)}removeButton(t){if("comment"===t){this.#c?.removeToolbarCommentButton();this.#c=null;this.#d?.remove();this.#d=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)}}async addButtonBefore(t,e,i){if(!e&&"comment"===t)return;const n=this.#l.querySelector(i);n&&"comment"===t&&this.addComment(e,n)}updateEditSignatureButton(t){this.#u&&(this.#u.title=t)}remove(){this.#r.remove();this.#a?.destroy();this.#a=null}}class FloatingToolbar{#l=null;#r=null;#v;constructor(t){this.#v=t}#w(){const t=this.#r=document.createElement("div");t.className="editToolbar";t.setAttribute("role","toolbar");t.dir=this.#v.direction;const e=this.#v._signal;e instanceof AbortSignal&&!e.aborted&&t.addEventListener("contextmenu",noContextMenu,{signal:e});const i=this.#l=document.createElement("div");i.className="buttons";t.append(i);this.#v.hasCommentManager()&&this.#A("commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{this.#v.commentSelection("floating_button")});this.#A("highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{this.#v.highlightSelection("floating_button")});return t}#x(t,e){let i=0,n=0;for(const s of t){const t=s.y+s.height;if(ti){n=r;i=t}else e?r>n&&(n=r):r=1}static clearPointerType(){CurrentPointers.#T=null}static clearPointerIds(){CurrentPointers.#C=NaN;CurrentPointers.#E=null}static clearTimeStamp(){CurrentPointers.#S=NaN}}class IdManager{#_=0;get id(){return`${m}${this.#_++}`}}class ImageManager{#k=getUuid();#_=0;#D=null;static get _isSVGFittingCanvas(){const t=`data:image/svg+xml;charset=UTF-8,`,e=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=t;return shadow(this,"_isSVGFittingCanvas",i.decode().then(()=>{e.drawImage(i,0,0,1,1,0,0,1,3);return 0===new Uint32Array(e.getImageData(0,0,1,1).data.buffer)[0]}))}async#P(t,e){this.#D||=new Map;let i=this.#D.get(t);if(null===i)return null;if(i?.bitmap){i.refCounter+=1;return i}try{i||={bitmap:null,id:`image_${this.#k}_${this.#_++}`,refCounter:0,isSvg:!1};let t;if("string"==typeof e){i.url=e;t=await fetchData(e,"blob")}else e instanceof File?t=i.file=e:e instanceof Blob&&(t=e);if("image/svg+xml"===t.type){const e=ImageManager._isSVGFittingCanvas,n=new FileReader,s=new Image,r=new Promise((t,r)=>{s.onload=()=>{i.bitmap=s;i.isSvg=!0;t()};n.onload=async()=>{const t=i.svgUrl=n.result;s.src=await e?`${t}#svgView(preserveAspectRatio(none))`:t};s.onerror=n.onerror=r});n.readAsDataURL(t);await r}else i.bitmap=await createImageBitmap(t);i.refCounter=1}catch(t){warn(t);i=null}this.#D.set(t,i);i&&this.#D.set(i.id,i);return i}async getFromFile(t){const{lastModified:e,name:i,size:n,type:s}=t;return this.#P(`${e}_${i}_${n}_${s}`,t)}async getFromUrl(t){return this.#P(t,t)}async getFromBlob(t,e){const i=await e;return this.#P(t,i)}async getFromId(t){this.#D||=new Map;const e=this.#D.get(t);if(!e)return null;if(e.bitmap){e.refCounter+=1;return e}if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:t}=e;delete e.blobPromise;return this.getFromBlob(e.id,t)}return this.getFromUrl(e.url)}getFromCanvas(t,e){this.#D||=new Map;let i=this.#D.get(t);if(i?.bitmap){i.refCounter+=1;return i}const n=new OffscreenCanvas(e.width,e.height);n.getContext("2d").drawImage(e,0,0);i={bitmap:n.transferToImageBitmap(),id:`image_${this.#k}_${this.#_++}`,refCounter:1,isSvg:!1};this.#D.set(t,i);this.#D.set(i.id,i);return i}getSvgUrl(t){const e=this.#D.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#D||=new Map;const e=this.#D.get(t);if(!e)return;e.refCounter-=1;if(0!==e.refCounter)return;const{bitmap:i}=e;if(!e.url&&!e.file){const t=new OffscreenCanvas(i.width,i.height);t.getContext("bitmaprenderer").transferFromImageBitmap(i);e.blobPromise=t.convertToBlob()}i.close?.();e.bitmap=null}isValidId(t){return t.startsWith(`image_${this.#k}_`)}}class CommandManager{#M=[];#I=!1;#F;#O=-1;constructor(t=128){this.#F=t}add({cmd:t,undo:e,post:i,mustExec:n,type:s=NaN,overwriteIfSameType:r=!1,keepUndo:a=!1}){n&&t();if(this.#I)return;const o={cmd:t,undo:e,post:i,type:s};if(-1===this.#O){this.#M.length>0&&(this.#M.length=0);this.#O=0;this.#M.push(o);return}if(r&&this.#M[this.#O].type===s){a&&(o.undo=this.#M[this.#O].undo);this.#M[this.#O]=o;return}const l=this.#O+1;if(l===this.#F)this.#M.splice(0,1);else{this.#O=l;l=0;e--)if(this.#M[e].type!==t){this.#M.splice(e+1,this.#O-e);this.#O=e;return}this.#M.length=0;this.#O=-1}}destroy(){this.#M=null}}class KeyboardManager{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;const{isMac:e}=FeatureTest.platform;for(const[i,n,s={}]of t){const t=i.some(t=>t.startsWith("mac+"));for(const r of i){let i=r;if(t){const t=r.startsWith("mac+");if(e!==t)continue;t&&(i=r.slice(4))}const[a,o]=KeyboardManager.#B(i);null!==a&&this.callbacks.getOrInsertComputed(a,makeArr).push({callback:n,options:s,modifiers:o})}}}static#B(t){let e=null,i=0;for(let n of t.split("+")){n=n.trim();if(!n)continue;const s=n.toUpperCase(),r=KeyboardManager[s];if(r)i|=r;else{if(null!==e){warn(`KeyboardManager: multiple keys in shortcut "${t}"`);break}e="SPACE"===s?" ":n}}null===e&&warn(`KeyboardManager: no key found in shortcut "${t}"`);return[e,i]}static#R(t){const e=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(t);return e?e[1]?.toLowerCase()??e[2]:null}exec(t,e){let i=this.callbacks.get(e.key);if(!i){if(/^[a-z]$/i.test(e.key))return;const t=KeyboardManager.#R(e.code);if(null===t||t===e.key)return;i=this.callbacks.get(t);if(!i)return}const n=(e.altKey?KeyboardManager.ALT:0)|(e.ctrlKey?KeyboardManager.CTRL:0)|(e.metaKey?KeyboardManager.META:0)|(e.shiftKey?KeyboardManager.SHIFT:0),s=i.find(t=>t.modifiers===n);if(!s)return;const{callback:r,options:{bubbles:a=!1,args:o=[],checker:l=null}}=s;if(!l||l(t,e)){r.bind(t,...o,e)();a||stopEvent(e)}}}class ColorManager{static _colorsMapping=new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]);get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);!function getColorValues(t){const e=document.createElement("span");e.style.visibility="hidden";e.style.colorScheme="only light";document.body.append(e);for(const i of t.keys()){e.style.color=i;const n=window.getComputedStyle(e).color;t.set(i,getRGB(n))}e.remove()}(t);return shadow(this,"_colors",t)}convert(t){const e=getRGB(t);if(!window.matchMedia("(forced-colors: active)").matches)return e;for(const[t,i]of this._colors)if(i.every((t,i)=>t===e[i]))return ColorManager._colorsMapping.get(t);return e}getHexCode(t){const e=this._colors.get(t);return e?Util.makeHexColor(...e):t}}class AnnotationEditorUIManager{#L=new AbortController;#N=null;#U=null;#H=new Map;#G=new Map;#z=null;#W=null;#V=null;#$=null;#j=null;#X=new CommandManager;#K=null;#Y=null;#q=null;#Q=0;#J=new Set;#Z=null;#tt=null;#et=new Set;_editorUndoBar=null;#it=!1;#nt=!1;#st=!1;#rt=null;#at=null;#ot=null;#lt=null;#ht=!1;#ct=null;#dt=new IdManager;#ut=!1;#pt=!1;#gt=!1;#mt=null;#ft=null;#bt=null;#yt=null;#vt=null;#wt=f.NONE;#At=new Set;#xt=null;#Ct=null;#Et=null;#St=null;#Tt=null;#_t={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#kt=[0,0];#Dt=null;#Pt=null;#Mt=null;#It=null;#Ft=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=AnnotationEditorUIManager.prototype,arrowChecker=t=>t.#Pt.contains(document.activeElement)&&"BUTTON"!==document.activeElement.tagName&&t.hasSomethingToControl(),textInputChecker=(t,{target:e})=>{if(e instanceof HTMLInputElement){const{type:t}=e;return"text"!==t&&"number"!==t}return!0},e=this.TRANSLATE_SMALL,i=this.TRANSLATE_BIG;return shadow(this,"_keyboardManager",new KeyboardManager([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:textInputChecker}],[["ctrl+z","mac+meta+z"],t.undo,{checker:textInputChecker}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:textInputChecker}],[["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:textInputChecker}],[["Enter"],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&t.#Pt.contains(e)&&!t.isEnterHandled}],[["Space"],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&t.#Pt.contains(document.activeElement)}],[["Escape"],t.unselectAll],[["ArrowLeft"],t.translateSelectedEditors,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:arrowChecker}],[["ArrowRight"],t.translateSelectedEditors,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:arrowChecker}],[["ArrowUp"],t.translateSelectedEditors,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:arrowChecker}],[["ArrowDown"],t.translateSelectedEditors,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:arrowChecker}]]))}constructor(t,e,i,n,s,r,a,o,l,h,c,d,u,p,g,m){const f=this._signal=this.#L.signal;this.#Pt=t;this.#Mt=e;this.#It=i;this.#V=n;this.#K=s;this.#Ct=r;this.#Tt=o;this._eventBus=a;const b={signal:f,...K};a.on("editingaction",this.onEditingAction.bind(this),b);a.on("pagechanging",this.onPageChanging.bind(this),b);a.on("scalechanging",this.onScaleChanging.bind(this),b);a.on("rotationchanging",this.onRotationChanging.bind(this),b);a.on("setpreference",this.onSetPreference.bind(this),b);a.on("switchannotationeditorparams",t=>this.updateParams(t.type,t.value),b);window.addEventListener("pointerdown",()=>{this.#pt=!0},{capture:!0,signal:f});window.addEventListener("pointerup",()=>{this.#pt=!1},{capture:!0,signal:f});window.addEventListener("beforeunload",this.endCurrentEditing.bind(this),{capture:!0,signal:f});this.#Ot();this.#Bt();this.#Rt();this.#$=o.annotationStorage;this.#rt=o.filterFactory;this.#Et=l;this.#lt=h||null;this.#it=c;this.#nt=d;this.#st=u;this.#vt=p||null;this.viewParameters={realScale:PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0};this.isShiftKeyDown=!1;this._editorUndoBar=g||null;this._supportsPinchToZoom=!1!==m;s?.setSidebarUiManager(this)}destroy(){this.#Ft?.resolve();this.#Ft=null;this.#L?.abort();this.#L=null;this._signal=null;for(const t of this.#G.values())t.destroy();this.#G.clear();this.#H.clear();this.#et.clear();this.#yt?.clear();this.#N=null;this.#At.clear();this.#X.destroy();this.#V?.destroy();this.#K?.destroy();this.#Ct?.destroy();this.#ct?.hide();this.#ct=null;this.#bt?.destroy();this.#bt=null;this.#U=null;if(this.#at){clearTimeout(this.#at);this.#at=null}if(this.#Dt){clearTimeout(this.#Dt);this.#Dt=null}this._editorUndoBar?.destroy();this.#Tt=null}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return this.#vt}get useNewAltTextFlow(){return this.#nt}get useNewAltTextWhenAddingImage(){return this.#st}get hcmFilter(){return shadow(this,"hcmFilter",this.#Et?this.#rt.addHCMFilter(this.#Et.foreground,this.#Et.background):"none")}get direction(){return shadow(this,"direction",getComputedStyle(this.#Pt).direction)}get _highlightColors(){return shadow(this,"_highlightColors",this.#lt?new Map(this.#lt.split(",").map(t=>{(t=t.split("=").map(t=>t.trim()))[1]=t[1].toUpperCase();return t})):null)}get highlightColors(){const{_highlightColors:t}=this;if(!t)return shadow(this,"highlightColors",null);const e=new Map,i=!!this.#Et;for(const[n,s]of t){const t=n.endsWith("_HCM");i&&t?e.set(n.replace("_HCM",""),s):i||t||e.set(n,s)}return shadow(this,"highlightColors",e)}get highlightColorNames(){return shadow(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){if(t){this.unselectAll();this.disableUserSelect(!0)}else this.disableUserSelect(!1);this.#q=t}setMainHighlightColorPicker(t){this.#bt=t}editAltText(t,e=!1){this.#V?.editAltText(this,t,e)}hasCommentManager(){return!!this.#K}editComment(t,e,i,n){this.#K?.showDialog(this,t,e,i,n)}selectComment(t,e){const i=this.#G.get(t),n=i?.getEditorByUID(e);n?.toggleComment(!0,!0)}updateComment(t){this.#K?.updateComment(t.getData())}updatePopupColor(t){this.#K?.updatePopupColor(t)}removeComment(t){this.#K?.removeComments([t.uid])}deleteComment(t,e){const undo=()=>{t.comment=e};this.addCommands({cmd:()=>{this._editorUndoBar?.show(undo,"comment");this.toggleComment(null);t.comment=null},undo,mustExec:!0})}toggleComment(t,e,i=void 0){this.#K?.toggleCommentPopup(t,e,i)}makeCommentColor(t,e){return t&&this.#K?.makeCommentColor(t,e)||null}getCommentDialogElement(){return this.#K?.dialogElement||null}async waitForEditorsRendered(t){if(this.#G.has(t-1))return;const{resolve:e,promise:i}=Promise.withResolvers(),onEditorsRendered=i=>{if(i.pageNumber===t){this._eventBus.off("editorsrendered",onEditorsRendered);e()}};this._eventBus.on("editorsrendered",onEditorsRendered,K);await i}getSignature(t){this.#Ct?.getSignature({uiManager:this,editor:t})}get signatureManager(){return this.#Ct}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal,...K});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}){if("enableNewAltTextWhenAddingImage"===t)this.#st=e}onPageChanging({pageNumber:t}){this.#Q=t-1}deletePage(t){for(const e of this.getEditors(t))e.remove();this.#G.delete(t);this.#Q===t&&(this.#Q=0)}focusMainContainer(){this.#Pt.focus()}findParent(t,e){for(const i of this.#G.values()){const{x:n,y:s,width:r,height:a}=i.div.getBoundingClientRect();if(t>=n&&t<=n+r&&e>=s&&e<=s+a)return i}return null}disableUserSelect(t=!1){this.#Mt.classList.toggle("noUserSelect",t)}addShouldRescale(t){this.#et.add(t)}removeShouldRescale(t){this.#et.delete(t)}onScaleChanging({scale:t}){this.commitOrRemove();this.viewParameters.realScale=t*PixelsPerInch.PDF_TO_CSS_UNITS;for(const t of this.#et)t.onScaleChanging();this.#q?.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove();this.viewParameters.rotation=t}#Lt({anchorNode:t}){return t.nodeType===Node.TEXT_NODE?t.parentElement:t}#Nt(t){const{currentLayer:e}=this;if(e.hasTextLayer(t))return e;for(const e of this.#G.values())if(e.hasTextLayer(t))return e;return null}highlightSelection(t="",e=!1){const i=document.getSelection();if(!i||i.isCollapsed)return;const{anchorNode:n,anchorOffset:s,focusNode:r,focusOffset:a}=i,o=i.toString(),l=this.#Lt(i).closest(".textLayer"),h=this.getSelectionBoxes(l);if(!h)return;i.empty();const c=this.#Nt(l),d=this.#wt===f.NONE,callback=()=>{const i=c?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:h,anchorNode:n,anchorOffset:s,focusNode:r,focusOffset:a,text:o});d&&this.showAllEditors("highlight",!0,!0);e&&i?.editComment()};d?this.switchToMode(f.HIGHLIGHT,callback):callback()}commentSelection(t=""){this.highlightSelection(t,!0)}endCurrentEditing(){this.commitOrRemove();this.currentLayer?.endDrawingSession(!1)}#Ut(){const t=document.getSelection();if(!t||t.isCollapsed)return;const e=this.#Lt(t).closest(".textLayer"),i=this.getSelectionBoxes(e);if(i){this.#ct||=new FloatingToolbar(this);this.#ct.show(e,i,"ltr"===this.direction)}}getAndRemoveDataFromAnnotationStorage(t){if(!this.#$)return null;const e=`${m}${t}`,i=this.#$.getRawValue(e);i&&this.#$.remove(e);return i}addToAnnotationStorage(t){t.isEmpty()||!this.#$||this.#$.has(t.id)||this.#$.setValue(t.id,t)}a11yAlert(t,e=null){const i=this.#It;if(i){i.setAttribute("data-l10n-id",t);e?i.setAttribute("data-l10n-args",JSON.stringify(e)):i.removeAttribute("data-l10n-args")}}#Ht(){const t=document.getSelection();if(!t||t.isCollapsed){if(this.#xt){this.#ct?.hide();this.#xt=null;this.#Gt({hasSelectedText:!1})}return}const{anchorNode:e}=t;if(e===this.#xt)return;const i=this.#Lt(t).closest(".textLayer");if(i){this.#ct?.hide();this.#xt=e;this.#Gt({hasSelectedText:!0});if(this.#wt===f.HIGHLIGHT||this.#wt===f.NONE){this.#wt===f.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0);this.#ht=this.isShiftKeyDown;if(!this.isShiftKeyDown){const t=this.#wt===f.HIGHLIGHT?this.#Nt(i):null;t?.toggleDrawing();if(this.#pt){const e=new AbortController,i=this.combinedSignal(e),pointerup=i=>{if("pointerup"!==i.type||0===i.button){e.abort();t?.toggleDrawing(!0);"pointerup"===i.type&&this.#zt("main_toolbar")}};window.addEventListener("pointerup",pointerup,{signal:i});window.addEventListener("blur",pointerup,{signal:i})}else{t?.toggleDrawing(!0);this.#zt("main_toolbar")}}}}else if(this.#xt){this.#ct?.hide();this.#xt=null;this.#Gt({hasSelectedText:!1})}}#zt(t=""){this.#wt===f.HIGHLIGHT?this.highlightSelection(t):this.#it&&this.#Ut()}#Ot(){document.addEventListener("selectionchange",this.#Ht.bind(this),{signal:this._signal})}#Wt(){if(this.#ot)return;this.#ot=new AbortController;const t=this.combinedSignal(this.#ot);window.addEventListener("focus",this.focus.bind(this),{signal:t});window.addEventListener("blur",this.blur.bind(this),{signal:t})}#Vt(){this.#ot?.abort();this.#ot=null}blur(){this.isShiftKeyDown=!1;if(this.#ht){this.#ht=!1;this.#zt("main_toolbar")}if(!this.hasSelection)return;const{activeElement:t}=document;for(const e of this.#At)if(e.div.contains(t)){this.#ft=[e,t];e._focusEventsAllowed=!1;break}}focus(){if(!this.#ft)return;const[t,e]=this.#ft;this.#ft=null;e.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this._signal});e.focus()}#Rt(){if(this.#mt)return;this.#mt=new AbortController;const t=this.combinedSignal(this.#mt);window.addEventListener("keydown",this.keydown.bind(this),{signal:t});window.addEventListener("keyup",this.keyup.bind(this),{signal:t})}#$t(){this.#mt?.abort();this.#mt=null}#jt(){if(this.#Y)return;this.#Y=new AbortController;const t=this.combinedSignal(this.#Y);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})}#Xt(){this.#Y?.abort();this.#Y=null}#Bt(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t});document.addEventListener("drop",this.drop.bind(this),{signal:t})}addEditListeners(){this.#Rt();this.setEditingState(!0)}removeEditListeners(){this.#$t();this.setEditingState(!1)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const i of this.#tt)if(i.isHandlingMimeForPasting(e)){t.dataTransfer.dropEffect="copy";t.preventDefault();return}}drop(t){for(const e of t.dataTransfer.items)for(const i of this.#tt)if(i.isHandlingMimeForPasting(e.type)){i.paste(e,this.currentLayer);t.preventDefault();return}}copy(t){t.preventDefault();this.#N?.commitOrRemove();if(!this.hasSelection)return;const e=[];for(const t of this.#At){const i=t.serialize(!0);i&&e.push(i)}0!==e.length&&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 t of e.items)for(const e of this.#tt)if(e.isHandlingMimeForPasting(t.type)){e.paste(t,this.currentLayer);return}let i=e.getData("application/pdfjs");if(!i)return;try{i=JSON.parse(i)}catch(t){warn(`paste: "${t.message}".`);return}if(!Array.isArray(i))return;this.unselectAll();const n=this.currentLayer;try{const t=[];for(const e of i){const i=await n.deserialize(e);if(!i)return;t.push(i)}const cmd=()=>{for(const e of t)this.#Kt(e);this.#Yt(t)},undo=()=>{for(const e of t)e.remove()};this.addCommands({cmd,undo,mustExec:!0})}catch(t){warn(`paste: "${t.message}".`)}}keydown(t){this.isShiftKeyDown||"Shift"!==t.key||(this.isShiftKeyDown=!0);this.#wt===f.NONE||this.isEditorHandlingKeyboard||AnnotationEditorUIManager._keyboardManager.exec(this,t)}keyup(t){if(this.isShiftKeyDown&&"Shift"===t.key){this.isShiftKeyDown=!1;if(this.#ht){this.#ht=!1;this.#zt("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")}}updatePageIndex(t,e){for(const i of this.#W.get(t)||[])i.pageIndex=e;const i=this.#z.get(t);if(i){i.pageIndex=e;this.#G.set(e,i);this.#ut?i.enable():i.disable()}}startUpdatePages(){this.#z=new Map(this.#G);this.#G.clear();const t=this.#W=new Map,saveEditor=e=>{t.getOrInsertComputed(e.pageIndex,makeArr).push(e)};for(const t of this.#H.values())saveEditor(t);for(const[t,e]of this.#$)t.startsWith(m)&&!this.#H.has(t)&&Number.isInteger(e?.pageIndex)&&saveEditor(e)}endUpdatePages(){this.#z=null;this.#W=null}clonePage(t,e){for(const i of this.getEditors(t)){const t=i.serialize(i.mode!==f.HIGHLIGHT);if(t){t.pageIndex=e;t.id=this.getId();t.isClone=!0;delete t.popupRef;this.#$.setValue(t.id,t)}}}findClonesForPage(t){const e=[],{pageIndex:i}=t;for(const[n,s]of this.#$)if(s.pageIndex===i&&s.isClone){this.#$.remove(n);e.push(t.deserialize(s).then(e=>{if(e){e.isClone=!0;t.addOrRebuild(e)}}))}return Promise.all(e)}#Gt(t){if(Object.entries(t).some(([t,e])=>this.#_t[t]!==e)){this._eventBus.dispatch("editingstateschanged",{source:this,details:Object.assign(this.#_t,t)});this.#wt===f.HIGHLIGHT&&!1===t.hasSelectedEditor&&this.#qt([[b.HIGHLIGHT_FREE,!0]])}}#qt(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){if(t){this.#Wt();this.#jt();this.#Gt({isEditing:this.#wt!==f.NONE,isEmpty:this.#Qt(),hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:this.#X.hasSomethingToRedo(),hasSelectedEditor:!1})}else{this.#Vt();this.#Xt();this.#Gt({isEditing:!1});this.disableUserSelect(!1)}}registerEditorTypes(t){if(!this.#tt){this.#tt=t;for(const t of this.#tt)this.#qt(t.defaultPropertiesToUpdate)}}getId(){return this.#dt.id}get currentLayer(){return this.#G.get(this.#Q)}getLayer(t){return this.#G.get(t)}get currentPageIndex(){return this.#Q}addLayer(t){this.#G.set(t.pageIndex,t);this.#ut?t.enable():t.disable()}removeLayer(t){this.#G.delete(t.pageIndex)}async updateMode(t,e=null,i=!1,n=!1,s=!1,r=!1){if(this.#wt!==t){if(this.#Ft){await this.#Ft.promise;if(!this.#Ft)return}this.#Ft=Promise.withResolvers();this.#q?.commitOrRemove();this.#wt===f.POPUP&&this.#K?.hideSidebar();this.#K?.destroyPopup();this.#wt=t;if(t!==f.NONE){for(const t of this.#H.values())t.addStandaloneCommentButton();t===f.SIGNATURE&&await(this.#Ct?.loadSignatures());i&&CurrentPointers.clearPointerType();this.setEditingState(!0);await this.#Jt();this.unselectAll();for(const e of this.#G.values())e.updateMode(t);if(t===f.POPUP){this.#U||=await this.#Tt.getAnnotationsByType(new Set(this.#tt.map(t=>t._editorType)));const t=new Set,e=[];for(const i of this.#H.values()){const{annotationElementId:n,hasComment:s,deleted:r}=i;n&&t.add(n);s&&!r&&e.push(i.getData())}for(const i of this.#U){const{id:n,popupRef:s,contentsObj:r}=i;s&&r?.str&&!t.has(n)&&!this.#J.has(n)&&e.push(i)}this.#K?.showSidebar(e)}if(e){for(const t of this.#H.values())if(t.uid===e){this.setSelected(t);r?t.editComment():s?t.enterInEditMode():t.focus()}else t.unselect();this.#Ft.resolve()}else{n&&this.addNewEditorFromKeyboard();this.#Ft.resolve()}}else{this.setEditingState(!1);this.#Zt();for(const t of this.#H.values())t.hideStandaloneCommentButton();this._editorUndoBar?.hide();this.toggleComment(null);this.#Ft.resolve()}}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t.mode!==this.#wt&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...t})}updateParams(t,e){if(this.#tt){switch(t){case b.CREATE:this.currentLayer.addNewEditor(e);return;case b.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}});(this.#St||=new Map).set(t,e);this.showAllEditors("highlight",e)}if(this.hasSelection)for(const i of this.#At)i.updateParams(t,e);else for(const i of this.#tt)i.updateDefaultParams(t,e)}}showAllEditors(t,e,i=!1){for(const i of this.#H.values())i.editorType===t&&i.show(e);(this.#St?.get(b.HIGHLIGHT_SHOW_ALL)??!0)!==e&&this.#qt([[b.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if(this.#gt!==t){this.#gt=t;for(const e of this.#G.values()){t?e.disableClick():e.enableClick();e.div.classList.toggle("waiting",t)}}}async#Jt(){if(!this.#ut){this.#ut=!0;const t=[];for(const e of this.#G.values())t.push(e.enable());await Promise.all(t);for(const t of this.#H.values())t.enable()}}#Zt(){this.unselectAll();if(this.#ut){this.#ut=!1;for(const t of this.#G.values())t.disable();for(const t of this.#H.values())t.disable()}}*getEditors(t){for(const e of this.#H.values())e.pageIndex===t&&(yield e)}getEditor(t){return this.#H.get(t)}addEditor(t){this.#H.set(t.id,t)}removeEditor(t){if(t.div.contains(document.activeElement)){this.#at&&clearTimeout(this.#at);this.#at=setTimeout(()=>{this.focusMainContainer();this.#at=null},0)}this.#H.delete(t.id);t.annotationElementId&&this.#yt?.delete(t.annotationElementId);this.unselect(t);t.annotationElementId&&this.#J.has(t.annotationElementId)||this.#$?.remove(t.id)}addDeletedAnnotationElement(t){this.#J.add(t.annotationElementId);this.addChangedExistingAnnotation(t);t.deleted=!0}isDeletedAnnotationElement(t){return this.#J.has(t)}removeDeletedAnnotationElement(t){this.#J.delete(t.annotationElementId);this.removeChangedExistingAnnotation(t);t.deleted=!1}#Kt(t){const e=this.#G.get(t.pageIndex);if(e)e.addOrRebuild(t);else{this.addEditor(t);this.addToAnnotationStorage(t)}}setActiveEditor(t){if(this.#N!==t){this.#N=t;t&&this.#qt(t.propertiesToUpdate)}}get#te(){let t=null;for(t of this.#At);return t}updateUI(t){this.#te===t&&this.#qt(t.propertiesToUpdate)}updateUIForDefaultProperties(t){this.#qt(t.defaultPropertiesToUpdate)}toggleSelected(t){if(this.#At.has(t)){this.#At.delete(t);t.unselect();this.#Gt({hasSelectedEditor:this.hasSelection})}else{this.#At.add(t);t.select();this.#qt(t.propertiesToUpdate);this.#Gt({hasSelectedEditor:!0})}}setSelected(t){this.updateToolbar({mode:t.mode,editId:t.uid});this.#q?.commitOrRemove();for(const e of this.#At)e!==t&&e.unselect();this.#K?.destroyPopup();this.#At.clear();this.#At.add(t);t.select();this.#qt(t.propertiesToUpdate);this.#Gt({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#At.values().next().value}unselect(t){t.unselect();this.#At.delete(t);this.#Gt({hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==this.#At.size}get isEnterHandled(){return 1===this.#At.size&&this.firstSelectedEditor.isEnterHandled}undo(){this.#X.undo();this.#Gt({hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#Qt()});this._editorUndoBar?.hide()}redo(){this.#X.redo();this.#Gt({hasSomethingToUndo:!0,hasSomethingToRedo:this.#X.hasSomethingToRedo(),isEmpty:this.#Qt()})}addCommands(t){this.#X.add(t);this.#Gt({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#Qt()})}cleanUndoStack(t){this.#X.cleanType(t)}#Qt(){if(0===this.#H.size)return!0;if(1===this.#H.size)for(const t of this.#H.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.#At],undo=()=>{for(const t of e)this.#Kt(t)};this.addCommands({cmd:()=>{this._editorUndoBar?.show(undo,1===e.length?e[0].editorType:e.length);for(const t of e)t.remove()},undo,mustExec:!0})}commitOrRemove(){this.#N?.commitOrRemove()}hasSomethingToControl(){return this.#N||this.hasSelection}#Yt(t){for(const t of this.#At)t.unselect();this.#At.clear();for(const e of t)if(!e.isEmpty()){this.#At.add(e);e.select()}this.#Gt({hasSelectedEditor:this.hasSelection})}selectAll(){for(const t of this.#At)t.commit();this.#Yt(this.#H.values())}unselectAll(){if(this.#N){this.#N.commitOrRemove();if(this.#wt!==f.NONE)return}if(!this.#q?.commitOrRemove()){this.#K?.destroyPopup();if(this.hasSelection){for(const t of this.#At)t.unselect();this.#At.clear();this.#Gt({hasSelectedEditor:!1})}}}translateSelectedEditors(t,e,i=!1){i||this.commitOrRemove();if(!this.hasSelection)return;this.#kt[0]+=t;this.#kt[1]+=e;const[n,s]=this.#kt,r=[...this.#At];this.#Dt&&clearTimeout(this.#Dt);this.#Dt=setTimeout(()=>{this.#Dt=null;this.#kt[0]=this.#kt[1]=0;this.addCommands({cmd:()=>{for(const t of r)if(this.#H.has(t.id)){t.translateInPage(n,s);t.translationDone()}},undo:()=>{for(const t of r)if(this.#H.has(t.id)){t.translateInPage(-n,-s);t.translationDone()}},mustExec:!1})},1e3);for(const i of r){i.translateInPage(t,e);i.translationDone()}}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0);this.#Z=new Map;for(const t of this.#At)this.#Z.set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#Z)return!1;this.disableUserSelect(!1);const t=this.#Z;this.#Z=null;let e=!1;for(const[{x:i,y:n,pageIndex:s},r]of t){r.newX=i;r.newY=n;r.newPageIndex=s;e||=i!==r.savedX||n!==r.savedY||s!==r.savedPageIndex}if(!e)return!1;const move=(t,e,i,n)=>{if(this.#H.has(t.id)){const s=this.#G.get(n);if(s)t._setParentAndPosition(s,e,i);else{t.pageIndex=n;t.x=e;t.y=i}}};this.addCommands({cmd:()=>{for(const[e,{newX:i,newY:n,newPageIndex:s}]of t)move(e,i,n,s)},undo:()=>{for(const[e,{savedX:i,savedY:n,savedPageIndex:s}]of t)move(e,i,n,s)},mustExec:!0});return!0}dragSelectedEditors(t,e){if(this.#Z)for(const i of this.#Z.keys())i.drag(t,e)}rebuild(t){if(null===t.parent){const e=this.getLayer(t.pageIndex);if(e){e.changeParent(t);e.addOrRebuild(t)}else{this.addEditor(t);this.addToAnnotationStorage(t);t.rebuild()}}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||1===this.#At.size&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return this.#N===t}getActive(){return this.#N}getMode(){return this.#wt}isEditingMode(){return this.#wt!==f.NONE}get imageManager(){return shadow(this,"imageManager",new ImageManager)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let i=0,n=e.rangeCount;i({x:(e-n)/r,y:1-(t+a-i)/s,width:o/r,height:a/s});break;case"180":a=(t,e,a,o)=>({x:1-(t+a-i)/s,y:1-(e+o-n)/r,width:a/s,height:o/r});break;case"270":a=(t,e,a,o)=>({x:1-(e+o-n)/r,y:(t-i)/s,width:o/r,height:a/s});break;default:a=(t,e,a,o)=>({x:(t-i)/s,y:(e-n)/r,width:a/s,height:o/r})}const o=[];for(let t=0,i=e.rangeCount;tt.stopPropagation(),{signal:i});const onClick=t=>{t.preventDefault();this.#o._uiManager.editAltText(this.#o);this.#ce&&this.#o._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:this.#ue}})};t.addEventListener("click",onClick,{capture:!0,signal:i});t.addEventListener("keydown",e=>{if(e.target===t&&"Enter"===e.key){this.#ae=!0;onClick(e)}},{signal:i});await this.#pe();return t}get#ue(){return(this.#h?"added":null===this.#h&&this.guessedText&&"review")||"missing"}finish(){if(this.#ie){this.#ie.focus({focusVisible:this.#ae});this.#ae=!1}}isEmpty(){return this.#ce?null===this.#h:!this.#h&&!this.#ee}hasData(){return this.#ce?null!==this.#h||!!this.#le:this.isEmpty()}get guessedText(){return this.#le}async setGuessedText(t){if(null===this.#h){this.#le=t;this.#he=await AltText._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:t});this.#pe()}}toggleAltTextBadge(t=!1){if(this.#ce&&!this.#h){if(!this.#oe){const t=this.#oe=document.createElement("div");t.className="noAltTextBadge";this.#o.div.append(t)}this.#oe.classList.toggle("hidden",!t)}else{this.#oe?.remove();this.#oe=null}}serialize(t){let e=this.#h;t||this.#le!==e||(e=this.#he);return{altText:e,decorative:this.#ee,guessedText:this.#le,textWithDisclaimer:this.#he}}get data(){return{altText:this.#h,decorative:this.#ee}}set data({altText:t,decorative:e,guessedText:i,textWithDisclaimer:n,cancel:s=!1}){if(i){this.#le=i;this.#he=n}if(this.#h!==t||this.#ee!==e){if(!s){this.#h=t;this.#ee=e}this.#pe()}}toggle(t=!1){if(this.#ie){if(!t&&this.#re){clearTimeout(this.#re);this.#re=null}this.#ie.disabled=!t}}shown(){this.#o._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:this.#ue}})}destroy(){this.#ie?.remove();this.#ie=null;this.#ne=null;this.#se=null;this.#oe?.remove();this.#oe=null}async#pe(){const t=this.#ie;if(!t)return;if(this.#ce){t.classList.toggle("done",!!this.#h);t.setAttribute("data-l10n-id",AltText.#de[this.#ue]);this.#ne?.setAttribute("data-l10n-id",AltText.#de[`${this.#ue}-label`]);if(!this.#h){this.#se?.remove();return}}else{if(!this.#h&&!this.#ee){t.classList.remove("done");this.#se?.remove();return}t.classList.add("done");t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let e=this.#se;if(!e){this.#se=e=document.createElement("span");e.className="tooltip";e.setAttribute("role","tooltip");e.id=`alt-text-tooltip-${this.#o.id}`;const i=100,n=this.#o._uiManager._signal;n.addEventListener("abort",()=>{clearTimeout(this.#re);this.#re=null},{once:!0});t.addEventListener("mouseenter",()=>{this.#re=setTimeout(()=>{this.#re=null;this.#se.classList.add("show");this.#o._reportTelemetry({action:"alt_text_tooltip"})},i)},{signal:n});t.addEventListener("mouseleave",()=>{if(this.#re){clearTimeout(this.#re);this.#re=null}this.#se?.classList.remove("show")},{signal:n})}if(this.#ee)e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip");else{e.removeAttribute("data-l10n-id");e.textContent=this.#h}e.parentNode||t.append(e);const i=this.#o.getElementForAltText();i?.setAttribute("aria-describedby",e.id)}}class Comment{#ge=null;#me=null;#fe=!1;#o=null;#be=null;#ye=null;#ve=null;#we=null;#Ae=!1;#xe=null;constructor(t){this.#o=t}renderForToolbar(){const t=this.#me=document.createElement("button");t.className="comment";return this.#w(t,!1)}renderForStandalone(){const t=this.#ge=document.createElement("button");t.className="annotationCommentButton";const e=this.#o.commentButtonPosition;if(e){const{style:i}=t;i.insetInlineEnd=`calc(${100*("ltr"===this.#o._uiManager.direction?1-e[0]:e[0])}% - var(--comment-button-dim))`;i.top=`calc(${100*e[1]}% - var(--comment-button-dim))`;const n=this.#o.commentButtonColor;n&&(i.backgroundColor=n)}return this.#w(t,!0)}focusButton(){setTimeout(()=>{(this.#ge??this.#me)?.focus()},0)}onUpdatedColor(){if(!this.#ge)return;const t=this.#o.commentButtonColor;t&&(this.#ge.style.backgroundColor=t);this.#o._uiManager.updatePopupColor(this.#o)}get commentButtonWidth(){return(this.#ge?.getBoundingClientRect().width??0)/this.#o.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#xe)return this.#xe;if(!this.#ge)return null;const{x:t,y:e,height:i}=this.#ge.getBoundingClientRect(),{x:n,y:s,width:r,height:a}=this.#o.parent.boundingClientRect;return[(t-n)/r,(e+i-s)/a]}set commentPopupPositionInLayer(t){this.#xe=t}hasDefaultPopupPosition(){return null===this.#xe}removeStandaloneCommentButton(){this.#ge?.remove();this.#ge=null}removeToolbarCommentButton(){this.#me?.remove();this.#me=null}setCommentButtonStates({selected:t,hasPopup:e}){if(this.#ge){this.#ge.classList.toggle("selected",t);this.#ge.ariaExpanded=e}}#w(t,e){if(!this.#o._uiManager.hasCommentManager())return null;t.tabIndex="0";t.ariaHasPopup="dialog";if(e){t.ariaControls="commentPopup";t.setAttribute("data-l10n-id","pdfjs-show-comment-button")}else{t.ariaControlsElements=[this.#o._uiManager.getCommentDialogElement()];t.setAttribute("data-l10n-id","pdfjs-editor-add-comment-button")}const i=this.#o._uiManager._signal;if(!(i instanceof AbortSignal)||i.aborted)return t;t.addEventListener("contextmenu",noContextMenu,{signal:i});if(e){t.addEventListener("focusin",t=>{this.#o._focusEventsAllowed=!1;stopEvent(t)},{capture:!0,signal:i});t.addEventListener("focusout",t=>{this.#o._focusEventsAllowed=!0;stopEvent(t)},{capture:!0,signal:i})}t.addEventListener("pointerdown",t=>t.stopPropagation(),{signal:i});const onClick=e=>{e.preventDefault();t===this.#me?this.edit():this.#o.toggleComment(!0)};t.addEventListener("click",onClick,{capture:!0,signal:i});t.addEventListener("keydown",e=>{if(e.target===t&&"Enter"===e.key){this.#fe=!0;onClick(e)}},{signal:i});t.addEventListener("pointerenter",()=>{this.#o.toggleComment(!1,!0)},{signal:i});t.addEventListener("pointerleave",()=>{this.#o.toggleComment(!1,!1)},{signal:i});return t}edit(t){const e=this.commentPopupPositionInLayer;let i,n;if(e)[i,n]=e;else{[i,n]=this.#o.commentButtonPosition;const{width:t,height:e,x:s,y:r}=this.#o;i=s+i*t;n=r+n*e}const s=this.#o.parent.boundingClientRect,{x:r,y:a,width:o,height:l}=s;this.#o._uiManager.editComment(this.#o,r+i*o,a+n*l,{...t,parentDimensions:s})}finish(){if(this.#me){this.#me.focus({focusVisible:this.#fe});this.#fe=!1}}isDeleted(){return this.#Ae||""===this.#ve}isEmpty(){return null===this.#ve}hasBeenEdited(){return this.isDeleted()||this.#ve!==this.#be}serialize(){return this.data}get data(){return{text:this.#ve,richText:this.#ye,date:this.#we,deleted:this.isDeleted()}}set data(t){t!==this.#ve&&(this.#ye=null);if(null!==t){this.#ve=t;this.#we=new Date;this.#Ae=!1}else{this.#ve="";this.#Ae=!0}}restoreData({text:t,richText:e,date:i}){this.#ve=t;this.#ye=e;this.#we=i;this.#Ae=!1}setInitialText(t,e=null){this.#be=t;this.data=t;this.#we=null;this.#ye=e}shown(){}destroy(){this.#me?.remove();this.#me=null;this.#ge?.remove();this.#ge=null;this.#ve="";this.#ye=null;this.#we=null;this.#o=null;this.#fe=!1;this.#Ae=!1}}function preventDefault(t){t.preventDefault()}const Y=1e-4;function stopTouchEvent(t){if(t.cancelable){stopEvent(t);return!0}t.stopPropagation();return!1}class TouchManager{#Pt;#Ce=!1;#Ee=null;#Se;#Te;#_e;#ke;#De;#Pe=!1;#Me=null;#Ie;#Fe=new Set;#Oe=null;#Be;#Re=null;#Le=0;constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:i=null,onPinchStart:n=null,onPinching:s=null,onPinchEnd:r=null,onPanning:a=null,signal:o}){this.#Pt=t;this.#Ee=i;this.#Se=e;this.#Te=n;this.#_e=s;this.#ke=r;this.#De=a;this.#Be=new AbortController;this.#Ie=AbortSignal.any([o,this.#Be.signal]);t.addEventListener("touchstart",this.#Ne.bind(this),{passive:!1,signal:this.#Ie})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/OutputScale.pixelRatio}get MIN_TOUCH_DISTANCE_TO_SCALE(){return 4/OutputScale.pixelRatio}#Ne(t){if(this.#Se?.())return;this.#Ue(t);const e=this.#Fe;for(const{identifier:i}of t.changedTouches)e.add(i);if(1!==e.size){if(!this.#Re){this.#Re=new AbortController;const t=AbortSignal.any([this.#Ie,this.#Re.signal]),e=this.#Pt,i={signal:t,capture:!1,passive:!1};e.addEventListener("touchmove",this.#He.bind(this),i);const n=this.#Ge.bind(this);e.addEventListener("touchend",n,i);e.addEventListener("touchcancel",n,i);i.capture=!0;e.addEventListener("pointerdown",stopEvent,i);e.addEventListener("pointermove",stopEvent,i);e.addEventListener("pointercancel",preventDefault,i);e.addEventListener("pointerup",preventDefault,i);this.#Te?.()}this.#Pe=stopTouchEvent(t);this.#ze(t)}else this.#We()}#We(){if(this.#Me)return;const t=this.#Me=new AbortController,e=AbortSignal.any([this.#Ie,t.signal]),i=this.#Pt,n={capture:!0,signal:e,passive:!1},cancelPointerDown=t=>{if("touch"===t.pointerType){this.#Me?.abort();this.#Me=null}};i.addEventListener("pointerdown",t=>{if("touch"===t.pointerType){stopEvent(t);cancelPointerDown(t)}},n);i.addEventListener("pointerup",cancelPointerDown,n);i.addEventListener("pointercancel",cancelPointerDown,n)}#Ue(t){const e=this.#Fe;if(0===e.size)return;const i=this.#Fe=new Set;for(const{identifier:n}of t.touches)e.has(n)&&i.add(n)}#Ve(t){const e=this.#Fe,i=[];for(const n of t.touches)e.has(n.identifier)&&i.push(n);return i}#ze(t){const e=this.#Ve(t);if(2!==e.length||this.#Ee?.()){this.#Oe=null;return}const[i,n]=e;this.#Oe={touch0X:i.screenX,touch0Y:i.screenY,touch1X:n.screenX,touch1Y:n.screenY,panX:(i.clientX+n.clientX)/2,panY:(i.clientY+n.clientY)/2,screenPanX:(i.screenX+n.screenX)/2,screenPanY:(i.screenY+n.screenY)/2}}#He(t){if(!this.#Oe)return;const e=this.#Ve(t);if(2!==e.length)return;const i=this.#Pe;this.#Pe=stopTouchEvent(t);if(!this.#Pe)return;if(!i){this.#ze(t);return}const[n,s]=e,{screenX:r,screenY:a}=n,{screenX:o,screenY:l}=s,h=this.#Oe,{touch0X:c,touch0Y:d,touch1X:u,touch1Y:p,panX:g,panY:m}=h,f=u-c,b=p-d,y=o-r,v=l-a,w=(n.clientX+s.clientX)/2,A=(n.clientY+s.clientY)/2;h.panX=w;h.panY=A;const x=w-g,C=A-m,E=(r+o)/2,S=(a+l)/2,T=Math.hypot(E-h.screenPanX,S-h.screenPanY);h.screenPanX=E;h.screenPanY=S;const _=Math.hypot(y,v),k=Math.hypot(f,b),D=this.#Ce?this.MIN_TOUCH_DISTANCE_TO_SCALE:this.MIN_TOUCH_DISTANCE_TO_PINCH+2*T;if(_=2){this.#ze(t);return}const e=!!this.#Oe;this.#$e();1===this.#Fe.size&&this.#We();e&&stopTouchEvent(t)}#$e(){this.#Oe=null;this.#Ce=!1;this.#Le=0;this.#Pe=!1;if(this.#Re){this.#Re.abort();this.#Re=null;this.#ke?.()}}destroy(){this.#$e();this.#Fe.clear();this.#Be?.abort();this.#Be=null;this.#Me?.abort();this.#Me=null}}class AnnotationEditor{#je=null;#Xe=null;#h=null;#c=null;#ge=null;#Ke=!1;#Ye=null;#qe="";#Qe=null;#Je=null;#Ze=null;#ti=null;#ei=null;#ii="";#ni=!1;#si=null;#ri=!1;#ai=!1;#oi=!1;#li=null;#hi=0;#ci=0;#di=null;#ui=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;#pi=!1;#gi=AnnotationEditor._zIndex++;static _borderLineWidth=-1;static _colorManager=new ColorManager;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){const t=AnnotationEditor.prototype._resizeWithKeyboard,e=AnnotationEditorUIManager.TRANSLATE_SMALL,i=AnnotationEditorUIManager.TRANSLATE_BIG;return shadow(this,"_resizerKeyboardManager",new KeyboardManager([[["ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-i,0]}],[["ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[i,0]}],[["ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-i]}],[["ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,i]}],[["Escape"],AnnotationEditor.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:i,pageHeight:n,pageX:s,pageY:r}}=this.parent.viewport;this.rotation=e;this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360;this.pageDimensions=[i,n];this.pageTranslation=[s,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 shadow(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new FakeEditor({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){AnnotationEditor._l10n??=t;AnnotationEditor._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"});AnnotationEditor._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"});if(-1!==AnnotationEditor._borderLineWidth)return;const i=getComputedStyle(document.documentElement);AnnotationEditor._borderLineWidth=parseFloat(i.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){unreachable("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#pi}set _isDraggable(t){this.#pi=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/(2*t);this.y+=this.width*t/(2*e);break;case 180:this.x+=this.width/2;this.y+=this.height/2;break;case 270:this.x+=this.height*e/(2*t);this.y-=this.width*t/(2*e);break;default:this.x-=this.width/2;this.y-=this.height/2}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.#gi}setParent(t){if(null!==t){this.pageIndex=t.pageIndex;this.pageDimensions=t.pageDimensions}else{this.#mi();this.#ti?.remove();this.#ti=null}this.parent=t}focusin(t){this._focusEventsAllowed&&(this.#ni?this.#ni=!1:this.parent.setSelected(this))}focusout(t){if(!this._focusEventsAllowed)return;if(!this.isAttachedToDOM)return;const e=t.relatedTarget;if(!e?.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,i,n){const[s,r]=this.parentDimensions;[i,n]=this.screenToPageTranslation(i,n);this.x=(t+i)/s;this.y=(e+n)/r;this.fixAndSetPosition()}_moveAfterPaste(t,e){if(this.isClone){delete this.isClone;return}const[i,n]=this.parentDimensions;this.setAt(t*i,e*n,this.width*i,this.height*n);this._onTranslated()}#fi([t,e],i,n){[i,n]=this.screenToPageTranslation(i,n);this.x+=i/t;this.y+=n/e;this._onTranslating(this.x,this.y);this.fixAndSetPosition()}translate(t,e){this.#fi(this.parentDimensions,t,e)}translateInPage(t,e){this.#si||=[this.x,this.y,this.width,this.height];this.#fi(this.pageDimensions,t,e);this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(t,e){this.#si||=[this.x,this.y,this.width,this.height];const{div:i,parentDimensions:[n,s]}=this;this.x+=t/n;this.y+=e/s;if(this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:t,y:e}=this.div.getBoundingClientRect();if(this.parent.findNewParent(this,t,e)){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}=i;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.#si&&(this.#si[0]!==this.x||this.#si[1]!==this.y)}get _hasBeenResized(){return!!this.#si&&(this.#si[2]!==this.width||this.#si[3]!==this.height)}getBaseTranslation(){const[t,e]=this.parentDimensions,{_borderLineWidth:i}=AnnotationEditor,n=i/t,s=i/e;switch(this.rotation){case 90:return[-n,s];case 180:return[n,s];case 270:return[n,-s];default:return[-n,-s]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[i,n]}=this;let{x:s,y:r,width:a,height:o}=this;a*=i;o*=n;s*=i;r*=n;if(this._mustFixPosition)switch(t){case 0:s=MathClamp(s,0,i-a);r=MathClamp(r,0,n-o);break;case 90:s=MathClamp(s,0,i-o);r=MathClamp(r,a,n);break;case 180:s=MathClamp(s,a,i);r=MathClamp(r,o,n);break;case 270:s=MathClamp(s,o,i);r=MathClamp(r,0,n-a)}this.x=s/=i;this.y=r/=n;const[l,h]=this.getBaseTranslation();s+=l;r+=h;e.left=`${(100*s).toFixed(2)}%`;e.top=`${(100*r).toFixed(2)}%`;this.moveInDOM()}static#bi(t,e,i){switch(i){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}screenToPageTranslation(t,e){return AnnotationEditor.#bi(t,e,this.parentRotation)}pageTranslationToScreen(t,e){return AnnotationEditor.#bi(t,e,360-this.parentRotation)}#yi(t){switch(t){case 90:{const[t,e]=this.pageDimensions;return[0,-t/e,e/t,0]}case 180:return[-1,0,0,-1];case 270:{const[t,e]=this.pageDimensions;return[0,t/e,-e/t,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,i]}=this;return[e*t,i*t]}setDims(){const{div:{style:t},width:e,height:i}=this;t.width=`${(100*e).toFixed(2)}%`;t.height=`${(100*i).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#vi(){if(this.#Qe)return;this.#Qe=document.createElement("div");this.#Qe.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 i of t){const t=document.createElement("div");this.#Qe.append(t);t.classList.add("resizer",i);t.setAttribute("data-resizer-name",i);t.addEventListener("pointerdown",this.#wi.bind(this,i),{signal:e});t.addEventListener("contextmenu",noContextMenu,{signal:e});t.tabIndex=-1}this.div.prepend(this.#Qe)}#wi(t,e){e.preventDefault();const{isMac:i}=FeatureTest.platform;if(0!==e.button||e.ctrlKey&&i)return;this.#h?.toggle(!1);const n=this._isDraggable;this._isDraggable=!1;this.#Je=[e.screenX,e.screenY];const s=new AbortController,r=this._uiManager.combinedSignal(s);this.parent.togglePointerEvents(!1);window.addEventListener("pointermove",this.#Ai.bind(this,t),{passive:!0,capture:!0,signal:r});window.addEventListener("touchmove",stopEvent,{passive:!1,signal:r});window.addEventListener("contextmenu",noContextMenu,{signal:r});this.#Ze={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 pointerUpCallback=()=>{s.abort();this.parent.togglePointerEvents(!0);this.#h?.toggle(!0);this._isDraggable=n;this.parent.div.style.cursor=a;this.div.style.cursor=o;this.#xi()};window.addEventListener("pointerup",pointerUpCallback,{signal:r});window.addEventListener("blur",pointerUpCallback,{signal:r})}#Ci(t,e,i,n){this.width=i;this.height=n;this.x=t;this.y=e;this.setDims();this.fixAndSetPosition();this._onResized()}_onResized(){}#xi(){if(!this.#Ze)return;const{savedX:t,savedY:e,savedWidth:i,savedHeight:n}=this.#Ze;this.#Ze=null;const s=this.x,r=this.y,a=this.width,o=this.height;s===t&&r===e&&a===i&&o===n||this.addCommands({cmd:this.#Ci.bind(this,s,r,a,o),undo:this.#Ci.bind(this,t,e,i,n),mustExec:!0})}static _round(t){return Math.round(1e4*t)/1e4}#Ai(t,e){const[i,n]=this.parentDimensions,s=this.x,r=this.y,a=this.width,o=this.height,l=AnnotationEditor.MIN_SIZE/i,h=AnnotationEditor.MIN_SIZE/n,c=this.#yi(this.rotation),transf=(t,e)=>[c[0]*t+c[2]*e,c[1]*t+c[3]*e],d=this.#yi(360-this.rotation);let u,p,g=!1,m=!1;switch(t){case"topLeft":g=!0;u=(t,e)=>[0,0];p=(t,e)=>[t,e];break;case"topMiddle":u=(t,e)=>[t/2,0];p=(t,e)=>[t/2,e];break;case"topRight":g=!0;u=(t,e)=>[t,0];p=(t,e)=>[0,e];break;case"middleRight":m=!0;u=(t,e)=>[t,e/2];p=(t,e)=>[0,e/2];break;case"bottomRight":g=!0;u=(t,e)=>[t,e];p=(t,e)=>[0,0];break;case"bottomMiddle":u=(t,e)=>[t/2,e];p=(t,e)=>[t/2,0];break;case"bottomLeft":g=!0;u=(t,e)=>[0,e];p=(t,e)=>[t,0];break;case"middleLeft":m=!0;u=(t,e)=>[0,e/2];p=(t,e)=>[t,e/2]}const f=u(a,o),b=p(a,o);let y=transf(...b);const v=AnnotationEditor._round(s+y[0]),w=AnnotationEditor._round(r+y[1]);let A,x,C=1,E=1;if(e.fromKeyboard)({deltaX:A,deltaY:x}=e);else{const{screenX:t,screenY:i}=e,[n,s]=this.#Je;[A,x]=this.screenToPageTranslation(t-n,i-s);this.#Je[0]=t;this.#Je[1]=i}[A,x]=(S=A/i,T=x/n,[d[0]*S+d[2]*T,d[1]*S+d[3]*T]);var S,T;if(g){const t=Math.hypot(a,o);C=E=Math.max(Math.min(Math.hypot(b[0]-f[0]-A,b[1]-f[1]-x)/t,1/a,1/o),l/a,h/o)}else m?C=MathClamp(Math.abs(b[0]-f[0]-A),l,1)/a:E=MathClamp(Math.abs(b[1]-f[1]-x),h,1)/o;const _=AnnotationEditor._round(a*C),k=AnnotationEditor._round(o*E);y=transf(...p(_,k));const D=v-y[0],P=w-y[1];this.#si||=[this.x,this.y,this.width,this.height];this.width=_;this.height=k;this.x=D;this.y=P;this.setDims();this.fixAndSetPosition();this._onResizing()}_onResizing(){}altTextFinish(){this.#h?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#ai)return this._editToolbar;this._editToolbar=new EditorToolbar(this);this.div.append(this._editToolbar.render());const{toolbarButtons:t}=this;if(t)for(const[e,i]of t)await this._editToolbar.addButton(e,i);this.hasComment||this._editToolbar.addButton("comment",this.addCommentButton());this._editToolbar.addButton("delete");return this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore("comment",this.addCommentButton(),".deleteButton")}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton("comment")}removeEditToolbar(){this._editToolbar?.remove();this._editToolbar=null;this.#h?.destroy()}addContainer(t){const e=this._editToolbar?.div;e?e.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){if(!this.#h){AltText.initialize(AnnotationEditor._l10n);this.#h=new AltText(this);if(this.#je){this.#h.data=this.#je;this.#je=null}}return this.#h}get altTextData(){return this.#h?.data}set altTextData(t){this.#h&&(this.#h.data=t)}get guessedAltText(){return this.#h?.guessedText}async setGuessedAltText(t){await(this.#h?.setGuessedText(t))}serializeAltText(t){return this.#h?.serialize(t)}hasAltText(){return!!this.#h&&!this.#h.isEmpty()}hasAltTextData(){return this.#h?.hasData()??!1}focusCommentButton(){this.#c?.focusButton()}addCommentButton(){return this.canAddComment?this.#c||=new Comment(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager())if(this.#ge)this._uiManager.isEditingMode()&&this.#ge.classList.remove("hidden");else if(this.hasComment){this.#ge=this.#c.renderForStandalone();this.div.append(this.#ge)}}removeStandaloneCommentButton(){this.#c.removeStandaloneCommentButton();this.#ge=null}hideStandaloneCommentButton(){this.#ge?.classList.add("hidden")}get comment(){if(!this.#c)return null;const{data:{richText:t,text:e,date:i,deleted:n}}=this.#c;return{text:e,richText:t,date:i,deleted:n,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(t){this.#c||=new Comment(this);"object"==typeof t&&null!==t?this.#c.restoreData(t):this.#c.data=t;if(this.hasComment){this.removeCommentButtonFromToolbar();this.addStandaloneCommentButton();this._uiManager.updateComment(this)}else{this.addCommentButtonInToolbar();this.removeStandaloneCommentButton();this._uiManager.removeComment(this)}}setCommentData({comment:t,popupRef:e,richText:i}){if(!e)return;this.#c||=new Comment(this);this.#c.setInitialText(t,i);if(!this.annotationElementId)return;const n=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);n&&this.updateFromAnnotationLayer(n)}get hasEditedComment(){return this.#c?.hasBeenEdited()}get hasDeletedComment(){return this.#c?.isDeleted()}get hasComment(){return!!this.#c&&!this.#c.isEmpty()&&!this.#c.isDeleted()}async editComment(t){this.#c||=new Comment(this);this.#c.edit(t)}toggleComment(t,e=void 0){this.hasComment&&this._uiManager.toggleComment(this,t,e)}setSelectedCommentButton(t){this.#c.setSelectedButton(t)}addComment(t){if(this.hasEditedComment){const e=180,i=100,[,,,n]=t.rect,[s]=this.pageDimensions,[r]=this.pageTranslation,a=r+s+1,o=n-i,l=a+e;t.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[a,o,l,n]}}}updateFromAnnotationLayer({popup:{contents:t,deleted:e}}){this.#c.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.#Ke?-1:0;t.setAttribute("role","application");this.defaultL10nId&&t.setAttribute("data-l10n-id",this.defaultL10nId);this._isVisible||t.classList.add("hidden");this.setInForeground();this.#Ei();const[e,i]=this.parentDimensions;if(this.parentRotation%180!=0){t.style.maxWidth=`${(100*i/e).toFixed(2)}%`;t.style.maxHeight=`${(100*e/i).toFixed(2)}%`}const[n,s]=this.getInitialTranslation();this.translate(n,s);bindEvents(this,t,["keydown","pointerdown","dblclick"]);this.#Si();this.addStandaloneCommentButton();this._uiManager._editorUndoBar?.hide();return t}#Ti(){this.#Ze={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};this.#h?.toggle(!1);this.parent.togglePointerEvents(!1)}#_i(t,e,i){let n=i/e*.7+1-.7;if(1===n)return;const s=this.#yi(this.rotation),transf=(t,e)=>[s[0]*t+s[2]*e,s[1]*t+s[3]*e],[r,a]=this.parentDimensions,o=this.x,l=this.y,h=this.width,c=this.height,d=AnnotationEditor.MIN_SIZE/r,u=AnnotationEditor.MIN_SIZE/a;n=Math.max(Math.min(n,1/h,1/c),d/h,u/c);const p=AnnotationEditor._round(h*n),g=AnnotationEditor._round(c*n);if(p===h&&g===c)return;this.#si||=[o,l,h,c];const m=transf(h/2,c/2),f=AnnotationEditor._round(o+m[0]),b=AnnotationEditor._round(l+m[1]),y=transf(p/2,g/2);this.x=f-y[0];this.y=b-y[1];this.width=p;this.height=g;this.setDims();this.fixAndSetPosition();this._onResizing()}#ki(){this.#h?.toggle(!0);this.parent.togglePointerEvents(!0);this.#xi()}pointerdown(t){const{isMac:e}=FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)t.preventDefault();else{this.#ni=!0;this._isDraggable?this.#Di(t):this.#Pi(t)}}#Pi(t){const{isMac:e}=FeatureTest.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)}#Di(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let i=!1;const n=new AbortController,s=this._uiManager.combinedSignal(n),r={capture:!0,passive:!1,signal:s},cancelDrag=t=>{n.abort();this.#Ye=null;this.#ni=!1;this._uiManager.endDragSession()||this.#Pi(t);i&&this._onStopDragging()};if(e){this.#hi=t.clientX;this.#ci=t.clientY;this.#Ye=t.pointerId;this.#qe=t.pointerType;window.addEventListener("pointermove",t=>{if(!i){i=!0;this._uiManager.toggleComment(this,!0,!1);this._onStartDragging()}const{clientX:e,clientY:n,pointerId:s}=t;if(s!==this.#Ye){stopEvent(t);return}const[r,a]=this.screenToPageTranslation(e-this.#hi,n-this.#ci);this.#hi=e;this.#ci=n;this._uiManager.dragSelectedEditors(r,a);this.div.scrollIntoView({block:"nearest"})},r);window.addEventListener("touchmove",stopEvent,r);window.addEventListener("pointerdown",t=>{t.pointerType===this.#qe&&(this.#ui||t.isPrimary)&&cancelDrag(t);stopEvent(t)},r)}const pointerUpCallback=t=>{this.#Ye&&this.#Ye!==t.pointerId?stopEvent(t):cancelDrag(t)};window.addEventListener("pointerup",pointerUpCallback,{signal:s});window.addEventListener("blur",pointerUpCallback,{signal:s})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#li&&clearTimeout(this.#li);this.#li=setTimeout(()=>{this.#li=null;this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(t,e,i){t.changeParent(this);this.x=e;this.y=i;this.fixAndSetPosition();this._onTranslated()}getRect(t,e,i=this.rotation){const n=this.parentScale,[s,r]=this.pageDimensions,[a,o]=this.pageTranslation,l=t/n,h=e/n,c=this.x*s,d=this.y*r,u=this.width*s,p=this.height*r;switch(i){case 0:return[c+l+a,r-d-h-p+o,c+l+u+a,r-d-h+o];case 90:return[c+h+a,r-d+l+o,c+h+p+a,r-d+l+u+o];case 180:return[c-l-u+a,r-d+h+o,c-l+a,r-d+h+p+o];case 270:return[c-h-p+a,r-d-l-u+o,c-h+a,r-d-l+o];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[i,n,s,r]=t,a=s-i,o=r-n;switch(this.rotation){case 0:return[i,e-r,a,o];case 90:return[i,e-n,o,a];case 180:return[s,e-n,a,o];case 270:return[s,e-r,o,a];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#c?.onUpdatedColor()}getData(){const{comment:{text:t,color:e,date:i,opacity:n,deleted:s,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:i||h,popupRef:!s,color:e,opacity:n}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){if(this.isInEditMode())return!1;this.parent.setEditingState(!1);this.#ai=!0;return!0}disableEditMode(){if(!this.isInEditMode())return!1;this.parent.setEditingState(!0);this.#ai=!1;return!0}isInEditMode(){return this.#ai}shouldGetKeyboardEvents(){return this.#oi}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:i,right:n}=this.getClientDimensions(),{innerHeight:s,innerWidth:r}=window;return e0&&t0}#Ei(){if(this.#ei||!this.div)return;this.#ei=new AbortController;const t=this._uiManager.combinedSignal(this.#ei);this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t});this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})}#Si(){!this.#ui&&this.div&&this.isResizable&&this._uiManager._supportsPinchToZoom&&(this.#ui=new TouchManager({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#Ti.bind(this),onPinching:this.#_i.bind(this),onPinchEnd:this.#ki.bind(this),signal:this._uiManager._signal}))}rebuild(){this.#Ei();this.#Si()}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,i){const n=new this.prototype.constructor({parent:e,id:i.getId(),uiManager:i,annotationElementId:t.annotationElementId,creationDate:t.creationDate,modificationDate:t.modificationDate});n.rotation=t.rotation;n.#je=t.accessibilityData;n._isCopy=t.isCopy||!1;const[s,r]=n.pageDimensions,[a,o,l,h]=n.getRectInCurrentCoords(t.rect,r);n.x=a/s;n.y=o/r;n.width=l/s;n.height=h/r;return n}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||null!==this.serialize())}remove(){this.#ei?.abort();this.#ei=null;this.isEmpty()||this.commit();this.#ui?.destroy();this.#ui=null;this.parent?this.parent.remove(this):this._uiManager.removeEditor(this);this.hideCommentPopup();if(this.#li){clearTimeout(this.#li);this.#li=null}this.#mi();this.removeEditToolbar();if(this.#di){for(const t of this.#di.values())clearTimeout(t);this.#di=null}this.parent=null;this.#ti?.remove();this.#ti=null}get isResizable(){return!1}makeResizable(){if(this.isResizable){this.#vi();this.#Qe.classList.remove("hidden")}}get toolbarPosition(){return null}get commentButtonPosition(){return"ltr"===this._uiManager.direction?[1,0]:[0,0]}get commentButtonPositionInPage(){const{commentButtonPosition:[t,e]}=this,[i,n,s,r]=this.getPDFRect();return[AnnotationEditor._round(i+(s-i)*t),AnnotationEditor._round(n+(r-n)*(1-e))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#c.commentPopupPositionInLayer}set commentPopupPosition(t){this.#c.commentPopupPositionInLayer=t}hasDefaultPopupPosition(){return this.#c.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#c.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(t){this.#c?.setCommentButtonStates(t)}keydown(t){if(!this.isResizable||t.target!==this.div||"Enter"!==t.key)return;this._uiManager.setSelected(this);this.#Ze={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const e=this.#Qe.children;if(!this.#Xe){this.#Xe=Array.from(e);const t=this.#Mi.bind(this),i=this.#Ii.bind(this),n=this._uiManager._signal;for(const e of this.#Xe){const s=e.getAttribute("data-resizer-name");e.setAttribute("role","spinbutton");e.addEventListener("keydown",t,{signal:n});e.addEventListener("blur",i,{signal:n});e.addEventListener("focus",this.#Fi.bind(this,s),{signal:n});e.setAttribute("data-l10n-id",AnnotationEditor._l10nResizer[s])}}const i=this.#Xe[0];let n=0;for(const t of e){if(t===i)break;n++}const s=(360-this.rotation+this.parentRotation)%360/90*(this.#Xe.length/4);if(s!==n){if(sn)for(let t=0;t{this.div?.classList.contains("selectedEditor")&&this._editToolbar?.show()})}}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){if(this.isSelected){this.isSelected=!1;this.#Qe?.classList.add("hidden");this.div?.classList.remove("selectedEditor");this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0});this._editToolbar?.hide();this.#h?.toggleAltTextBadge(!0);this.hideCommentPopup()}}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(t,e){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){if(this.canChangeContent){this.enableEditMode();this.div.focus()}}dblclick(t){if("BUTTON"!==t.target.nodeName){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.#ri}set isEditing(t){this.#ri=t;if(this.parent)if(t){this.parent.setSelected(this);this.parent.setActiveEditor(this)}else 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.#di||=new Map;const{action:e}=t;let i=this.#di.get(e);i&&clearTimeout(i);i=setTimeout(()=>{this._reportTelemetry(t);this.#di.delete(e);0===this.#di.size&&(this.#di=null)},AnnotationEditor._telemetryTimeout);this.#di.set(e,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.#Ke=!1}disable(){this.div&&(this.div.tabIndex=-1);this.#Ke=!0}updateFakeAnnotationElement(t){if(this.#ti||this.deleted)if(this.deleted){this.#ti.remove();this.#ti=null}else(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#ti.updateEdited({rect:this.getPDFRect(),popup:this.comment});else this.#ti=t.addFakeAnnotation(this)}renderAnnotationElement(t){if(this.deleted){t.hide();return null}let e=t.container.querySelector(".annotationContent");if(e){if("CANVAS"===e.nodeName){const t=e;e=document.createElement("div");e.classList.add("annotationContent",this.editorType);t.before(e)}}else{e=document.createElement("div");e.classList.add("annotationContent",this.editorType);t.container.prepend(e)}return e}resetAnnotationElement(t){const{firstElementChild:e}=t.container;"DIV"===e?.nodeName&&e.classList.contains("annotationContent")&&e.remove()}}class FakeEditor extends AnnotationEditor{constructor(t){super(t);this.annotationElementId=t.annotationElementId;this.deleted=!0}serialize(){return this.serializeDeleted()}}const q=3285377520,Q=4294901760,J=65535;class MurmurHash3_64{constructor(t){this.h1=t?4294967295&t:q;this.h2=t?4294967295&t:q}update(t){let e,i;if("string"==typeof t){e=new Uint8Array(2*t.length);i=0;for(let n=0,s=t.length;n>>8;e[i++]=255&s}}}else{if(!ArrayBuffer.isView(t))throw new Error("Invalid data format, must be a string or TypedArray.");e=t.slice();i=e.byteLength}const n=i>>2,s=i-4*n,r=new Uint32Array(e.buffer,0,n);let a=0,o=0,l=this.h1,h=this.h2;const c=3432918353,d=461845907,u=11601,p=13715;for(let t=0;t>>17;a=a*d&Q|a*p&J;l^=a;l=l<<13|l>>>19;l=5*l+3864292196}else{o=r[t];o=o*c&Q|o*u&J;o=o<<15|o>>>17;o=o*d&Q|o*p&J;h^=o;h=h<<13|h>>>19;h=5*h+3864292196}a=0;switch(s){case 3:a^=e[4*n+2]<<16;case 2:a^=e[4*n+1]<<8;case 1:a^=e[4*n];a=a*c&Q|a*u&J;a=a<<15|a>>>17;a=a*d&Q|a*p&J;1&n?l^=a:h^=a}this.h1=l;this.h2=h}hexdigest(){let t=this.h1,e=this.h2;t^=e>>>1;t=3981806797*t&Q|36045*t&J;e=4283543511*e&Q|(2950163797*(e<<16|t>>>16)&Q)>>>16;t^=e>>>1;t=444984403*t&Q|60499*t&J;e=3301882366*e&Q|(3120437893*(e<<16|t>>>16)&Q)>>>16;t^=e>>>1;return(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const Z=Object.freeze({map:null,hash:"",transfer:void 0});class AnnotationStorage{#Bi=!1;#Ri=null;#Li=null;#Ni=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(t,e){const i=this.#Ni.get(t);return void 0===i?e:Object.assign(e,i)}getRawValue(t){return this.#Ni.get(t)}remove(t){const e=this.#Ni.get(t);if(void 0!==e){e instanceof AnnotationEditor&&this.#Li.delete(e.annotationElementId);this.#Ni.delete(t);0===this.#Ni.size&&this.resetModified();this.#Ni.values().some(t=>t instanceof AnnotationEditor)||this.onAnnotationEditor?.(null)}}setValue(t,e){const i=this.#Ni.get(t);let n=!1;if(void 0!==i){for(const[t,s]of Object.entries(e))if(i[t]!==s){n=!0;i[t]=s}}else{n=!0;this.#Ni.set(t,e)}n&&this.#Ui();if(e instanceof AnnotationEditor){(this.#Li||=new Map).set(e.annotationElementId,e);this.onAnnotationEditor?.(e.constructor._type)}}has(t){return this.#Ni.has(t)}get size(){return this.#Ni.size}#Ui(){if(!this.#Bi){this.#Bi=!0;this.onSetModified?.()}}resetModified(){if(this.#Bi){this.#Bi=!1;this.onResetModified?.()}}get print(){return new PrintAnnotationStorage(this)}get serializable(){if(0===this.#Ni.size)return Z;const t=new Map,e=new MurmurHash3_64,i=[],n=Object.create(null);let s=!1;for(const[i,r]of this.#Ni){const a=r instanceof AnnotationEditor?r.serialize(!1,n):r;if(r.page){r.pageIndex=r.page._pageIndex;delete r.page}if(a){t.set(i,a);e.update(`${i}:${JSON.stringify(a)}`);s||=!!a.bitmap}}if(s)for(const e of t.values())e.bitmap&&i.push(e.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:i}:Z}get editorStats(){let t=null;const e=new Map;let i=0,n=0;for(const s of this.#Ni.values()){if(!(s instanceof AnnotationEditor)){s.popup&&(s.popup.deleted?n+=1:i+=1);continue}s.isCommentDeleted?n+=1:s.hasEditedComment&&(i+=1);const r=s.telemetryFinalData;if(!r)continue;const{type:a}=r;e.getOrInsertComputed(a,()=>Object.getPrototypeOf(s).constructor);t||=Object.create(null);const o=t[a]||=new Map;for(const[t,e]of Object.entries(r)){if("type"===t)continue;const i=o.getOrInsertComputed(t,makeMap);i.set(e,(i.get(e)??0)+1)}}if(n>0||i>0){t||=Object.create(null);t.comments={deleted:n,edited:i}}if(!t)return null;for(const[i,n]of e)t[i]=n.computeTelemetryFinalData(t[i]);return t}resetModifiedIds(){this.#Ri=null}updateEditor(t,e){const i=this.#Li?.get(t);if(i){i.updateFromAnnotationLayer(e);return!0}return!1}getEditor(t){return this.#Li?.get(t)||null}get modifiedIds(){if(this.#Ri)return this.#Ri;const t=[];if(this.#Li)for(const e of this.#Li.values())e.serialize()&&t.push(e.annotationElementId);let e="";if(t.length){const i=new MurmurHash3_64;i.update(t.join(","));e=i.hexdigest()}return this.#Ri={ids:new Set(t),hash:e}}[Symbol.iterator](){return this.#Ni.entries()}}class PrintAnnotationStorage extends AnnotationStorage{#Hi=Z;constructor(t){super();const{serializable:e}=t;if(e===Z)return;const{map:i,hash:n,transfer:s}=e,r=structuredClone(i,s?{transfer:s}:null);this.#Hi={map:r,hash:n,transfer:[]}}get print(){unreachable("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#Hi}get modifiedIds(){return shadow(this,"modifiedIds",{ids:new Set,hash:""})}}const tt="__forcedDependency",{floor:et,ceil:it}=Math;function expandBBox(t,e,i,n,s,r){t[4*e+0]=Math.min(t[4*e+0],i);t[4*e+1]=Math.min(t[4*e+1],n);t[4*e+2]=Math.max(t[4*e+2],s);t[4*e+3]=Math.max(t[4*e+3],r)}const nt=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0];class BBoxReader{#Gi;#zi;constructor(t,e){this.#Gi=t;this.#zi=e}get length(){return this.#Gi.length}isEmpty(t){return this.#Gi[t]===nt}minX(t){return this.#zi[4*t+0]/256}minY(t){return this.#zi[4*t+1]/256}maxX(t){return(this.#zi[4*t+2]+1)/256}maxY(t){return(this.#zi[4*t+3]+1)/256}}const ensureDebugMetadata=(t,e)=>t?.getOrInsertComputed(e,()=>({dependencies:new Set,isRenderingOperation:!1}));class CanvasBBoxTracker{#Wi=[[1,0,0,1,0,0]];#Vi=[-1/0,-1/0,1/0,1/0];#$i=new Float64Array(e);_pendingBBoxIdx=-1;#ji;#Xi;#Ki;#Gi;_savesStack=[];_markedContentStack=[];constructor(t,e){this.#ji=t.width;this.#Xi=t.height;this.#Yi(e)}growOperationsCount(t){t>=this.#Gi.length&&this.#Yi(t,this.#Gi)}#Yi(t,e){const i=new ArrayBuffer(4*t);this.#Ki=new Uint8ClampedArray(i);this.#Gi=new Uint32Array(i);if(e&&e.length>0){this.#Gi.set(e);this.#Gi.fill(nt,e.length)}else this.#Gi.fill(nt)}get clipBox(){return this.#Vi}save(t){this.#Vi={__proto__:this.#Vi};this._savesStack.push(t);return this}restore(t,e){const i=Object.getPrototypeOf(this.#Vi);if(null===i)return this;this.#Vi=i;const n=this._savesStack.pop();if(void 0!==n){e?.(n,t);this.#Gi[t]=this.#Gi[n]}return this}recordOpenMarker(t){this._savesStack.push(t);return this}getOpenMarker(){return 0===this._savesStack.length?null:this._savesStack.at(-1)}recordCloseMarker(t,e){const i=this._savesStack.pop();if(void 0!==i){e?.(i,t);this.#Gi[t]=this.#Gi[i]}return this}beginMarkedContent(t){this._markedContentStack.push(t);return this}endMarkedContent(t,e){const i=this._markedContentStack.pop();if(void 0!==i){e?.(i,t);this.#Gi[t]=this.#Gi[i]}return this}pushBaseTransform(t){this.#Wi.push(Util.multiplyByDOMMatrix(this.#Wi.at(-1),t.getTransform()));return this}popBaseTransform(){this.#Wi.length>1&&this.#Wi.pop();return this}resetBBox(t){if(this._pendingBBoxIdx!==t){this._pendingBBoxIdx=t;this.#$i.set(e,0)}return this}recordClipBox(t,i,n,s,r,a){const o=Util.multiplyByDOMMatrix(this.#Wi.at(-1),i.getTransform()),l=e.slice();Util.axialAlignedBoundingBox([n,r,s,a],o,l);const h=Util.intersect(this.#Vi,l);if(h){this.#Vi[0]=h[0];this.#Vi[1]=h[1];this.#Vi[2]=h[2];this.#Vi[3]=h[3]}else{this.#Vi[0]=this.#Vi[1]=1/0;this.#Vi[2]=this.#Vi[3]=-1/0}return this}recordBBox(t,i,n,s,r,a){const o=this.#Vi;if(o[0]===1/0)return this;const l=Util.multiplyByDOMMatrix(this.#Wi.at(-1),i.getTransform());if(o[0]===-1/0){Util.axialAlignedBoundingBox([n,r,s,a],l,this.#$i);return this}const h=e.slice();Util.axialAlignedBoundingBox([n,r,s,a],l,h);this.#$i[0]=MathClamp(h[0],o[0],this.#$i[0]);this.#$i[1]=MathClamp(h[1],o[1],this.#$i[1]);this.#$i[2]=MathClamp(h[2],this.#$i[2],o[2]);this.#$i[3]=MathClamp(h[3],this.#$i[3],o[3]);return this}recordFullPageBBox(t){this.#$i[0]=Math.max(0,this.#Vi[0]);this.#$i[1]=Math.max(0,this.#Vi[1]);this.#$i[2]=Math.min(this.#ji,this.#Vi[2]);this.#$i[3]=Math.min(this.#Xi,this.#Vi[3]);return this}recordOperation(t,e=!1,i){if(this._pendingBBoxIdx!==t)return this;const n=et(256*this.#$i[0]/this.#ji),s=et(256*this.#$i[1]/this.#Xi),r=it(256*this.#$i[2]/this.#ji),a=it(256*this.#$i[3]/this.#Xi);expandBBox(this.#Ki,t,n,s,r,a);if(i)for(const e of i)for(const i of e)i!==t&&expandBBox(this.#Ki,i,n,s,r,a);e||(this._pendingBBoxIdx=-1);return this}bboxToClipBoxDropOperation(t){if(this._pendingBBoxIdx===t){this._pendingBBoxIdx=-1;this.#Vi[0]=Math.max(this.#Vi[0],this.#$i[0]);this.#Vi[1]=Math.max(this.#Vi[1],this.#$i[1]);this.#Vi[2]=Math.min(this.#Vi[2],this.#$i[2]);this.#Vi[3]=Math.min(this.#Vi[3],this.#$i[3])}return this}take(){return new BBoxReader(this.#Gi,this.#Ki)}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,i){return this}recordFutureForcedDependency(t,e){return this}inheritSimpleDataAsFutureForcedDependencies(t){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(t,e,i,n=1,s=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 CanvasDependencyTracker{#qi={__proto__:null};#Qi={__proto__:null,transform:[],moveText:[],sameLineText:[],[tt]:[]};#Ji=new Map;#Zi=new Set;#tn=new Map;#en;#in;#nn;constructor(t,e=!1){this.#nn=t;if(e){this.#en=new Map;this.#in=(t,e)=>{ensureDebugMetadata(this.#en,e).dependencies.add(t)}}}get clipBox(){return this.#nn.clipBox}growOperationsCount(t){this.#nn.growOperationsCount(t)}save(t){this.#qi={__proto__:this.#qi};this.#Qi={__proto__:this.#Qi,transform:{__proto__:this.#Qi.transform},moveText:{__proto__:this.#Qi.moveText},sameLineText:{__proto__:this.#Qi.sameLineText},[tt]:{__proto__:this.#Qi[tt]}};this.#nn.save(t);return this}restore(t){this.#nn.restore(t,this.#in);const e=Object.getPrototypeOf(this.#qi);if(null===e)return this;this.#qi=e;this.#Qi=Object.getPrototypeOf(this.#Qi);return this}recordOpenMarker(t){this.#nn.recordOpenMarker(t,this.#in);return this}getOpenMarker(){return this.#nn.getOpenMarker()}recordCloseMarker(t){this.#nn.recordCloseMarker(t,this.#in);return this}beginMarkedContent(t){this.#nn.beginMarkedContent(t);return this}endMarkedContent(t){this.#nn.endMarkedContent(t,this.#in);return this}pushBaseTransform(t){this.#nn.pushBaseTransform(t);return this}popBaseTransform(){this.#nn.popBaseTransform();return this}recordSimpleData(t,e){this.#qi[t]=e;return this}recordIncrementalData(t,e){this.#Qi[t].push(e);return this}resetIncrementalData(t,e){this.#Qi[t].length=0;return this}recordNamedData(t,e){this.#Ji.set(t,e);return this}recordSimpleDataFromNamed(t,e,i){this.#qi[t]=this.#Ji.get(e)??i}recordFutureForcedDependency(t,e){this.recordIncrementalData(tt,e);return this}inheritSimpleDataAsFutureForcedDependencies(t){for(const e of t)e in this.#qi&&this.recordFutureForcedDependency(e,this.#qi[e]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const t of this.#Zi)this.recordFutureForcedDependency(tt,t);return this}resetBBox(t){this.#nn.resetBBox(t);return this}recordClipBox(t,e,i,n,s,r){this.#nn.recordClipBox(t,e,i,n,s,r);return this}recordBBox(t,e,i,n,s,r){this.#nn.recordBBox(t,e,i,n,s,r);return this}recordCharacterBBox(t,e,i,n=1,s=0,r=0,a){const o=i.bbox;let l,h;if(o){l=o[2]!==o[0]&&o[3]!==o[1]&&this.#tn.get(i);if(!1!==l){h=[0,0,0,0];Util.axialAlignedBoundingBox(o,i.fontMatrix,h);1===n&&0===s&&0===r||function scaleCharBBox(t,e,i,n,s){let r;if(t){if(t<0){r=s[0];s[0]=s[2];s[2]=r}s[0]*=t;s[2]*=t;if(e<0){r=s[1];s[1]=s[3];s[3]=r}s[1]*=e;s[3]*=e}else s.fill(0);s[0]+=i;s[1]+=n;s[2]+=i;s[3]+=n}(n,-n,s,r,h);if(l)return this.recordBBox(t,e,h[0],h[2],h[1],h[3])}}if(!a)return this.recordFullPageBBox(t);const c=a();if(o&&h&&void 0===l){l=h[0]<=s-c.actualBoundingBoxLeft&&h[2]>=s+c.actualBoundingBoxRight&&h[1]<=r-c.actualBoundingBoxAscent&&h[3]>=r+c.actualBoundingBoxDescent;this.#tn.set(i,l);if(l)return this.recordBBox(t,e,h[0],h[2],h[1],h[3])}return this.recordBBox(t,e,s-c.actualBoundingBoxLeft,s+c.actualBoundingBoxRight,r-c.actualBoundingBoxAscent,r+c.actualBoundingBoxDescent)}recordFullPageBBox(t){this.#nn.recordFullPageBBox(t);return this}getSimpleIndex(t){return this.#qi[t]}recordDependencies(t,e){const i=this.#Zi,n=this.#qi,s=this.#Qi;for(const t of e)t in this.#qi?i.add(n[t]):t in s&&s[t].forEach(i.add,i);return this}recordNamedDependency(t,e){this.#Ji.has(e)&&this.#Zi.add(this.#Ji.get(e));return this}recordOperation(t,e=!1){this.recordDependencies(t,[tt]);if(this.#en){const e=ensureDebugMetadata(this.#en,t),{dependencies:i}=e;this.#Zi.forEach(i.add,i);this.#nn._savesStack.forEach(i.add,i);this.#nn._markedContentStack.forEach(i.add,i);i.delete(t);e.isRenderingOperation=!0}const i=!e&&t===this.#nn._pendingBBoxIdx;this.#nn.recordOperation(t,e,[this.#Zi,this.#nn._savesStack,this.#nn._markedContentStack]);i&&this.#Zi.clear();return this}recordShowTextOperation(t,e=!1){const i=Array.from(this.#Zi);this.recordOperation(t,e);this.recordIncrementalData("sameLineText",t);for(const t of i)this.recordIncrementalData("sameLineText",t);return this}bboxToClipBoxDropOperation(t,e=!1){const i=!e&&t===this.#nn._pendingBBoxIdx;this.#nn.bboxToClipBoxDropOperation(t);i&&this.#Zi.clear();return this}take(){this.#tn.clear();return this.#nn.take()}takeDebugMetadata(){return this.#en}}class CanvasNestedDependencyTracker{#sn;#rn;#an;#on=0;#ln=0;constructor(t,e,i){if(t instanceof CanvasNestedDependencyTracker&&t.#an===!!i)return t;this.#sn=t;this.#rn=e;this.#an=!!i}get clipBox(){return this.#sn.clipBox}growOperationsCount(){throw new Error("Unreachable")}save(t){this.#ln++;this.#sn.save(this.#rn);return this}restore(t){if(this.#ln>0){this.#sn.restore(this.#rn);this.#ln--}return this}recordOpenMarker(t){this.#on++;return this}getOpenMarker(){return this.#on>0?this.#rn:this.#sn.getOpenMarker()}recordCloseMarker(t){this.#on--;return this}beginMarkedContent(t){return this}endMarkedContent(t){return this}pushBaseTransform(t){this.#sn.pushBaseTransform(t);return this}popBaseTransform(){this.#sn.popBaseTransform();return this}recordSimpleData(t,e){this.#sn.recordSimpleData(t,this.#rn);return this}recordIncrementalData(t,e){this.#sn.recordIncrementalData(t,this.#rn);return this}resetIncrementalData(t,e){this.#sn.resetIncrementalData(t,this.#rn);return this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,i){this.#sn.recordSimpleDataFromNamed(t,e,this.#rn);return this}recordFutureForcedDependency(t,e){this.#sn.recordFutureForcedDependency(t,this.#rn);return this}inheritSimpleDataAsFutureForcedDependencies(t){this.#sn.inheritSimpleDataAsFutureForcedDependencies(t);return this}inheritPendingDependenciesAsFutureForcedDependencies(){this.#sn.inheritPendingDependenciesAsFutureForcedDependencies();return this}resetBBox(t){this.#an||this.#sn.resetBBox(this.#rn);return this}recordClipBox(t,e,i,n,s,r){this.#an||this.#sn.recordClipBox(this.#rn,e,i,n,s,r);return this}recordBBox(t,e,i,n,s,r){this.#an||this.#sn.recordBBox(this.#rn,e,i,n,s,r);return this}recordCharacterBBox(t,e,i,n,s,r,a){this.#an||this.#sn.recordCharacterBBox(this.#rn,e,i,n,s,r,a);return this}recordFullPageBBox(t){this.#an||this.#sn.recordFullPageBBox(this.#rn);return this}getSimpleIndex(t){return this.#sn.getSimpleIndex(t)}recordDependencies(t,e){this.#sn.recordDependencies(this.#rn,e);return this}recordNamedDependency(t,e){this.#sn.recordNamedDependency(this.#rn,e);return this}recordOperation(t){this.#sn.recordOperation(this.#rn,!0);return this}recordShowTextOperation(t){this.#sn.recordShowTextOperation(this.#rn,!0);return this}bboxToClipBoxDropOperation(t){this.#an||this.#sn.bboxToClipBoxDropOperation(this.#rn,!0);return this}take(){throw new Error("Unreachable")}takeDebugMetadata(){throw new Error("Unreachable")}}const st=["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],rt=["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],at=["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],ot=["filter","fillColor","fillAlpha"],lt=["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","fontObj","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation","sameLineText"],ht=["transform"],ct=["transform","fillColor"];class CanvasImagesTracker{#ji;#Xi;#hn=4;#cn=0;#zi=new CanvasImagesTracker.#dn(6*this.#hn);static#dn=FeatureTest.isFloat16ArraySupported?Float16Array:Float32Array;constructor(t){this.#ji=t.width;this.#Xi=t.height}record(t,i,n,s){if(this.#cn===this.#hn){this.#hn*=2;const t=new CanvasImagesTracker.#dn(6*this.#hn);t.set(this.#zi);this.#zi=t}const r=getCurrentTransform(t);let a;if(s[0]!==1/0){const t=e.slice();Util.axialAlignedBoundingBox([0,-n,i,0],r,t);const o=Util.intersect(s,t);if(!o)return;const[l,h,c,d]=o;if(l!==t[0]||h!==t[1]||c!==t[2]||d!==t[3]){const t=Math.atan2(r[1],r[0]),e=Math.abs(Math.sin(t)),i=Math.abs(Math.cos(t));if(e<1e-6||i<1e-6||Math.abs(e-i)<1e-6)a=[l,h,l,d,c,h];else{const t=c-l,n=d-h,s=e*e,r=i*i,o=i*e,u=r-s,p=(n*r-t*o)/u;a=[l+(n*o-t*s)/u,h,l,h+p,c,d-p]}}}if(!a){a=[0,-n,0,0,i,-n];Util.applyTransform(a,r,0);Util.applyTransform(a,r,2);Util.applyTransform(a,r,4)}a[0]/=this.#ji;a[1]/=this.#Xi;a[2]/=this.#ji;a[3]/=this.#Xi;a[4]/=this.#ji;a[5]/=this.#Xi;this.#zi.set(a,6*this.#cn);this.#cn++}take(){return this.#zi.subarray(0,6*this.#cn)}}const dt=/\p{Cc}/u;function serializeFontFamily(t){if(function isCSSString(t){const e=t[0];if(t.length<2||'"'!==e&&"'"!==e||t.at(-1)!==e)return!1;const i=t.length-1;for(let n=1;n=i||dt.test(t[n])))return!1}return!0}(t))return t;return`"${t.replaceAll(/["\\\p{Cc}]/gu,t=>'"'===t||"\\"===t?`\\${t}`:`\\${t.codePointAt(0).toString(16)} `)}"`}class FontLoader{#un=new Set;#pn=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.#gn();e.insertRule(t,e.cssRules.length)}#gn(){if(this.#pn)return this.#pn;const t=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&t){const{adoptedStyleSheets:e}=this._document;if(e){const i=new t;e.push(i);return this.#pn=i}}if(!this.styleElement){this.styleElement=this._document.createElement("style");this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)}return this.#pn=this.styleElement.sheet}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear();this.#un.clear();if(this.#pn){const{adoptedStyleSheets:t}=this._document;t?.includes(this.#pn)&&(this._document.adoptedStyleSheets=t.filter(t=>t!==this.#pn));this.#pn=null}if(this.styleElement){this.styleElement.remove();this.styleElement=null}}async loadSystemFont({systemFontInfo:t,disableFontFace:e,_inspectFont:i}){if(t&&!this.#un.has(t.loadedName)){assert(!e,"loadSystemFont shouldn't be called when `disableFontFace` is set.");if(this.isFontLoadingAPISupported){const{loadedName:e,src:n,style:s}=t,r=new FontFace(e,n,s);this.addNativeFontFace(r);try{await r.load();this.#un.add(e);i?.(t)}catch{warn(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`);this.removeNativeFontFace(r)}return}unreachable("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;t.attached=!0;if(t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(i){warn(`Failed to load font '${e.family}': '${i}'.`);t.disableFontFace=!0;throw i}}return}const e=t.createFontFaceRule();if(e){this.insertRule(e);if(this.isSyncFontLoadingSupported)return;await new Promise(e=>{const i=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,i)})}}get isFontLoadingAPISupported(){return shadow(this,"isFontLoadingAPISupported",!!this._document?.fonts)}get isSyncFontLoadingSupported(){return shadow(this,"isSyncFontLoadingSupported",t||FeatureTest.platform.isFirefox)}_queueLoadingCallback(t){const{loadingRequests:e}=this,i={done:!1,complete:function completeRequest(){assert(!i.done,"completeRequest() cannot be called twice.");i.done=!0;for(;e.length>0&&e[0].done;){const t=e.shift();setTimeout(t.callback,0)}},callback:t};e.push(i);return i}get _loadTestFont(){return shadow(this,"_loadTestFont",atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="))}_prepareFontLoadEvent(t,e){function int32(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function spliceString(t,e,i,n){return t.substring(0,e)+n+t.substring(e+i)}let i,n;const s=this._document.createElement("canvas");s.width=1;s.height=1;const r=s.getContext("2d");let a=0;const o=`lt${Date.now()}${this.loadTestFontId++}`;let l=this._loadTestFont;l=spliceString(l,976,o.length,o);const h=1482184792;let c=int32(l,16);for(i=0,n=o.length-3;i>24&255,t>>16&255,t>>8&255,255&t)}(c));const d=`@font-face {font-family:"${o}";src:${`url(data:font/opentype;base64,${btoa(l)});`}}`;this.insertRule(d);const u=this._document.createElement("div");u.style.visibility="hidden";u.style.width=u.style.height="10px";u.style.position="absolute";u.style.top=u.style.left="0px";for(const e of[t.loadedName,o]){const t=this._document.createElement("span");t.textContent="Hi";t.style.fontFamily=e;u.append(t)}this._document.body.append(u);!function isFontReady(t,e){if(++a>30){warn("Load test font never loaded.");e();return}r.font="30px "+t;r.fillText(".",0,20);r.getImageData(0,0,1,1).data[3]>0?e():setTimeout(isFontReady.bind(null,t,e))}(o,()=>{u.remove();e.complete()})}}class FontFaceObject{compiledGlyphs=Object.create(null);#mn;constructor(t,e=null,i,n){this.#mn=t;this._inspectFont=e;i&&(this.charProcOperatorList=i);n&&Object.assign(this,n)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(this.cssFontInfo){const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`);t=new FontFace(serializeFontFamily(this.cssFontInfo.fontFamily),this.data,e)}else t=new FontFace(this.loadedName,this.data,{});this._inspectFont?.(this);return t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${this.data.toBase64()});`;let e;if(this.cssFontInfo){let i=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(i+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`);e=`@font-face {font-family:${serializeFontFamily(this.cssFontInfo.fontFamily)};${i}src:${t}}`}else e=`@font-face {font-family:"${this.loadedName}";src:${t}}`;this._inspectFont?.(this,t);return e}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];const i=this.loadedName+"_path_"+e;let n;try{n=t.get(i)}catch(t){warn(`getPathGenerator - ignoring character: "${t}".`)}const s=makePathFromDrawOPS(n?.path);this.fontExtraProperties||t.delete(i);return this.compiledGlyphs[e]=s}get black(){return this.#mn.black}get bold(){return this.#mn.bold}get disableFontFace(){return this.#mn.disableFontFace}set disableFontFace(t){shadow(this,"disableFontFace",!!t)}get fontExtraProperties(){return this.#mn.fontExtraProperties}get isInvalidPDFjsFont(){return this.#mn.isInvalidPDFjsFont}get isType3Font(){return this.#mn.isType3Font}get italic(){return this.#mn.italic}get missingFile(){return this.#mn.missingFile}get remeasure(){return this.#mn.remeasure}get vertical(){return this.#mn.vertical}get ascent(){return this.#mn.ascent}get defaultWidth(){return this.#mn.defaultWidth}get descent(){return this.#mn.descent}get bbox(){return this.#mn.bbox}get fontMatrix(){return this.#mn.fontMatrix}get fallbackName(){return this.#mn.fallbackName}get loadedName(){return this.#mn.loadedName}get mimetype(){return this.#mn.mimetype}get name(){return this.#mn.name}get data(){return this.#mn.data}clearData(){this.#mn.clearData()}get cssFontInfo(){return this.#mn.cssFontInfo}get systemFontInfo(){return this.#mn.systemFontInfo}get defaultVMetrics(){return this.#mn.defaultVMetrics}}class CSS_FONT_INFO{static strings=["fontFamily","fontWeight","italicAngle"]}class SYSTEM_FONT_INFO{static strings=["css","loadedName","baseFontName","src"]}class FONT_INFO{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(2*this.bools.length/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+8*this.numbers.length;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 PATTERN_INFO{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 InfoUtils{static get decoder(){return shadow(this,"decoder",new TextDecoder)}static get encoder(){return shadow(this,"encoder",new TextEncoder)}}class CssFontInfo{#fn;#bn;constructor(t){this.#fn=t;this.#bn=new DataView(t)}#yn(t){assert(t>i&3;return 0===n?void 0:2===n}get black(){return this.#vn(0)}get bold(){return this.#vn(1)}get disableFontFace(){return this.#vn(2)}get fontExtraProperties(){return this.#vn(3)}get isInvalidPDFjsFont(){return this.#vn(4)}get isType3Font(){return this.#vn(5)}get italic(){return this.#vn(6)}get missingFile(){return this.#vn(7)}get remeasure(){return this.#vn(8)}get vertical(){return this.#vn(9)}#wn(t){assert(t0){i=e.slice();for(let t=0,e=h.length;t"object"==typeof t&&Number.isInteger(t?.num)&&t.num>=0&&Number.isInteger(t?.gen)&&t.gen>=0,ut=function _isValidExplicitDest(t,e,i){if(!Array.isArray(i)||i.length<2)return!1;const[n,s,...r]=i;if(!t(n)&&!Number.isInteger(n))return!1;if(!e(s))return!1;const a=r.length;let o=!0;switch(s.name){case"XYZ":if(a<2||a>3)return!1;break;case"Fit":case"FitB":return 0===a;case"FitH":case"FitBH":case"FitV":case"FitBV":if(a>1)return!1;break;case"FitR":if(4!==a)return!1;o=!1;break;default:return!1}for(const t of r)if(!("number"==typeof t||o&&null===t))return!1;return!0}.bind(null,isRefProxy,t=>"object"==typeof t&&"string"==typeof t?.name);class LoopbackPort{#Cn=new Map;#En=Promise.resolve();postMessage(t,e){const i={data:structuredClone(t,e?{transfer:e}:null)};this.#En.then(()=>{for(const[t]of this.#Cn)t.call(this,i)})}addEventListener(t,e,i=null){let n=null;if(i?.signal instanceof AbortSignal){const{signal:s}=i;if(s.aborted){warn("LoopbackPort - cannot use an `aborted` signal.");return}const onAbort=()=>this.removeEventListener(t,e);n=()=>s.removeEventListener("abort",onAbort);s.addEventListener("abort",onAbort)}this.#Cn.set(e,n)}removeEventListener(t,e){const i=this.#Cn.get(e);i?.();this.#Cn.delete(e)}terminate(){for(const[,t]of this.#Cn)t?.();this.#Cn.clear()}}const pt=1,gt=2,mt=1,ft=2,bt=3,yt=4,vt=5,wt=6,At=7,xt=8;function onFn(){}function wrapReason(t){if(t instanceof AbortException||t instanceof InvalidPDFException||t instanceof PasswordException||t instanceof ResponseException||t instanceof UnknownErrorException)return t;t instanceof Error||"object"==typeof t&&null!==t||unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(t.name){case"AbortException":return new AbortException(t.message);case"InvalidPDFException":return new InvalidPDFException(t.message);case"PasswordException":return new PasswordException(t.message,t.code);case"ResponseException":return new ResponseException(t.message,t.status,t.missing);case"UnknownErrorException":return new UnknownErrorException(t.message,t.details)}return new UnknownErrorException(t.message,t.toString())}class MessageHandler{#Sn=new AbortController;constructor(t,e,i){this.sourceName=t;this.targetName=e;this.comObj=i;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);i.addEventListener("message",this.#Tn.bind(this),{signal:this.#Sn.signal})}#Tn({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream){this.#_n(t);return}if(t.callback){const e=t.callbackId,i=this.callbackCapabilities[e];if(!i)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===pt)i.resolve(t.data);else{if(t.callback!==gt)throw new Error("Unexpected callback case");i.reject(wrapReason(t.reason))}return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const i=this.sourceName,n=t.sourceName,s=this.comObj;Promise.try(e,t.data).then(function(e){s.postMessage({sourceName:i,targetName:n,callback:pt,callbackId:t.callbackId,data:e})},function(e){s.postMessage({sourceName:i,targetName:n,callback:gt,callbackId:t.callbackId,reason:wrapReason(e)})});return}t.streamId?this.#kn(t):e(t.data)}on(t,e){const i=this.actionHandler;if(i[t])throw new Error(`There is already an actionName called "${t}"`);i[t]=e}send(t,e,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},i)}sendWithPromise(t,e,i){const n=this.callbackId++,s=Promise.withResolvers();this.callbackCapabilities[n]=s;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:n,data:e},i)}catch(t){s.reject(t)}return s.promise}sendWithStream(t,e,i,n){const s=this.streamId++,r=this.sourceName,a=this.targetName,o=this.comObj;return new ReadableStream({start:i=>{const l=Promise.withResolvers();this.streamControllers[s]={controller:i,startCall:l,pullCall:null,cancelCall:null,isClosed:!1};o.postMessage({sourceName:r,targetName:a,action:t,streamId:s,data:e,desiredSize:i.desiredSize},n);return l.promise},pull:t=>{const e=Promise.withResolvers();this.streamControllers[s].pullCall=e;o.postMessage({sourceName:r,targetName:a,stream:wt,streamId:s,desiredSize:t.desiredSize});return e.promise},cancel:t=>{assert(t instanceof Error,"cancel must have a valid reason");const e=Promise.withResolvers();this.streamControllers[s].cancelCall=e;this.streamControllers[s].isClosed=!0;o.postMessage({sourceName:r,targetName:a,stream:mt,streamId:s,reason:wrapReason(t)});return e.promise}},i)}#kn(t){const e=t.streamId,i=this.sourceName,n=t.sourceName,s=this.comObj,r=this,a=this.actionHandler[t.action],o={enqueue(t,r=1,a){if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=r;if(o>0&&this.desiredSize<=0){this.sinkCapability=Promise.withResolvers();this.ready=this.sinkCapability.promise}s.postMessage({sourceName:i,targetName:n,stream:yt,streamId:e,chunk:t},a)},close(){if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:i,targetName:n,stream:bt,streamId:e});delete r.streamSinks[e]}},error(t){assert(t instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:i,targetName:n,stream:vt,streamId:e,reason:wrapReason(t)})}},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(){s.postMessage({sourceName:i,targetName:n,stream:xt,streamId:e,success:!0})},function(t){s.postMessage({sourceName:i,targetName:n,stream:xt,streamId:e,reason:wrapReason(t)})})}#_n(t){const e=t.streamId,i=this.sourceName,n=t.sourceName,s=this.comObj,r=this.streamControllers[e],a=this.streamSinks[e];switch(t.stream){case xt:t.success?r.startCall.resolve():r.startCall.reject(wrapReason(t.reason));break;case At:t.success?r.pullCall.resolve():r.pullCall.reject(wrapReason(t.reason));break;case wt:if(!a){s.postMessage({sourceName:i,targetName:n,stream:At,streamId:e,success:!0});break}a.desiredSize<=0&&t.desiredSize>0&&a.sinkCapability.resolve();a.desiredSize=t.desiredSize;Promise.try(a.onPull||onFn).then(function(){s.postMessage({sourceName:i,targetName:n,stream:At,streamId:e,success:!0})},function(t){s.postMessage({sourceName:i,targetName:n,stream:At,streamId:e,reason:wrapReason(t)})});break;case yt:assert(r,"enqueue should have stream controller");if(r.isClosed)break;r.controller.enqueue(t.chunk);break;case bt:assert(r,"close should have stream controller");if(r.isClosed)break;r.isClosed=!0;r.controller.close();this.#Dn(r,e);break;case vt:assert(r,"error should have stream controller");r.controller.error(wrapReason(t.reason));this.#Dn(r,e);break;case ft:t.success?r.cancelCall.resolve():r.cancelCall.reject(wrapReason(t.reason));this.#Dn(r,e);break;case mt:if(!a)break;const o=wrapReason(t.reason);Promise.try(a.onCancel||onFn,o).then(function(){s.postMessage({sourceName:i,targetName:n,stream:ft,streamId:e,success:!0})},function(t){s.postMessage({sourceName:i,targetName:n,stream:ft,streamId:e,reason:wrapReason(t)})});a.sinkCapability.reject(o);a.isCancelled=!0;delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#Dn(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]);delete this.streamControllers[e]}destroy(){this.#Sn?.abort();this.#Sn=null}}class BaseBinaryDataFactory{#Pn=Object.freeze({cMapUrl:"CMap",standardFontDataUrl:"font",wasmUrl:"wasm"});constructor({cMapUrl:t=null,standardFontDataUrl:e=null,wasmUrl:i=null}){this.cMapUrl=t;this.standardFontDataUrl=e;this.wasmUrl=i}async fetch({kind:t,filename:e}){switch(t){case"cMapUrl":case"standardFontDataUrl":case"wasmUrl":break;default:unreachable(`Not implemented: ${t}`)}const i=this[t];if(!i)throw new Error(`Ensure that the \`${t}\` API parameter is provided.`);const n=`${i}${e}`;return this._fetch(n,t).catch(e=>{throw new Error(`Unable to load ${this.#Pn[t]} data at: ${n}`)})}async _fetch(t,e){unreachable("Abstract method `_fetch` called.")}}class DOMBinaryDataFactory extends BaseBinaryDataFactory{async _fetch(t,e){const i="cMapUrl"!==e||t.endsWith(".bcmap")?"bytes":"text",n=await fetchData(t,i);return n instanceof Uint8Array?n:stringToBytes(n)}}class BaseCanvasFactory{#Mn=!1;constructor({enableHWA:t=!1}){this.#Mn=t}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const i=this._createCanvas(t,e);return{canvas:i,context:i.getContext("2d",{willReadFrequently:!this.#Mn})}}reset({canvas:t},e,i){if(!t)throw new Error("Canvas is not specified");if(e<=0||i<=0)throw new Error("Invalid canvas size");t.width=e;t.height=i}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){unreachable("Abstract method `_createCanvas` called.")}}class DOMCanvasFactory extends BaseCanvasFactory{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e});this._document=t}_createCanvas(t,e){const i=this._document.createElement("canvas");i.width=t;i.height=e;return i}}class BaseFilterFactory{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,i,n,s){return"none"}addSelectionHCMFilter(t,e){return"none"}addSelectionFilter(){return"none"}createSelectionStyle(t=null){return null}destroy(t=!1){}}class DOMFilterFactory extends BaseFilterFactory{#In;#Fn;#On;#Bn;#Rn;#Ln;#_=0;constructor({docId:t,ownerDocument:e=globalThis.document}){super();this.#Bn=t;this.#Rn=e}get#D(){return this.#Fn||=new Map}get#Nn(){return this.#Ln||=new Map}get#Un(){if(!this.#On){const t=this.#Rn.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 i=this.#Rn.createElementNS(s,"svg");i.setAttribute("width",0);i.setAttribute("height",0);this.#On=this.#Rn.createElementNS(s,"defs");t.append(i);i.append(this.#On);this.#Rn.body.append(t)}return this.#On}#Hn(t){if(1===t.length){const e=t[0],i=new Array(256);for(let t=0;t<256;t++)i[t]=e[t]/255;const n=i.join(",");return[n,n,n]}const[e,i,n]=t,s=new Array(256),r=new Array(256),a=new Array(256);for(let t=0;t<256;t++){s[t]=e[t]/255;r[t]=i[t]/255;a[t]=n[t]/255}return[s.join(","),r.join(","),a.join(",")]}#Gn(t){if(void 0===this.#In){this.#In="";const t=this.#Rn.URL;t!==this.#Rn.baseURI&&(isDataScheme(t)?warn('#createUrl: ignore "data:"-URL for performance reasons.'):this.#In=updateUrlHash(t,""))}return`url(${this.#In}#${t})`}addFilter(t){if(!t)return"none";let e=this.#D.get(t);if(e)return e;const[i,n,s]=this.#Hn(t),r=1===t.length?i:`${i}${n}${s}`;e=this.#D.get(r);if(e){this.#D.set(t,e);return e}const a=`g_${this.#Bn}_transfer_map_${this.#_++}`,o=this.#Gn(a);this.#D.set(t,o);this.#D.set(r,o);const l=this.#zn(a);this.#Wn(i,n,s,l);return o}addHCMFilter(t,e){const i=`${t}-${e}`,n="base";let s=this.#Nn.get(n);if(s?.key===i)return s.url;if(s){s.filter?.remove();s.key=i;s.url="none";s.filter=null}else{s={key:i,url:"none",filter:null};this.#Nn.set(n,s)}if(!t||!e)return s.url;const r=this.#Vn(t);t=Util.makeHexColor(...r);const a=this.#Vn(e);e=Util.makeHexColor(...a);this.#$n();if("#000000"===t&&"#ffffff"===e||t===e)return s.url;const o=Array.from({length:256},(t,e)=>computeLuminance(e/255)).join(","),l=`g_${this.#Bn}_hcm_filter`,h=s.filter=this.#zn(l);this.#Wn(o,o,o,h);this.#jn(h);const getSteps=(t,e)=>{const i=r[t]/255,n=a[t]/255,s=new Array(e+1);for(let t=0;t<=e;t++)s[t]=i+t/e*(n-i);return s.join(",")};this.#Wn(getSteps(0,5),getSteps(1,5),getSteps(2,5),h);s.url=this.#Gn(l);return s.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"none"!==e&&FeatureTest.platform.isFirefox?{"backdrop-filter":e,"background-color":"transparent"}:null}addAlphaFilter(t){let e=this.#D.get(t);if(e)return e;const[i]=this.#Hn([t]),n=`alpha_${i}`;e=this.#D.get(n);if(e){this.#D.set(t,e);return e}const s=`g_${this.#Bn}_alpha_map_${this.#_++}`,r=this.#Gn(s);this.#D.set(t,r);this.#D.set(n,r);const a=this.#zn(s);this.#Xn(i,a);return r}addLuminosityFilter(t){let e,i,n=this.#D.get(t||"luminosity");if(n)return n;if(t){[e]=this.#Hn([t]);i=`luminosity_${e}`}else i="luminosity";n=this.#D.get(i);if(n){this.#D.set(t,n);return n}const s=`g_${this.#Bn}_luminosity_map_${this.#_++}`,r=this.#Gn(s);this.#D.set(t,r);this.#D.set(i,r);const a=this.#zn(s);this.#Kn(a);t&&this.#Xn(e,a);return r}addKnockoutFilter(t=0){const e=t>0?Math.min(1/t,1e6):1e6,i=`knockout_${e}`,n=this.#D.get(i);if(n)return n;const r=`g_${this.#Bn}_knockout_filter_${this.#_++}`,a=this.#Gn(r);this.#D.set(i,a);const o=this.#zn(r),l=this.#Rn.createElementNS(s,"feComponentTransfer");o.append(l);const h=this.#Rn.createElementNS(s,"feFuncA");h.setAttribute("type","linear");h.setAttribute("slope",`${e}`);h.setAttribute("intercept","0");l.append(h);return a}addHighlightHCMFilter(t,e,i,n,s){const r=`${e}-${i}-${n}-${s}`;let a=this.#Nn.get(t);if(a?.key===r)return a.url;if(a){a.filter?.remove();a.key=r;a.url="none";a.filter=null}else{a={key:r,url:"none",filter:null};this.#Nn.set(t,a)}if(!e||!i)return a.url;const[o,l]=[e,i].map(this.#Vn.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]),[d,u]=[n,s].map(this.#Yn.bind(this));c{const n=new Array(256),s=(c-h)/i,r=t/255,a=(e-t)/(255*i);let o=0;for(let t=0;t<=i;t++){const e=Math.round(h+t*s),i=r+t*a;for(let t=o;t<=e;t++)n[t]=i;o=e+1}for(let t=o;t<256;t++)n[t]=n[o-1];return n.join(",")},p=`g_${this.#Bn}_hcm_${t}_filter`,g=a.filter=this.#zn(p);this.#jn(g);this.#Wn(getSteps(d[0],u[0],5),getSteps(d[1],u[1],5),getSteps(d[2],u[2],5),g);a.url=this.#Gn(p);return a.url}destroy(t=!1){if(!t||!this.#Ln?.size){this.#On?.parentNode.parentNode.remove();this.#On=null;this.#Fn?.clear();this.#Fn=null;this.#Ln?.clear();this.#Ln=null;this.#_=0}}#Kn(t){const e=this.#Rn.createElementNS(s,"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)}#jn(t){const e=this.#Rn.createElementNS(s,"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)}#zn(t){const e=this.#Rn.createElementNS(s,"filter");e.setAttribute("color-interpolation-filters","sRGB");e.setAttribute("id",t);this.#Un.append(e);return e}#qn(t,e,i){const n=this.#Rn.createElementNS(s,e);n.setAttribute("type","discrete");n.setAttribute("tableValues",i);t.append(n)}#Wn(t,e,i,n){const r=this.#Rn.createElementNS(s,"feComponentTransfer");n.append(r);this.#qn(r,"feFuncR",t);this.#qn(r,"feFuncG",e);this.#qn(r,"feFuncB",i)}#Xn(t,e){const i=this.#Rn.createElementNS(s,"feComponentTransfer");e.append(i);this.#qn(i,"feFuncA",t)}#Vn(t){this.#Un.style.color="CanvasText";this.#Un.style.backgroundColor=t;return getRGB(getComputedStyle(this.#Un).getPropertyValue("background-color"))}#Qn(t){this.#Un.style.color="CanvasText";this.#Un.style.backgroundColor=t;return getRGBA(getComputedStyle(this.#Un).getPropertyValue("background-color"))}#$n(){this.#Un.style.color="";this.#Un.style.backgroundColor=""}#Yn(t){const[e,i,n,s]=this.#Qn(t);if(1===s)return[e,i,n];const[r,a,o]=this.#Vn("Canvas");return[blend(e,r,s),blend(i,a,s),blend(n,o,s)]}}function blend(t,e,i){return Math.round(i*t+(1-i)*e)}t&&warn("Please use the `legacy` build in Node.js environments.");class NodeFilterFactory extends BaseFilterFactory{}class NodeCanvasFactory extends BaseCanvasFactory{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t,e)}}class NodeBinaryDataFactory extends BaseBinaryDataFactory{async _fetch(t,e){return async function node_utils_fetchData(t){const e=process.getBuiltinModule("fs/promises"),i=await e.readFile(t);return new Uint8Array(i)}(t)}}function convertBlackAndWhiteToRGBA({src:t,srcPos:e=0,dest:i,width:n,height:s,nonBlackColor:r=4294967295,inverseDecode:a=!1}){const o=FeatureTest.isLittleEndian?4278190080:255,[l,h]=a?[r,o]:[o,r],c=n>>3,d=7&n,u=l^h,p=t.length;i=new Uint32Array(i.buffer);let g=0;for(let n=0;n>7&1)&u;i[g+1]=l^-(n>>6&1)&u;i[g+2]=l^-(n>>5&1)&u;i[g+3]=l^-(n>>4&1)&u;i[g+4]=l^-(n>>3&1)&u;i[g+5]=l^-(n>>2&1)&u;i[g+6]=l^-(n>>1&1)&u;i[g+7]=l^-(1&n)&u}if(0===d)continue;const n=e>7-t&1)&u}return{srcPos:e,destPos:g}}function convertRGBToRGBA({src:t,srcPos:e=0,dest:i,destPos:n=0,width:s,height:r}){let a=0;const o=s*r*3,l=o>>2,h=new Uint32Array(t.buffer,e,l),c=FeatureTest.isLittleEndian?4278190080:255;if(FeatureTest.isLittleEndian){for(;a>>24|e<<8|c;i[n+2]=e>>>16|s<<16|c;i[n+3]=s>>>8|c}for(let s=4*a,r=e+o;s>>8|c;i[n+2]=e<<16|s>>>16|c;i[n+3]=s<<8|c}for(let s=4*a,r=e+o;s 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"});this.#ts=this.#Zn.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.#es}]},primitive:{topology:"triangle-list"}})}draw(t,e,i,n,s,r,a,o){this.loadMeshShader();const l=this.#Zn,{offsetX:h,offsetY:c,scaleX:d,scaleY:u}=n,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,d,u,r,a,o,0]));const f=l.createBindGroup({layout:this.#ts.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:m}}]}),b=new OffscreenCanvas(r,a),y=b.getContext("webgpu");y.configure({device:l,format:this.#es,alphaMode:s?"opaque":"premultiplied"});const v=s?{r:s[0]/255,g:s[1]/255,b:s[2]/255,a:1}:{r:0,g:0,b:0,a:0},w=l.createCommandEncoder(),A=w.beginRenderPass({colorAttachments:[{view:y.getCurrentTexture().createView(),clearValue:v,loadOp:"clear",storeOp:"store"}]});if(i>0){A.setPipeline(this.#ts);A.setBindGroup(0,f);A.setVertexBuffer(0,p);A.setVertexBuffer(1,g);A.draw(i)}A.end();l.queue.submit([w.finish()]);p.destroy();g.destroy();m.destroy();return b.transferToImageBitmap()}};const Et="Fill",St="Stroke",Tt="Shading";function applyBoundingBox(t,e){if(!e)return;const i=e[2]-e[0],n=e[3]-e[1],s=new Path2D;s.rect(e[0],e[1],i,n);t.clip(s)}class BaseShadingPattern{matrix=null;isModifyingCurrentTransform(){return!1}getPattern(){unreachable("Abstract method `getPattern` called.")}}class RadialAxialShadingPattern extends BaseShadingPattern{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 0===this._p0[0]&&0===this._p0[1]&&(!this.isRadial()||0===this._p1[0]&&0===this._p1[1])}isRadial(){return"radial"===this._type}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 i,n=this._p0,s=this._p1;if(e){n=n.slice();s=s.slice();Util.applyTransform(n,e);Util.applyTransform(s,e)}if("axial"===this._type)i=t.createLinearGradient(n[0],n[1],s[0],s[1]);else if("radial"===this._type){let r=this._r0,a=this._r1;if(e){const t=new Float32Array(2);Util.singularValueDecompose2dScale(e,t);r*=t[0];a*=t[0]}i=t.createRadialGradient(n[0],n[1],r,s[0],s[1],a)}for(const t of this._colorStops)i.addColorStop(t[0],t[1]);return i}_createReversedGradient(t,e=null){let i=this._p1,n=this._p0;if(e){i=i.slice();n=n.slice();Util.applyTransform(i,e);Util.applyTransform(n,e)}let s=this._r1,r=this._r0;if(e){const t=new Float32Array(2);Util.singularValueDecompose2dScale(e,t);s*=t[0];r*=t[0]}const a=t.createRadialGradient(i[0],i[1],s,n[0],n[1],r),o=this._colorStops.map(([t,e])=>[1-t,e]).reverse();for(const[t,e]of o)a.addColorStop(t,e);return a}getPattern(t,e,i,n){let s;if(n===St||n===Et){if(this.isOriginBased()){let n=Util.transform(i,e.baseTransform);this.matrix&&(n=Util.transform(n,this.matrix));const s=.001,r=Math.hypot(n[0],n[1]),a=Math.hypot(n[2],n[3]),o=(n[0]*n[2]+n[1]*n[3])/(r*a);if(Math.abs(o)l[2*n+1]){u=i;i=n;n=u;u=r;r=a;a=u}if(l[2*n+1]>l[2*s+1]){u=n;n=s;s=u;u=a;a=o;o=u}if(l[2*i+1]>l[2*n+1]){u=i;i=n;n=u;u=r;r=a;a=u}const p=(l[2*i]+e.offsetX)*e.scaleX,g=(l[2*i+1]+e.offsetY)*e.scaleY,m=(l[2*n]+e.offsetX)*e.scaleX,f=(l[2*n+1]+e.offsetY)*e.scaleY,b=(l[2*s]+e.offsetX)*e.scaleX,y=(l[2*s+1]+e.offsetY)*e.scaleY;if(g>=y)return;const v=h[4*r],w=h[4*r+1],A=h[4*r+2],x=h[4*a],C=h[4*a+1],E=h[4*a+2],S=h[4*o],T=h[4*o+1],_=h[4*o+2],k=Math.round(g),D=Math.round(y);let P,M,I,F,O,B,R,L;for(let t=k;t<=D;t++){if(ty?1:f===y?0:(f-t)/(f-y);P=m-(m-b)*e;M=x-(x-S)*e;I=C-(C-T)*e;F=E-(E-_)*e}let e;e=ty?1:(g-t)/(g-y);O=p-(p-b)*e;B=v-(v-S)*e;R=w-(w-T)*e;L=A-(A-_)*e;const i=Math.round(Math.min(P,O)),n=Math.round(Math.max(P,O));let s=d*t+4*i;for(let t=i;t<=n;t++){e=(P-t)/(P-O);e<0?e=0:e>1&&(e=1);c[s++]=M-(M-B)*e|0;c[s++]=I-(I-R)*e|0;c[s++]=F-(F-L)*e|0;c[s++]=255}}}class MeshShadingPattern extends BaseShadingPattern{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];!function loadMeshShader(){Ct.loadMeshShader()}()}_createMeshCanvas(t,e,i){const n=Math.floor(this._bounds[0]),s=Math.floor(this._bounds[1]),r=Math.ceil(this._bounds[2])-n,a=Math.ceil(this._bounds[3])-s,o=Math.min(Math.ceil(Math.abs(r*t[0]*1.1)),3e3)||1,l=Math.min(Math.ceil(Math.abs(a*t[1]*1.1)),3e3)||1,h=r?r/o:1,c=a?a/l:1,d={coords:this._posData,colors:this._colData,offsetX:-n,offsetY:-s,scaleX:1/h,scaleY:1/c},u=o+4,p=l+4,g=i.create(u,p);if(function isGPUReady(){return Ct.isReady}()&&this._vertexCount>48)g.context.drawImage(function drawMeshWithGPU(t,e,i,n,s,r,a,o){return Ct.draw(t,e,i,n,s,r,a,o)}(this._posData,this._colData,this._vertexCount,d,e,u,p,2),0,0);else{const t=g.context.createImageData(o,l);if(e){const i=t.data;for(let t=0,n=i.length;tl+1e-6||e>h+1e-6)return null;const c=Math.floor((i-a)/l)+1,d=Math.ceil((i+t-s)/l)-1,u=Math.floor((n-o)/h)+1,p=Math.ceil((n+e-r)/h)-1;return d<=c&&p<=u?[c,u]:null}updatePatternDims(t,e){const i=Util.inverseTransform(this.patternBaseMatrix),n=[t[0],t[1]],s=[t[2],t[3]];Util.applyTransform(n,i);Util.applyTransform(s,i);e[0]=Math.abs(s[0]-n[0]);e[1]=Math.abs(s[1]-n[1]);e[2]=Math.min(n[0],s[0]);e[3]=Math.min(n[1],s[1])}_renderTileCanvas(t,e,i,n){const[s,r,a,o]=this.bbox,l=t.canvasFactory.create(i.size,n.size),h=l.context,c=this.canvasGraphicsFactory.createCanvasGraphics(h,e);c.groupLevel=t.groupLevel;this.setFillAndStrokeStyleToContext(c,this.paintType,this.color);h.translate(-i.scale*s,-n.scale*r);c.transform(0,i.scale,0,0,n.scale,0,0);h.save();c.dependencyTracker?.save();this.clipBbox(c,s,r,a,o);c.baseTransform=getCurrentTransform(c.ctx);c.executeOperatorList(this.operatorList);c.endDrawing();c.dependencyTracker?.restore();h.restore();return l}_getCombinedScales(){const t=new Float32Array(2);Util.singularValueDecompose2dScale(this.matrix,t);const[e,i]=t;Util.singularValueDecompose2dScale(this.baseTransform,t);return[e*t[0],i*t[1]]}drawPattern(t,e,i=!1,[n,s],r){const[a,o,l,h]=this.bbox,c=t.dependencyTracker;c&&(t.dependencyTracker=new CanvasNestedDependencyTracker(c,r));t.save();i?t.ctx.clip(e,"evenodd"):t.ctx.clip(e);t.ctx.setTransform(...this.patternBaseMatrix);t.ctx.translate(n*this.xstep,s*this.ystep);if(this.needsIsolation||1!==t.ctx.globalAlpha||"source-over"!==t.ctx.globalCompositeOperation||t.inSMaskMode){const e=l-a,i=h-o,[n,s]=this._getCombinedScales(),c=this.getSizeAndScale(e,this.ctx.canvas.width,n),d=this.getSizeAndScale(i,this.ctx.canvas.height,s),u=this._renderTileCanvas(t,r,c,d);t.ctx.drawImage(u.canvas,a,o,e,i);t.canvasFactory.destroy(u)}else{this.setFillAndStrokeStyleToContext(t,this.paintType,this.color);this.clipBbox(t,a,o,l,h);t.baseTransformStack.push(t.baseTransform);t.baseTransform=getCurrentTransform(t.ctx);t.executeOperatorList(this.operatorList);t.baseTransform=t.baseTransformStack.pop()}t.restore();c&&(t.dependencyTracker=c)}createPatternCanvas(t,e){const[i,n,s,r]=this.bbox,a=s-i,o=r-n;let{xstep:l,ystep:h}=this;l=Math.abs(l);h=Math.abs(h);info("TilingType: "+this.tilingType);const[c,d]=this._getCombinedScales();let u=a,p=o,g=!1,m=!1;Math.ceil(l*c)>=Math.ceil(a*c)?u=l:g=!0;Math.ceil(h*d)>=Math.ceil(o*d)?p=h:m=!0;const f=this.getSizeAndScale(u,this.ctx.canvas.width,c),b=this.getSizeAndScale(p,this.ctx.canvas.height,d),y=this._renderTileCanvas(t,e,f,b);if(g||m){const e=y.canvas;g&&(u=l);m&&(p=h);const s=this.getSizeAndScale(u,this.ctx.canvas.width,c),r=this.getSizeAndScale(p,this.ctx.canvas.height,d),f=s.size,b=r.size,v=t.canvasFactory.create(f,b),w=v.context,A=g?Math.floor(a/l):0,x=m?Math.floor(o/h):0;for(let t=0;t<=A;t++)for(let i=0;i<=x;i++)w.drawImage(e,f*t,b*i,f,b,0,0,f,b);t.canvasFactory.destroy(y);return{canvas:v.canvas,canvasEntry:v,scaleX:s.scale,scaleY:r.scale,offsetX:i,offsetY:n}}return{canvas:y.canvas,canvasEntry:y,scaleX:f.scale,scaleY:b.scale,offsetX:i,offsetY:n}}getSizeAndScale(t,e,i){const n=Math.max(TilingPattern.MAX_PATTERN_SIZE,e);let s=Math.ceil(t*i);s>=n?s=n:i=s/t;return{scale:i,size:s}}clipBbox(t,e,i,n,s){const r=n-e,a=s-i,o=new Path2D;o.rect(e,i,r,a);Util.axialAlignedBoundingBox([e,i,n,s],getCurrentTransform(t.ctx),t.current.minMax);t.ctx.clip(o);t.current.updateClipFromPath()}setFillAndStrokeStyleToContext(t,e,i){const n=t.ctx,s=t.current;s.patternFill=s.patternStroke=!1;switch(e){case _t:const{fillStyle:t,strokeStyle:r}=this.ctx;n.fillStyle=s.fillColor=t;n.strokeStyle=s.strokeColor=r;break;case kt:n.fillStyle=n.strokeStyle=i;s.fillColor=s.strokeColor=i;break;default:throw new FormatError(`Unsupported paint type: ${e}`)}}isModifyingCurrentTransform(){return!1}getPattern(t,e,i,n,s){const r=n!==Tt?Util.transform(i,this.patternBaseMatrix):i,a=this.createPatternCanvas(e,s);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");e.canvasFactory.destroy(a.canvasEntry);l.setTransform(o);return l}}const Dt=16,Pt=new Float32Array(2);function mirrorContextOperations(t,e){if(t._removeMirroring)throw new Error("Context is already forwarding operations.");const i=new Map;for(const n of["save","restore","rotate","scale","translate","transform","setTransform","resetTransform","clip","moveTo","lineTo","bezierCurveTo","quadraticCurveTo","arc","arcTo","ellipse","rect","roundRect","closePath","beginPath"]){const s=t[n];if("function"==typeof s&&"function"==typeof e[n]){i.set(n,s);t[n]=function(...t){e[n](...t);return s.apply(this,t)}}}t._removeMirroring=()=>{for(const[e,n]of i)t[e]=n;delete t._removeMirroring}}function drawImageAtIntegerCoords(t,e,i,n,s,r,a,o,l,h){const[c,d,u,p,g,m]=getCurrentTransform(t);if(0===d&&0===u){const f=a*c+g,b=Math.round(f),y=o*p+m,v=Math.round(y),w=(a+l)*c+g,A=Math.abs(Math.round(w)-b)||1,x=(o+h)*p+m,C=Math.abs(Math.round(x)-v)||1;t.setTransform(Math.sign(c),0,0,Math.sign(p),b,v);t.drawImage(e,i,n,s,r,0,0,A,C);t.setTransform(c,d,u,p,g,m);return[A,C]}if(0===c&&0===p){const f=o*u+g,b=Math.round(f),y=a*d+m,v=Math.round(y),w=(o+h)*u+g,A=Math.abs(Math.round(w)-b)||1,x=(a+l)*d+m,C=Math.abs(Math.round(x)-v)||1;t.setTransform(0,Math.sign(d),Math.sign(u),0,b,v);t.drawImage(e,i,n,s,r,0,0,C,A);t.setTransform(c,d,u,p,g,m);return[C,A]}t.drawImage(e,i,n,s,r,a,o,l,h);return[Math.hypot(c,d)*l,Math.hypot(u,p)*h]}class CanvasExtraState{alphaIsShape=!1;fontSize=0;fontSizeScale=1;textMatrix=null;textMatrixScale=1;fontMatrix=n;leading=0;x=0;y=0;lineX=0;lineY=0;charSpacing=0;wordSpacing=0;textHScale=1;textRenderingMode=v;textRise=0;fillColor="#000000";strokeColor="#000000";tilingPatternDims=null;patternFill=!1;patternStroke=!1;fillAlpha=1;strokeAlpha=1;lineWidth=1;activeSMask=null;transferMaps="none";minMax=i.slice();constructor(t,e){this.clipBox=new Float32Array([0,0,t,e])}clone(){const t=Object.create(this);t.clipBox=this.clipBox.slice();t.minMax=this.minMax.slice();t.tilingPatternDims=this.tilingPatternDims?.slice();return t}getPathBoundingBox(t=Et,e=null){const i=this.minMax.slice();if(t===St){e||unreachable("Stroke bounding box must include transform.");Util.singularValueDecompose2dScale(e,Pt);const t=Pt[0]*this.lineWidth/2,n=Pt[1]*this.lineWidth/2;i[0]-=t;i[1]-=n;i[2]+=t;i[3]+=n}return i}updateClipFromPath(){const t=Util.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(i,0)}getClippedPathBoundingBox(t=Et,e=null){return Util.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function putBinaryImageData(t,e){const{width:i,height:n,kind:s}=e,r=n%Dt,a=(n-r)/Dt,o=0===r?a:a+1,l=t.createImageData(i,Dt);let h=0;const c=e.data,d=l.data;let u;if(s===S.GRAYSCALE_1BPP)for(u=0;u10&&"function"==typeof i,c=h?Date.now()+15:0;let d=0;const u=this.commonObjs,p=this.objs;let g,m;for(;;){if(void 0!==n){if(o===n.nextBreakPoint){n.breakIt(o,i);return o}if(n.shouldSkip(o)){if(++o===l)return o;continue}}if(!s||s(o)){g=a[o];m=r[o]??null;if(g!==F.dependency)null===m?this[g](o):this[g](o,...m);else for(const t of m){this.dependencyTracker?.recordNamedData(t,o);const e=t.startsWith("g_")?u:p;if(!e.has(t)){e.get(t,i);return o}}}o++;if(o===l)return o;if(h&&++d>10){if(Date.now()>c){i();return o}d=0}}}#gs(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null;this.ctx.restore();if(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.#gs();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.#ps)this.#ms(t);this.#ps.length=0;this.#as=null;this.#os=null;this.#ls=null;this.#hs=null;this.#cs=1;this.#us=null;this.#rs=0;this.#ss=0;this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear();this.#fs()}#fs(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){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 i=t.width??t.displayWidth,n=t.height??t.displayHeight,s=[];let r=Math.max(Math.hypot(e[0],e[1]),1),a=Math.max(Math.hypot(e[2],e[3]),1),o=i,l=n;for(;r>2&&o>1||a>2&&l>1;){let t=o,e=l;if(r>2&&o>1){t=Math.ceil(o/2);r/=o/t}if(a>2&&l>1){e=Math.ceil(l/2);a/=l/e}s.push({newWidth:t,newHeight:e});o=t;l=e}if(0===s.length)return{img:t,paintWidth:i,paintHeight:n,tmpCanvas:null};if(1===s.length){const{newWidth:e,newHeight:r}=s[0],a=this.canvasFactory.create(e,r);a.context.drawImage(t,0,0,i,n,0,0,e,r);return{img:a.canvas,paintWidth:e,paintHeight:r,tmpCanvas:a}}let h=this.canvasFactory.create(1,1),c=this.canvasFactory.create(1,1),d=i,u=n,p=t;for(const{newWidth:t,newHeight:e}of s){this.canvasFactory.reset(c,t,e);c.context.drawImage(p,0,0,d,u,0,0,t,e);[h,c]=[c,h];p=h.canvas;d=t;u=e}this.canvasFactory.destroy(c);return{img:h.canvas,paintWidth:d,paintHeight:u,tmpCanvas:h}}_createMaskCanvas(t,e){const n=this.ctx,{width:s,height:r}=e,a=this.current.fillColor,o=this.current.patternFill,l=getCurrentTransform(n);let h,c,d,u;if((e.bitmap||e.data)&&e.count>1){const i=e.bitmap||e.data.buffer;c=JSON.stringify(o?l:[l.slice(0,4),a]);h=this._cachedBitmapsMap.getOrInsertComputed(i,makeMap);const n=h.get(c);if(n&&!o){const e=Math.round(Math.min(l[0],l[2])+l[4]),i=Math.round(Math.min(l[1],l[3])+l[5]);this.dependencyTracker?.recordDependencies(t,ct);return{canvas:n,offsetX:e,offsetY:i}}d=n}if(!d){u=this.canvasFactory.create(s,r);putBinaryImageMask(u.context,e)}let p=Util.transform(l,[1/s,0,0,-1/r,0,0]);p=Util.transform(p,[1,0,0,1,0,-r]);const g=i.slice();Util.axialAlignedBoundingBox([0,0,s,r],p,g);const[m,f,b,y]=g,v=Math.round(b-m)||1,w=Math.round(y-f)||1,A=this.canvasFactory.create(v,w),x=A.context,C=m,E=f;x.translate(-C,-E);x.transform(...p);let S=null;if(!d){const t=this._scaleImage(u.canvas,getCurrentTransformInverse(x));d=t.img;S=t.tmpCanvas;if(d!==u.canvas){this.canvasFactory.destroy(u);u=null}if(h&&o){h.set(c,d);S=null;u=null}}x.imageSmoothingEnabled=getImageSmoothingEnabled(getCurrentTransform(x),e.interpolate);drawImageAtIntegerCoords(x,d,0,0,d.width,d.height,0,0,s,r);S&&this.canvasFactory.destroy(S);u&&this.canvasFactory.destroy(u);x.globalCompositeOperation="source-in";const T=Util.transform(getCurrentTransformInverse(x),[1,0,0,1,-C,-E]);x.fillStyle=o?a.getPattern(n,this,T,Et,t):a;x.fillRect(0,0,s,r);h&&!o&&h.set(c,A.canvas);this.dependencyTracker?.recordDependencies(t,ct);return{canvas:A.canvas,canvasEntry:h&&!o?null:A,offsetX:Math.round(C),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=Mt[e]}setLineJoin(t,e){this.dependencyTracker?.recordSimpleData("lineJoin",t);this.ctx.lineJoin=It[e]}setMiterLimit(t,e){this.dependencyTracker?.recordSimpleData("miterLimit",t);this.ctx.miterLimit=e}setDash(t,e,i){this.dependencyTracker?.recordSimpleData("dash",t);const n=this.ctx;if(void 0!==n.setLineDash){n.setLineDash(e);n.lineDashOffset=i}}setRenderingIntent(t,e){}setFlatness(t,e){}setGState(t,e){for(const[i,n]of e)switch(i){case"LW":this.setLineWidth(t,n);break;case"LC":this.setLineCap(t,n);break;case"LJ":this.setLineJoin(t,n);break;case"ML":this.setMiterLimit(t,n);break;case"D":this.setDash(t,n[0],n[1]);break;case"RI":this.setRenderingIntent(t,n);break;case"FL":this.setFlatness(t,n);break;case"Font":this.setFont(t,n[0],n[1]);break;case"CA":this.dependencyTracker?.recordSimpleData("strokeAlpha",t);this.current.strokeAlpha=n;break;case"ca":this.dependencyTracker?.recordSimpleData("fillAlpha",t);this.ctx.globalAlpha=this.current.fillAlpha=n;break;case"BM":this.dependencyTracker?.recordSimpleData("globalCompositeOperation",t);this.ctx.globalCompositeOperation=n;break;case"SMask":this.dependencyTracker?.recordSimpleData("SMask",t);this.current.activeSMask=n?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(n)}}get inSMaskMode(){return!!this.suspendedCtx}_clearPreparedSMask(){if(this.smaskPreparedEntry){this.canvasFactory.destroy(this.smaskPreparedEntry);this.smaskPreparedEntry=null}this.smaskPreparedFor=null;this.smaskPreparedOffsetX=0;this.smaskPreparedOffsetY=0;this.smaskPreparedOOBAlpha=null}_ensurePreparedSMask(t){if(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:i,backdrop:n,transferMap:s}=t,r="Luminosity"===i||"Alpha"===i&&s;if(!(r||"Luminosity"===i&&n)){this.smaskPreparedFor=t;return}let a;if("Luminosity"===i&&n){const[t,e,i]=getRGBA(n),r=Math.round(.3*t+.59*e+.11*i);a=s?.[r]??r}else a=s?.[0]??0;const{width:o,height:l}=this.ctx.canvas,h=o*l<4*(e.width*e.height),c=r?{url:"Alpha"===i?this.filterFactory.addAlphaFilter(s):this.filterFactory.addLuminosityFilter(s),subtype:i,transferMap:s}:null,d="Luminosity"===i?n:null;let u,p,g;if(h){u=this._bakeSMaskCanvas(e,t.offsetX,t.offsetY,o,l,d,c);p=0;g=0}else{u=this._bakeSMaskCanvas(e,0,0,e.width,e.height,d,c);p=t.offsetX;g=t.offsetY}this.smaskPreparedEntry=u;this.smaskPreparedFor=t;this.smaskPreparedOffsetX=p;this.smaskPreparedOffsetY=g;this.smaskPreparedOOBAlpha=h||0===a?null:a}_bakeSMaskCanvas(t,e,i,n,s,r,a){r||a||unreachable("_bakeSMaskCanvas with neither backdrop nor filter");const o=this.canvasFactory.create(n,s),l=o.context;l.drawImage(t,e,i);if(r){l.globalCompositeOperation="destination-atop";l.fillStyle=r;l.fillRect(0,0,n,s)}if(!a)return o;const h=this.canvasFactory.create(n,s),c=h.context;c.filter=a.url;const d=FeatureTest.isCanvasFilterSupported&&"none"!==c.filter&&""!==c.filter;c.drawImage(o.canvas,0,0);FeatureTest.isCanvasFilterSupported&&(c.filter="none");if(!d){const t=c.getImageData(0,0,n,s),{data:e}=t,{transferMap:i}=a;if("Luminosity"===a.subtype)for(let t=0,n=e.length;tthis.filterFactory.addKnockoutFilter(i)));if(!o||"none"!==l){if(e){a.save();a.setTransform(1,0,0,1,0,0);a.clearRect(0,0,n,s);a.restore()}a.filter=l;a.drawImage(t,0,0);a.filter="none";return r}const h=t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,n,s),c=a.createImageData(n,s),d=h.data,u=c.data,p=i>0?1/i:1e6;for(let t=3,e=d.length;t0||!this.contentVisible)return!1;this.#rs++;this.#cs=t;const e=this.#ps.at(-1),{canvas:i}=this.ctx,n=this.#ys(e,"knockoutTempEntry",i.width,i.height);this.#as=n;const s=n.context;s.save();s.setTransform(this.ctx.getTransform());copyCtxState(this.ctx,s);this.#hs=s.globalCompositeOperation;s.globalCompositeOperation="source-over";mirrorContextOperations(s,this.ctx);this.#us=e;this.#os=this.ctx;this.#ls=this.suspendedCtx;this.ctx=s;this.inSMaskMode&&(this.suspendedCtx=s);return!0}#As(t){if(!t)return;const e=this.#as,i=this.#os,n=this.#ls,s=e.context;this.#as=null;this.#os=null;this.#ls=null;this.inSMaskMode&&this.suspendedCtx===s&&this.ctx!==s&&this.endSMaskMode();this.inSMaskMode&&(this.suspendedCtx=n);this.ctx._removeMirroring();this.ctx.globalCompositeOperation=this.#hs;this.#hs=null;copyCtxState(this.ctx,i);this.ctx=i;const r=this.#us;this.#us=null;const a=this.#cs;this.#cs=1;try{this.#vs(n??i,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{s.restore();this.#rs--;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,i=this.suspendedCtx,n=this.#rs>0&&i===this.ctx;this.composeSMask(n?null:i,e,this.ctx,t);if(!n){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,i,n){const s=n[0],r=n[1],a=n[2]-s,o=n[3]-r;if(0===a||0===o)return;const l=this.smaskPreparedEntry;if(l){let t=s,n=r,h=a,c=o;const d=this.smaskPreparedOOBAlpha,u=null!==d;if(u){t=Math.max(s,e.offsetX);n=Math.max(r,e.offsetY);h=Math.min(s+a,e.offsetX+e.canvas.width)-t;c=Math.min(r+o,e.offsetY+e.canvas.height)-n}if(h>0&&c>0){const e=t-this.smaskPreparedOffsetX,s=n-this.smaskPreparedOffsetY;i.save();i.globalAlpha=1;i.setTransform(1,0,0,1,0,0);const r=new Path2D;r.rect(t,n,h,c);i.clip(r);i.globalCompositeOperation="destination-in";i.drawImage(l.canvas,e,s,h,c,t,n,h,c);i.restore()}u&&d<255&&this._applySMaskOOBAlpha(i,s,r,a,o,t,n,t+h,n+c,d)}else this.genericComposeSMask(e,i,a,o,s,r);if(t){t.save();t.globalAlpha=1;t.globalCompositeOperation=e.blendMode||"source-over";t.setTransform(1,0,0,1,0,0);t.drawImage(i.canvas,s,r,a,o,s,r,a,o);t.restore()}}_applySMaskOOBAlpha(t,e,i,n,s,r,a,o,l,h){const c=ra.measureText(e))}if(d===w||d===A){this.dependencyTracker&&this.dependencyTracker?.recordCharacterBBox(t,a,l,c,i,n,()=>a.measureText(e)).recordDependencies(t,st);a.strokeText(e,i,n)}}if(u){(this.pendingTextPaths||=[]).push({transform:getCurrentTransform(a),x:i,y:n,fontSize:c,path:m});this.dependencyTracker?.recordCharacterBBox(t,a,l,c,i,n)}}get isFontSubpixelAAEnabled(){const t=this.canvasFactory.create(10,10),e=t.context;e.scale(1.5,1);e.fillText("I",0,10);const i=e.getImageData(0,0,10,10).data;this.canvasFactory.destroy(t);let n=!1;for(let t=3;t0&&i[t]<255){n=!0;break}return shadow(this,"isFontSubpixelAAEnabled",n)}showText(t,e){if(this.dependencyTracker){this.dependencyTracker.recordDependencies(t,lt).resetBBox(t);this.current.textRenderingMode&E&&this.dependencyTracker.recordFutureForcedDependency("textClip",t).inheritPendingDependenciesAsFutureForcedDependencies()}const i=this.current,n=i.font;if(n.isType3Font){const n=this.#ws(i.fillAlpha);this.showType3Text(t,e);this.dependencyTracker?.recordShowTextOperation(t);this.#As(n);return}const s=i.fontSize;if(0===s){this.dependencyTracker?.recordOperation(t);return}const r=this.#ws(i.fillAlpha),a=this.ctx,o=i.fontSizeScale,l=i.charSpacing,h=i.wordSpacing,c=i.fontDirection,d=i.textHScale*c,u=e.length,p=n.vertical,g=p?1:-1,m=n.defaultVMetrics,f=s*i.fontMatrix[0],b=i.textRenderingMode===v&&!n.disableFontFace&&!i.patternFill;a.save();i.textMatrix&&a.transform(...i.textMatrix);a.translate(i.x,i.y+i.textRise);c>0?a.scale(d,-1):a.scale(d,1);let y,x;const S=i.textRenderingMode&C,T=S===v||S===A,_=S===w||S===A;let k=i.lineWidth;const D=i.textMatrixScale;0===D||0===k?_&&(k=this.getSinglePixelWidth()):k/=D;if(1!==o){a.scale(o,o);k/=o}a.lineWidth=k;if(T&&i.patternFill){a.save();const e=i.fillColor.getPattern(a,this,getCurrentTransformInverse(a),Et,t);y=getCurrentTransform(a);a.restore();a.fillStyle=e}if(_&&i.patternStroke){a.save();const e=i.strokeColor.getPattern(a,this,getCurrentTransformInverse(a),St,t);x=getCurrentTransform(a);a.restore();a.strokeStyle=e}if(n.isInvalidPDFjsFont){const n=[];let s=0;for(const t of e){n.push(t.unicode);s+=t.width}const o=n.join("");a.fillText(o,0,0);if(null!==this.dependencyTracker){const e=a.measureText(o);this.dependencyTracker.recordBBox(t,this.ctx,-e.actualBoundingBoxLeft,e.actualBoundingBoxRight,-e.actualBoundingBoxAscent,e.actualBoundingBoxDescent).recordShowTextOperation(t)}i.x+=s*f*d;a.restore();this.compose();this.#As(r);return}let P,M=0;for(P=0;P0){C=a.measureText(u);const t=1e3*C.width/s*o;if(EC??a.measureText(u))}else{this.paintChar(t,u,w,A,y,x);if(v){const e=w+s*v.offset.x/o,i=A-s*v.offset.y/o;this.paintChar(t,v.fontChar,e,i,y,x)}}M+=p?E*f-d*c:E*f+d*c;r&&a.restore()}p?i.y-=M:i.x+=M*d;a.restore();this.compose();this.dependencyTracker?.recordShowTextOperation(t);this.#As(r)}showType3Text(t,e){const i=this.ctx,s=this.current,r=s.font,a=s.fontSize,o=s.fontDirection,l=r.vertical?1:-1,h=s.charSpacing,c=s.wordSpacing,d=s.textHScale*o,u=s.fontMatrix||n,p=e.length;let g,m,f,b;if(s.textRenderingMode===x||0===a)return;this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null;i.save();s.textMatrix&&i.transform(...s.textMatrix);i.translate(s.x,s.y+s.textRise);i.scale(d,o);const y=this.dependencyTracker;this.dependencyTracker=y?new CanvasNestedDependencyTracker(y,t):null;for(g=0;gnew CanvasGraphics(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new CanvasNestedDependencyTracker(this.dependencyTracker,e,!0):null)};i=new TilingPattern(e,this.ctx,n,t)}else i=this._getPattern(t,e[1],e[2]);return i}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 i=this.current.fillColor=this.getColorN_Pattern(t,e);this.current.patternFill=!0;this.current.tilingPatternDims=i instanceof TilingPattern?[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,i=null){const n=this.cachedPatterns.getOrInsertComputed(e,()=>function getShadingPattern(t){switch(t[0]){case"RadialAxial":return new RadialAxialShadingPattern(t);case"Mesh":return new MeshShadingPattern(t);case"Dummy":return new DummyShadingPattern}throw new Error(`Unknown IR type: ${t[0]}`)}(this.getObject(t,e)));i&&(n.matrix=i);return n}shadingFill(t,e){if(!this.contentVisible)return;const n=this.#ws(this.current.fillAlpha),s=this.ctx;this.save(t);const r=this._getPattern(t,e);s.fillStyle=r.getPattern(s,this,getCurrentTransformInverse(s),Tt,t);const a=getCurrentTransformInverse(s);if(a){const{width:t,height:e}=s.canvas,n=i.slice();Util.axialAlignedBoundingBox([0,0,t,e],a,n);const[r,o,l,h]=n;this.ctx.fillRect(r,o,l-r,h-o)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.dependencyTracker?.resetBBox(t).recordFullPageBBox(t).recordDependencies(t,ht).recordDependencies(t,rt).recordOperation(t);this.compose(this.current.getClippedPathBoundingBox());this.restore(t);this.#As(n)}beginInlineImage(){unreachable("Should not call beginInlineImage")}beginImageData(){unreachable("Should not call beginImageData")}paintFormXObjectBegin(t,e,i){if(this.contentVisible){this.save(t);this.baseTransformStack.push(this.baseTransform);e&&this.transform(t,...e);this.baseTransform=getCurrentTransform(this.ctx);if(i){Util.axialAlignedBoundingBox(i,this.baseTransform,this.current.minMax);const[e,n,s,r]=i,a=new Path2D;a.rect(e,n,s-e,r-n);this.ctx.clip(a);this.dependencyTracker?.recordClipBox(t,this.ctx,e,s,n,r);this.endPath(t)}}}paintFormXObjectEnd(t){if(this.contentVisible){this.restore(t);this.baseTransform=this.baseTransformStack.pop()}}beginGroup(t,e){if(!this.contentVisible)return;this.save(t);const{inSMaskMode:n}=this;if(n){this.endSMaskMode();this.current.activeSMask=null}const s=this.ctx;if(!(e.needsIsolation&&(e.isolated||e.hasSoftMask)||e.knockout||e.isGray||0!==this.#ss||1!==s.globalAlpha||"source-over"!==s.globalCompositeOperation||n)){if(e.bbox){let t=new Path2D;const[i,n,r,a]=e.bbox;t.rect(i,n,r-i,a-n);if(e.matrix){const i=new Path2D;i.addPath(t,new DOMMatrix(e.matrix));t=i}s.clip(t)}this.groupStack.push(null);this.#ps.push(null);this.groupLevel++;return}e.isolated||e.knockout||0!==this.#ss||info("TODO: Fully support non-isolated non-knockout groups.");const r=getCurrentTransform(s);e.matrix&&s.transform(...e.matrix);const a=[0,0,s.canvas.width,s.canvas.height];let o;if(e.bbox){o=i.slice();Util.axialAlignedBoundingBox(e.bbox,getCurrentTransform(s),o);o=Util.intersect(o,a)||[0,0,0,0]}else o=a;const l=Math.floor(o[0]),h=Math.floor(o[1]),c=Math.max(Math.ceil(o[2])-l,1),d=Math.max(Math.ceil(o[3])-h,1);this.current.startNewPathAndClipBox([0,0,c,d]);const u=this.canvasFactory.create(c,d);e.smask&&this.smaskGroupCanvases.push(u);const p=u.context,g=e.knockout&&!e.isolated?s:null,m=!e.isolated&&!e.knockout&&!e.smask&&e.needsIsolation&&this.#ss>0,f=e.knockout?this.canvasFactory.create(c,d):null,b=this.#ss;e.knockout?this.#ss++:this.#ss=0;p.translate(-l,-h);p.transform(...r);const y=!e.isolated&&!e.smask&&e.needsIsolation,v=y&&!n&&0===b&&!e.knockout&&!e.isGray&&e.hasSoftMask&&1===s.globalAlpha&&"source-over"===s.globalCompositeOperation&&"none"===this.current.transferMaps;if(y&&(n||v)){p.save();p.setTransform(1,0,0,1,0,0);p.drawImage(s.canvas,-l,-h);p.restore()}if(e.bbox){let t=new Path2D;const[i,n,s,r]=e.bbox;t.rect(i,n,s-i,r-n);if(e.matrix){const i=new Path2D;i.addPath(t,new DOMMatrix(e.matrix));t=i}p.clip(t)}e.smask&&this.smaskStack.push({canvas:u.canvas,context:p,offsetX:l,offsetY:h,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null});if(!e.smask||this.dependencyTracker){s.setTransform(1,0,0,1,0,0);s.translate(l,h);s.save()}copyCtxState(s,p);this.ctx=p;this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha","strokeAlpha","globalCompositeOperation"]).pushBaseTransform(s);this.setGState(t,[["BM","source-over"],["ca",1],["CA",1],["TR",null]]);this.groupStack.push(s);this.#ps.push({backdropCtx:g,savedKnockoutLevel:b,offsetX:l,offsetY:h,hasInnerBackdrop:m,replaceBackdrop:v,knockoutMaskEntry:f,knockoutTempEntry:null,knockoutBackdropEntry:null});this.groupLevel++}endGroup(t,e){if(!this.contentVisible)return;this.groupLevel--;const n=this.ctx,s=this.groupStack.pop(),r=this.#ps.pop();r&&(this.#ss=r.savedKnockoutLevel);if(null!==s){e.isGray&&this.#Cs(n);this.ctx=s;this.ctx.imageSmoothingEnabled=!1;this.dependencyTracker?.popBaseTransform();if(e.smask){this.tempSMask=this.smaskStack.pop();this.restore(t);if(this.dependencyTracker){this.ctx.restore();this.inSMaskMode&&this.ctx.setTransform(this.suspendedCtx.getTransform())}this.#ms(r)}else{this.ctx.restore();const e=getCurrentTransform(this.ctx);this.restore(t);this.ctx.save();this.ctx.setTransform(...e);const a=i.slice();Util.axialAlignedBoundingBox([0,0,n.canvas.width,n.canvas.height],e,a);const o=this.#ps.at(-1);if(this.#ss>0)if(r.hasInnerBackdrop){const{width:t,height:i}=n.canvas,a=this.canvasFactory.create(t,i),o=a.context;o.drawImage(s.canvas,r.offsetX,r.offsetY,t,i,0,0,t,i);o.globalCompositeOperation="source-over";o.drawImage(n.canvas,0,0);const l=this.#bs(n.canvas);o.globalCompositeOperation="destination-in";o.drawImage(l.canvas,0,0);const h=this.ctx.globalCompositeOperation,c=this.ctx.globalAlpha,d=this.ctx.filter;this.ctx.save();this.ctx.setTransform(...e);this.ctx.globalAlpha=1;FeatureTest.isCanvasFilterSupported&&(this.ctx.filter="none");this.ctx.globalCompositeOperation="destination-out";this.ctx.drawImage(l.canvas,0,0);this.ctx.globalCompositeOperation=h;this.ctx.globalAlpha=c;FeatureTest.isCanvasFilterSupported&&(this.ctx.filter=d??"none");this.ctx.drawImage(a.canvas,0,0);this.ctx.restore();this.canvasFactory.destroy(l);this.canvasFactory.destroy(a)}else{const t=o?.backdropCtx??null;this.#vs(this.ctx,n.canvas,{backdropCanvas:t?.canvas??null,destTransform:e,backdropOffset:t?[o.offsetX+r.offsetX,o.offsetY+r.offsetY]:[0,0],sourceAlpha:this.ctx.globalAlpha,sourceFilter:this.ctx.filter})}else{if(r.replaceBackdrop){const t=new Path2D;t.rect(0,0,n.canvas.width,n.canvas.height);this.ctx.clip(t);this.ctx.globalCompositeOperation="copy"}this.ctx.drawImage(n.canvas,0,0)}this.ctx.restore();this.canvasFactory.destroy({canvas:n.canvas,context:n});this.#ms(r);this.compose(a)}}else this.restore(t)}#Cs(t){const{canvas:e}=t,{width:i,height:n}=e;if(FeatureTest.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 s=t.getImageData(0,0,i,n),{data:r}=s;for(let t=0,e=r.length;tt.getAttribute("data-canvas-name")===a);-1===i?t.push(h):t[i]=h}else this.annotationCanvasMap.set(e,h);this.annotationCanvas.savedCtx=this.ctx;this.ctx=c;this.ctx.save();this.ctx.setTransform(Pt[0],0,0,-Pt[1],0,o*Pt[1]);resetCtxToDefault(this.ctx)}else{resetCtxToDefault(this.ctx);this.endPath(t);const e=new Path2D;e.rect(i[0],i[1],s,o);this.ctx.clip(e)}}this.current=new CanvasExtraState(this.ctx.canvas.width,this.ctx.canvas.height);this.baseTransformStack.push(this.baseTransform);this.transform(t,...n);this.transform(t,...s);this.baseTransform=getCurrentTransform(this.ctx)}endAnnotation(t){if(this.annotationCanvas){this.ctx.restore();this.#fs();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 i=e.count;(e=this.getObject(t,e.data,e)).count=i;const n=this.#ws(this.current.fillAlpha),s=this.ctx,r=this._createMaskCanvas(t,e),a=r.canvas;s.save();s.setTransform(1,0,0,1,0,0);s.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);s.restore();r.canvasEntry&&this.canvasFactory.destroy(r.canvasEntry);this.compose();this.#As(n)}paintImageMaskXObjectRepeat(t,e,i,n=0,s=0,r,a){if(!this.contentVisible)return;e=this.getObject(t,e.data,e);const o=this.#ws(this.current.fillAlpha),l=this.ctx;l.save();const h=getCurrentTransform(l);l.transform(i,n,s,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 e=0,o=a.length;ee?h/e:1;a=l>e?l/e:1}}this._cachedScaleForStroking[0]=r;this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(t,e){const{ctx:i,current:{lineWidth:n}}=this,[s,r]=this.getScaleForStroking();if(s===r){i.lineWidth=(n||1)*s;i.stroke(t);return}const a=CanvasGraphics.#ns??=new DOMMatrix,o=i.getLineDash();e&&i.save();i.scale(s,r);a.a=1/s;a.d=1/r;const l=new Path2D;l.addPath(t,a);if(o.length>0){const t=Math.max(s,r);i.setLineDash(o.map(e=>e/t));i.lineDashOffset/=t}i.lineWidth=n||1;i.stroke(l);e&&i.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}for(const t in F)void 0!==CanvasGraphics.prototype[t]&&(CanvasGraphics.prototype[F[t]]=CanvasGraphics.prototype[t]);class BasePDFStream{#Es=null;#Ss=null;_fullReader=null;_rangeReaders=new Set;_source=null;constructor(t,e,i){this._source=t;this.#Es=e;this.#Ss=i}get _progressiveDataLength(){return this._fullReader?._loaded??0}getFullReader(){assert(!this._fullReader,"BasePDFStream.getFullReader can only be called once.");return this._fullReader=new this.#Es(this)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const i=new this.#Ss(this,t,e);this._rangeReaders.add(i);return i}cancelAllRequests(t){this._fullReader?.cancel(t);for(const e of new Set(this._rangeReaders))e.cancel(t)}}class BasePDFStreamReader{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(){unreachable("Abstract method `read` called")}cancel(t){unreachable("Abstract method `cancel` called")}}class BasePDFStreamRangeReader{_stream=null;constructor(t,e,i){this._stream=t}async read(){unreachable("Abstract method `read` called")}cancel(t){unreachable("Abstract method `cancel` called")}}function createHeaders(t,e){const i=new Headers;if(!t||!e||"object"!=typeof e)return i;for(const t in e){const n=e[t];void 0!==n&&i.append(t,n)}return i}function getResponseOrigin(t){return URL.parse(t)?.origin??null}function validateRangeRequestCapabilities({responseHeaders:t,isHttp:e,rangeChunkSize:i,disableRange:n}){const s={contentLength:0,isRangeSupported:!1},r=parseInt(t.get("Content-Length"),10);if(!Number.isInteger(r))return s;s.contentLength=r;if(r<=2*i)return s;if(n||!e)return s;if("bytes"!==t.get("Accept-Ranges"))return s;"identity"===(t.get("Content-Encoding")||"identity")&&(s.isRangeSupported=!0);return s}function extractFilenameFromHeader(t){const e=t.get("Content-Disposition");if(e){let t=function getFilenameFromContentDispositionHeader(t){let e=!0,i=toParamRegExp("filename\\*","i").exec(t);if(i){i=i[1];let t=rfc2616unquote(i);t=unescape(t);t=rfc5987decode(t);t=rfc2047decode(t);return fixupEncoding(t)}i=function rfc2231getparam(t){const e=[];let i;const n=toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(i=n.exec(t));){let[,t,n,s]=i;t=parseInt(t,10);if(t in e){if(0===t)break}else e[t]=[n,s]}const s=[];for(let t=0;t{t._responseOrigin=getResponseOrigin(i.url);ensureResponseStatus(i.status,s);this._reader=i.body.getReader();const r=i.headers,{contentLength:a,isRangeSupported:o}=validateRangeRequestCapabilities({responseHeaders:r,isHttp:!0,rangeChunkSize:n,disableRange:e});this._contentLength=a;this._isRangeSupported=o;this._filename=extractFilenameFromHeader(r);!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new AbortException("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();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this._callOnProgress();return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}class PDFFetchStreamRangeReader extends BasePDFStreamRangeReader{_abortController=new AbortController;_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,i){super(t,e,i);const{url:n,withCredentials:s}=t._source,r=new Headers(t.headers);r.append("Range",`bytes=${e}-${i-1}`);fetchUrl(n,r,s,this._abortController).then(e=>{ensureResponseOrigin(getResponseOrigin(e.url),t._responseOrigin);ensureResponseStatus(e.status,n);this._reader=e.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:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}function transport_stream_getArrayBuffer(t){return t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer}function endRequests(){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}class PDFDataTransportStream extends BasePDFStream{_progressiveDone=!1;_queuedChunks=[];constructor(t){super(t,PDFDataTransportStreamReader,PDFDataTransportStreamRangeReader);const{pdfDataRangeTransport:e}=t,{initialData:i,progressiveDone:n}=e;if(i?.length>0){const t=transport_stream_getArrayBuffer(i);this._queuedChunks.push(t)}this._progressiveDone=n;e.transportReady(t=>{switch(t.type){case"range":case"progressiveRead":this.#Ts(t.begin,t.chunk);break;case"progressiveDone":this._fullReader?.progressiveDone();this._progressiveDone=!0}})}#Ts(t,e){const i=transport_stream_getArrayBuffer(e);if(void 0===t)this._fullReader?this._fullReader._enqueue(i):this._queuedChunks.push(i);else{const e=this._rangeReaders.keys().find(e=>e._begin===t);assert(e,"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.");e._enqueue(i)}}getFullReader(){const t=super.getFullReader();this._queuedChunks=null;return t}getRangeReader(t,e){const i=super.getRangeReader(t,e);if(i){i.onDone=()=>this._rangeReaders.delete(i);this._source.pdfDataRangeTransport.requestDataRange(t,e)}return i}cancelAllRequests(t){super.cancelAllRequests(t);this._source.pdfDataRangeTransport.abort()}}class PDFDataTransportStreamReader extends BasePDFStreamReader{#_s=endRequests.bind(this);_done=!1;_queuedChunks=null;_requests=[];constructor(t){super(t);const{pdfDataRangeTransport:e,disableRange:i,disableStream:n}=t._source,{length:s,contentDispositionFilename:r}=e;this._queuedChunks=t._queuedChunks||[];for(const t of this._queuedChunks)this._loaded+=t.byteLength;this._done=t._progressiveDone;this._contentLength=s;this._isStreamingSupported=!n;this._isRangeSupported=!i;isPdfFile(r)&&(this._filename=r);this._headersCapability.resolve();const a=this._loaded;Promise.resolve().then(()=>{a>0&&this._loaded===a&&this._callOnProgress()})}_enqueue(t){if(!this._done){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else 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();this._requests.push(t);return t.promise}cancel(t){this._done=!0;this.#_s()}progressiveDone(){this._done||=!0;0===this._queuedChunks.length&&this.#_s()}}class PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader{#_s=endRequests.bind(this);onDone=null;_begin=-1;_done=!1;_queuedChunk=null;_requests=[];constructor(t,e,i){super(t,e,i);this._begin=e}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});this.#_s()}this._done=!0;this.onDone?.()}}async read(){if(this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();this._requests.push(t);return t.promise}cancel(t){this._done=!0;this.#_s();this.onDone?.()}}class PDFNetworkStream extends BasePDFStream{#ks=new WeakMap;_responseOrigin=null;constructor(t){super(t,PDFNetworkStreamReader,PDFNetworkStreamRangeReader);const{httpHeaders:e,url:i}=t;this.url=i;this.isHttp=/https?:/.test(i.protocol);this.headers=createHeaders(this.isHttp,e)}_request(t){const e=new XMLHttpRequest,i={validateStatus:null,onHeadersReceived:t.onHeadersReceived,onDone:t.onDone,onError:t.onError,onProgress:t.onProgress};this.#ks.set(e,i);e.open("GET",this.url);e.withCredentials=this._source.withCredentials;for(const[t,i]of this.headers)e.setRequestHeader(t,i);if(this.isHttp&&"begin"in t&&"end"in t){e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`);i.validateStatus=t=>206===t||200===t}else i.validateStatus=t=>200===t;e.responseType="arraybuffer";assert(t.onError,"Expected `onError` callback to be provided.");e.onerror=()=>t.onError(e.status);e.onreadystatechange=this.#Ds.bind(this,e);e.onprogress=this.#Ps.bind(this,e);e.send(null);return e}#Ps(t,e){const i=this.#ks.get(t);i?.onProgress?.(e)}#Ds(t,e){const i=this.#ks.get(t);if(!i)return;if(t.readyState>=2&&i.onHeadersReceived){i.onHeadersReceived();delete i.onHeadersReceived}if(4!==t.readyState)return;if(!this.#ks.has(t))return;this.#ks.delete(t);if(0===t.status&&this.isHttp){i.onError(t.status);return}const n=t.status||200;if(!i.validateStatus(n)){i.onError(t.status);return}const s=function network_getArrayBuffer(t){return"string"!=typeof t?t:stringToBytes(t).buffer}(t.response);if(206===n){const e=t.getResponseHeader("Content-Range");if(/bytes \d+-\d+\/\d+/.test(e))i.onDone(s);else{warn('Missing or invalid "Content-Range" header.');i.onError(0)}}else s?i.onDone(s):i.onError(t.status)}_abortRequest(t){if(this.#ks.has(t)){this.#ks.delete(t);t.abort()}}getRangeReader(t,e){const i=super.getRangeReader(t,e);i&&(i.onClosed=()=>this._rangeReaders.delete(i));return i}}class PDFNetworkStreamReader extends BasePDFStreamReader{#_s=endRequests.bind(this);_cachedChunks=[];_done=!1;_requests=[];_storedError=null;constructor(t){super(t);this._fullRequestXhr=t._request({onHeadersReceived:this.#Ms.bind(this),onDone:this.#Is.bind(this),onError:this.#Fs.bind(this),onProgress:this.#Ps.bind(this)})}#Ms(){const t=this._stream,{disableRange:e,rangeChunkSize:i}=t._source,n=this._fullRequestXhr;t._responseOrigin=getResponseOrigin(n.responseURL);const s=n.getAllResponseHeaders(),r=new Headers(s?function trimHeadersEnd(t){let e=t.length;for(;e>0&&" "!==t[e-1]&&/\s/.test(t[e-1]);)e--;return t.slice(0,e)}(s.trimStart()).split(/[\r\n]+/).map(t=>{const[e,...i]=t.split(": ");return[e,i.join(": ")]}):[]),{contentLength:a,isRangeSupported:o}=validateRangeRequestCapabilities({responseHeaders:r,isHttp:t.isHttp,rangeChunkSize:i,disableRange:e});this._contentLength=a;this._isRangeSupported=o;this._filename=extractFilenameFromHeader(r);this._isRangeSupported&&t._abortRequest(n);this._headersCapability.resolve()}#Is(t){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._cachedChunks.push(t);this._done=!0;0===this._cachedChunks.length&&this.#_s()}#Fs(t){this._storedError=createResponseError(t,this._stream.url);this._headersCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._cachedChunks.length=0}#Ps(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}async read(){await this._headersCapability.promise;if(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();this._requests.push(t);return t.promise}cancel(t){this._done=!0;this._headersCapability.reject(t);this.#_s();this._stream._abortRequest(this._fullRequestXhr);this._fullRequestXhr=null}}class PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader{#_s=endRequests.bind(this);onClosed=null;_done=!1;_queuedChunk=null;_requests=[];_storedError=null;constructor(t,e,i){super(t,e,i);this._requestXhr=t._request({begin:e,end:i,onHeadersReceived:this.#Ms.bind(this),onDone:this.#Is.bind(this),onError:this.#Fs.bind(this),onProgress:null})}#Ms(){const t=getResponseOrigin(this._requestXhr?.responseURL);try{ensureResponseOrigin(t,this._stream._responseOrigin)}catch(t){this._storedError=t;this.#Fs(0)}}#Is(t){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._queuedChunk=t;this._done=!0;this.#_s();this.onClosed?.()}#Fs(t){this._storedError??=createResponseError(t,this._stream.url);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._queuedChunk=null}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();this._requests.push(t);return t.promise}cancel(t){this._done=!0;this.#_s();this._stream._abortRequest(this._requestXhr);this.onClosed?.()}}function getReadableStream(t,e=null){const i=process.getBuiltinModule("fs"),{Readable:n}=process.getBuiltinModule("stream"),s=i.createReadStream(t,e);return n.toWeb(s)}class PDFNodeStream extends BasePDFStream{constructor(t){super(t,PDFNodeStreamReader,PDFNodeStreamRangeReader);const{url:e}=t;assert("file:"===e.protocol,"PDFNodeStream only supports file:// URLs.")}}class PDFNodeStreamReader extends BasePDFStreamReader{_reader=null;constructor(t){super(t);const{disableRange:e,disableStream:i,rangeChunkSize:n,url:s}=t._source;this._isStreamingSupported=!i;process.getBuiltinModule("fs/promises").lstat(s).then(t=>{const i=getReadableStream(s);this._reader=i.getReader();const{size:r}=t;this._contentLength=r;this._isRangeSupported=!e&&r>2*n;!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new AbortException("Streaming is disabled."));this._headersCapability.resolve()}).catch(t=>{"ENOENT"===t.code&&(t=createResponseError(0,s));this._headersCapability.reject(t)})}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this._callOnProgress();return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t)}}class PDFNodeStreamRangeReader extends BasePDFStreamRangeReader{_readCapability=Promise.withResolvers();_reader=null;constructor(t,e,i){super(t,e,i);const{url:n}=t._source;try{const t=getReadableStream(n,{start:e,end:i-1});this._reader=t.getReader();this._readCapability.resolve()}catch(t){this._readCapability.reject(t)}}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t)}}class GlobalWorkerOptions{static#Os=null;static#Bs="";static get workerPort(){return this.#Os}static set workerPort(t){if(!("undefined"!=typeof Worker&&t instanceof Worker)&&null!==t)throw new Error("Invalid `workerPort` type.");this.#Os=t}static get workerSrc(){return this.#Bs}static set workerSrc(t){if("string"!=typeof t)throw new Error("Invalid `workerSrc` type.");this.#Bs=t}}class Metadata{#Rs;#Ls;constructor({parsedData:t,rawData:e}){this.#Rs=t;this.#Ls=e}getRaw(){return this.#Ls}get(t){return this.#Rs.get(t)??null}[Symbol.iterator](){return this.#Rs.entries()}}const Bt=Symbol("INTERNAL");class OptionalContentGroup{#Ns=!1;#Us=!1;#Hs=!1;#Gs=!0;constructor(t,{name:e,intent:i,usage:n,rbGroups:s}){this.#Ns=!!(t&a);this.#Us=!!(t&o);this.name=e;this.intent=i;this.usage=n;this.rbGroups=s}get visible(){if(this.#Hs)return this.#Gs;if(!this.#Gs)return!1;const{print:t,view:e}=this.usage;return this.#Ns?"OFF"!==e?.viewState:!this.#Us||"OFF"!==t?.printState}_setVisible(t,e,i=!1){t!==Bt&&unreachable("Internal method `_setVisible` called.");this.#Hs=i;this.#Gs=e}get serializable(){return{userSet:this.#Hs,visible:this.#Gs}}}class OptionalContentConfig{#zs=null;#Ws=new Map;#Vs=null;#$s=null;#js;creator=null;name=null;constructor(t,e=a,i=null){this.#js=t;this.renderingIntent=e;if(null!==t){this.name=t.name;this.creator=t.creator;this.#$s=t.order;for(const i of t.groups)this.#Ws.set(i.id,new OptionalContentGroup(e,i));if(i){i.size!==this.#Ws.size&&unreachable("Incorrect serialized groupState.");for(const[t,e]of i)this.#Ws.get(t)._setVisible(Bt,e.visible,e.userSet)}else{if("OFF"===t.baseState)for(const t of this.#Ws.values())t._setVisible(Bt,!1);for(const e of t.on)this.#Ws.get(e)._setVisible(Bt,!0);for(const e of t.off)this.#Ws.get(e)._setVisible(Bt,!1)}this.#Vs=this.getHash()}}#Xs(t){const e=t.length;if(e<2)return!0;const i=t[0];for(let n=1;nt===e+1)&&(this.#Ks=null)}deletePages(t){this.#Zs();const e=this.#Ks,i=this.#tr();this.#Js={pageNumberToId:e.slice(),pagesNumber:this.#qs,prevPageNumbers:this.#Ys.slice()};const n=this.#qs-t.length;this.#qs=n;const s=this.#Ks=new Uint32Array(n);this.#Ys=new Int32Array(n);let r=0,a=0;for(const i of t){const t=i-1;if(t!==r){s.set(e.subarray(r,t),a);a+=t-r}r=t+1}rthis.#Ks[t-1])}}cancelCopy(){this.#Qs=null}pastePages(t){this.#Zs();const e=this.#Ks,i=this.#tr(),{pageNumbers:n,pageIds:s}=this.#Qs,r=this.#qs+n.length;this.#qs=r;const a=this.#Ks=new Uint32Array(r);this.#Ys=new Int32Array(r);a.set(e.subarray(0,t),0);a.set(s,t);a.set(e.subarray(t),t+n.length);this.#er(i,null,t,n);this.#Qs=null}#er(t,e=null,i=-1,n=null){const s=this.#Ys,r=this.#Ks,a=i+(n?.length??0),o=new Map;for(let l=0,h=this.#qs;l=i&&lt[0]-e[0]);for(let i=0,n=t.length;it-e);const e=new Map;for(let i=0,n=t.length;i({...Promise.withResolvers(),data:Rt});class PDFObjects{#nr=new Map;get(t,e=null){if(e){const i=this.#nr.getOrInsertComputed(t,dataObj);i.promise.then(()=>e(i.data));return null}const i=this.#nr.get(t);if(!i||i.data===Rt)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return i.data}has(t){const e=this.#nr.get(t);return!!e&&e.data!==Rt}delete(t){const e=this.#nr.get(t);if(!e||e.data===Rt)return!1;this.#nr.delete(t);return!0}resolve(t,e=null){const i=this.#nr.getOrInsertComputed(t,dataObj);if(i.data!==Rt)throw new Error(`Object already resolved ${t}.`);i.data=e;i.resolve()}clear(){for(const{data:t}of this.#nr.values())t?.bitmap?.close();this.#nr.clear()}*[Symbol.iterator](){for(const[t,{data:e}]of this.#nr)e!==Rt&&(yield[t,e])}}class TextLayer{#sr=Promise.withResolvers();#Pt=null;#rr=!1;#ar=!!globalThis.FontInspector?.enabled;#or=null;#lr=null;#hr=null;#cr=0;#dr=0;#ur=null;#pr=null;#gr=0;#mr=0;#fr=Object.create(null);#br=[];#yr=null;#vr=[];#wr=new WeakMap;#Ar=null;static#xr=new Map;static#Cr=new Map;static#Er=new WeakMap;static#Sr=null;static#Tr=new Set;constructor({textContentSource:t,images:e,container:i,viewport:n}){if(t instanceof ReadableStream)this.#yr=t;else{if("object"!=typeof t)throw new Error('No "textContentSource" parameter specified.');this.#yr=new ReadableStream({start(e){e.enqueue(t);e.close()}})}this.#Pt=this.#pr=i;this.#or=e;this.#mr=n.scale*OutputScale.pixelRatio;this.#gr=n.rotation;this.#hr={div:null,properties:null,ctx:null};const{pageWidth:s,pageHeight:r,pageX:a,pageY:o}=n.rawDims;this.#Ar=[1,0,0,-1,-a,o+r];this.#dr=s;this.#cr=r;TextLayer.#_r();i.style.setProperty("--min-font-size",TextLayer.#Sr);setLayerDimensions(i,n);this.#sr.promise.finally(()=>{TextLayer.#Tr.delete(this);this.#hr=null;this.#fr=null}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=FeatureTest.platform;return shadow(this,"fontFamilyMap",new Map([["sans-serif",(t&&e?"Calibri, ":"")+"sans-serif"],["monospace",(t&&e?"Lucida Console, ":"")+"monospace"]]))}render(){this.#or&&this.#Pt.append(this.#or.render());const pump=()=>{this.#ur.read().then(({value:t,done:e})=>{if(e)this.#sr.resolve();else{this.#lr??=t.lang;Object.assign(this.#fr,t.styles);this.#kr(t.items);pump()}},this.#sr.reject)};this.#ur=this.#yr.getReader();TextLayer.#Tr.add(this);pump();return this.#sr.promise}update({viewport:t,onBefore:e=null}){const i=t.scale*OutputScale.pixelRatio,n=t.rotation;if(n!==this.#gr){e?.();this.#gr=n;setLayerDimensions(this.#pr,{rotation:n})}if(i!==this.#mr){e?.();this.#mr=i;const t={div:null,properties:null,ctx:TextLayer.#Dr(this.#lr)};for(const e of this.#vr){t.properties=this.#wr.get(e);t.div=e;this.#Pr(t)}}}cancel(){const t=new AbortException("TextLayer task cancelled.");this.#ur?.cancel(t).catch(()=>{});this.#ur=null;this.#sr.reject(t)}get textDivs(){return this.#vr}get textContentItemsStr(){return this.#br}#kr(t){if(this.#rr)return;this.#hr.ctx??=TextLayer.#Dr(this.#lr);const e=this.#vr,i=this.#br;for(const n of t){if(e.length>1e5){warn("Ignoring additional textDivs for performance reasons.");this.#rr=!0;return}if(void 0!==n.str){i.push(n.str);this.#Mr(n)}else if("beginMarkedContentProps"===n.type||"beginMarkedContent"===n.type){const t=this.#Pt;this.#Pt=document.createElement("span");this.#Pt.classList.add("markedContent");n.id&&this.#Pt.setAttribute("id",n.id);"Artifact"===n.tag&&(this.#Pt.ariaHidden=!0);t.append(this.#Pt)}else"endMarkedContent"===n.type&&(this.#Pt=this.#Pt.parentNode)}}#Mr(t){const e=document.createElement("span"),i={angle:0,canvasWidth:0,hasText:""!==t.str,hasEOL:t.hasEOL,fontSize:0};this.#vr.push(e);const n=Util.transform(this.#Ar,t.transform);let s=Math.atan2(n[1],n[0]);const r=this.#fr[t.fontName];r.vertical&&(s+=Math.PI/2);let a=this.#ar&&r.fontSubstitution||r.fontFamily;a=TextLayer.fontFamilyMap.get(a)||a;const o=Math.hypot(n[2],n[3]),l=o*TextLayer.#Ir(a,r,this.#lr);let h,c;if(0===s){h=n[4];c=n[5]-l}else{h=n[4]+l*Math.sin(s);c=n[5]-l*Math.cos(s)}const d=e.style;d.left=`${(100*h/this.#dr).toFixed(2)}%`;d.top=`${(100*c/this.#cr).toFixed(2)}%`;d.setProperty("--font-height",`${o.toFixed(2)}px`);d.fontFamily=a;i.fontSize=o;e.setAttribute("role","presentation");e.textContent=t.str;e.dir=t.dir;this.#ar&&(e.dataset.fontName=r.fontSubstitutionLoadedName||t.fontName);0!==s&&(i.angle=s*(180/Math.PI));let u=!1;if(t.str.length>1)u=!0;else if(" "!==t.str&&t.transform[0]!==t.transform[3]){const e=Math.abs(t.transform[0]),i=Math.abs(t.transform[3]);e!==i&&Math.max(e,i)/Math.min(e,i)>1.5&&(u=!0)}u&&(i.canvasWidth=r.vertical?t.height:t.width);this.#wr.set(e,i);this.#hr.div=e;this.#hr.properties=i;this.#Pr(this.#hr);i.hasText&&this.#Pt.append(e);if(i.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation");this.#Pt.append(t)}}#Pr(t){const{div:e,properties:i,ctx:n}=t,{style:s}=e;if(0!==i.canvasWidth&&i.hasText){const{fontFamily:t}=s,{canvasWidth:r,fontSize:a}=i;TextLayer.#Fr(n,a*this.#mr,t);const{width:o}=n.measureText(e.textContent);o>0&&s.setProperty("--scale-x",r*this.#mr/o)}0!==i.angle&&s.setProperty("--rotate",`${i.angle}deg`)}static cleanup(){if(!(this.#Tr.size>0)){this.#xr.clear();for(const{canvas:t}of this.#Cr.values())t.remove();this.#Cr.clear()}}static#Dr(t=null){let e=this.#Cr.get(t||="");if(!e){const i=document.createElement("canvas");i.style.cssText="position:absolute;top:0;left:0;width:0;height:0;display:none;letter-spacing:normal;word-spacing:normal";i.lang=t;document.body.append(i);e=i.getContext("2d",{alpha:!1,willReadFrequently:!0});this.#Cr.set(t,e);this.#Er.set(e,{size:0,family:""})}return e}static#Fr(t,e,i){const n=this.#Er.get(t);if(e!==n.size||i!==n.family){t.font=`${e}px ${i}`;n.size=e;n.family=i}}static#_r(){if(null!==this.#Sr)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.#Sr=t.getBoundingClientRect().height;t.remove()}static#Ir(t,e,i){const n=this.#xr.get(t);if(n)return n;const s=this.#Dr(i);s.canvas.width=s.canvas.height=30;this.#Fr(s,30,t);const r=s.measureText(""),a=r.fontBoundingBoxAscent,o=Math.abs(r.fontBoundingBoxDescent);s.canvas.width=s.canvas.height=0;let l=.8;if(a)l=a/(a+o);else{FeatureTest.platform.isFirefox&&warn("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.#xr.set(t,l);return l}}function getDocument(e={}){const i=new PDFDocumentLoadingTask,{docId:n}=i,s=e.url?function getUrlProp(e){if(e instanceof URL)return e;if("string"==typeof e){if(t){if(/^[a-z][a-z0-9\-+.]+:/i.test(e))return new URL(e);const t=process.getBuiltinModule("url");return new URL(t.pathToFileURL(e))}const i=URL.parse(e,window.location);if(i)return i}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}(e.url):null,r=e.data?function getDataProp(e){if(t&&"undefined"!=typeof Buffer&&e instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength)return e;if("string"==typeof e)return stringToBytes(e);if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)||"object"==typeof e&&!isNaN(e?.length))return new Uint8Array(e);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}(e.data):null,a=e.httpHeaders||null,o=!0===e.withCredentials,l=e.password??null,h=e.range instanceof PDFDataRangeTransport?e.range:null,c=Number.isInteger(e.rangeChunkSize)&&e.rangeChunkSize>0?e.rangeChunkSize:65536;let d=e.worker instanceof PDFWorker?e.worker:null;const u=e.verbosity,p="string"!=typeof e.docBaseUrl||isDataScheme(e.docBaseUrl)?null:e.docBaseUrl,g=getFactoryUrlProp(e.cMapUrl),m=!1!==e.cMapPacked,f=getFactoryUrlProp(e.iccUrl),b=getFactoryUrlProp(e.standardFontDataUrl),y=getFactoryUrlProp(e.wasmUrl),v=!0!==e.stopAtErrors,w=Number.isInteger(e.maxImageSize)&&e.maxImageSize>-1?e.maxImageSize:-1,A="boolean"==typeof e.isOffscreenCanvasSupported?e.isOffscreenCanvasSupported:!t,x="boolean"==typeof e.isImageDecoderSupported?e.isImageDecoderSupported:!t,C=Number.isInteger(e.canvasMaxAreaInBytes)?e.canvasMaxAreaInBytes:-1,E="boolean"==typeof e.disableFontFace?e.disableFontFace:t,S=!0===e.fontExtraProperties,T=!0===e.enableXfa,_=e.ownerDocument||globalThis.document,k=!0===e.disableRange,D=!0===e.disableStream,P=!0===e.disableAutoFetch,M=!0===e.pdfBug,I=e.CanvasFactory||(t?NodeCanvasFactory:DOMCanvasFactory),F=e.FilterFactory||(t?NodeFilterFactory:DOMFilterFactory),O=e.BinaryDataFactory||(t?NodeBinaryDataFactory:DOMBinaryDataFactory),B=!0===e.enableHWA,R=!0===e.enableWebGPU?function initGPU(){return Ct.init()}():Promise.resolve(!1),L=!1!==e.useWasm,N=e.pagesMapper||new PagesMapper,U="boolean"==typeof e.useSystemFonts?e.useSystemFonts:!t&&!E,H="boolean"==typeof e.useWorkerFetch?e.useWorkerFetch:!!(O===DOMBinaryDataFactory&&g&&m&&b&&y&&isValidFetchUrl(g,document.baseURI)&&isValidFetchUrl(b,document.baseURI)&&isValidFetchUrl(y,document.baseURI));setVerbosityLevel(u);const G={canvasFactory:new I({ownerDocument:_,enableHWA:B}),filterFactory:new F({docId:n,ownerDocument:_}),binaryDataFactory:H?null:new O({cMapUrl:g,standardFontDataUrl:b,wasmUrl:y})};if(!d){d=PDFWorker.create({verbosity:u,port:GlobalWorkerOptions.workerPort});i._worker=d}const z={docId:n,apiVersion:"6.3.289",data:r,password:l,disableAutoFetch:P,rangeChunkSize:c,docBaseUrl:p,enableXfa:T,evaluatorOptions:{maxImageSize:w,disableFontFace:E,ignoreErrors:v,isOffscreenCanvasSupported:A,isImageDecoderSupported:x,canvasMaxAreaInBytes:C,fontExtraProperties:S,useSystemFonts:U,useWasm:L,useWorkerFetch:H,cMapUrl:g,cMapPacked:m,iccUrl:f,standardFontDataUrl:b,wasmUrl:y,hasGPU:!1}},W={ownerDocument:_,pdfBug:M,styleElement:null,enableHWA:B,loadingParams:{disableAutoFetch:P,enableXfa:T}};Promise.all([d.promise,R]).then(function([,e]){if(d.destroyed)throw new Error("Worker was destroyed");z.evaluatorOptions.hasGPU=e;const l=d.messageHandler.sendWithPromise("GetDocRequest",z,r?[r.buffer]:null);let u;if(r);else if(h)u=new PDFDataTransportStream({pdfDataRangeTransport:h,disableRange:k,disableStream:D});else{if(!s)throw new Error("getDocument - expected either `data`, `range`, or `url` parameter.");{const e=function getNetworkStream(e){return isValidFetchUrl(e)?PDFFetchStream:t?PDFNodeStream:PDFNetworkStream}(s);u=new e({url:s,httpHeaders:a,withCredentials:o,rangeChunkSize:c,disableRange:k,disableStream:D})}}return l.then(t=>{if(d.destroyed)throw new Error("Worker was destroyed");const e=new MessageHandler(n,t,d.port),s=new WorkerTransport(e,i,u,W,G,N);i._transport=s;if(i.destroyed)throw new Error("Loading aborted");e.send("Ready",null)})}).catch(i._capability.reject).finally(i._setupCapability.resolve);return i}class PDFDocumentLoadingTask{static#Bn=0;_capability=Promise.withResolvers();_setupCapability=Promise.withResolvers();_transport=null;_worker=null;docId="d"+PDFDocumentLoadingTask.#Bn++;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){this._worker?.port&&delete this._worker._pendingDestroy;throw t}this._transport=null;this._worker?.destroy();this._worker=null}async getData(){return this._transport.getData()}}class PDFDataRangeTransport{#sr=Promise.withResolvers();#Or=null;constructor(t,e,i=!1,n=null){this.length=t;this.initialData=e;this.progressiveDone=i;this.contentDispositionFilename=n}onDataRange(t,e){this.#Or({type:"range",begin:t,chunk:e})}onDataProgressiveRead(t){this.#sr.promise.then(()=>{this.#Or({type:"progressiveRead",chunk:t})})}onDataProgressiveDone(){this.#sr.promise.then(()=>{this.#Or({type:"progressiveDone"})})}transportReady(t){this.#Or=t;this.#sr.resolve()}requestDataRange(t,e){unreachable("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class PDFDocumentProxy{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 shadow(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 PDFPageProxy{#Br=!1;#Rr=null;constructor(t,e,i,n,s=!1){this._pageIndex=t;this._pageInfo=e;this._transport=i;this._stats=s?new StatTimer:null;this._pdfBug=s;this.commonObjs=i.commonObjs;this.objs=new PDFObjects;this._intentStates=new Map;this.destroyed=!1;this.recordedBBoxes=null;this.#Rr=n;this.imageCoordinates=null}clone(t){const e=new PDFPageProxy(t,this._pageInfo,this._transport,this.#Rr,this._pdfBug);e.clonedFromIndex=this.clonedFromIndex??this._pageIndex;this._transport.updatePage(e);return 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:i=0,offsetY:n=0,dontFlip:s=!1}={}){return new PageViewport({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:i,offsetY:n,dontFlip:s})}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 shadow(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:t,canvas:e=t.canvas,viewport:i,intent:n="display",annotationMode:s=p.ENABLE,transform:r=null,background:a=null,optionalContentConfigPromise:l=null,annotationCanvasMap:h=null,pageColors:c=null,printAnnotationStorage:d=null,isEditing:u=!1,recordImages:g=!1,recordOperations:m=!1,operationsFilter:f=null}){this._stats?.time("Overall");const b=this._transport.getRenderingIntent(n,s,d,u),{renderingIntent:y,cacheKey:v}=b;this.#Br=!1;l||=this._transport.getOptionalContentConfig(y);const w=this._intentStates.getOrInsertComputed(v,makeObj);if(w.streamReaderCancelTimeout){clearTimeout(w.streamReaderCancelTimeout);w.streamReaderCancelTimeout=null}const A=!!(y&o);if(!w.displayReadyCapability){w.displayReadyCapability=Promise.withResolvers();w.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(b)}const x=!(!this._pdfBug||!globalThis.StepperManager?.enabled),C=!!e&&!this.recordedBBoxes&&(m||x),E=!!e&&!this.imageCoordinates&&g,complete=t=>{w.renderTasks.delete(_);if(C){const t=_.gfx?.dependencyTracker.take();if(t){_.stepper?.setOperatorBBoxes(t,_.gfx.dependencyTracker.takeDebugMetadata());m&&(this.recordedBBoxes=t)}}E&&!t&&(this.imageCoordinates=_.gfx?.imagesTracker.take());A&&(this.#Br=!0);this.#Lr();if(t){_.capability.reject(t);this._abortOperatorList({intentState:w,reason:t instanceof Error?t:new Error(t)})}else _.capability.resolve();if(this._stats){this._stats.timeEnd("Rendering");this._stats.timeEnd("Overall");globalThis.Stats?.enabled&&globalThis.Stats.add(this.pageNumber,this._stats)}};let S=null,T=null;(C||E)&&(T=new CanvasBBoxTracker(e,w.operatorList.length));C&&(S=new CanvasDependencyTracker(T,x));const _=new InternalRenderTask({callback:complete,params:{canvas:e,canvasContext:t,dependencyTracker:S??T,imagesTracker:E?new CanvasImagesTracker(e):null,viewport:i,transform:r,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:h,operatorList:w.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!A,pdfBug:this._pdfBug,pageColors:c,enableHWA:this._transport.enableHWA,operationsFilter:f});(w.renderTasks||=new Set).add(_);const k=_.task;Promise.all([w.displayReadyCapability.promise,l]).then(([t,e])=>{if(this.destroyed)complete();else{this._stats?.time("Rendering");if(!(e.renderingIntent&y))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");_.initializeGraphics({transparency:t,optionalContentConfig:e});_.operatorListChanged()}}).catch(complete);return k}getOperatorList({intent:t="display",annotationMode:e=p.ENABLE,printAnnotationStorage:i=null,isEditing:n=!1}={}){const s=this._transport.getRenderingIntent(t,e,i,n,!0),r=this._intentStates.getOrInsertComputed(s.cacheKey,makeObj);let a;if(!r.opListReadCapability){a=Object.create(null);a.operatorListChanged=function operatorListChanged(){if(r.operatorList.lastChunk){r.opListReadCapability.resolve(r.operatorList);r.renderTasks.delete(a)}};r.opListReadCapability=Promise.withResolvers();(r.renderTasks||=new Set).add(a);r.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(s)}return r.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageId:this.#Rr.getPageId(this._pageIndex+1)-1,pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size:t=>t.items.length})}async getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then(t=>XfaText.textContent(t));const e=this.streamTextContent(t),i={items:[],styles:Object.create(null),lang:null};for await(const t of e){i.lang??=t.lang;Object.assign(i.styles,t.styles);i.items.push(...t.items)}return i}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values()){this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0});if(!e.opListReadCapability)for(const i of e.renderTasks){t.push(i.completed);i.cancel()}}this.objs.clear();this.#Br=!1;return Promise.all(t)}cleanup(t=!1){this.#Br=!0;const e=this.#Lr();t&&e&&(this._stats&&=new StatTimer);return e}#Lr(){if(!this.#Br||this.destroyed)return!1;for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;this._intentStates.clear();this.objs.clear();this.#Br=!1;return!0}_startRenderPage(t,e){const i=this._intentStates.get(e);if(i){this._stats?.timeEnd("Page Request");i.displayReadyCapability?.resolve(t)}}_renderPageChunk(t,e){for(let i=0,n=t.length;i{a.read().then(({value:t,done:e})=>{if(e)o.streamReader=null;else if(!this._transport.destroyed){this._renderPageChunk(t,o);pump()}},t=>{o.streamReader=null;if(!this._transport.destroyed){if(o.operatorList){o.operatorList.lastChunk=!0;for(const t of o.renderTasks)t.operatorListChanged();this.#Lr()}if(o.displayReadyCapability)o.displayReadyCapability.reject(t);else{if(!o.opListReadCapability)throw t;o.opListReadCapability.reject(t)}}})};pump()}_abortOperatorList({intentState:t,reason:e,force:i=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout){clearTimeout(t.streamReaderCancelTimeout);t.streamReaderCancelTimeout=null}if(!i){if(t.renderTasks.size>0)return;if(e instanceof RenderingCancelledException){let i=100;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}}t.streamReader.cancel(new AbortException(e.message)).catch(()=>{});t.streamReader=null;if(!this._transport.destroyed){for(const[e,i]of this._intentStates)if(i===t){this._intentStates.delete(e);break}this.cleanup()}}}get stats(){return this._stats}}class PDFWorker{#sr=Promise.withResolvers();#Nr=null;#Os=null;#Ur=null;static#Hr=0;static#Gr=!1;static#zr=new WeakMap;static{if(t){this.#Gr=!0;GlobalWorkerOptions.workerSrc||="./pdf.worker.mjs"}this._isSameOrigin=(t,e)=>{const i=URL.parse(t);if(!i?.origin||"null"===i.origin)return!1;const n=new URL(e,i);return i.origin===n.origin};this._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))}}constructor({name:t=null,port:e=null,verbosity:i=getVerbosityLevel()}={}){this.name=t;this.destroyed=!1;this.verbosity=i;if(e){if(PDFWorker.#zr.has(e))throw new Error("Cannot use more than one PDFWorker per port.");PDFWorker.#zr.set(e,this);this.#Wr(e)}else this.#Vr()}get promise(){return this.#sr.promise}#$r(){this.#sr.resolve();this.#Nr.send("configure",{verbosity:this.verbosity})}get port(){return this.#Os}get messageHandler(){return this.#Nr}#Wr(t){this.#Os=t;this.#Nr=new MessageHandler("main","worker",t);this.#Nr.on("ready",()=>{});this.#$r()}#Vr(){if(PDFWorker.#Gr||PDFWorker.#jr){this.#Xr();return}let{workerSrc:t}=PDFWorker;try{PDFWorker._isSameOrigin(window.location,t)||(t=PDFWorker._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),i=new MessageHandler("main","worker",e),terminateEarly=()=>{n.abort();i.destroy();e.terminate();this.destroyed?this.#sr.reject(new Error("Worker was destroyed")):this.#Xr()},n=new AbortController;e.addEventListener("error",()=>{this.#Ur||terminateEarly()},{signal:n.signal});i.on("test",t=>{n.abort();if(!this.destroyed&&t){this.#Nr=i;this.#Os=e;this.#Ur=e;this.#$r()}else terminateEarly()});i.on("ready",t=>{n.abort();if(this.destroyed)terminateEarly();else try{sendTest()}catch{this.#Xr()}});const sendTest=()=>{const t=new Uint8Array;i.send("test",t,[t.buffer])};sendTest();return}catch{info("The worker has been disabled.")}this.#Xr()}#Xr(){if(!PDFWorker.#Gr){warn("Setting up fake worker.");PDFWorker.#Gr=!0}PDFWorker._setupFakeWorkerGlobal.then(t=>{if(this.destroyed){this.#sr.reject(new Error("Worker was destroyed"));return}const e=new LoopbackPort;this.#Os=e;const i="fake"+PDFWorker.#Hr++,n=new MessageHandler(i+"_worker",i,e);t.setup(n,e);this.#Nr=new MessageHandler(i,i+"_worker",e);this.#$r()}).catch(t=>{this.#sr.reject(new Error(`Setting up fake worker failed: "${t.message}".`))})}destroy(){this.destroyed=!0;this.#Ur?.terminate();this.#Ur=null;PDFWorker.#zr.delete(this.#Os);this.#Os=null;this.#Nr?.destroy();this.#Nr=null}static create(t){const e=this.#zr.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 PDFWorker(t)}static get workerSrc(){if(GlobalWorkerOptions.workerSrc)return GlobalWorkerOptions.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get#jr(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){return shadow(this,"_setupFakeWorkerGlobal",(async()=>{if(this.#jr)return this.#jr;return(await import( +/*webpackIgnore: true*/ +/*@vite-ignore*/ +this.workerSrc)).WorkerMessageHandler})())}}class WorkerTransport{downloadInfoCapability=Promise.withResolvers();#Kr=null;#Yr=new Map;#qr=null;#Qr=new Map;#Jr=new Map;#Zr=new Map;#ta=null;constructor(t,e,i,n,s,r){this.messageHandler=t;this.loadingTask=e;this.#qr=i;this.commonObjs=new PDFObjects;this.fontLoader=new FontLoader({ownerDocument:n.ownerDocument,styleElement:n.styleElement});this.enableHWA=n.enableHWA;this.loadingParams=n.loadingParams;this._params=n;this.canvasFactory=s.canvasFactory;this.filterFactory=s.filterFactory;this.binaryDataFactory=s.binaryDataFactory;this.pagesMapper=r;this.destroyed=!1;this.destroyCapability=null;this.setupMessageHandler()}updatePage(t){const{_pageIndex:e}=t;this.#Qr.set(e,t);this.#Jr.set(e,Promise.resolve(t))}#ea(t,e=null){return this.#Yr.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,e))}#Ps({loaded:t,total:e}){this.loadingTask.onProgress?.({loaded:t,total:e,percent:e?MathClamp(Math.round(t/e*100),0,100):NaN})}get annotationStorage(){return shadow(this,"annotationStorage",new AnnotationStorage)}getRenderingIntent(t,e=p.ENABLE,i=null,n=!1,s=!1){let g=a,m=Z;switch(t){case"any":g=r;break;case"display":break;case"print":g=o;break;default:warn(`getRenderingIntent - invalid intent: ${t}`)}const f=g&o&&i instanceof PrintAnnotationStorage?i:this.annotationStorage;switch(e){case p.DISABLE:g+=c;break;case p.ENABLE:break;case p.ENABLE_FORMS:g+=l;break;case p.ENABLE_STORAGE:g+=h;m=f.serializable;break;default:warn(`getRenderingIntent - invalid annotationMode: ${e}`)}n&&(g+=d);s&&(g+=u);const{ids:b,hash:y}=f.modifiedIds;return{renderingIntent:g,cacheKey:[g,m.hash,y].join("_"),annotationStorageSerializable:m,modifiedIds:b}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0;this.destroyCapability=Promise.withResolvers();this.#ta?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const e of this.#Qr.values())t.push(e._destroy());this.#Qr.clear();this.#Jr.clear();this.#Zr.clear();Object.hasOwn(this,"annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);t.push(e);Promise.all(t).then(()=>{this.commonObjs.clear();this.fontLoader.clear();this.#Yr.clear();this.filterFactory.destroy();TextLayer.cleanup();this.#qr?.cancelAllRequests(new AbortException("Worker was terminated."));this.messageHandler?.destroy();this.messageHandler=null;this.destroyCapability.resolve()},this.destroyCapability.reject);return this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",(t,e)=>{assert(this.#qr,"GetReader - no `BasePDFStream` instance available.");this.#Kr=this.#qr.getFullReader();this.#Kr.onProgress=t=>this.#Ps(t);e.onPull=()=>{this.#Kr.read().then(function({value:t,done:i}){if(i)e.close();else{assert(t instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(t),1,[t])}}).catch(t=>{e.error(t)})};e.onCancel=t=>{this.#Kr.cancel(t);e.ready.catch(t=>{if(!this.destroyed)throw t})}});t.on("ReaderHeadersReady",async t=>{await this.#Kr.headersReady;const{isStreamingSupported:e,isRangeSupported:i,contentLength:n}=this.#Kr;e&&i&&(this.#Kr.onProgress=null);return{isStreamingSupported:e,isRangeSupported:i,contentLength:n}});t.on("GetRangeReader",(t,e)=>{assert(this.#qr,"GetRangeReader - no `BasePDFStream` instance available.");const i=this.#qr.getRangeReader(t.begin,t.end);if(i){e.onPull=()=>{i.read().then(function({value:t,done:i}){if(i)e.close();else{assert(t instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(t),1,[t])}}).catch(t=>{e.error(t)})};e.onCancel=t=>{i.cancel(t);e.ready.catch(t=>{if(!this.destroyed)throw t})}}else e.close()});t.on("GetDoc",({pdfInfo:t})=>{this.pagesMapper.pagesNumber=t.numPages;this._numPages=t.numPages;this._htmlForXfa=t.htmlForXfa;delete t.htmlForXfa;e._capability.resolve(new PDFDocumentProxy(t,this))});t.on("DocException",t=>{e._capability.reject(wrapReason(t))});t.on("PasswordRequest",t=>{this.#ta=Promise.withResolvers();try{if(!e.onPassword)throw wrapReason(t);const updatePassword=t=>{t instanceof Error?this.#ta.reject(t):this.#ta.resolve({password:t})};e.onPassword(updatePassword,t.code)}catch(t){this.#ta.reject(t)}return this.#ta.promise});t.on("DataLoaded",t=>{this.#Ps({loaded:t.length,total:t.length});this.downloadInfoCapability.resolve(t)});t.on("StartRenderPage",t=>{if(this.destroyed)return;this.#Qr.get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)});t.on("commonobj",([e,i,n])=>{if(this.destroyed)return null;if(this.commonObjs.has(e))return null;switch(i){case"Font":if("error"in n){const t=n.error;warn(`Error during font loading: ${t}`);this.commonObjs.resolve(e,t);break}const s=new FontInfo(n),r=this._params.pdfBug&&globalThis.FontInspector?.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,a=new FontFaceObject(s,r,n.charProcOperatorList,n.extra);this.fontLoader.bind(a).catch(()=>t.sendWithPromise("FontFallback",{id:e})).finally(()=>{a.fontExtraProperties||a.clearData();this.commonObjs.resolve(e,a)});break;case"CopyLocalImage":const{imageRef:o}=n;assert(o,"The imageRef must be defined.");for(const t of this.#Qr.values())for(const[,i]of t.objs){if(i?.ref!==o)continue;if(!i.dataLen)return null;const t=structuredClone(i);this.commonObjs.resolve(e,t);return i.dataLen}break;case"FontPath":this.commonObjs.resolve(e,new FontPathInfo(n));break;case"Image":this.commonObjs.resolve(e,n);break;case"Pattern":const l=new PatternInfo(n);this.commonObjs.resolve(e,l.getIR());break;default:throw new Error(`Got unknown common object type ${i}`)}return null});t.on("obj",([t,e,i,n])=>{if(this.destroyed)return;const s=this.#Qr.get(e);if(!s.objs.has(t))if(0!==s._intentStates.size)switch(i){case"Image":case"Pattern":s.objs.resolve(t,n);break;default:throw new Error(`Got unknown object type ${i}`)}else n?.bitmap?.close()});t.on("DocProgress",t=>{this.destroyed||this.#Ps(t)});t.on("FetchBinaryData",async t=>{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(t)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&warn("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.#Kr?.filename??null},e).finally(()=>{this.annotationStorage.resetModified()})}extractPages(t,e=null){const i={pageInfos:t};let n;const s=globalThis.ImageBitmap;if("function"==typeof s){const e=Array.isArray(t)?t:[t];for(const t of e)t?.image instanceof s&&(n||=[]).push(t.image)}if(this.annotationStorage.size>0){const t=this.annotationStorage.serializable;let{map:s}=t;t.transfer?.length&&(n?n.push(...t.transfer):n=t.transfer);const r=this.pagesMapper.getMapping();if(r){const t=new Map;for(const[i,n]of s){if(void 0!==n?.pageIndex&&n.pageIndex>=0&&n.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,i=this.pagesMapper.getPageId(t)-1,n=this.#Jr.get(e);if(n)return n;const s=this.messageHandler.sendWithPromise("GetPage",{pageIndex:i}).then(t=>{if(this.destroyed)throw new Error("Transport destroyed");t.refStr&&this.#Zr.set(t.refStr,i);const n=new PDFPageProxy(e,t,this,this.pagesMapper,this._params.pdfBug);this.#Qr.set(e,n);return n});this.#Jr.set(e,s);return s}async getPageIndex(t){if(!isRefProxy(t))throw new Error("Invalid pageIndex request.");const e=await this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}),i=this.pagesMapper.getPageNumber(e+1);if(0===i)throw new Error("GetPageIndex: page has been removed.");return i-1}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:this.pagesMapper.getPageId(t+1)-1,intent:e})}getFieldObjects(){return this.#ea("GetFieldObjects")}getSignatures(){return this.#ea("GetSignatures")}getSignatureData(t){return this.messageHandler.sendWithPromise("GetSignatureData",t)}hasJSActions(){return this.#ea("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?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.#ea("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.#ea("GetOptionalContentConfig").then(e=>new OptionalContentConfig(e,t))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata";return this.#Yr.getOrInsertComputed(t,()=>this.messageHandler.sendWithPromise(t,null).then(t=>({info:t[0],metadata:t[1]?new Metadata(t[1]):null,contentDispositionFilename:this.#Kr?.filename??null,contentLength:this.#Kr?.contentLength??null,hasStructTree:t[2]})))}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of this.#Qr.values()){if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`)}this.commonObjs.clear();t||this.fontLoader.clear();this.#Yr.clear();this.filterFactory.destroy(!0);TextLayer.cleanup()}}cachedPageNumber(t){if(!isRefProxy(t))return null;const e=0===t.gen?`${t.num}R`:`${t.num}R${t.gen}`,i=this.#Zr.get(e);if(i>=0){const t=this.pagesMapper.getPageNumber(i+1);if(0!==t)return t}return null}}class RenderTask{_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 InternalRenderTask{#ia=null;static#na=new WeakSet;constructor({callback:t,params:e,objs:i,commonObjs:n,annotationCanvasMap:s,operatorList:r,pageIndex:a,canvasFactory:o,filterFactory:l,useRequestAnimationFrame:h=!1,pdfBug:c=!1,pageColors:d=null,enableHWA:u=!1,operationsFilter:p=null}){this.callback=t;this.params=e;this.objs=i;this.commonObjs=n;this.annotationCanvasMap=s;this.operatorListIdx=null;this.operatorList=r;this._pageIndex=a;this.canvasFactory=o;this.filterFactory=l;this._pdfBug=c;this.pageColors=d;this.running=!1;this.graphicsReadyCallback=null;this.graphicsReady=!1;this._useRequestAnimationFrame=!0===h&&"undefined"!=typeof window;this.cancelled=!1;this.capability=Promise.withResolvers();this.task=new RenderTask(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=u;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(InternalRenderTask.#na.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.");InternalRenderTask.#na.add(this._canvas)}if(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:i,transform:n,background:s,dependencyTracker:r,imagesTracker:a}=this.params,o=this._canvasContext||this._canvas.getContext("2d",{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new CanvasGraphics(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:e},this.annotationCanvasMap,this.pageColors,r,a);this.gfx.beginDrawing({transform:n,viewport:i,transparency:t,background:s});this.operatorListIdx=0;this.graphicsReady=!0;this.graphicsReadyCallback?.()}cancel(t=null,e=0){this.running=!1;this.cancelled=!0;this.gfx?.endDrawing();if(this.#ia){window.cancelAnimationFrame(this.#ia);this.#ia=null}InternalRenderTask.#na.delete(this._canvas);t||=new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex+1}`,e);this.callback(t);this.task.onError?.(t)}operatorListChanged(){if(this.graphicsReady){this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);this.stepper?.updateOperatorList(this.operatorList);this.running||this._continue()}else this.graphicsReadyCallback||=this._continueBound}_continue(){this.running=!0;this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?this.#ia=window.requestAnimationFrame(()=>{this.#ia=null;this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){if(!this.cancelled){this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter);if(this.operatorListIdx===this.operatorList.argsArray.length){this.running=!1;if(this.operatorList.lastChunk){this.gfx.endDrawing();InternalRenderTask.#na.delete(this._canvas);this.callback()}}}}}const Lt="6.3.289",Nt="1c8020a7d";class ColorPicker{#sa=null;#ra=null;#aa;#oa=null;#la=!1;#ha=!1;#o=null;#ca;#da=null;#v=null;static#ua=null;static get _keyboardManager(){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]]))}constructor({editor:t=null,uiManager:e=null}){if(t){this.#ha=!1;this.#o=t}else this.#ha=!0;this.#v=t?._uiManager||e;this.#ca=this.#v._eventBus;this.#aa=t?.color?.toUpperCase()||this.#v?.highlightColors.values().next().value||"#FFFF98";ColorPicker.#ua||=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.#sa=document.createElement("button");t.className="colorPicker";t.tabIndex="0";t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button");t.ariaHasPopup="true";this.#o&&(t.ariaControls=`${this.#o.id}_colorpicker_dropdown`);const e=this.#v._signal;t.addEventListener("click",this.#pa.bind(this),{signal:e});t.addEventListener("keydown",this.#ga.bind(this),{signal:e});const i=this.#ra=document.createElement("span");i.className="swatch";i.ariaHidden="true";i.style.backgroundColor=this.#aa;t.append(i);return t}renderMainDropdown(){const t=this.#oa=this.#ma();t.ariaOrientation="horizontal";t.ariaLabelledBy="highlightColorPickerLabel";return t}#ma(){const t=document.createElement("div"),e=this.#v._signal;t.addEventListener("contextmenu",noContextMenu,{signal:e});t.className="dropdown";t.role="listbox";t.ariaMultiSelectable="false";t.ariaOrientation="vertical";t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");this.#o&&(t.id=`${this.#o.id}_colorpicker_dropdown`);for(const[i,n]of this.#v.highlightColors){const s=document.createElement("button");s.tabIndex="0";s.role="option";s.setAttribute("data-color",n);s.title=i;s.setAttribute("data-l10n-id",ColorPicker.#ua[i]);const r=document.createElement("span");s.append(r);r.className="swatch";r.style.backgroundColor=n;s.ariaSelected=n===this.#aa;s.addEventListener("click",this.#fa.bind(this,n),{signal:e});t.append(s)}t.addEventListener("keydown",this.#ga.bind(this),{signal:e});return t}#fa(t,e){e.stopPropagation();this.#ca.dispatch("switchannotationeditorparams",{source:this,type:b.HIGHLIGHT_COLOR,value:t});this.update(t)}_colorSelectFromKeyboard(t){if(t.target===this.#sa){this.#pa(t);return}const e=t.target.getAttribute("data-color");e&&this.#fa(e,t)}_moveToNext(t){this.#ba?t.target!==this.#sa?t.target.nextSibling?.focus():this.#oa.firstElementChild?.focus():this.#pa(t)}_moveToPrevious(t){if(t.target!==this.#oa?.firstElementChild&&t.target!==this.#sa){this.#ba||this.#pa(t);t.target.previousSibling?.focus()}else this.#ba&&this._hideDropdownFromKeyboard()}_moveToBeginning(t){this.#ba?this.#oa.firstElementChild?.focus():this.#pa(t)}_moveToEnd(t){this.#ba?this.#oa.lastElementChild?.focus():this.#pa(t)}#ga(t){ColorPicker._keyboardManager.exec(this,t)}#pa(t){if(this.#ba){this.hideDropdown();return}this.#la=0===t.detail;if(!this.#da){this.#da=new AbortController;window.addEventListener("pointerdown",this.#g.bind(this),{signal:this.#v.combinedSignal(this.#da)})}this.#sa.ariaExpanded="true";if(this.#oa){this.#oa.classList.remove("hidden");return}const e=this.#oa=this.#ma();this.#sa.append(e)}#g(t){this.#oa?.contains(t.target)||this.hideDropdown()}hideDropdown(){this.#oa?.classList.add("hidden");this.#sa.ariaExpanded="false";this.#da?.abort();this.#da=null}get#ba(){return this.#oa&&!this.#oa.classList.contains("hidden")}_hideDropdownFromKeyboard(){if(!this.#ha)if(this.#ba){this.hideDropdown();this.#sa.focus({preventScroll:!0,focusVisible:this.#la})}else this.#o?.unselect()}update(t){this.#ra&&(this.#ra.style.backgroundColor=t);if(!this.#oa)return;const e=this.#v.highlightColors.values();for(const i of this.#oa.children)i.ariaSelected=e.next().value===t.toUpperCase()}destroy(){this.#sa?.remove();this.#sa=null;this.#ra=null;this.#oa?.remove();this.#oa=null}}class BasicColorPicker{#ya=null;#va=!1;#o=null;#v=null;static#ua=null;constructor(t){this.#o=t;this.#v=t._uiManager;BasicColorPicker.#ua||=Object.freeze({freetext:"pdfjs-editor-color-picker-free-text-input",ink:"pdfjs-editor-color-picker-ink-input"})}renderButton(){if(this.#ya)return this.#ya;const{editorType:t,colorType:e,colorAndOpacityType:i,opacityType:n,color:s,opacity:r}=this.#o,a=this.#va=FeatureTest.isAlphaColorInputSupported&&void 0!==n,o=this.#ya=document.createElement("input");o.type="color";if(a){o.setAttribute("alpha","");const t=Util.hexNums[Math.round(255*(r??1))];o.value=(s||"#000000")+t}else o.value=s||"#000000";o.className="basicColorPicker";o.tabIndex=0;o.setAttribute("data-l10n-id",BasicColorPicker.#ua[t]);o.addEventListener("input",()=>{if(a){const t=getRGBA(o.value);if(!t)return;const[s,r,a,l]=t,h=Util.makeHexColor(s,r,a);if(void 0!==i)this.#v.updateParams(i,{color:h,opacity:l});else{this.#v.updateParams(e,h);this.#v.updateParams(n,l)}}else this.#v.updateParams(e,o.value)},{signal:this.#v._signal});return o}update(t){if(this.#ya)if(this.#va){const e=Util.hexNums[Math.round(255*this.#o.opacity)];this.#ya.value=t+e}else this.#ya.value=t}updateOpacity(t){if(!this.#ya||!this.#va)return;const e=Util.hexNums[Math.round(255*t)];this.#ya.value=this.#o.color+e}destroy(){this.#ya?.remove();this.#ya=null}hideDropdown(){}}function makeColorComp(t){return Math.floor(255*MathClamp(t,0,1)).toString(16).padStart(2,"0")}function scaleAndClamp(t){return 255*MathClamp(t,0,1)}class ColorConverters{static CMYK_G([t,e,i,n]){return["G",1-Math.min(1,.3*t+.59*i+.11*e+n)]}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=scaleAndClamp(t),t,t]}static G_HTML([t]){const e=makeColorComp(t);return`#${e}${e}${e}`}static RGB_G([t,e,i]){return["G",.3*t+.59*e+.11*i]}static RGB_rgb(t){return t.map(scaleAndClamp)}static RGB_HTML(t){return`#${t.map(makeColorComp).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,i,n]){return["RGB",1-Math.min(1,t+n),1-Math.min(1,i+n),1-Math.min(1,e+n)]}static CMYK_rgb([t,e,i,n]){return[scaleAndClamp(1-Math.min(1,t+n)),scaleAndClamp(1-Math.min(1,i+n)),scaleAndClamp(1-Math.min(1,e+n))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,i]){const n=1-t,s=1-e,r=1-i;return["CMYK",n,s,r,Math.min(n,s,r)]}}class BaseSVGFactory{create(t,e,i=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const n=this._createSVG("svg:svg");n.setAttribute("version","1.1");if(!i){n.setAttribute("width",`${t}px`);n.setAttribute("height",`${e}px`)}n.setAttribute("preserveAspectRatio","none");n.setAttribute("viewBox",`0 0 ${t} ${e}`);return n}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){unreachable("Abstract method `_createSVG` called.")}}class DOMSVGFactory extends BaseSVGFactory{_createSVG(t){return document.createElementNS(s,t)}}const Ut=new WeakSet,Ht=60*(new Date).getTimezoneOffset()*1e3;class AnnotationElementFactory{static create(t){switch(t.data.annotationType){case T.LINK:return new LinkAnnotationElement(t);case T.TEXT:return new TextAnnotationElement(t);case T.WIDGET:switch(t.data.fieldType){case"Tx":return new TextWidgetAnnotationElement(t);case"Btn":return t.data.radioButton?new RadioButtonWidgetAnnotationElement(t):t.data.checkBox?new CheckboxWidgetAnnotationElement(t):new PushButtonWidgetAnnotationElement(t);case"Ch":return new ChoiceWidgetAnnotationElement(t);case"Sig":return new SignatureWidgetAnnotationElement(t)}return new WidgetAnnotationElement(t);case T.POPUP:return new PopupAnnotationElement(t);case T.FREETEXT:return new FreeTextAnnotationElement(t);case T.LINE:return new LineAnnotationElement(t);case T.SQUARE:return new SquareAnnotationElement(t);case T.CIRCLE:return new CircleAnnotationElement(t);case T.POLYLINE:return new PolylineAnnotationElement(t);case T.CARET:return new CaretAnnotationElement(t);case T.INK:return new InkAnnotationElement(t);case T.POLYGON:return new PolygonAnnotationElement(t);case T.HIGHLIGHT:return new HighlightAnnotationElement(t);case T.UNDERLINE:return new UnderlineAnnotationElement(t);case T.SQUIGGLY:return new SquigglyAnnotationElement(t);case T.STRIKEOUT:return new StrikeOutAnnotationElement(t);case T.STAMP:return new StampAnnotationElement(t);case T.FILEATTACHMENT:return new FileAttachmentAnnotationElement(t);case T.RICHMEDIA:case T.SCREEN:case T.SOUND:return new MediaAnnotationElement(t);default:return new AnnotationElement(t)}}}class AnnotationElement{#wa=null;#Aa=!1;#xa=null;constructor(t,{isRenderable:e=!1,ignoreBorder:i=!1,createQuadrilaterals:n=!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(i));n&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:t,richText:e}){return!(!t?.str&&!e?.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return AnnotationElement._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:i,rect:n}=this.data;let s=-1/0,r=-1/0;if(e?.length>=8){for(let t=0;tr){r=e[t+1];s=e[t+2]}else e[t+1]===r&&(s=Math.max(s,e[t+2]));return[s,r]}if(i?.length>=1){for(const t of i)for(let e=0,i=t.length;er){r=t[e+1];s=t[e]}else t[e+1]===r&&(s=Math.max(s,t[e]));if(s!==1/0)return[s,r]}return n?[n[2],n[3]]:null}_normalizePoint(t){const{page:{view:e},viewport:{rawDims:{pageWidth:i,pageHeight:n,pageX:s,pageY:r}}}=this.parent;t[1]=e[3]-t[1]+e[1];t[0]=100*(t[0]-s)/i;t[1]=100*(t[1]-r)/n;return t}get commentText(){const{data:t}=this;return this.annotationStorage.getRawValue(`${m}${t.id}`)?.popup?.contents||t.contentsObj?.str||""}set commentText(t){const{data:e}=this,i={deleted:!t,contents:t||""};this.annotationStorage.updateEditor(e.id,{popup:i})||this.annotationStorage.setValue(`${m}${e.id}`,{id:e.id,annotationType:e.annotationType,page:this.parent.page,popup:i,popupRef:e.popupRef,modificationDate:new Date});t||this.removePopup()}removePopup(){(this.#xa?.popup||this.popup)?.remove();this.#xa=this.popup=null}updateEdited(t){if(!this.container)return;t.rect&&(this.#wa||={rect:this.data.rect.slice(0)});const{rect:e,popup:i}=t;e&&this.#Ca(e);let n=this.#xa?.popup||this.popup;if(!n&&i?.text){this._createPopup(i);n=this.#xa.popup}if(n){n.updateEdited(t);if(i?.deleted){n.remove();this.#xa=null;this.popup=null}}}resetEdited(){if(this.#wa){this.#Ca(this.#wa.rect);this.#xa?.popup.resetEdited();this.#wa=null}}#Ca(t){const{container:{style:e},data:{rect:i,rotation:n},parent:{viewport:{rawDims:{pageWidth:s,pageHeight:r,pageX:a,pageY:o}}}}=this;i?.splice(0,4,...t);e.left=100*(t[0]-a)/s+"%";e.top=100*(r-t[3]+o)/r+"%";if(0===n){e.width=100*(t[2]-t[0])/s+"%";e.height=100*(t[3]-t[1])/r+"%"}else this.setRotation(n)}_createContainer(t){const{data:e,parent:{page:i,viewport:n}}=this,s=document.createElement("section");s.setAttribute("data-annotation-id",e.id);this instanceof WidgetAnnotationElement||this instanceof LinkAnnotationElement||this instanceof MediaAnnotationElement||(s.tabIndex=0);const{style:r}=s;r.zIndex=this.parent.zIndex;this.parent.zIndex+=2;e.alternativeText&&(s.title=e.alternativeText);e.noRotate&&s.classList.add("norotate");if(!e.rect||this instanceof PopupAnnotationElement){const{rotation:t}=e;e.hasOwnCanvas||0===t||this.setRotation(t,s);return s}const{width:a,height:o}=this;if(!t&&e.borderStyle.width>0){r.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,i=e.borderStyle.verticalCornerRadius;if(t>0||i>0){const e=`calc(${t}px * var(--total-scale-factor)) / calc(${i}px * var(--total-scale-factor))`;r.borderRadius=e}switch(e.borderStyle.style){case _:r.borderStyle="solid";break;case k:r.borderStyle="dashed";break;case D:warn("Unimplemented border style: beveled");break;case P:warn("Unimplemented border style: inset");break;case M:r.borderBottomStyle="solid"}const n=e.borderColor||null;if(n){this.#Aa=!0;r.borderColor=Util.makeHexColor(...n)}else r.borderWidth=0}const l=Util.normalizeRect([e.rect[0],i.view[3]-e.rect[1]+i.view[1],e.rect[2],i.view[3]-e.rect[3]+i.view[1]]),{pageWidth:h,pageHeight:c,pageX:d,pageY:u}=n.rawDims;r.left=100*(l[0]-d)/h+"%";r.top=100*(l[1]-u)/c+"%";const{rotation:p}=e;if(e.hasOwnCanvas||0===p){r.width=100*a/h+"%";r.height=100*o/c+"%"}else this.setRotation(p,s);return s}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:i,pageHeight:n}=this.parent.viewport.rawDims;let{width:s,height:r}=this;t%180!=0&&([s,r]=[r,s]);e.style.width=100*s/i+"%";e.style.height=100*r/n+"%";e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const setColor=(t,e,i)=>{const n=i.detail[t],s=n[0],r=n.slice(1);i.target.style[e]=ColorConverters[`${s}_HTML`](r);this.annotationStorage.setValue(this.data.id,{[e]:ColorConverters[`${s}_rgb`](r)})};return shadow(this,"_commonActions",{display:t=>{const{display:e}=t.detail,i=e%2==1;this.container.style.visibility=i?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{noView:i,noPrint:1===e||2===e})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:e}=t.detail;this.container.style.visibility=e?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:t=>{setTimeout(()=>t.target.focus({preventScroll:!1}),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{setColor("bgColor","backgroundColor",t)},fillColor:t=>{setColor("fillColor","backgroundColor",t)},fgColor:t=>{setColor("fgColor","color",t)},textColor:t=>{setColor("textColor","color",t)},borderColor:t=>{setColor("borderColor","borderColor",t)},strokeColor:t=>{setColor("strokeColor","borderColor",t)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e);this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const i=this._commonActions;for(const n of Object.keys(e.detail)){const s=t[n]||i[n];s?.(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const i=this._commonActions;for(const[n,s]of Object.entries(e)){const r=i[n];if(r){r({detail:{[n]:s},target:t});delete e[n]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,i,n,r]=this.data.rect.map(Math.fround);if(8===t.length){const[s,a,o,l]=t.subarray(2,6);if(n===s&&r===a&&e===o&&i===l)return}const{style:a}=this.container;let o;if(this.#Aa){const{borderColor:t,borderWidth:e}=a;a.borderWidth=0;o=["url('data:image/svg+xml;utf8,",``,``];this.container.classList.add("hasBorder")}const l=n-e,h=r-i,{svgFactory:c}=this,d=c.createElement("svg");d.classList.add("quadrilateralsContainer");d.setAttribute("width",0);d.setAttribute("height",0);d.role="none";const u=c.createElement("defs");d.append(u);const p=c.createElement("clipPath"),g=`clippath_${this.data.id}`;p.setAttribute("id",g);p.setAttribute("clipPathUnits","objectBoundingBox");u.append(p);for(let i=2,n=t.length;i`)}if(this.#Aa){o.push("')");a.backgroundImage=o.join("")}this.container.append(d);this.container.style.clipPath=`url(#${g})`}_createPopup(t=null){const{data:e}=this;let i,n;if(t){i={str:t.text};n=t.date}else{i=e.contentsObj;n=e.modificationDate}this.#xa=new PopupAnnotationElement({data:{color:e.color,titleObj:e.titleObj,modificationDate:n,contentsObj:i,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.#xa||this.popup||this.data.popupRef)}get extraPopupElement(){return this.#xa}render(){unreachable("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const i=[];if(this._fieldObjects){const n=this._fieldObjects.get(t)||[];for(const{page:t,id:s,exportValues:r}of n){if(-1===t)continue;if(s===e)continue;const n="string"==typeof r?r:null,a=document.querySelector(`[data-element-id="${s}"]`);!a||Ut.has(a)?i.push({id:s,exportValue:n,domElement:a}):warn(`_getElementsByName - element not allowed: ${s}`)}return i}for(const n of document.getElementsByName(t)){const{exportValue:t}=n,s=n.getAttribute("data-element-id");s!==e&&(Ut.has(n)&&i.push({id:s,exportValue:t,domElement:n}))}return i}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=null===e?"transparent":Util.makeHexColor(...e)}}class EditorAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});this.editor=t.editor}render(){this.container.className="editorAnnotation";return 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 LinkAnnotationElement extends AnnotationElement{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,i=document.createElement("a");i.setAttribute("data-element-id",t.id);let n=!1;if(t.url){e.addLinkAttributes(i,t.url,t.newWindow);n=!0}else if(t.action){this._bindNamedAction(i,t.action,t.overlaidText);n=!0}else if(t.attachment){this.#Ea(i,t.attachmentId,t.attachment,t.overlaidText,t.attachmentDest);n=!0}else if(t.setOCGState){this.#Sa(i,t.setOCGState,t.overlaidText);n=!0}else if(t.dest){this._bindLink(i,t.dest,t.overlaidText);n=!0}else{if(t.actions&&(t.actions.has("Action")||t.actions.has("Mouse Up")||t.actions.has("Mouse Down"))&&this.enableScripting&&this.hasJSActions){this._bindJSAction(i,t);n=!0}if(t.resetForm){this._bindResetFormAction(i,t.resetForm);n=!0}else if(this.isTooltipOnly&&!n){this._bindLink(i,"");n=!0}}this.container.classList.add("linkAnnotation");if(n){this.contentElement=i;this.container.append(i)}return this.container}#Ta(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e,i=""){t.href=this.linkService.getDestinationHash(e);t.onclick=()=>{e&&this.linkService.goToDestination(e);return!1};(e||""===e)&&this.#Ta();i&&(t.title=i)}_bindNamedAction(t,e,i=""){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeNamedAction(e);return!1};i&&(t.title=i);this.#Ta()}#Ea(t,e,i,n="",s=null){t.href=this.linkService.getAnchorUrl("");i.description?t.title=i.description:n&&(t.title=n);const openAttachment=async()=>{const t=await this.linkService.getAttachmentContent(e);t&&this.downloadManager?.openOrDownloadData(t,i.filename,s)};t.onclick=()=>{openAttachment();return!1};this.#Ta()}#Sa(t,e,i=""){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeSetOCGState(e);return!1};i&&(t.title=i);this.#Ta()}_bindJSAction(t,{actions:e,id:i,overlaidText:n}){t.href=this.linkService.getAnchorUrl("");const s=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const n of e.keys()){const e=s.get(n);e&&(t[e]=()=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:n}});return!1})}n&&(t.title=n);t.onclick||=()=>!1;this.#Ta()}_bindResetFormAction(t,e){const i=t.onclick;i||(t.href=this.linkService.getAnchorUrl(""));this.#Ta();if(this._fieldObjects)t.onclick=()=>{i?.();const{fields:t,refs:n,include:s}=e,r=[];if(0!==t.length||0!==n.length){const e=new Set(n);for(const i of t){const t=this._fieldObjects.get(i)||[];for(const{id:i}of t)e.add(i)}for(const t of this._fieldObjects.values())for(const i of t)e.has(i.id)===s&&r.push(i)}else for(const t of this._fieldObjects.values())r.push(...t);const a=this.annotationStorage,o=[];for(const t of r){const{id:e}=t;o.push(e);switch(t.type){case"text":{const i=t.defaultValue||"";a.setValue(e,{value:i});break}case"checkbox":case"radiobutton":{const i=t.defaultValue===t.exportValues;a.setValue(e,{value:i});break}case"combobox":case"listbox":{const i=t.defaultValue||"";a.setValue(e,{value:i});break}default:continue}const i=document.querySelector(`[data-element-id="${e}"]`);i&&(Ut.has(i)?i.dispatchEvent(new Event("resetform")):warn(`_bindResetFormAction - element not allowed: ${e}`))}this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:o,name:"ResetForm"}});return!1};else{warn('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.');i||(t.onclick=()=>!1)}}}class TextAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");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}));if(!this.data.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}this.container.append(t);return this.container}}class WidgetAnnotationElement extends AnnotationElement{render(){return this.container}_getKeyModifier(t){return FeatureTest.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,i,n,s){i.includes("mouse")?t.addEventListener(i,t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:s(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})}):t.addEventListener(i,t=>{if("blur"===i){if(!e.focused||!t.relatedTarget)return;e.focused=!1}else if("focus"===i){if(e.focused)return;e.focused=!0}s&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:s(t)}})})}_setEventListeners(t,e,i,n){const{actions:s}=this.data;for(const[r,a]of i)if("Action"===a||s?.has(a)){"Focus"!==a&&"Blur"!==a||(e||={focused:!1});this._setEventListener(t,e,r,a,n);"Focus"!==a||s?.has("Blur")?"Blur"!==a||s?.has("Focus")||this._setEventListener(t,e,"focus","Focus",null):this._setEventListener(t,e,"blur","Blur",null)}}_setTextStyle(t){const e=["left","center","right"],{fontColor:i}=this.data.defaultAppearanceData,n=this.data.defaultAppearanceData.fontSize||9,s=t.style;let r;const roundToOneDecimal=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2),e=t/(Math.round(t/(1.35*n))||1);r=Math.min(n,roundToOneDecimal(e/1.35))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2);r=Math.min(n,roundToOneDecimal(t/1.35))}s.fontSize=`calc(${r}px * var(--total-scale-factor))`;s.color=Util.makeHexColor(...i);null===this.data.textAlignment||this.data.comb||(s.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required");t.setAttribute("aria-required",e)}}class TextWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue})}setPropertyOnSiblings(t,e,i,n){const s=this.annotationStorage;for(const r of this._getElementsByName(t.name,t.id)){r.domElement&&(r.domElement[e]=i);s.setValue(r.id,{[n]:i})}}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let i=null;if(this.renderForms){const n=t.getValue(e,{value:this.data.fieldValue});let s=n.value||"";const r=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;r&&s.length>r&&(s=s.slice(0,r));let a=n.formattedValue||this.data.textContent?.join("\n")||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const o={userValue:s,formattedValue:a,lastCommittedValue:null,commitKey:1,focused:!1};if(this.data.multiLine){i=document.createElement("textarea");i.textContent=a??s;this.data.doNotScroll&&(i.style.overflowY="hidden")}else{i=document.createElement("input");i.type=this.data.password?"password":"text";i.setAttribute("value",a??s);this.data.doNotScroll&&(i.style.overflowX="hidden")}if(this.data.hasOwnCanvas){this.container.classList.add("hasOwnCanvas");t.has(e)&&this.container.classList.add("sandboxModified")}Ut.add(i);this.contentElement=i;i.setAttribute("data-element-id",e);i.disabled=this.data.readOnly;i.name=this.data.fieldName;i.tabIndex=0;const{datetimeFormat:l,datetimeType:h,timeStep:c}=this.data,d=!!h&&this.enableScripting;l&&(i.title=l);this._setRequired(i,this.data.required);r&&(i.maxLength=r);i.addEventListener("input",n=>{t.setValue(e,{value:n.target.value});this.setPropertyOnSiblings(i,"value",n.target.value,"value");o.formattedValue=null});i.addEventListener("resetform",t=>{const e=this.data.defaultFieldValue??"";i.value=o.userValue=e;o.formattedValue=null});let blurListener=t=>{const{formattedValue:e}=o;null!=e&&(t.target.value=e);t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){i.addEventListener("focus",t=>{if(o.focused)return;const{target:e}=t;if(d){e.type=h;c&&(e.step=c)}if(o.userValue){const t=o.userValue;if(d)if("time"===h){const i=new Date(t),n=[i.getHours(),i.getMinutes(),i.getSeconds()];e.value=n.map(t=>t.toString().padStart(2,"0")).join(":")}else e.value=new Date(t-Ht).toISOString().split("date"===h?"T":".",1)[0];else e.value=t}o.lastCommittedValue=e.value;o.commitKey=1;this.data.actions?.has("Focus")||(o.focused=!0)});i.addEventListener("updatefromsandbox",i=>{this.container.classList.add("sandboxModified");const n={value(i){o.userValue=i.detail.value??"";d||t.setValue(e,{value:o.userValue.toString()});i.target.value=o.userValue},formattedValue(i){const{formattedValue:n}=i.detail;o.formattedValue=n;null!=n&&i.target!==document.activeElement&&(i.target.value=n);const s={formattedValue:n};d&&(s.value=n);t.setValue(e,s)},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:i=>{const{charLimit:n}=i.detail,{target:s}=i;if(0===n){s.removeAttribute("maxLength");return}s.setAttribute("maxLength",n);let r=o.userValue;if(r&&!(r.length<=n)){r=r.slice(0,n);s.value=o.userValue=r;t.setValue(e,{value:r});this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,willCommit:!0,commitKey:1,selStart:s.selectionStart,selEnd:s.selectionEnd}})}}};this._dispatchEventFromSandbox(n,i)});i.addEventListener("keydown",t=>{o.commitKey=1;let i=-1;"Escape"===t.key?i=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(o.commitKey=3):i=2;if(-1===i)return;const{value:n}=t.target;if(o.lastCommittedValue!==n){o.lastCommittedValue=n;o.userValue=n;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:n,willCommit:!0,commitKey:i,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}})}});const n=blurListener;blurListener=null;i.addEventListener("blur",t=>{if(!o.focused||!t.relatedTarget)return;this.data.actions?.has("Blur")||(o.focused=!1);const{target:i}=t;let{value:s}=i;if(d){if(s&&"time"===h){const t=s.split(":").map(t=>parseInt(t,10));s=new Date(2e3,0,1,t[0],t[1],t[2]||0).valueOf();i.step=""}else{s.includes("T")||(s=`${s}T00:00`);s=new Date(s).valueOf()}i.type="text"}o.userValue=s;o.lastCommittedValue!==s&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:s,willCommit:!0,commitKey:o.commitKey,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}});n(t)});this.data.actions?.has("Keystroke")&&i.addEventListener("beforeinput",t=>{o.lastCommittedValue=null;const{data:i,target:n}=t,{value:s,selectionStart:r,selectionEnd:a}=n;let l=r,h=a;switch(t.inputType){case"deleteWordBackward":{const t=/\w/;for(;l>0&&!t.test(s[l-1]);)l--;for(;l>0&&t.test(s[l-1]);)l--;break}case"deleteWordForward":{const t=s.substring(r).match(/^\W*\w*/);t&&(h+=t[0].length);break}case"deleteContentBackward":r===a&&(l-=1);break;case"deleteContentForward":r===a&&(h+=1)}t.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:s,change:i||"",willCommit:!1,selStart:l,selEnd:h}})});this._setEventListeners(i,o,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],t=>t.target.value)}blurListener&&i.addEventListener("blur",blurListener);if(this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/r;i.classList.add("comb");i.style.setProperty("--comb-width",`calc(${t}px * var(--total-scale-factor))`);const e=this.data.textAlignment;if(1===e||2===e){const setCombOffset=()=>{const t=r-i.value.length;i.style.setProperty("--comb-offset",`${1===e?t>>1:t}`)};setCombOffset();for(const t of["input","blur","resetform","updatefromsandbox"])i.addEventListener(t,setCombOffset)}}}else{i=document.createElement("div");i.textContent=this.data.fieldValue;i.style.verticalAlign="middle";i.style.display="table-cell";this.data.hasOwnCanvas&&(i.hidden=!0)}this._setTextStyle(i);this._setBackgroundColor(i);this._setDefaultPropertiesFromJS(i);this.container.append(i);return this.container}}class SignatureWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,i=e.id;let n=t.getValue(i,{value:e.exportValue===e.fieldValue}).value;if("string"==typeof n){n="Off"!==n;t.setValue(i,{value:n})}this.container.classList.add("buttonWidgetAnnotation","checkBox");const s=document.createElement("input");Ut.add(s);s.setAttribute("data-element-id",i);s.disabled=e.readOnly;this._setRequired(s,this.data.required);s.type="checkbox";s.name=e.fieldName;n&&s.setAttribute("checked",!0);s.setAttribute("exportValue",e.exportValue);s.tabIndex=0;s.addEventListener("change",n=>{const{name:s,checked:r}=n.target;for(const n of this._getElementsByName(s,i)){const i=r&&n.exportValue===e.exportValue;n.domElement&&(n.domElement.checked=i);t.setValue(n.id,{value:i})}t.setValue(i,{value:r})});s.addEventListener("resetform",t=>{const i=e.defaultFieldValue||"Off";t.target.checked=i===e.exportValue});if(this.enableScripting&&this.hasJSActions){s.addEventListener("updatefromsandbox",e=>{const n={value(e){e.target.checked="Off"!==e.detail.value;t.setValue(i,{value:e.target.checked})}};this._dispatchEventFromSandbox(n,e)});this._setEventListeners(s,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],t=>t.target.checked)}this._setDefaultPropertiesFromJS(s);this.container.append(s);return this.container}}class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,i=e.id;let n=t.getValue(i,{value:null!==e.buttonValue&&e.fieldValue===e.buttonValue}).value;if("string"==typeof n){n=n!==e.buttonValue;t.setValue(i,{value:n})}if(n)for(const n of this._getElementsByName(e.fieldName,i))t.setValue(n.id,{value:!1});const s=document.createElement("input");Ut.add(s);s.setAttribute("data-element-id",i);s.disabled=e.readOnly;this._setRequired(s,this.data.required);s.type="radio";s.name=e.fieldName;n&&s.setAttribute("checked",!0);s.tabIndex=0;s.addEventListener("change",e=>{const{name:n,checked:s}=e.target;for(const e of this._getElementsByName(n,i))t.setValue(e.id,{value:!1});t.setValue(i,{value:s})});s.addEventListener("resetform",t=>{const i=e.defaultFieldValue;t.target.checked=null!=i&&i===e.buttonValue});if(this.enableScripting&&this.hasJSActions){const n=e.buttonValue;s.addEventListener("updatefromsandbox",e=>{const s={value:e=>{const s=n===e.detail.value;for(const n of this._getElementsByName(e.target.name)){const e=s&&n.id===i;n.domElement&&(n.domElement.checked=e);t.setValue(n.id,{value:e})}}};this._dispatchEventFromSandbox(s,e)});this._setEventListeners(s,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],t=>t.target.checked)}this._setDefaultPropertiesFromJS(s);this.container.append(s);return this.container}}class PushButtonWidgetAnnotationElement extends LinkAnnotationElement{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;if(this.enableScripting&&this.hasJSActions&&e){this._setDefaultPropertiesFromJS(e);e.addEventListener("updatefromsandbox",t=>{this._dispatchEventFromSandbox({},t)})}return t}}class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,i=t.getValue(e,{value:this.data.fieldValue}),n=document.createElement("select");Ut.add(n);n.setAttribute("data-element-id",e);n.disabled=this.data.readOnly;this._setRequired(n,this.data.required);n.name=this.data.fieldName;n.tabIndex=0;let s=this.data.combo&&this.data.options.length>0;if(!this.data.combo){n.size=this.data.options.length;this.data.multiSelect&&(n.multiple=!0)}n.addEventListener("resetform",t=>{const e=this.data.defaultFieldValue;for(const t of n.options)t.selected=t.value===e});const fixDisplayValue=(t,e)=>{const i=e.replaceAll(" "," ");t.textContent=i;i!==e&&t.setAttribute("display-value",e)};for(const t of this.data.options){const e=document.createElement("option");fixDisplayValue(e,t.displayValue);e.value=t.exportValue;if(i.value.includes(t.exportValue)){e.setAttribute("selected",!0);s=!1}n.append(e)}let r=null;if(s){const t=document.createElement("option");t.value=" ";t.setAttribute("hidden",!0);t.setAttribute("selected",!0);n.prepend(t);r=()=>{t.remove();n.removeEventListener("input",r);r=null};n.addEventListener("input",r)}const getValue=t=>{const e=t?"value":"textContent",{options:i,multiple:s}=n;return s?Array.prototype.filter.call(i,t=>t.selected).map(t=>t[e]):-1===i.selectedIndex?null:i[i.selectedIndex][e]};let a=getValue(!1);const getItems=t=>{const e=t.target.options;return Array.prototype.map.call(e,t=>({displayValue:t.getAttribute("display-value")||t.textContent,exportValue:t.value}))};if(this.enableScripting&&this.hasJSActions){n.addEventListener("updatefromsandbox",i=>{const s={value(i){r?.();const s=i.detail.value,o=new Set(Array.isArray(s)?s:[s]);for(const t of n.options)t.selected=o.has(t.value);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},multipleSelection(t){n.multiple=!0},remove(i){const s=n.options,r=i.detail.remove;s[r].selected=!1;n.remove(r);if(s.length>0){-1===Array.prototype.findIndex.call(s,t=>t.selected)&&(s[0].selected=!0)}t.setValue(e,{value:getValue(!0),items:getItems(i)});a=getValue(!1)},clear(i){for(;0!==n.length;)n.remove(0);t.setValue(e,{value:null,items:[]});a=getValue(!1)},insert(i){const{index:s,displayValue:r,exportValue:o}=i.detail.insert,l=n.children[s],h=document.createElement("option");fixDisplayValue(h,r);h.value=o;l?l.before(h):n.append(h);t.setValue(e,{value:getValue(!0),items:getItems(i)});a=getValue(!1)},items(i){const{items:s}=i.detail;for(;0!==n.length;)n.remove(0);for(const t of s){const{displayValue:e,exportValue:i}=t,s=document.createElement("option");fixDisplayValue(s,e);s.value=i;n.append(s)}n.options.length>0&&(n.options[0].selected=!0);t.setValue(e,{value:getValue(!0),items:getItems(i)});a=getValue(!1)},indices(i){const n=new Set(i.detail.indices);for(const t of i.target.options)t.selected=n.has(t.index);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(s,i)});n.addEventListener("input",i=>{const n=getValue(!0),s=getValue(!1);t.setValue(e,{value:n});i.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:a,change:s,changeEx:n,willCommit:!1,commitKey:1,keyDown:!1}})});this._setEventListeners(n,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],t=>t.target.value)}else n.addEventListener("input",function(i){t.setValue(e,{value:getValue(!0)})});this.data.combo&&this._setTextStyle(n);this._setBackgroundColor(n);this._setDefaultPropertiesFromJS(n);this.container.append(n);return this.container}}class PopupAnnotationElement extends AnnotationElement{constructor(t){const{data:e,elements:i,parent:n}=t,s=!!n._commentManager;super(t,{isRenderable:!s&&AnnotationElement._hasPopupData(e)});this.elements=i;if(s&&AnnotationElement._hasPopupData(e)){const t=this.popup=this.#_a();for(const e of i)e.popup=t}else this.popup=null}#_a(){return new PopupElement({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.#_a(),i=[];for(const t of this.elements){t.popup=e;t.container.ariaHasPopup="dialog";i.push(t.data.id);t.addHighlightArea()}this.container.setAttribute("aria-controls",i.map(t=>`${g}${t}`).join(","));return this.container}}class PopupElement{#K=null;#ka=this.#ga.bind(this);#Da=this.#Pa.bind(this);#Ma=this.#Ia.bind(this);#Fa=this.#Oa.bind(this);#Ba=null;#Pt=null;#Ra=null;#La=null;#Na=null;#Ua=null;#Ha=null;#Ga=!1;#za=null;#Wa=null;#O=null;#Va=null;#$a=null;#xe=null;#ja=null;#ye=null;#Xa=null;#wa=null;#Ka=!1;#Ya=null;#qa=null;constructor({container:t,color:e,elements:i,titleObj:n,modificationDate:s,contentsObj:r,richText:a,parent:o,rect:l,parentRect:h,open:c,commentManager:d=null}){this.#Pt=t;this.#Xa=n;this.#Ra=r;this.#ye=a;this.#Ua=o;this.#Ba=e;this.#ja=l;this.#Ha=h;this.#Na=i;this.#K=d;this.#Ya=i[0];this.#La=PDFDateString.toDateObject(s);this.trigger=i.flatMap(t=>t.getElementsToTriggerPopup());if(!d){this.#Qa();this.#Pt.hidden=!0;c&&this.#Oa()}}#Qa(){if(this.#Wa)return;this.#Wa=new AbortController;const{signal:t}=this.#Wa;for(const e of this.trigger){e.addEventListener("click",this.#Fa,{signal:t});e.addEventListener("pointerenter",this.#Ma,{signal:t});e.addEventListener("pointerleave",this.#Da,{signal:t});e.classList.add("popupTriggerArea")}for(const e of this.#Na)e.container?.addEventListener("keydown",this.#ka,{signal:t})}#Ja(){const t=this.#Na.find(t=>t.hasCommentButton);t&&(this.#$a=t._normalizePoint(t.commentButtonPosition))}renderCommentButton(){if(this.#Va){this.#Va.parentNode||this.#Ya.container.after(this.#Va);return}this.#$a||this.#Ja();if(!this.#$a)return;const{signal:t}=this.#Wa=new AbortController,e=this.#Ya.hasOwnCommentButton,togglePopup=()=>{this.#K.toggleCommentPopup(this,!0,void 0,!e)},showPopup=()=>{this.#K.toggleCommentPopup(this,!1,!0,!e)},hidePopup=()=>{this.#K.toggleCommentPopup(this,!1,!1)};if(e){this.#Va=this.#Ya.container;for(const e of this.trigger){e.ariaHasPopup="dialog";e.ariaControls="commentPopup";e.addEventListener("keydown",this.#ka,{signal:t});e.addEventListener("click",togglePopup,{signal:t});e.addEventListener("pointerenter",showPopup,{signal:t});e.addEventListener("pointerleave",hidePopup,{signal:t});e.classList.add("popupTriggerArea")}}else{const e=this.#Va=document.createElement("button");e.className="annotationCommentButton";const i=this.#Ya.container;e.style.zIndex=parseInt(i.style.zIndex,10)+1;e.tabIndex=0;e.ariaHasPopup="dialog";e.ariaControls="commentPopup";e.setAttribute("data-l10n-id","pdfjs-show-comment-button");this.#Za();this.#to();e.addEventListener("keydown",this.#ka,{signal:t});e.addEventListener("click",togglePopup,{signal:t});e.addEventListener("pointerenter",showPopup,{signal:t});e.addEventListener("pointerleave",hidePopup,{signal:t});i.after(e)}}#to(){if(this.#Ya.extraPopupElement&&!this.#Ya.editor)return;this.#Va||this.renderCommentButton();const[t,e]=this.#$a,{style:i}=this.#Va;i.left=`calc(${t}%)`;i.top=`calc(${e}% - var(--comment-button-dim))`}#Za(){if(!this.#Ya.extraPopupElement){this.#Va||this.renderCommentButton();this.#Va.style.backgroundColor=this.commentButtonColor||""}}get commentButtonColor(){const{color:t,opacity:e}=this.#Ya.commentData;return t?this.#Ua._commentManager.makeCommentColor(t,e):null}focusCommentButton(){setTimeout(()=>{this.#Va?.focus()},0)}getData(){const{richText:t,color:e,opacity:i,creationDate:n,modificationDate:s}=this.#Ya.commentData;return{contentsObj:{str:this.comment},richText:t,color:e,opacity:i,creationDate:n,modificationDate:s}}get elementBeforePopup(){return this.#Va}get comment(){this.#qa||=this.#Ya.commentText;return this.#qa}set comment(t){t!==this.comment&&(this.#Ya.commentText=this.#qa=t)}focus(){this.#Ya.container?.focus()}get parentBoundingClientRect(){return this.#Ya.layer.getBoundingClientRect()}setCommentButtonStates({selected:t,hasPopup:e}){if(this.#Va){this.#Va.classList.toggle("selected",t);this.#Va.ariaExpanded=e}}setSelectedCommentButton(t){this.#Va.classList.toggle("selected",t)}get commentPopupPosition(){if(this.#xe)return this.#xe;const{x:t,y:e,height:i}=this.#Va.getBoundingClientRect(),{x:n,y:s,width:r,height:a}=this.#Ya.layer.getBoundingClientRect();return[(t-n)/r,(e+i-s)/a]}set commentPopupPosition(t){this.#xe=t}hasDefaultPopupPosition(){return null===this.#xe}get commentButtonPosition(){return this.#$a}get commentButtonWidth(){return this.#Va.getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(t){const[e,i]=this.#xe||this.commentButtonPosition.map(t=>t/100),n=this.parentBoundingClientRect,{x:s,y:r,width:a,height:o}=n;this.#K.showDialog(null,this,s+e*a,r+i*o,{...t,parentDimensions:n})}render(){if(this.#za)return;const t=this.#za=document.createElement("div");t.className="popup";if(this.#Ba){const e=t.style.outlineColor=Util.makeHexColor(...this.#Ba);t.style.backgroundColor=`color-mix(in srgb, ${e} 30%, white)`}const e=document.createElement("span");e.className="header";if(this.#Xa?.str){const t=document.createElement("span");t.className="title";e.append(t);({dir:t.dir,str:t.textContent}=this.#Xa)}t.append(e);if(this.#La){const t=document.createElement("time");t.className="popupDate";t.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string");t.setAttribute("data-l10n-args",JSON.stringify({dateObj:this.#La.valueOf()}));t.dateTime=this.#La.toISOString();e.append(t)}renderRichText({html:this.#eo||this.#Ra.str,dir:this.#Ra?.dir,className:"popupContent"},t);this.#Pt.append(t)}get#eo(){const t=this.#ye,e=this.#Ra;return!t?.str||e?.str&&e.str!==t.str?null:this.#ye.html||null}get#io(){return this.#eo?.attributes?.style?.fontSize||0}get#no(){return this.#eo?.attributes?.style?.color||null}#so(t){const e=[],i={str:t,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},n={style:{color:this.#no,fontSize:this.#io?`calc(${this.#io}px * var(--total-scale-factor))`:""}};for(const i of t.split("\n"))e.push({name:"span",value:i,attributes:n});return i}#ga(t){t.altKey||t.shiftKey||t.ctrlKey||t.metaKey||("Enter"===t.key||"Escape"===t.key&&this.#Ga)&&this.#Oa()}updateEdited({rect:t,popup:e,deleted:i}){if(this.#K){if(i){this.remove();this.#qa=null}else if(e)if(e.deleted)this.remove();else{this.#Za();this.#qa=e.text}if(t){this.#$a=null;this.#Ja();this.#to()}}else if(i||e?.deleted)this.remove();else{this.#Qa();this.#wa||={contentsObj:this.#Ra,richText:this.#ye};t&&(this.#O=null);if(e&&e.text){this.#ye=this.#so(e.text);this.#La=PDFDateString.toDateObject(e.date);this.#Ra=null}this.#za?.remove();this.#za=null}}resetEdited(){if(this.#wa){({contentsObj:this.#Ra,richText:this.#ye}=this.#wa);this.#wa=null;this.#za?.remove();this.#za=null;this.#O=null}}remove(){this.#Wa?.abort();this.#Wa=null;this.#za?.remove();this.#za=null;this.#Ka=!1;this.#Ga=!1;this.#Va?.remove();this.#Va=null;if(this.trigger)for(const t of this.trigger)t.classList.remove("popupTriggerArea")}#ro(){if(null!==this.#O)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:i,pageX:n,pageY:s}}}=this.#Ua;let r=!!this.#Ha,a=r?this.#Ha:this.#ja;for(const t of this.#Na)if(!a||null!==Util.intersect(t.data.rect,a)){a=t.data.rect;r=!0;break}const o=Util.normalizeRect([a[0],t[3]-a[1]+t[1],a[2],t[3]-a[3]+t[1]]),l=r?a[2]-a[0]+5:0,h=o[0]+l,c=o[1];this.#O=[100*(h-n)/e,100*(c-s)/i];const{style:d}=this.#Pt;d.left=`${this.#O[0]}%`;d.top=`${this.#O[1]}%`}#Oa(){if(this.#K)this.#K.toggleCommentPopup(this,!1);else{this.#Ga=!this.#Ga;if(this.#Ga){this.#Ia();this.#Pt.addEventListener("click",this.#Fa);this.#Pt.addEventListener("keydown",this.#ka)}else{this.#Pa();this.#Pt.removeEventListener("click",this.#Fa);this.#Pt.removeEventListener("keydown",this.#ka)}}}#Ia(){this.#za||this.render();if(this.isVisible)this.#Ga&&this.#Pt.classList.add("focused");else{this.#ro();this.#Pt.hidden=!1;this.#Pt.style.zIndex=parseInt(this.#Pt.style.zIndex,10)+1e3}}#Pa(){this.#Pt.classList.remove("focused");if(!this.#Ga&&this.isVisible){this.#Pt.hidden=!0;this.#Pt.style.zIndex=parseInt(this.#Pt.style.zIndex,10)-1e3}}forceHide(){this.#Ka=this.isVisible;this.#Ka&&(this.#Pt.hidden=!0)}maybeShow(){if(!this.#K){this.#Qa();if(this.#Ka){this.#za||this.#Ia();this.#Ka=!1;this.#Pt.hidden=!1}}}get isVisible(){return!this.#K&&!1===this.#Pt.hidden}}class FreeTextAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});this.textContent=t.data.textContent;this.textPosition=t.data.textPosition;this.annotationEditorType=f.FREETEXT}render(){this.container.classList.add("freeTextAnnotation");if(this.textContent){const t=this.contentElement=document.createElement("div");t.classList.add("annotationTextContent");t.setAttribute("role","comment");for(const e of this.textContent){const i=document.createElement("span");i.textContent=e;t.append(i)}this.container.append(t)}if(!this.data.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}this._editOnDoubleClick();return this.container}}class LineAnnotationElement extends AnnotationElement{#ao=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("lineAnnotation");const{data:t,width:e,height:i}=this,n=this.svgFactory.create(e,i,!0),s=this.#ao=this.svgFactory.createElement("svg:line");s.setAttribute("x1",t.rect[2]-t.lineCoordinates[0]);s.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]);s.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]);s.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]);s.setAttribute("stroke-width",t.borderStyle.width||1);s.setAttribute("stroke","transparent");s.setAttribute("fill","transparent");n.append(s);this.container.append(n);if(!t.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}return this.container}getElementsToTriggerPopup(){return this.#ao}addHighlightArea(){this.container.classList.add("highlightArea")}}class SquareAnnotationElement extends AnnotationElement{#oo=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("squareAnnotation");const{data:t,width:e,height:i}=this,n=this.svgFactory.create(e,i,!0),s=t.borderStyle.width,r=this.#oo=this.svgFactory.createElement("svg:rect");r.setAttribute("x",s/2);r.setAttribute("y",s/2);r.setAttribute("width",e-s);r.setAttribute("height",i-s);r.setAttribute("stroke-width",s||1);r.setAttribute("stroke","transparent");r.setAttribute("fill","transparent");n.append(r);this.container.append(n);if(!t.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}return this.container}getElementsToTriggerPopup(){return this.#oo}addHighlightArea(){this.container.classList.add("highlightArea")}}class CircleAnnotationElement extends AnnotationElement{#lo=null;constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("circleAnnotation");const{data:t,width:e,height:i}=this,n=this.svgFactory.create(e,i,!0),s=t.borderStyle.width,r=this.#lo=this.svgFactory.createElement("svg:ellipse");r.setAttribute("cx",e/2);r.setAttribute("cy",i/2);r.setAttribute("rx",e/2-s/2);r.setAttribute("ry",i/2-s/2);r.setAttribute("stroke-width",s||1);r.setAttribute("stroke","transparent");r.setAttribute("fill","transparent");n.append(r);this.container.append(n);if(!t.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}return this.container}getElementsToTriggerPopup(){return this.#lo}addHighlightArea(){this.container.classList.add("highlightArea")}}class PolylineAnnotationElement extends AnnotationElement{#ho=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:i,popupRef:n},width:s,height:r}=this;if(!e)return this.container;const a=this.svgFactory.create(s,r,!0);let o=[];for(let i=0,n=e.length;i=0&&s.setAttribute("stroke-width",e||1);if(i)for(let t=0,e=this.#do.length;t{"Enter"===t.key&&(n?t.metaKey:t.ctrlKey)&&this.#go()});if(!e.popupRef&&this.hasPopupData){this.hasOwnCommentButton=!0;this._createPopup()}else i.classList.add("popupTriggerArea");t.append(i);return t}getElementsToTriggerPopup(){return this.#po}addHighlightArea(){this.container.classList.add("highlightArea")}async#go(){const{fileId:t,filename:e,content:i}=this,n=await this.linkService.getAttachmentContent(t)||i;n&&this.downloadManager?.openOrDownloadData(n,e)}}class MediaAnnotationElement extends AnnotationElement{#L=new AbortController;#mo=null;#fo=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");e.className="mediaPlayButton";e.type="button";e.title=e.ariaLabel=t;e.addEventListener("click",()=>this.#bo(e),{signal:this.#L.signal});this.container.append(e);return this.container}async#bo(t){const{fileId:e,filename:i,contentType:n}=this.data.richMedia;t.disabled=!0;let s;try{s=await this.linkService.getAttachmentContent(e)}catch{return}finally{t.disabled=!1}if(!s||!t.isConnected)return;const{signal:r}=this.#L,a=URL.createObjectURL(new Blob([s],{type:n}));this.#mo=a;const o=n.startsWith("audio/"),l=document.createElement(o?"audio":"video");this.#fo=l;l.className="mediaContent";this._setBackgroundColor(l);l.src=a;l.title=i;l.controls=!0;l.autoplay=!0;l.tabIndex=0;if(o){let t=!1,e=!1;const updateControls=()=>{l.controls=t||e};this.container.addEventListener("pointerenter",()=>{t=!0;updateControls()},{signal:r});this.container.addEventListener("pointerleave",()=>{t=!1;updateControls()},{signal:r});this.container.addEventListener("focusin",()=>{e=!0;updateControls()},{signal:r});this.container.addEventListener("focusout",()=>{e=!1;updateControls()},{signal:r})}l.addEventListener("emptied",()=>this.#yo(a),{once:!0,signal:r});t.replaceWith(l);l.play().catch(()=>{})}#yo(t=this.#mo){if(t&&t===this.#mo){URL.revokeObjectURL(t);this.#mo=null}}destroy(){this.#L.abort();if(this.#fo){this.#fo.pause();this.#fo.removeAttribute("src");this.#fo.load();this.#fo=null}this.#yo()}}class AnnotationLayer{#vo=null;#wo=null;#$=null;#Ao=new Map;#xo=null;#Co=null;#Na=[];#Eo=!1;zIndex=0;constructor({div:t,accessibilityManager:e,annotationCanvasMap:i,annotationEditorUIManager:n,page:s,viewport:r,structTreeLayer:a,commentManager:o,linkService:l,annotationStorage:h}){this.div=t;this.#vo=e;this.#wo=i;this.#xo=a||null;this.#Co=l||null;this.#$=h||new AnnotationStorage;this.page=s;this.viewport=r;this._annotationEditorUIManager=n;this._commentManager=o||null}hasEditableAnnotations(){return this.#Ao.size>0}async render(t){const{annotations:e,optionalContentConfig:i}=t,n=this.div;setLayerDimensions(n,this.viewport);const s=new Map,r=[],a={data:null,layer:n,linkService:this.#Co,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:!1!==t.renderForms,svgFactory:new DOMSVGFactory,annotationStorage:this.#$,enableComment:!0===t.enableComment,enableScripting:!0===t.enableScripting,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const t of e){if(t.noHTML)continue;const e=t.annotationType===T.POPUP;if(e){const e=s.get(t.id);if(!e)continue;if(!this._commentManager){r.push(t);continue}a.elements=e}else if(t.rect[2]===t.rect[0]||t.rect[3]===t.rect[1])continue;a.data=t;const n=AnnotationElementFactory.create(a);if(!n.isRenderable)continue;if(!e){this.#Na.push(n);t.popupRef&&s.getOrInsertComputed(t.popupRef,makeArr).push(n)}const o=n.render();t.hidden&&(o.style.visibility="hidden");n.updateOC(i);if(n._isEditable){this.#Ao.set(n.data.id,n);this._annotationEditorUIManager?.renderAnnotationElement(n)}}await this.#So();for(const t of r){const e=a.elements=s.get(t.id);a.data=t;const i=AnnotationElementFactory.create(a);if(!i.isRenderable)continue;const n=i.render();i.contentElement.id=`${g}${t.id}`;t.hidden&&(n.style.visibility="hidden");e.at(-1).container.after(n)}this.#To()}async#So(){if(0===this.#Na.length)return;this.div.replaceChildren();const t=[];if(!this.#Eo){this.#Eo=!0;for(const{contentElement:e,data:{hidden:i,id:n,oc:s}}of this.#Na){const r=e.id=`${g}${n}`,a="a"===e.localName&&!i&&!s;t.push(this.#xo?.getAriaAttributes(r,{enableLinkOwnership:a}).then(t=>{if(t)for(const[i,n]of t)e.setAttribute(i,n)}))}}this.#Na.sort(({data:{rect:[t,e,i,n]}},{data:{rect:[s,r,a,o]}})=>{if(t===i&&e===n)return 1;if(s===a&&r===o)return-1;const l=(e+n)/2,h=(r+o)/2;if(l>=o&&h<=e)return-1;if(h>=n&&l<=r)return 1;return(t+i)/2-(s+a)/2});const e=document.createDocumentFragment();for(const t of this.#Na){e.append(t.container);this._commentManager?(t.extraPopupElement?.popup||t.popup)?.renderCommentButton():t.extraPopupElement&&e.append(t.extraPopupElement.render())}this.div.append(e);await Promise.all(t);if(this.#vo){const t=await(this.#xo?.getAnnotationIds());for(const{contentElement:e}of this.#Na)t?.has(e.id)||this.#vo.addPointerInTextLayer(e,!1)}}async addLinkAnnotations(t){const e={data:null,layer:this.div,linkService:this.#Co,svgFactory:new DOMSVGFactory,parent:this};for(const i of t){i.borderStyle||=AnnotationLayer._defaultBorderStyle;e.data=i;const t=AnnotationElementFactory.create(e);if(t.isRenderable){t.render();t.contentElement.id=`${g}${i.id}`;this.#Na.push(t)}}await this.#So()}update({viewport:t,optionalContentConfig:e}){const i=this.div;this.viewport=t;setLayerDimensions(i,{rotation:t.rotation});for(const t of this.#Na)t.updateOC(e);this.#To();i.hidden=!1}destroy(){for(const t of this.#Na){t.destroy?.();this.#vo?.removePointerInTextLayer(t.contentElement)}this.#Na.length=0;this.#Ao.clear();this.div.replaceChildren()}#To(){if(!this.#wo)return;const t=this.div;for(const[e,i]of this.#wo){const n=t.querySelector(`[data-annotation-id="${e}"]`);if(!n)continue;if(Array.isArray(i))for(const t of i){t.className="annotationContent";t.ariaHidden=!0}else{i.className="annotationContent";i.ariaHidden=!0}const s=[];for(const t of n.children)"CANVAS"===t.nodeName&&s.push(t);for(const t of s)t.remove();const r=Array.isArray(i)?i[0]:i,{firstChild:a}=n;a?a.classList.contains("annotationContent")?a.after(r):a.before(r):n.append(r);if(Array.isArray(i)){let t=r;for(let e=1,n=i.length;ee.data.id===t);if(e<0)return;const[i]=this.#Na.splice(e,1);this.#vo?.removePointerInTextLayer(i.contentElement)}updateFakeAnnotations(t){if(0!==t.length){for(const e of t)e.updateFakeAnnotationElement(this);this.#So()}}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}static get _defaultBorderStyle(){return shadow(this,"_defaultBorderStyle",Object.freeze({width:1,rawWidth:1,style:_,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}}const Gt=/\r\n?|\n/g;class FreeTextEditor extends AnnotationEditor{#_o="";#ko=`${this.id}-editor`;#Do=null;#io;_colorPicker=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=FreeTextEditor.prototype,arrowChecker=t=>t.isEmpty(),e=AnnotationEditorUIManager.TRANSLATE_SMALL,i=AnnotationEditorUIManager.TRANSLATE_BIG;return shadow(this,"_keyboardManager",new KeyboardManager([[["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:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-i,0],checker:arrowChecker}],[["ArrowRight"],t._translateEmpty,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[i,0],checker:arrowChecker}],[["ArrowUp"],t._translateEmpty,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-i],checker:arrowChecker}],[["ArrowDown"],t._translateEmpty,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,i],checker:arrowChecker}]]))}static _type="freetext";static _editorType=f.FREETEXT;constructor(t){super({...t,name:"freeTextEditor"});this.color=t.color||FreeTextEditor._defaultColor||AnnotationEditor._defaultLineColor;this.#io=t.fontSize||FreeTextEditor._defaultFontSize;this.annotationElementId||this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.freetext);this.canAddComment=!1}static initialize(t,e){AnnotationEditor.initialize(t,e);const i=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(i.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case b.FREETEXT_SIZE:FreeTextEditor._defaultFontSize=e;break;case b.FREETEXT_COLOR:FreeTextEditor._defaultColor=e}}updateParams(t,e){switch(t){case b.FREETEXT_SIZE:this.#Po(e);break;case b.FREETEXT_COLOR:this.#Za(e)}}static get defaultPropertiesToUpdate(){return[[b.FREETEXT_SIZE,FreeTextEditor._defaultFontSize],[b.FREETEXT_COLOR,FreeTextEditor._defaultColor||AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[b.FREETEXT_SIZE,this.#io],[b.FREETEXT_COLOR,this.color]]}get toolbarButtons(){this._colorPicker||=new BasicColorPicker(this);return[["colorPicker",this._colorPicker]]}get colorType(){return b.FREETEXT_COLOR}#Po(t){const setFontsize=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--total-scale-factor))`;this.translate(0,-(t-this.#io)*this.parentScale);this.#io=t;this.#Mo()},e=this.#io;this.addCommands({cmd:setFontsize.bind(this,t),undo:setFontsize.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:b.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}onUpdatedColor(){this.editorDiv.style.color=this.color;this._colorPicker?.update(this.color);super.onUpdatedColor()}#Za(t){const setColor=t=>{this.color=t;this.onUpdatedColor()},e=this.color;this.addCommands({cmd:setColor.bind(this,t),undo:setColor.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:b.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-FreeTextEditor._internalPadding*t,-(FreeTextEditor._internalPadding+this.#io)*t]}rebuild(){if(this.parent){super.rebuild();null!==this.div&&(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.#Do=new AbortController;const t=this._uiManager.combinedSignal(this.#Do);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});return!0}disableEditMode(){if(!super.disableEditMode())return!1;this.overlayDiv.classList.add("enabled");this.editorDiv.contentEditable=!1;this.div.setAttribute("aria-activedescendant",this.#ko);this._isDraggable=!0;this.#Do?.abort();this.#Do=null;this.div.focus({preventScroll:!0});this.isEditing=!1;this.parent.div.classList.add("freetextEditing");return!0}focusin(t){if(this._focusEventsAllowed){super.focusin(t);t.target!==this.editorDiv&&this.editorDiv.focus()}}onceAdded(t){if(!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;if(this.parent){this.parent.setEditingState(!0);this.parent.div.classList.add("freetextEditing")}super.remove()}#Io(){const t=[];this.editorDiv.normalize();let e=null;for(const i of this.editorDiv.childNodes)if(e?.nodeType!==Node.TEXT_NODE||"BR"!==i.nodeName){t.push(FreeTextEditor.#Fo(i));e=i}return t.join("\n")}#Mo(){const[t,e]=this.parentDimensions;let i;if(this.isAttachedToDOM)i=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,n=e.style.display,s=e.classList.contains("hidden");e.classList.remove("hidden");e.style.display="hidden";t.div.append(this.div);i=e.getBoundingClientRect();e.remove();e.style.display=n;e.classList.toggle("hidden",s)}if(this.rotation%180==this.parentRotation%180){this.width=i.width/t;this.height=i.height/e}else{this.width=i.height/t;this.height=i.width/e}this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit();this.disableEditMode();const t=this.#_o,e=this.#_o=this.#Io().trimEnd();if(t===e)return;const setText=t=>{this.#_o=t;if(t){this.#Oo();this._uiManager.rebuild(this);this.#Mo()}else this.remove()};this.addCommands({cmd:()=>{setText(e)},undo:()=>{setText(t)},mustExec:!1});this.#Mo()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode();this.editorDiv.focus()}keydown(t){if(t.target===this.div&&"Enter"===t.key){this.enterInEditMode();t.preventDefault()}}editorDivKeydown(t){FreeTextEditor._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;if(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.#ko);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:i}=this.editorDiv;i.fontSize=`calc(${this.#io}px * var(--total-scale-factor))`;i.color=this.color;this.div.append(this.editorDiv);this.overlayDiv=document.createElement("div");this.overlayDiv.classList.add("overlay","enabled");this.div.append(this.overlayDiv);if(this._isCopy||this.annotationElementId){const[i,n]=this.parentDimensions;if(this.annotationElementId){const{position:s}=this._initialData;let[r,a]=this.getInitialTranslation();[r,a]=this.pageTranslationToScreen(r,a);const[o,l]=this.pageDimensions,[h,c]=this.pageTranslation;let d,u;switch(this.rotation){case 0:d=t+(s[0]-h)/o;u=e+this.height-(s[1]-c)/l;break;case 90:d=t+(s[0]-h)/o;u=e-(s[1]-c)/l;[r,a]=[a,-r];break;case 180:d=t-this.width+(s[0]-h)/o;u=e-(s[1]-c)/l;[r,a]=[-r,-a];break;case 270:d=t+(s[0]-h-this.height*l)/o;u=e+(s[1]-c-this.width*o)/l;[r,a]=[-a,r]}this.setAt(d*i,u*n,r,a)}else this._moveAfterPaste(t,e);this.#Oo();this._isDraggable=!0;this.editorDiv.contentEditable=!1}else{this._isDraggable=!1;this.editorDiv.contentEditable=!0}return this.div}static#Fo(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(Gt,"")}editorDivPaste(t){const e=t.clipboardData||window.clipboardData,{types:i}=e;if(1===i.length&&"text/plain"===i[0])return;t.preventDefault();const n=FreeTextEditor.#Bo(e.getData("text")||"").replaceAll(Gt,"\n");if(!n)return;const s=window.getSelection();if(!s.rangeCount)return;this.editorDiv.normalize();s.deleteFromDocument();const r=s.getRangeAt(0);if(!n.includes("\n")){r.insertNode(document.createTextNode(n));this.editorDiv.normalize();s.collapseToStart();return}const{startContainer:a,startOffset:o}=r,l=[],h=[];if(a.nodeType===Node.TEXT_NODE){const t=a.parentElement;h.push(a.nodeValue.slice(o).replaceAll(Gt,""));if(t!==this.editorDiv){let e=l;for(const i of this.editorDiv.childNodes)i!==t?e.push(FreeTextEditor.#Fo(i)):e=h}l.push(a.nodeValue.slice(0,o).replaceAll(Gt,""))}else if(a===this.editorDiv){let t=l,e=0;for(const i of this.editorDiv.childNodes){e++===o&&(t=h);t.push(FreeTextEditor.#Fo(i))}}this.#_o=`${l.join("\n")}${n}${h.join("\n")}`;this.#Oo();const c=new Range;let d=Math.sumPrecise(l.map(t=>t.length));for(const{firstChild:t}of this.editorDiv.childNodes)if(t.nodeType===Node.TEXT_NODE){const e=t.nodeValue.length;if(d<=e){c.setStart(t,d);c.setEnd(t,d);break}d-=e}s.removeAllRanges();s.addRange(c)}#Oo(){this.editorDiv.replaceChildren();if(this.#_o)for(const t of this.#_o.split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br"));this.editorDiv.append(e)}}#Ro(){return this.#_o.replaceAll(" "," ")}static#Bo(t){return t.replaceAll(" "," ")}get contentDiv(){return this.editorDiv}getPDFRect(){const t=FreeTextEditor._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,e,i){let n=null;if(t instanceof FreeTextAnnotationElement){const{data:{defaultAppearanceData:{fontSize:e,fontColor:i},rect:s,rotation:r,id:a,popupRef:o,richText:l,contentsObj:h,creationDate:c,modificationDate:d},textContent:u,textPosition:p,parent:{page:{pageNumber:g}}}=t;if(!u?.length)return null;n=t={annotationType:f.FREETEXT,color:Array.from(i),fontSize:e,value:u.join("\n"),position:p,pageIndex:g-1,rect:s.slice(0),rotation:r,annotationElementId:a,id:a,deleted:!1,popupRef:o,comment:h?.str||null,richText:l,creationDate:c,modificationDate:d}}const s=await super.deserialize(t,e,i);s.#io=t.fontSize;s.color=Util.makeHexColor(...t.color);s.#_o=FreeTextEditor.#Bo(t.value);s._initialData=n;t.comment&&s.setCommentData(t);return s}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const e=AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),i=Object.assign(super.serialize(t),{color:e,fontSize:this.#io,value:this.#Ro()});this.addComment(i);if(t){i.isCopy=!0;return i}if(this.annotationElementId&&!this.#Lo(i))return null;i.id=this.annotationElementId;return i}#Lo(t){const{value:e,fontSize:i,color:n,pageIndex:s}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||t.value!==e||t.fontSize!==i||t.color.some((t,e)=>t!==n[e])||t.pageIndex!==s}renderAnnotationElement(t){const e=super.renderAnnotationElement(t);if(!e)return null;const{style:i}=e;i.fontSize=`calc(${this.#io}px * var(--total-scale-factor))`;i.color=this.color;e.replaceChildren();for(const t of this.#_o.split("\n")){const i=document.createElement("div");i.append(t?document.createTextNode(t):document.createElement("br"));e.append(i)}t.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#_o}});return e}resetAnnotationElement(t){super.resetAnnotationElement(t);t.resetEdited()}}class DrawingOptions{#No=Object.create(null);updateProperty(t,e){this[t]=e;this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,i]of Object.entries(t))e.startsWith("_")||this.updateProperty(e,i)}updateSVGProperty(t,e){this.#No[t]=e}toSVGProperties(){const t=this.#No;this.#No=Object.create(null);return{root:t}}reset(){this.#No=Object.create(null)}updateAll(t=this){this.updateProperties(t)}clone(){unreachable("Not implemented")}}class DrawingEditor extends AnnotationEditor{#Uo=null;#Ho;_clipPathId=null;_colorPicker=null;_drawId=null;_drawOutlines=null;_focusDrawId=null;static _currentDrawId=-1;static _currentParent=null;static#Go=null;static#zo=null;static#Wo=null;static#Vo=null;static _INNER_MARGIN=3;constructor(t){super(t);this.#Ho=t.mustBeCommitted||!1;this._addOutlines(t)}onUpdatedColor(){this._colorPicker?.update(this.color);super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(t){if(t.drawOutlines){this.#$o(t);this.#jo()}}#$o({drawOutlines:t,drawId:e,drawingOptions:i,clipPathId:n}){this._drawOutlines=t;this._drawingOptions||=i;this.annotationElementId||this._uiManager.a11yAlert(AnnotationEditor._l10nAlert[this.editorType]);if(e>=0){this._drawId=e;this._clipPathId=n??null;this.parent.drawLayer.finalizeDraw(e,t.defaultProperties);this.#Xo(this.parent)}else this._drawId=this.#Ko(t,this.parent);this.#Yo(t.box)}#Ko(t,e){const{id:i,clipPathId:n}=e.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,this.constructor._hasClipPath);this.constructor._hasClipPath&&(this._clipPathId=n);this.#Xo(e);return i}#Xo(t){const e=this._drawOutlines.getFocusSVGProperties(this.#qo);e&&(this._focusDrawId=t.drawLayer.drawOutline(e,this._drawOutlines.focusMustRemoveSelfIntersections))}#Qo(t=this.#qo){null!==this._focusDrawId&&this.parent?.drawLayer.updateProperties(this._focusDrawId,this._drawOutlines.getFocusSVGProperties(t))}#Jo(t){null!==this._focusDrawId&&this.parent?.drawLayer.updateProperties(this._focusDrawId,{rootClass:t})}#Zo(){const{parent:t,_drawId:e,_focusDrawId:i,_isVisible:n}=this;if(!t||null===e)return;const s={hidden:!n};t.drawLayer.updateProperties(e,{rootClass:s});null!==i&&t.drawLayer.updateProperties(i,{rootClass:s})}static _mergeSVGProperties(t,e){const i=new Set(Object.keys(t));for(const[n,s]of Object.entries(e))i.has(n)?Object.assign(t[n],s):t[n]=s;return t}static getDefaultDrawingOptions(t){unreachable("Not implemented")}static get typesMap(){unreachable("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#qo(){return(this.parentRotation-this._drawRotation+360)%360}static updateDefaultParams(t,e){const i=this.typesMap.get(t);i&&this._defaultDrawingOptions.updateProperty(i,e);if(this._currentParent){DrawingEditor.#Go.updateProperty(i,e);this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties())}}updateParams(t,e){const i=this.constructor.typesMap.get(t);i&&this._updateProperty(t,i,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[i,n]of this.typesMap)t.push([i,e[n]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[i,n]of this.constructor.typesMap)t.push([i,e[n]]);return t}_updateProperty(t,e,i){const n=this._drawingOptions,s=n[e],setter=i=>{n.updateProperty(e,i);const s=this._drawOutlines.updateProperty(e,i);s&&this.#Yo(s);this.parent?.drawLayer.updateProperties(this._drawId,n.toSVGProperties());t===this.colorType?this.onUpdatedColor():t===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:setter.bind(this,i),undo:setter.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(t,e,i=this.colorAndOpacityType){const n=this.constructor.typesMap.get(this.colorType),s=this._opacityName,r=this._drawingOptions,a=r[n],o=r[s],setter=(t,e)=>{r.updateProperty(n,t);r.updateProperty(s,e);this._drawOutlines.updateProperty(n,t);this._drawOutlines.updateProperty(s,e);this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties());this.onUpdatedColor();this.onUpdatedOpacity()};this.addCommands({cmd:setter.bind(this,t,e),undo:setter.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:i,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizingSVGProperties(this.#tl()),{bbox:this.#el()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathResizedSVGProperties(this.#tl()),{bbox:this.#el()}));this.#Qo()}_onTranslating(t,e){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#el()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,DrawingEditor._mergeSVGProperties(this._drawOutlines.getPathTranslatedSVGProperties(this.#tl(),this.parentDimensions),{bbox:this.#el()}))}_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();if(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;if(this.#Ho){this.#Ho=!1;this.commit();this.parent.setSelected(this);t&&this.isOnScreen&&this.div.focus()}}remove(){this._uiManager.removeShouldRescale(this);this.#il();super.remove()}rebuild(){if(this.parent){super.rebuild();if(null!==this.div){this.#jo();this.#Yo(this._drawOutlines.box);this.isAttachedToDOM||this.parent.add(this)}}}setParent(t){let e=!1;if(this.parent&&!t){this._uiManager.removeShouldRescale(this);this.#il()}else if(t){this._uiManager.addShouldRescale(this);this.#jo(t);e=!this.parent&&this.div?.classList.contains("selectedEditor")}super.setParent(t);this.#Zo();e&&this.select()}#il(){if(null===this._drawId||!this.parent)return;const{drawLayer:t}=this.parent;t.remove(this._drawId);this._drawId=null;if(null!==this._focusDrawId){t.remove(this._focusDrawId);this._focusDrawId=null}this._drawingOptions.reset()}#jo(t=this.parent){if(null===this._drawId||this.parent!==t){if(null!==this._drawId){const{drawLayer:e}=this.parent;e.updateParent(this._drawId,t.drawLayer);null!==this._focusDrawId&&e.updateParent(this._focusDrawId,t.drawLayer);return}this._drawingOptions.updateAll();this._drawId=this.#Ko(this._drawOutlines,t);this._clipPathId&&this.#Uo&&(this.#Uo.style.clipPath=this._clipPathId)}}#nl([t,e,i,n]){const{parentDimensions:[s,r],_drawRotation:a}=this;switch(a){case 90:return[e,1-t,i*(r/s),n*(s/r)];case 180:return[1-t,1-e,i,n];case 270:return[1-e,t,i*(r/s),n*(s/r)];default:return[t,e,i,n]}}#tl(){const{x:t,y:e,width:i,height:n,parentDimensions:[s,r],_drawRotation:a}=this;switch(a){case 90:return[1-e,t,i*(s/r),n*(r/s)];case 180:return[1-t,1-e,i,n];case 270:return[e,1-t,i*(s/r),n*(r/s)];default:return[t,e,i,n]}}#Yo(t){[this.x,this.y,this.width,this.height]=this.#nl(t);if(this.div){this.fixAndSetPosition();this.setDims()}this._onResized()}#el(t=this.parentRotation){const{x:e,y:i,width:n,height:s,_drawRotation:r,parentDimensions:[a,o]}=this;switch((4*r+t)/90){case 1:return[1-i-s,e,s,n];case 2:return[1-e-n,1-i-s,n,s];case 3:return[i,1-e-n,s,n];case 4:return[e,i-n*(a/o),s*(o/a),n*(a/o)];case 5:return[1-i,e,n*(a/o),s*(o/a)];case 6:return[1-e-s*(o/a),1-i,s*(o/a),n*(a/o)];case 7:return[i-n*(a/o),1-e-s*(o/a),n*(a/o),s*(o/a)];case 8:return[e-n,i-s,n,s];case 9:return[1-i,e-n,s,n];case 10:return[1-e,1-i,n,s];case 11:return[i-s,1-e,s,n];case 12:return[e-s*(o/a),i,s*(o/a),n*(a/o)];case 13:return[1-i-n*(a/o),e-s*(o/a),n*(a/o),s*(o/a)];case 14:return[1-e,1-i-n*(a/o),s*(o/a),n*(a/o)];case 15:return[i,1-e,n*(a/o),s*(o/a)];default:return[e,i,n,s]}}rotate(t=this.parentRotation){if(!this.parent||null===this._drawId)return;const e=(t-this._drawRotation+360)%360;this.parent.drawLayer.updateProperties(this._drawId,DrawingEditor._mergeSVGProperties({bbox:this.#el(t)},this._drawOutlines.updateRotation(e)));this.#Qo(e)}show(t=this._isVisible){super.show(t);this.#Zo()}select(){super.select();this.#Jo({hovered:!1,selected:!0})}unselect(){super.unselect();this.#Jo({selected:!1})}pointerover(){this.isSelected||this.#Jo({hovered:!0})}pointerleave(){this.isSelected||this.#Jo({hovered:!1})}onScaleChanging(){if(!this.parent)return;const t=this._drawOutlines.updateParentDimensions(this.parentDimensions,this.parent.scale);t&&this.#Yo(t)}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let t,e;if(this._isCopy){t=this.x;e=this.y}const i=super.render();this.constructor._hasDrawClass&&i.classList.add("draw");const n=this.#Uo=document.createElement("div");i.append(n);n.setAttribute("aria-hidden","true");n.className="internal";this._clipPathId&&(n.style.clipPath=this._clipPathId);bindEvents(this,n,["pointerover","pointerleave"]);this.setDims();this._uiManager.addShouldRescale(this);this.disableEditing();this._isCopy&&this._moveAfterPaste(t,e);return i}static createDrawerInstance(t){unreachable("Not implemented")}static _getDrawingTarget(t,{target:e}){return e}static _getPointerCoords({offsetX:t,offsetY:e,clientX:i,clientY:n},s=null){if(!s)return[t,e];let r=i-s.clientX,a=n-s.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]}return[s.offsetX+r,s.offsetY+a]}static _addDrawingListeners(t,e){}static _endDrawingSession(t=!1){return this._currentParent.endDrawingSession(t)}static startDrawing(t,e,i,n){const{pointerId:s,pointerType:r}=n;if(CurrentPointers.isInitializedAndDifferentPointerType(r))return;const a=this._getDrawingTarget(t,n),[o,l]=this._getPointerCoords(n),{viewport:{rotation:h}}=t,{x:c,y:d,width:u,height:p}=a.getBoundingClientRect(),g=DrawingEditor.#zo=new AbortController,m=t.combinedSignal(g);CurrentPointers.setPointer(r,s);window.addEventListener("pointerup",t=>{CurrentPointers.isSamePointerIdOrRemove(t.pointerId)&&this._endDraw(t)},{signal:m});window.addEventListener("pointercancel",t=>{CurrentPointers.isSamePointerIdOrRemove(t.pointerId)&&this._endDrawingSession()},{signal:m});window.addEventListener("pointerdown",t=>{if(CurrentPointers.isSamePointerType(t.pointerType)){CurrentPointers.initializeAndAddPointerId(t.pointerId);if(DrawingEditor.#Go.isCancellable()){DrawingEditor.#Go.removeLastElement();DrawingEditor.#Go.isEmpty()?this._endDrawingSession(!0):this._endDraw(null)}}},{capture:!0,passive:!1,signal:m});window.addEventListener("contextmenu",noContextMenu,{signal:m});a.addEventListener("pointermove",this._drawMove.bind(this),{signal:m});a.addEventListener("touchmove",t=>{CurrentPointers.isSameTimeStamp(t.timeStamp)&&stopEvent(t)},{signal:m});this._addDrawingListeners(a,m);t.toggleDrawing();e._editorUndoBar?.hide();if(DrawingEditor.#Go){t.drawLayer.updateProperties(this._currentDrawId,DrawingEditor.#Go.startNew(o,l,u,p,h));return}e.updateUIForDefaultProperties(this);DrawingEditor.#Go=this.createDrawerInstance({x:o,y:l,box:[c,d,u,p],rotation:h,parent:t,isLTR:i});DrawingEditor.#Wo=this.getDefaultDrawingOptions();this._currentParent=t;const{id:f,clipPathId:b}=t.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#Wo.toSVGProperties(),DrawingEditor.#Go.defaultSVGProperties),!0,this._hasClipPath);this._currentDrawId=f;DrawingEditor.#Vo=this._hasClipPath?b:null}static _drawMove(t){CurrentPointers.isSameTimeStamp(t.timeStamp);if(!DrawingEditor.#Go)return;if(!CurrentPointers.isSamePointerId(t.pointerId))return;if(CurrentPointers.isUsingMultiplePointers()){this._endDraw(t);return}let e;const i=t.getCoalescedEvents?.();if(i?.length){const n=[];for(const e of i)n.push(...this._getPointerCoords(e,t));e=DrawingEditor.#Go.addPoints(n)}else e=DrawingEditor.#Go.add(...this._getPointerCoords(t));this._currentParent.drawLayer.updateProperties(this._currentDrawId,e);CurrentPointers.setTimeStamp(t.timeStamp);stopEvent(t)}static _cleanup(t){if(t){this._currentDrawId=-1;this._currentParent=null;DrawingEditor.#Go=null;DrawingEditor.#Wo=null;DrawingEditor.#Vo=null;CurrentPointers.clearTimeStamp()}if(DrawingEditor.#zo){DrawingEditor.#zo.abort();DrawingEditor.#zo=null;CurrentPointers.clearPointerIds()}}static _endDraw(t){const e=this._currentParent;if(e){e.toggleDrawing(!0);this._cleanup(!1);e.drawLayer.updateProperties(this._currentDrawId,t?.target===e.div?DrawingEditor.#Go.end(...this._getPointerCoords(t)):DrawingEditor.#Go.end());if(this.supportMultipleDrawings){const t=DrawingEditor.#Go,i=this._currentDrawId,n=t.getLastElement();e.addCommands({cmd:()=>{e.drawLayer.updateProperties(i,t.setLastElement(n))},undo:()=>{e.drawLayer.updateProperties(i,t.removeLastElement())},mustExec:!1,type:b.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){const e=this._currentParent;if(!e)return null;e.toggleDrawing(!0);e.cleanUndoStack(b.DRAW_STEP);if(!DrawingEditor.#Go.isEmpty()){const{pageDimensions:[i,n],scale:s}=e,r=e.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,clipPathId:DrawingEditor.#Vo,drawOutlines:DrawingEditor.#Go.getOutlines(i*s,n*s,s,this._INNER_MARGIN),drawingOptions:DrawingEditor.#Wo,mustBeCommitted:!t});this._cleanup(!0);return r}e.drawLayer.remove(this._currentDrawId);this._cleanup(!0);return null}createDrawingOptions(t){}static deserializeDraw(t,e,i,n,s,r,a){unreachable("Not implemented")}static async deserialize(t,e,i){const{rawDims:{pageWidth:n,pageHeight:s,pageX:r,pageY:a}}=e.viewport,o=this.deserializeDraw(r,a,n,s,this._INNER_MARGIN,t,i),l=await super.deserialize(t,e,i);l.createDrawingOptions(t);l.#$o({drawOutlines:o});l.#jo();l.onScaleChanging();l.rotate();return l}serializeDraw(t){const[e,i]=this.pageTranslation,[n,s]=this.pageDimensions;return this._drawOutlines.serialize([e,i,n,s],t)}renderAnnotationElement(t){t.updateEdited({rect:this.getPDFRect()});return null}static canCreateNewEmptyEditor(){return!1}}class Outline{static PRECISION=1e-4;focusOutline=null;toSVGPath(){unreachable("Abstract method `toSVGPath` must be implemented.")}get box(){unreachable("Abstract getter `box` must be implemented.")}serialize(t,e){unreachable("Abstract method `serialize` must be implemented.")}get defaultSVGProperties(){unreachable("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,i,n],s){switch(s){case 90:return[1-e-n,t,n,i];case 180:return[1-t-i,1-e-n,i,n];case 270:return[e,1-t-i,n,i]}return[t,e,i,n]}static _rescale(t,e,i,n,s,r){r||=new Float32Array(t.length);for(let a=0,o=t.length;a=6;t-=6)isNaN(e[t])?i.push(`L${e[t+4]} ${e[t+5]}`):i.push(`C${e[t]} ${e[t+1]} ${e[t+2]} ${e[t+3]} ${e[t+4]} ${e[t+5]}`);this.#Cl(i);return i.join(" ")}#Al(){const[t,e,i,n]=this.#sl,[s,r,a,o]=this.#wl();return`M${(this.#hl[2]-t)/i} ${(this.#hl[3]-e)/n} L${(this.#hl[4]-t)/i} ${(this.#hl[5]-e)/n} L${s} ${r} L${a} ${o} L${(this.#hl[16]-t)/i} ${(this.#hl[17]-e)/n} L${(this.#hl[14]-t)/i} ${(this.#hl[15]-e)/n} Z`}#Cl(t){const e=this.#rl;t.push(`L${e[4]} ${e[5]} Z`)}#xl(t){const[e,i,n,s]=this.#sl,r=this.#hl.subarray(4,6),a=this.#hl.subarray(16,18),[o,l,h,c]=this.#wl();t.push(`L${(r[0]-e)/n} ${(r[1]-i)/s} L${o} ${l} L${h} ${c} L${(a[0]-e)/n} ${(a[1]-i)/s}`)}newFreeDrawOutline(t,e,i,n,s,r){return new FreeDrawOutline(t,e,i,n,s,r)}getOutlines(){const t=this.#ll,e=this.#rl,i=this.#hl,[n,s,r,a]=this.#sl,o=new Float32Array((this.#fl?.length??0)+2);for(let t=0,e=o.length-2;t=6;t-=6)for(let i=0;i<6;i+=2)if(isNaN(e[t+i])){l[h]=l[h+1]=NaN;h+=2}else{l[h]=e[t+i];l[h+1]=e[t+i+1];h+=2}this.#Tl(l,h);return this.newFreeDrawOutline(l,o,this.#sl,this.#gl,this.#al,this.#ol)}#El(t){const e=this.#hl,[i,n,s,r]=this.#sl,[a,o,l,h]=this.#wl(),c=new Float32Array(36);c.set([NaN,NaN,NaN,NaN,(e[2]-i)/s,(e[3]-n)/r,NaN,NaN,NaN,NaN,(e[4]-i)/s,(e[5]-n)/r,NaN,NaN,NaN,NaN,a,o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,(e[16]-i)/s,(e[17]-n)/r,NaN,NaN,NaN,NaN,(e[14]-i)/s,(e[15]-n)/r],0);return this.newFreeDrawOutline(c,t,this.#sl,this.#gl,this.#al,this.#ol)}#Tl(t,e){const i=this.#rl;t.set([NaN,NaN,NaN,NaN,i[4],i[5]],e);return e+6}#Sl(t,e){const i=this.#hl.subarray(4,6),n=this.#hl.subarray(16,18),[s,r,a,o]=this.#sl,[l,h,c,d]=this.#wl();t.set([NaN,NaN,NaN,NaN,(i[0]-s)/a,(i[1]-r)/o,NaN,NaN,NaN,NaN,l,h,NaN,NaN,NaN,NaN,c,d,NaN,NaN,NaN,NaN,(n[0]-s)/a,(n[1]-r)/o],e);return e+24}}class FreeDrawOutline extends Outline{#sl;#_l=new Float32Array(4);#al;#ol;#fl;#gl;#kl;constructor(t,e,i,n,s,r){super();this.#kl=t;this.#fl=e;this.#sl=i;this.#gl=n;this.#al=s;this.#ol=r;this.firstPoint=[NaN,NaN];this.lastPoint=[NaN,NaN];this.#Dl(r);const[a,o,l,h]=this.#_l;for(let e=0,i=t.length;ep){a=u;o=p}else o===p&&(a=c(a,u));if(hd[1]){a=d[0];o=d[1]}else o===d[1]&&(a=c(a,d[0]));if(ht[0]-e[0]||t[1]-e[1]||t[2]-e[2]);const t=[];for(const e of this.#Il)if(e[3]){t.push(...this.#Ol(e));this.#Bl(e)}else{this.#Rl(e);t.push(...this.#Ol(e))}return this.#Ll(t)}#Ll(t){const e=[],i=new Set;for(const i of t){const[t,n,s]=i;e.push([t,n,i],[t,s,i])}e.sort((t,e)=>t[1]-e[1]||t[0]-e[0]);for(let t=0,n=e.length;t0;){const t=i.values().next().value;let[e,r,a,o,l]=t;i.delete(t);let h=e,c=r;s=[e,a];n.push(s);for(;;){let t;if(i.has(o))t=o;else{if(!i.has(l))break;t=l}i.delete(t);[e,r,a,o,l]=t;if(h!==e){s.push(h,c,e,c===r?r:a);h=e}c=c===r?a:r}s.push(h,c)}return new HighlightOutline(n,this.#sl,this.#Pl,this.#Ml)}#Nl(t){const e=this.#Fl;let i=0,n=e.length-1;for(;i<=n;){const s=i+n>>1,r=e[s][0];if(r===t)return s;r=0;n--){const[i,s]=this.#Fl[n];if(i!==t)break;if(i===t&&s===e){this.#Fl.splice(n,1);return}}}#Ol(t){const[e,i,n]=t,s=[[e,i,n]],r=this.#Nl(n);for(let t=0;t=i)if(o>n)s[t][1]=n;else{if(1===r)return[];s.splice(t,1);t--;r--}else{s[t][2]=i;o>n&&s.push([e,n,o])}}}return s}}class HighlightOutline extends Outline{#sl;#Ul=null;#Hl;constructor(t,e,i,n){super();this.#Hl=t;this.#sl=e;this.firstPoint=i;this.lastPoint=n}static build(t,e){const i=new HighlightOutliner(t,.001).getOutlines();i.#Ul=t;i.focusOutline=new HighlightOutliner(t,.0025,.001,e).getOutlines();return i}get isFree(){return!1}get defaultSVGProperties(){return getHighlightSVGProperties(this)}getFocusSVGProperties(t){return getHighlightFocusSVGProperties(this,t)}updateRotation(t){return{root:{"data-main-rotation":t}}}serializeQuadPoints([t,e],[i,n]){const s=this.#Ul,r=new Float32Array(8*s.length);let a=0;for(const{x:o,y:l,width:h,height:c}of s){const s=o*i+t,d=(1-l)*n+e;r[a]=r[a+4]=s;r[a+1]=r[a+3]=d;r[a+2]=r[a+6]=s+h*i;r[a+5]=r[a+7]=d-c*n;a+=8}return r}toSVGPath(){const t=[];for(const e of this.#Hl){let[i,n]=e;t.push(`M${i} ${n}`);for(let s=2;st.classList.remove("free"),{once:!0});window.addEventListener("blur",()=>this._endDraw(null),{signal:e});window.addEventListener("pointerdown",stopEvent,{capture:!0,passive:!1,signal:e})}static _endDrawingSession(t=!1){return this.endDrawing(t)}createDrawingOptions({color:t,opacity:e,thickness:i}){const{_defaultDrawingOptions:n,_DEFAULT_OPACITY:s}=HighlightEditor;this._drawingOptions=HighlightEditor.getDefaultDrawingOptions({fill:Util.makeHexColor(...t),"fill-opacity":e||s,thickness:i||n.thickness})}static deserializeDraw(t,e,i,n,s,r,a){const{quadPoints:o}=r;if(o){const s=[];for(let r=0,a=o.length;rt!==e[i])}renderAnnotationElement(t){if(this.deleted){t.hide();return null}t.updateEdited({rect:this.getPDFRect(),popup:this.comment});return null}}class InkDrawOutliner{#hl=new Float64Array(6);#Ql=new Float64Array(2);#ao;#Jl;#gr;#ml;#fl;#Zl="";#th=0;#Hl=new InkDrawOutline;#eh;#ih;constructor(t,e,i,n,s,r){this.#eh=i;this.#ih=n;this.#gr=s;this.#ml=r;[t,e]=this.#nh(t,e);const a=this.#ao=[NaN,NaN,NaN,NaN,t,e];this.#fl=[t,e];this.#Jl=[{line:a,points:this.#fl}];this.#hl.set(a,0);this.#Ql.set([t,e],0)}updateProperty(t,e){"stroke-width"===t&&(this.#ml=e)}#nh(t,e){return Outline._normalizePoint(t,e,this.#eh,this.#ih,this.#gr)}isEmpty(){return!this.#Jl?.length}isCancellable(){return this.#fl.length<=10}add(t,e){this.#sh(t,e)&&this.toSVGPath();return{path:{d:this.#rh()}}}addPoints(t){let e=!1;for(let i=0,n=t.length;it??NaN),c,d,u,p),points:g(a[t].map(t=>t??NaN),c,d,u,p)});const m=new this.prototype.constructor;m.build(h,i,n,1,o,l,s);return m}#ch(t=this.#ml){const e=this.#al+t/2*this.#oh;return this.#gr%180==0?[e/this.#eh,e/this.#ih]:[e/this.#ih,e/this.#eh]}#hh(){const[t,e,i,n]=this.#_l,[s,r]=this.#ch(0);return[t+s,e+r,i-2*s,n-2*r]}#lh(){const t=this.#_l=i.slice();for(const{line:e}of this.#Jl){if(e.length<=12){for(let i=4,n=e.length;it!==e[i])||t.thickness!==i||t.opacity!==n||t.pageIndex!==s}renderAnnotationElement(t){if(this.deleted){t.hide();return null}const{points:e,rect:i}=this.serializeDraw(!1);t.updateEdited({rect:i,thickness:this._drawingOptions["stroke-width"],points:e,popup:this.comment});return null}}class ContourDrawOutline extends InkDrawOutline{toSVGPath(){let t=super.toSVGPath();t.endsWith("Z")||(t+="Z");return t}}class SignatureExtractor{static#uh={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#ph(t,e,i,n){n-=e;return 0===(i-=t)?n>0?0:4:1===i?n+6:2-n}static#gh=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#mh(t,e,i,n,s,r,a){const o=this.#ph(i,n,s,r);for(let s=0;s<8;s++){const r=(-s+o-a+16)%8;if(0!==t[(i+this.#gh[2*r])*e+(n+this.#gh[2*r+1])])return r}return-1}static#fh(t,e,i,n,s,r,a){const o=this.#ph(i,n,s,r);for(let s=0;s<8;s++){const r=(s+o+a+16)%8;if(0!==t[(i+this.#gh[2*r])*e+(n+this.#gh[2*r+1])])return r}return-1}static#bh(t,e,i,n){const s=t.length,r=new Int32Array(s);for(let e=0;e=1&&0===r[n+1])){1!==s&&(a=Math.abs(s));continue}o+=1;c+=1;s>1&&(a=s)}const d=[i,t],u=c===i+1,p={isHole:u,points:d,id:o,parent:0};l.push(p);let g;for(const t of l)if(t.id===a){g=t;break}g?g.isHole?p.parent=u?g.parent:a:p.parent=u?a:g.parent:p.parent=u?a:0;const m=this.#mh(r,e,t,i,h,c,0);if(-1===m){r[n]=-o;1!==r[n]&&(a=Math.abs(r[n]));continue}let f=this.#gh[2*m],b=this.#gh[2*m+1];const y=t+f,v=i+b;h=y;c=v;let w=t,A=i;for(;;){const s=this.#fh(r,e,w,A,h,c,1);f=this.#gh[2*s];b=this.#gh[2*s+1];const l=w+f,u=A+b;d.push(u,l);const p=w*e+A;0===r[p+1]?r[p]=-o:1===r[p]&&(r[p]=o);if(l===t&&u===i&&w===y&&A===v){1!==r[n]&&(a=Math.abs(r[n]));break}h=w;c=A;w=l;A=u}}}return l}static#yh(t,e,i,n){if(i-e<=4){for(let s=e;sw){A=n;w=e}}if(w>(l*v)**2){this.#yh(t,e,A+2,n);this.#yh(t,A,i,n)}else n.push(s,r)}static#vh(t){const e=[],i=t.length;this.#yh(t,0,i,e);e.push(t[i-2],t[i-1]);return e.length<=4?null:e}static#wh(t,e,i,n,s,r){const a=new Float32Array(r**2),o=-2*n**2,l=r>>1;for(let t=0;t=i))for(let i=0;i=e)continue;const p=t[u*e+n],m=a[o*r+i]*h[Math.abs(p-c)];d+=p*m;g+=m}}p[u[o]=Math.round(d/g)]++}return[u,p]}static#Ah(t){const e=new Uint32Array(256);for(const i of t)e[i]++;return e}static#xh(t){const e=t.length,i=new Uint8ClampedArray(e>>2);let n=-1/0,s=1/0;for(let e=0,r=i.length;e0!==t);let r=s,a=s;for(e=s;e<256;e++){const s=t[e];if(s>i){if(e-r>n){n=e-r;a=e-1}i=s;r=e}}for(e=a-1;e>=0&&!(t[e]>t[e+1]);e--);return e}static#Eh(t){const e=t,{width:i,height:n}=t,{maxDim:s}=this.#uh;let r=i,a=n;if(i>s||n>s){let o=i,l=n,h=Math.log2(Math.max(i,n)/s);const c=Math.floor(h);h=h===c?c-1:c;for(let i=0;i=-128&&o<=127?Int8Array:a>=-32768&&o<=32767?Int16Array:Int32Array;const h=t.length,c=8+3*h,d=new Uint32Array(c);let u=0;d[u++]=c*Uint32Array.BYTES_PER_ELEMENT+(l-2*h)*r.BYTES_PER_ELEMENT;d[u++]=0;d[u++]=n;d[u++]=s;d[u++]=e?0:1;d[u++]=Math.max(0,Math.floor(i??0));d[u++]=h;d[u++]=r.BYTES_PER_ELEMENT;for(const e of t){d[u++]=e.length-2;d[u++]=e[0];d[u++]=e[1]}const p=new CompressionStream("deflate-raw"),g=p.writable.getWriter();await g.ready;g.write(d);const m=r.prototype.constructor;for(const e of t){const t=new m(e.length-2);for(let i=2,n=e.length;i{await s.ready;await s.close()}).catch(()=>{});let r=null,a=0;for await(const t of i){r||=new Uint8Array(new Uint32Array(t.buffer,0,4)[0]);r.set(t,a);a+=t.length}const o=new Uint32Array(r.buffer,0,r.length>>2),l=o[1];if(0!==l)throw new Error(`Invalid version: ${l}`);const h=o[2],c=o[3],d=0===o[4],u=o[5],p=o[6],g=o[7],m=[],f=(8+3*p)*Uint32Array.BYTES_PER_ELEMENT;let b;switch(g){case Int8Array.BYTES_PER_ELEMENT:b=new Int8Array(r.buffer,f);break;case Int16Array.BYTES_PER_ELEMENT:b=new Int16Array(r.buffer,f);break;case Int32Array.BYTES_PER_ELEMENT:b=new Int32Array(r.buffer,f)}a=0;for(let t=0;t{e?.updateEditSignatureButton(t)})}}getSignaturePreview(){const{newCurves:t,areContours:e,thickness:i,width:n,height:s}=this.#_h,r=Math.max(n,s);return{areContours:e,outline:SignatureExtractor.processDrawnLines({lines:{curves:t.map(t=>({points:t})),thickness:i,width:n,height:s},pageWidth:r,pageHeight:r,rotation:0,innerMargin:0,mustSmooth:!1,areContours:e}).outline}}get toolbarButtons(){return this._uiManager.signatureManager?[["editSignature",this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,e,i,n){const{x:s,y:r}=this,{outline:a}=this.#_h=t;this.#Sh=a instanceof ContourDrawOutline;this.description=i;let o;if(this.#Sh)o=SignatureEditor.getDefaultDrawingOptions();else{o=SignatureEditor._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;if(this.width>=1){h*=.9/this.width;this.width=.9}this.height=h;this.setDims();this.x=s;this.y=r;this.center();this._onResized();this.onScaleChanging();this.rotate();this._uiManager.addToAnnotationStorage(this);this.setUuid(n);this._reportTelemetry({action:"pdfjs.signature.inserted",data:{hasBeenSaved:!!n,hasDescription:!!i}});this.div.hidden=!1}getFromImage(t){const{rawDims:{pageWidth:e,pageHeight:i},rotation:n}=this.parent.viewport;return SignatureExtractor.process(t,e,i,n,SignatureEditor._INNER_MARGIN)}getFromText(t,e){const{rawDims:{pageWidth:i,pageHeight:n},rotation:s}=this.parent.viewport;return SignatureExtractor.extractContoursFromText(t,e,i,n,s,SignatureEditor._INNER_MARGIN)}getDrawnSignature(t){const{rawDims:{pageWidth:e,pageHeight:i},rotation:n}=this.parent.viewport;return SignatureExtractor.processDrawnLines({lines:t,pageWidth:e,pageHeight:i,rotation:n,innerMargin:SignatureEditor._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:e}){if(t)this._drawingOptions=SignatureEditor.getDefaultDrawingOptions();else{this._drawingOptions=SignatureEditor._defaultDrawnSignatureOptions.clone();this._drawingOptions.updateProperties({"stroke-width":e})}}serialize(t=!1){if(this.isEmpty())return null;const{lines:e,points:i}=this.serializeDraw(t),{_drawingOptions:{"stroke-width":n}}=this,s=Object.assign(super.serialize(t),{isSignature:!0,areContours:this.#Sh,color:[0,0,0],thickness:this.#Sh?0:n});this.addComment(s);if(t){s.paths={lines:e,points:i};s.uuid=this.#kh;s.isCopy=!0}else s.lines=e;this.#Th&&(s.accessibilityData={type:"Figure",alt:this.#Th});return s}static deserializeDraw(t,e,i,n,s,r){return r.areContours?ContourDrawOutline.deserialize(t,e,i,n,s,r):InkDrawOutline.deserialize(t,e,i,n,s,r)}static async deserialize(t,e,i){const n=await super.deserialize(t,e,i);n.#Sh=t.areContours;n.description=t.accessibilityData?.alt||"";n.#kh=t.uuid;return n}}class StampEditor extends AnnotationEditor{#Dh=null;#Ph=null;#Mh=null;#Ih=null;#Fh=null;#Oh="";#Bh=null;#Rh=!1;#Lh=null;#Nh=!1;#Uh=!1;static _type="stamp";static _editorType=f.STAMP;constructor(t){super({...t,name:"stampEditor"});this.#Ih=t.bitmapUrl;this.#Fh=t.bitmapFile;this.defaultL10nId="pdfjs-editor-stamp-editor"}static initialize(t,e){AnnotationEditor.initialize(t,e)}static isHandlingMimeForPasting(t){return j.includes(t)}static paste(t,e){e.pasteEditor({mode:f.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}}#Hh(t,e=!1){if(t){this.#Dh=t.bitmap;if(!e){this.#Ph=t.id;this.#Nh=t.isSvg}t.file&&(this.#Oh=t.file.name);this.#Gh()}else this.remove()}#zh(){this.#Mh=null;this._uiManager.enableWaiting(!1);if(this.#Bh)if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#Dh)this.addEditToolbar().then(()=>{this._editToolbar.hide();this._uiManager.editAltText(this,!0)});else{if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#Dh){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:i}=this._uiManager;if(!i)throw new Error("No ML.");if(!await i.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:n,width:s,height:r}=t||this.copyCanvas(null,null,!0).imageData,a=await i.guess({name:"altText",request:{data:n,width:s,height:r,channels:n.length/(s*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;await this.setGuessedAltText(o);e&&!this.hasAltTextData()&&(this.altTextData={alt:o,decorative:!1});return o}#Wh(){if(this.#Ph){this._uiManager.enableWaiting(!0);this._uiManager.imageManager.getFromId(this.#Ph).then(t=>this.#Hh(t,!0)).finally(()=>this.#zh());return}if(this.#Ih){const t=this.#Ih;this.#Ih=null;this._uiManager.enableWaiting(!0);this.#Mh=this._uiManager.imageManager.getFromUrl(t).then(t=>this.#Hh(t)).finally(()=>this.#zh());return}if(this.#Fh){const t=this.#Fh;this.#Fh=null;this._uiManager.enableWaiting(!0);this.#Mh=this._uiManager.imageManager.getFromFile(t).then(t=>this.#Hh(t)).finally(()=>this.#zh());return}const t=document.createElement("input");t.type="file";t.accept=j.join(",");const e=this._uiManager._signal;this.#Mh=new Promise(i=>{t.addEventListener("change",async()=>{if(t.files&&0!==t.files.length){this._uiManager.enableWaiting(!0);const e=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}});this.#Hh(e)}else this.remove();i()},{signal:e});t.addEventListener("cancel",()=>{this.remove();i()},{signal:e})}).finally(()=>this.#zh());t.click()}remove(){if(this.#Ph){this.#Dh=null;this._uiManager.imageManager.deleteId(this.#Ph);this.#Bh?.remove();this.#Bh=null;if(this.#Lh){clearTimeout(this.#Lh);this.#Lh=null}}super.remove()}rebuild(){if(this.parent){super.rebuild();if(null!==this.div){this.#Ph&&null===this.#Bh&&this.#Wh();this.isAttachedToDOM||this.parent.add(this)}}else this.#Ph&&this.#Wh()}onceAdded(t){this._isDraggable=!0;t&&this.div.focus()}isEmpty(){return!(this.#Mh||this.#Dh||this.#Ih||this.#Fh||this.#Ph||this.#Rh)}get toolbarButtons(){return[["altText",this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this._isCopy){t=this.x;e=this.y}super.render();this.div.hidden=!0;this.createAltText();this.#Rh||(this.#Dh?this.#Gh():this.#Wh());this._isCopy&&this._moveAfterPaste(t,e);this._uiManager.addShouldRescale(this);return this.div}setCanvas(t,e){const{id:i,bitmap:n}=this._uiManager.imageManager.getFromCanvas(t,e);e.remove();if(i&&this._uiManager.imageManager.isValidId(i)){this.#Ph=i;n&&(this.#Dh=n);this.#Rh=!1;this.#Gh()}}_onResized(){this.onScaleChanging()}onScaleChanging(){if(!this.parent)return;null!==this.#Lh&&clearTimeout(this.#Lh);this.#Lh=setTimeout(()=>{this.#Lh=null;this.#Vh()},200)}#Gh(){const{div:t}=this;let{width:e,height:i}=this.#Dh;const[n,s]=this.pageDimensions,r=.75;if(this.width){e=this.width*n;i=this.height*s}else if(e>r*n||i>r*s){const t=Math.min(r*n/e,r*s/i);e*=t;i*=t}this._uiManager.enableWaiting(!1);const a=this.#Bh=document.createElement("canvas");a.setAttribute("role","img");this.addContainer(a);this.width=e/n;this.height=i/s;this.setDims();this._initialOptions?.isCentered?this.center():this.fixAndSetPosition();this._initialOptions=null;this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&!this.annotationElementId||(t.hidden=!1);this.#Vh();if(!this.#Uh){this.parent.addUndoableEditor(this);this.#Uh=!0}this._reportTelemetry({action:"inserted_image"});this.#Oh&&this.div.setAttribute("aria-description",this.#Oh);this.annotationElementId||this._uiManager.a11yAlert(AnnotationEditor._l10nAlert.stamp)}copyCanvas(t,e,i=!1){t||=224;const{width:n,height:s}=this.#Dh,r=new OutputScale;let a=this.#Dh,o=n,l=s,h=null;if(e){if(n>e||s>e){const t=Math.min(e/n,e/s);o=Math.floor(n*t);l=Math.floor(s*t)}h=document.createElement("canvas");const t=h.width=Math.ceil(o*r.sx),i=h.height=Math.ceil(l*r.sy);this.#Nh||(a=this.#$h(t,i));const c=h.getContext("2d");c.filter=this._uiManager.hcmFilter;let d="white",u="#cfcfd8";if("none"!==this._uiManager.hcmFilter)u="black";else if(ColorScheme.isDarkMode){d="#8f8f9d";u="#42414d"}const p=15,g=p*r.sx,m=p*r.sy,f=new OffscreenCanvas(2*g,2*m),b=f.getContext("2d");b.fillStyle=d;b.fillRect(0,0,2*g,2*m);b.fillStyle=u;b.fillRect(0,0,g,m);b.fillRect(g,m,g,m);c.fillStyle=c.createPattern(f,"repeat");c.fillRect(0,0,t,i);c.drawImage(a,0,0,a.width,a.height,0,0,t,i)}let c=null;if(i){let e,i;if(r.symmetric&&a.widtht||s>t){const r=Math.min(t/n,t/s);e=Math.floor(n*r);i=Math.floor(s*r);this.#Nh||(a=this.#$h(e,i))}}const o=new OffscreenCanvas(e,i).getContext("2d",{willReadFrequently:!0});o.drawImage(a,0,0,a.width,a.height,0,0,e,i);c={width:e,height:i,data:o.getImageData(0,0,e,i).data}}return{canvas:h,width:o,height:l,imageData:c}}#$h(t,e){const{width:i,height:n}=this.#Dh;let s=i,r=n,a=this.#Dh;for(;s>2*t||r>2*e;){const i=s,n=r;s>2*t&&(s=Math.ceil(s/2));r>2*e&&(r=Math.ceil(r/2));const o=new OffscreenCanvas(s,r);o.getContext("2d").drawImage(a,0,0,i,n,0,0,s,r);a=o.transferToImageBitmap()}return a}#Vh(){const[t,e]=this.parentDimensions,{width:i,height:n}=this,s=new OutputScale,r=Math.ceil(i*t*s.sx),a=Math.ceil(n*e*s.sy),o=this.#Bh;if(!o||o.width===r&&o.height===a)return;o.width=r;o.height=a;const l=this.#Nh?this.#Dh:this.#$h(r,a),h=o.getContext("2d");h.filter=this._uiManager.hcmFilter;h.drawImage(l,0,0,l.width,l.height,0,0,r,a)}#jh(t){if(t){if(this.#Nh){const t=this._uiManager.imageManager.getSvgUrl(this.#Ph);if(t)return t}const t=document.createElement("canvas");({width:t.width,height:t.height}=this.#Dh);t.getContext("2d").drawImage(this.#Dh,0,0);return t.toDataURL()}if(this.#Nh){const[t,e]=this.pageDimensions,i=Math.round(this.width*t*PixelsPerInch.PDF_TO_CSS_UNITS),n=Math.round(this.height*e*PixelsPerInch.PDF_TO_CSS_UNITS),s=new OffscreenCanvas(i,n);s.getContext("2d").drawImage(this.#Dh,0,0,this.#Dh.width,this.#Dh.height,0,0,i,n);return s.transferToImageBitmap()}return structuredClone(this.#Dh)}static async deserialize(t,e,i){let n=null,s=!1;if(t instanceof StampAnnotationElement){const{data:{rect:r,rotation:a,id:o,structParent:l,popupRef:h,richText:c,contentsObj:d,creationDate:u,modificationDate:p},container:m,parent:{page:{pageNumber:b}},canvas:y}=t;let v,w;if(y){delete t.canvas;({id:v,bitmap:w}=i.imageManager.getFromCanvas(m.id,y));y.remove()}else{s=!0;t._hasNoCanvas=!0}const A=(await e._structTree.getAriaAttributes(`${g}${o}`))?.get("aria-label")||"";n=t={annotationType:f.STAMP,bitmapId:v,bitmap:w,pageIndex:b-1,rect:r.slice(0),rotation:a,annotationElementId:o,id:o,deleted:!1,accessibilityData:{decorative:!1,altText:A},isSvg:!1,structParent:l,popupRef:h,richText:c,comment:d?.str||null,creationDate:u,modificationDate:p}}const r=await super.deserialize(t,e,i),{rect:a,bitmap:o,bitmapUrl:l,bitmapId:h,isSvg:c,accessibilityData:d}=t;if(s){i.addMissingCanvas(t.id,r);r.#Rh=!0}else if(h&&i.imageManager.isValidId(h)){r.#Ph=h;o&&(r.#Dh=o)}else r.#Ih=l;r.#Nh=c;const[u,p]=r.pageDimensions;r.width=(a[2]-a[0])/u;r.height=(a[3]-a[1])/p;d&&(r.altTextData=d);r._initialData=n;t.comment&&r.setCommentData(t);r.#Uh=!!n;return r}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const i=Object.assign(super.serialize(t),{bitmapId:this.#Ph,isSvg:this.#Nh});this.addComment(i);if(t){i.bitmapUrl=this.#jh(!0);i.accessibilityData=this.serializeAltText(!0);i.isCopy=!0;return i}const{decorative:n,altText:s}=this.serializeAltText(!1);!n&&s&&(i.accessibilityData={type:"Figure",alt:s});if(this.annotationElementId){const t=this.#Lo(i);if(t.isSame)return null;t.isSameAltText?delete i.accessibilityData:i.accessibilityData.structParent=this._initialData.structParent??-1;i.id=this.annotationElementId;delete i.bitmapId;return i}if(null===e)return i;e.stamps||=new Map;const r=this.#Nh?(i.rect[2]-i.rect[0])*(i.rect[3]-i.rect[1]):null;if(e.stamps.has(this.#Ph)){if(this.#Nh){const t=e.stamps.get(this.#Ph);if(r>t.area){t.area=r;t.serialized.bitmap.close();t.serialized.bitmap=this.#jh(!1)}}}else{e.stamps.set(this.#Ph,{area:r,serialized:i});i.bitmap=this.#jh(!1)}return i}#Lo(t){const{pageIndex:e,accessibilityData:{altText:i}}=this._initialData,n=t.pageIndex===e,s=(t.accessibilityData?.alt||"")===i;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&n&&s,isSameAltText:s}}renderAnnotationElement(t){if(this.deleted){t.hide();return null}t.updateEdited({rect:this.getPDFRect(),popup:this.comment});return null}}class AnnotationEditorLayer{#vo;#Xh=!1;#Kh=null;#Yh=null;#qh=null;#Qh=new Map;#Jh=!1;#Zh=!1;#tc=!1;#ec=null;#ic=null;#nc=null;#sc=null;#rc=null;#ac=-1;#v;static _initialized=!1;static#tt=new Map([FreeTextEditor,InkEditor,StampEditor,HighlightEditor,SignatureEditor].map(t=>[t._editorType,t]));constructor({uiManager:t,pageIndex:e,div:i,structTreeLayer:n,accessibilityManager:s,annotationLayer:r,drawLayer:a,textLayer:o,viewport:l,l10n:h}){const c=[...AnnotationEditorLayer.#tt.values()];if(!AnnotationEditorLayer._initialized){AnnotationEditorLayer._initialized=!0;for(const e of c)e.initialize(h,t)}t.registerEditorTypes(c);this.#v=t;this.pageIndex=e;this.div=i;this.#vo=s;this.#Kh=r;this.viewport=l;this.#nc=o;this.drawLayer=a;this._structTree=n;this.#v.addLayer(this)}get isEmpty(){return 0===this.#Qh.size}get isInvisible(){return this.isEmpty&&this.#v.getMode()===f.NONE}updateToolbar(t){this.#v.updateToolbar(t)}updateMode(t=this.#v.getMode()){this.#oc();switch(t){case f.NONE:this.div.classList.toggle("nonEditing",!0);this.disableTextSelection();this.togglePointerEvents(!1);this.toggleAnnotationLayerPointerEvents(!0);this.disableClick();return;case f.INK:this.disableTextSelection();this.togglePointerEvents(!0);this.enableClick();break;case f.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;e.toggle("nonEditing",!1);if(t===f.POPUP)e.toggle("commentEditing",!0);else{e.toggle("commentEditing",!1);for(const i of AnnotationEditorLayer.#tt.values())e.toggle(`${i._type}Editing`,t===i._editorType)}this.div.hidden=!1}hasTextLayer(t){return t===this.#nc?.div}setEditingState(t){this.#v.setEditingState(t)}addCommands(t){this.#v.addCommands(t)}cleanUndoStack(t){this.#v.cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){this.#Kh?.togglePointerEvents(t)}get#lc(){return 0!==this.#Qh.size?this.#Qh.values():this.#v.getEditors(this.pageIndex)}async enable(){this.#tc=!0;this.div.tabIndex=0;this.togglePointerEvents(!0);this.div.classList.toggle("nonEditing",!1);this.#rc?.abort();this.#rc=null;const t=new Set;for(const e of this.#lc){e.enableEditing();e.show(!0);if(e.annotationElementId){this.#v.removeChangedExistingAnnotation(e);t.add(e.annotationElementId)}}const e=this.#Kh;if(e)for(const i of e.getEditableAnnotations()){i.hide();if(this.#v.isDeletedAnnotationElement(i.data.id))continue;if(t.has(i.data.id))continue;const e=await this.deserialize(i);if(e){this.addOrRebuild(e);e.enableEditing()}}this.#tc=!1;this.#v._eventBus.dispatch("editorsrendered",{source:this,pageNumber:this.pageIndex+1})}disable(){this.#Zh=!0;this.div.tabIndex=-1;this.togglePointerEvents(!1);this.div.classList.toggle("nonEditing",!0);if(this.#nc&&!this.#rc){this.#rc=new AbortController;const t=this.#v.combinedSignal(this.#rc);this.#nc.div.addEventListener("pointerdown",t=>{const{clientX:e,clientY:i,timeStamp:n}=t;if(n-this.#ac>500){this.#ac=n;return}this.#ac=-1;const{classList:s}=this.div;s.toggle("getElements",!0);const r=document.elementsFromPoint(e,i);s.toggle("getElements",!1);if(!this.div.contains(r[0]))return;let a;const o=new RegExp(`^${m}[0-9]+$`);for(const t of r)if(o.test(t.id)){a=t.id;break}if(!a)return;const l=this.#Qh.get(a);if(null===l?.annotationElementId){stopEvent(t);l.dblclick(t)}},{signal:t,capture:!0})}const t=this.#Kh,e=[];if(t){const i=new Map,n=new Map;for(const t of this.#lc){t.disableEditing();if(t.annotationElementId)if(null===t.serialize()){n.set(t.annotationElementId,t);this.getEditableAnnotation(t.annotationElementId)?.show();t.remove()}else i.set(t.annotationElementId,t);else e.push(t)}for(const e of t.getEditableAnnotations()){const{id:t}=e.data;if(this.#v.isDeletedAnnotationElement(t)){e.updateEdited({deleted:!0});continue}let s=n.get(t);if(s){s.resetAnnotationElement(e);s.show(!1);e.show()}else{s=i.get(t);if(s){this.#v.addChangedExistingAnnotation(s);s.renderAnnotationElement(e)&&s.show(!1)}e.show()}}}this.#oc();this.isEmpty&&(this.div.hidden=!0);const{classList:i}=this.div;for(const t of AnnotationEditorLayer.#tt.values())i.remove(`${t._type}Editing`);this.disableTextSelection();this.toggleAnnotationLayerPointerEvents(!0);t?.updateFakeAnnotations(e);this.#Zh=!1}getEditableAnnotation(t){return this.#Kh?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#v.getActive()!==t&&this.#v.setActiveEditor(t)}enableTextSelection(){this.div.tabIndex=-1;if(this.#nc?.div&&!this.#sc){this.#sc=new AbortController;const t=this.#v.combinedSignal(this.#sc);this.#nc.div.addEventListener("pointerdown",this.#hc.bind(this),{signal:t});this.#nc.div.classList.add("highlighting")}}disableTextSelection(){this.div.tabIndex=0;if(this.#nc?.div&&this.#sc){this.#sc.abort();this.#sc=null;this.#nc.div.classList.remove("highlighting")}}#hc(t){this.#v.unselectAll();const{target:e}=t;if(e===this.#nc.div||("img"===e.getAttribute("role")||e.classList.contains("endOfContent")||e.classList.contains("textLayerImages")||e.classList.contains("textLayerImagePlaceholder"))&&this.#nc.div.contains(e)){const{isMac:e}=FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;this.#v.showAllEditors("highlight",!0,!0);HighlightEditor.startDrawing(this,this.#v,"ltr"===this.#v.direction,t);t.preventDefault()}}enableClick(){if(this.#Yh)return;this.#Yh=new AbortController;const t=this.#v.combinedSignal(this.#Yh);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.#Yh?.abort();this.#Yh=null}attach(t){this.#Qh.set(t.id,t);const{annotationElementId:e}=t;e&&this.#v.isDeletedAnnotationElement(e)&&this.#v.removeDeletedAnnotationElement(t)}detach(t){this.#Qh.delete(t.id);this.#vo?.removePointerInTextLayer(t.contentDiv);!this.#Zh&&t.annotationElementId&&this.#v.addDeletedAnnotationElement(t)}remove(t){this.detach(t);this.#v.removeEditor(t);t.div.remove();t.isAttachedToDOM=!1}changeParent(t){if(t.parent!==this){if(t.parent&&t.annotationElementId){this.#v.addDeletedAnnotationElement(t);AnnotationEditor.deleteAnnotationElement(t);t.annotationElementId=null}this.attach(t);t.parent?.detach(t);t.setParent(this);if(t.div&&t.isAttachedToDOM){t.div.remove();this.div.append(t.div)}}}add(t){if(t.parent!==this||!t.isAttachedToDOM){this.changeParent(t);this.#v.addEditor(t);this.attach(t);if(!t.isAttachedToDOM){const e=t.render();this.div.append(e);t.isAttachedToDOM=!0}t.fixAndSetPosition();t.onceAdded(!this.#tc);this.#v.addToAnnotationStorage(t);t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){if(!t.isAttachedToDOM)return;const{activeElement:e}=document;if(t.div.contains(e)&&!this.#qh){t._focusEventsAllowed=!1;this.#qh=setTimeout(()=>{this.#qh=null;if(t.div.contains(document.activeElement))t._focusEventsAllowed=!0;else{t.div.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this.#v._signal});e.focus()}},0)}t._structTreeParentId=this.#vo?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){if(t.needsToBeRebuilt()){t.parent||=this;t.rebuild();t.show()}else this.add(t)}addUndoableEditor(t){this.addCommands({cmd:()=>t._uiManager.rebuild(t),undo:()=>{t.remove()},mustExec:!1})}getEditorByUID(t){for(const e of this.#Qh.values())if(e.uid===t)return e;return null}get#cc(){return AnnotationEditorLayer.#tt.get(this.#v.getMode())}combinedSignal(t){return this.#v.combinedSignal(t)}#dc(t){const e=this.#cc;return e?new e.prototype.constructor(t):null}canCreateNewEmptyEditor(){return this.#cc?.canCreateNewEmptyEditor()}async pasteEditor(t,e){this.updateToolbar(t);await this.#v.updateMode(t.mode);const{offsetX:i,offsetY:n}=this.#uc(),s=this.#v.getId(),r=this.#dc({parent:this,id:s,x:i,y:n,uiManager:this.#v,isCentered:!0,...e});r&&this.add(r)}async deserialize(t){return await(AnnotationEditorLayer.#tt.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#v))||null}createAndAddNewEditor(t,e,i={}){const n=this.#v.getId(),s=this.#dc({parent:this,id:n,x:t.offsetX,y:t.offsetY,uiManager:this.#v,isCentered:e,...i});s&&this.add(s);return s}get boundingClientRect(){return this.div.getBoundingClientRect()}#uc(){const{x:t,y:e,width:i,height:n}=this.boundingClientRect,s=Math.max(0,t),r=Math.max(0,e),a=(s+Math.min(window.innerWidth,t+i))/2-t,o=(r+Math.min(window.innerHeight,e+n))/2-e,[l,h]=this.viewport.rotation%180==0?[a,o]:[o,a];return{offsetX:l,offsetY:h}}addNewEditor(t={}){this.createAndAddNewEditor(this.#uc(),!0,t)}setSelected(t){this.#v.setSelected(t)}toggleSelected(t){this.#v.toggleSelected(t)}unselect(t){this.#v.unselect(t)}pointerup(t){const{isMac:e}=FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;if(t.target!==this.div)return;if(!this.#Jh)return;this.#Jh=!1;if(this.#cc?.isDrawer&&this.#cc.supportMultipleDrawings)return;if(!this.#Xh){this.#Xh=!0;return}const i=this.#v.getMode();i!==f.STAMP&&i!==f.POPUP&&i!==f.SIGNATURE?this.createAndAddNewEditor(t,!1):this.#v.unselectAll()}pointerdown(t){this.#v.getMode()===f.HIGHLIGHT&&this.enableTextSelection();if(this.#Jh){this.#Jh=!1;return}const{isMac:e}=FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;if(t.target!==this.div)return;this.#Jh=!0;if(this.#cc?.isDrawer){this.startDrawingSession(t);return}const i=this.#v.getActive();this.#Xh=!i||i.isEmpty()}startDrawingSession(t){this.div.focus({preventScroll:!0});if(this.#ec){this.#cc.startDrawing(this,this.#v,!1,t);return}this.#v.setCurrentDrawingSession(this);this.#ec=new AbortController;const e=this.#v.combinedSignal(this.#ec);this.div.addEventListener("blur",({relatedTarget:t})=>{if(t&&!this.div.contains(t)){this.#ic=null;this.commitOrRemove()}},{signal:e});this.#cc.startDrawing(this,this.#v,!1,t)}pause(t){if(t){const{activeElement:t}=document;this.div.contains(t)&&(this.#ic=t);return}this.#ic&&setTimeout(()=>{this.#ic?.focus();this.#ic=null},0)}endDrawingSession(t=!1){if(!this.#ec)return null;this.#v.setCurrentDrawingSession(null);this.#ec.abort();this.#ec=null;this.#ic=null;return this.#cc.endDrawing(t)}findNewParent(t,e,i){const n=this.#v.findParent(e,i);if(null===n||n===this)return!1;n.changeParent(t);return!0}commitOrRemove(){if(this.#ec){this.endDrawingSession();return!0}return!1}onScaleChanging(){this.#ec&&this.#cc.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove();if(this.#v.getActive()?.parent===this){this.#v.commitOrRemove();this.#v.setActiveEditor(null)}if(this.#qh){clearTimeout(this.#qh);this.#qh=null}for(const t of this.#Qh.values()){this.#vo?.removePointerInTextLayer(t.contentDiv);t.setParent(null);t.isAttachedToDOM=!1;t.div.remove()}this.div=null;this.#Qh.clear();this.#v.removeLayer(this)}#oc(){for(const t of this.#Qh.values())t.isEmpty()&&t.remove()}async render({viewport:t}){this.viewport=t;setLayerDimensions(this.div,t);for(const t of this.#v.getEditors(this.pageIndex)){this.add(t);t.rebuild()}await this.#v.findClonesForPage(this);this.div.hidden=this.isEmpty;this.updateMode()}update({viewport:t}){this.#v.commitOrRemove();this.#oc();const e=this.viewport.rotation,i=t.rotation;this.viewport=t;setLayerDimensions(this.div,{rotation:i});if(e!==i)for(const t of this.#Qh.values())t.rotate(i)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return this.#v.viewParameters.realScale}}function compareTextLayers(t,e){return t===e?0:t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function getTextLayer(t){return t?t.nodeType===Node.ELEMENT_NODE?t.closest(".textLayer"):t.parentElement?.closest(".textLayer")||null:null}function isPointBefore(t,e,i,n){if(t===i)return e<=n;const s=t.compareDocumentPosition(i);return!!(s&Node.DOCUMENT_POSITION_FOLLOWING)||!(s&Node.DOCUMENT_POSITION_PRECEDING)&&null}function normalizeEdgeBoundary(t,e,i){if(t.nodeType!==Node.ELEMENT_NODE||!t.classList.contains("textLayer")||e!==t.childNodes.length)return{container:t,offset:e};let n=t.lastChild;n?.nodeType===Node.ELEMENT_NODE&&n.classList.contains("endOfContent")&&(n=n.previousSibling);return n&&i.contains(n)?n.nodeType===Node.TEXT_NODE?{container:n,offset:n.textContent.length}:{container:n,offset:n.childNodes.length}:null}class DrawLayer{#Ua=null;#pc=new Map;#nc=null;#rt=null;#Et=null;#gc=null;#mc=new Map;static#_=0;static#fc=0;static#bc=null;static#yc=new Set;static#vc=!1;static#wc=new Set;static#Ac=new WeakMap;constructor({filterFactory:t=null,pageColors:e=null,pageIndex:i,textLayer:n=null}){this.pageIndex=i;this.#rt=t;this.#Et=e;if(n){const t=DrawLayer.#Ac.get(n);if(t?.selectionDiv){t.selectionDiv.remove();DrawLayer.#yc.delete(t.selectionDiv)}DrawLayer.#Ac.set(n,{drawLayer:this});DrawLayer.#wc.add(n);this.#nc=n;this.#gc=new MutationObserver(t=>{if(this.#Ua&&this.#nc?.isConnected&&DrawLayer.#xc())for(const{addedNodes:e}of t)for(const t of e)if(t.nodeType===Node.ELEMENT_NODE&&t.classList.contains("endOfContent")){DrawLayer.#Ht();return}});this.#gc.observe(n,{childList:!0});if(null===DrawLayer.#bc){DrawLayer.#bc=new AbortController;const{signal:t}=DrawLayer.#bc;document.addEventListener("selectionchange",DrawLayer.#Ht.bind(DrawLayer),{signal:t});document.addEventListener("pointerdown",()=>{DrawLayer.#vc=!0},{signal:t});document.addEventListener("pointerup",()=>{DrawLayer.#vc=!1},{signal:t});window.addEventListener("blur",()=>{DrawLayer.#vc=!1},{signal:t})}}}setParent(t){if(this.#Ua){if(this.#Ua!==t){if(this.#pc.size>0)for(const e of this.#pc.values()){e.remove();t.append(e)}this.#Ua=t}}else{this.#Ua=t;this.#nc?.isConnected&&DrawLayer.#xc()&&DrawLayer.#Ht()}}static#Cc(t){const e=this.#Ac.get(t);if(e?.selectionDiv){e.selectionDiv.remove();this.#yc.delete(e.selectionDiv);e.selectionDiv=null;e.path=null}}static#xc(){const t=document.getSelection();return!!t&&!t.isCollapsed}static#Ec(){return this.#wc.keys().filter(t=>t.isConnected).toArray().sort(compareTextLayers)}static#Ht(){const t=document.getSelection();if(!t||t.isCollapsed){for(const t of this.#yc)t.remove();this.#yc.clear();return}const e=new WeakMap,i=this.#Ec(),n=[];for(let e=0,s=t.rangeCount;es.intersectsNode(t));if(0===p.length)continue;let g=!1;if(!h){h=p[0];r=h;a=0;g=!0}if(!c){c=p.at(-1);o=c;l=c.childNodes.length;g=!0}if(o.nodeType===Node.ELEMENT_NODE)if(o.classList.contains("endOfContent")){const t=o.previousSibling;if(!t)continue;o=t;l=t.nodeType===Node.TEXT_NODE?t.textContent.length:t.childNodes.length}else if(o.classList.contains("textLayer")&&o.childNodes.length===l){const t=normalizeEdgeBoundary(o,l,c);if(!t)continue;o=t.container;l=t.offset}if(r.nodeType===Node.ELEMENT_NODE){const t=normalizeEdgeBoundary(r,a,h);if(!t)continue;r=t.container;a=t.offset}if(h!==c||g||!p.includes(h))for(const t of p){const e=t.firstChild;if(!e)continue;const i=document.createRange();t===h?i.setStart(r,a):i.setStartBefore(e);if(t===c)i.setEnd(o,l);else{const e=t.lastChild;if(!e)continue;if(e.nodeType===Node.ELEMENT_NODE&&e.classList.contains("endOfContent")){const t=e.previousSibling;if(!t)continue;i.setEndAfter(t)}else i.setEndAfter(e)}i.collapsed||n.push([i,t])}else n.push([s,h])}const s=new Set(n.map(t=>t[1]));for(const t of this.#wc)s.has(t)||this.#Cc(t);for(const[t,i]of n){const n=DrawLayer.#Ac.get(i);if(!n)continue;let s=e.get(i);if(!s){const t=i.getBoundingClientRect();s=(e,i,n,s)=>({x:(e-t.x)/t.width,y:(i-t.y)/t.height,width:n/t.width,height:s/t.height});e.set(i,s)}const r=[];for(let{x:e,y:i,width:n,height:a}of t.getClientRects())if(0!==n&&0!==a){({x:e,y:i,width:n,height:a}=s(e,i,n,a));1===n&&1===a||r.push(`M${e} ${i} h${n} v${a} h-${n} Z`)}if(0===r.length)continue;const a=n.drawLayer;let o=n.selectionDiv,l=n.path;if(!o){const t="clip_selection_"+DrawLayer.#fc++;o=document.createElement("div");o.className="selection";o.style.clipPath=`url(#${t})`;const e=a.#rt?.createSelectionStyle(a.#Et);if(e)for(const[t,i]of Object.entries(e))o.style.setProperty(t,i);const i=DrawLayer._svgFactory.create(1,1,!0);i.setAttribute("aria-hidden","true");i.setAttribute("width","100%");i.setAttribute("height","100%");const s=DrawLayer._svgFactory.createElement("clipPath");s.setAttribute("id",t);s.setAttribute("clipPathUnits","objectBoundingBox");l=DrawLayer._svgFactory.createElement("path");s.append(l);i.append(s);o.append(i);n.path=l;n.selectionDiv=o}if(a.#Ua&&o.parentNode!==a.#Ua){a.#Ua.append(o);this.#yc.add(o)}l.setAttribute("d",r.join(" "))}}static get _svgFactory(){return shadow(this,"_svgFactory",new DOMSVGFactory)}static#Sc(t,[e,i,n,s]){const{style:r}=t;r.top=100*i+"%";r.left=100*e+"%";r.width=100*n+"%";r.height=100*s+"%"}#Tc(){const t=DrawLayer._svgFactory.create(1,1,!0);this.#Ua.append(t);t.setAttribute("aria-hidden","true");return t}#_c(t,e){const i=DrawLayer._svgFactory.createElement("clipPath");t.append(i);const n=`clip_${e}`;i.setAttribute("id",n);i.setAttribute("clipPathUnits","objectBoundingBox");const s=DrawLayer._svgFactory.createElement("use");i.append(s);s.setAttribute("href",`#${e}`);s.classList.add("clip");return n}#kc(t,e){for(const[i,n]of Object.entries(e))null===n?t.removeAttribute(i):t.setAttribute(i,n)}draw(t,e=!1,i=!1){const n=DrawLayer.#_++,s=this.#Tc(),r=DrawLayer._svgFactory.createElement("defs");s.append(r);const a=DrawLayer._svgFactory.createElement("path");r.append(a);const o=`path_${n}`;a.setAttribute("id",o);a.setAttribute("vector-effect","non-scaling-stroke");e&&this.#mc.set(n,a);const l=i?this.#_c(r,o):null,h=DrawLayer._svgFactory.createElement("use");s.append(h);h.setAttribute("href",`#${o}`);this.updateProperties(s,t);this.#pc.set(n,s);return{id:n,clipPathId:`url(#${l})`}}drawOutline(t,e){const i=DrawLayer.#_++,n=this.#Tc(),s=DrawLayer._svgFactory.createElement("defs");n.append(s);const r=DrawLayer._svgFactory.createElement("path");s.append(r);const a=`path_${i}`;r.setAttribute("id",a);r.setAttribute("vector-effect","non-scaling-stroke");let o;if(e){const t=DrawLayer._svgFactory.createElement("mask");s.append(t);o=`mask_${i}`;t.setAttribute("id",o);t.setAttribute("maskUnits","objectBoundingBox");const e=DrawLayer._svgFactory.createElement("rect");t.append(e);e.setAttribute("width","1");e.setAttribute("height","1");e.setAttribute("fill","white");const n=DrawLayer._svgFactory.createElement("use");t.append(n);n.setAttribute("href",`#${a}`);n.setAttribute("stroke","none");n.setAttribute("fill","black");n.setAttribute("fill-rule","nonzero");n.classList.add("mask")}const l=DrawLayer._svgFactory.createElement("use");n.append(l);l.setAttribute("href",`#${a}`);o&&l.setAttribute("mask",`url(#${o})`);const h=l.cloneNode();n.append(h);l.classList.add("mainOutline");h.classList.add("secondaryOutline");this.updateProperties(n,t);this.#pc.set(i,n);return i}finalizeDraw(t,e){this.#mc.delete(t);this.updateProperties(t,e)}updateProperties(t,e){if(!e)return;const{root:i,bbox:n,rootClass:s,path:r}=e,a="number"==typeof t?this.#pc.get(t):t;if(a){i&&this.#kc(a,i);n&&DrawLayer.#Sc(a,n);if(s){const{classList:t}=a;for(const[e,i]of Object.entries(s))t.toggle(e,i)}if(r){const t=a.firstElementChild.firstElementChild;this.#kc(t,r)}}}updateParent(t,e){if(e===this)return;const i=this.#pc.get(t);if(i){e.#Ua.append(i);this.#pc.delete(t);e.#pc.set(t,i)}}remove(t){this.#mc.delete(t);if(null!==this.#Ua){this.#pc.get(t).remove();this.#pc.delete(t)}}destroy(){this.#Ua=null;for(const t of this.#pc.values())t.remove();this.#pc.clear();this.#mc.clear();this.#gc?.disconnect();this.#gc=null;if(this.#nc){const t=DrawLayer.#Ac.get(this.#nc);if(t?.drawLayer===this){DrawLayer.#Cc(this.#nc);DrawLayer.#Ac.delete(this.#nc);DrawLayer.#wc.delete(this.#nc);if(0===DrawLayer.#wc.size){DrawLayer.#bc?.abort();DrawLayer.#bc=null;DrawLayer.#vc=!1}}this.#nc=null}}}function percentage(t){return`${(100*t).toFixed(2)}%`}class TextLayerImages{#Dc=[];#Pc=new Map;#Mc=null;#Ic=0;#dr=0;#cr=0;static#Fc=null;constructor(t,e,i,n){this.#Ic=t;this.#Dc=e;this.#dr=i.rawDims.pageWidth;this.#cr=i.rawDims.pageHeight;this.#Mc=n}render(){const t=document.createElement("div");t.className="textLayerImages";for(let e=0;e{if(!(t.target instanceof HTMLCanvasElement))return;const e=t.target,i=this.#Pc.get(e);if(!i)return;const n=TextLayerImages.#Fc?.deref();if(n===e)return;if(n){n.width=0;n.height=0}TextLayerImages.#Fc=new WeakRef(e);const{inverseTransform:s,x1:r,y1:a,width:o,height:l}=i,h=this.#Mc(),c=Math.ceil(r*h.width),d=Math.ceil(a*h.height),u=Math.floor((r+o/this.#dr)*h.width),p=Math.floor((a+l/this.#cr)*h.height);e.width=u-c;e.height=p-d;const g=e.getContext("2d");g.setTransform(...s);g.translate(-c,-d);g.drawImage(h,0,0)});return t}#Oc([t,e,i,n,s,r]){const a=Math.hypot((s-t)*this.#dr,(r-e)*this.#cr),o=Math.hypot((i-t)*this.#dr,(n-e)*this.#cr);if(a=he&&console.info(`Info: ${e}`)}function warn(e){nn>=ce&&console.warn(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function createValidAbsoluteUrl(e,t=null,n=null){if(!e)return null;if(n&&"string"==typeof e){if(n.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(n.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const a=t?URL.parse(e,t):URL.parse(e);return function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(a)?a:null}function shadow(e,t,n,a=!1){Object.defineProperty(e,t,{value:n,enumerable:!a,configurable:!0,writable:!1});return n}const an=function BaseExceptionClosure(){function BaseException(e,t){this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends an{constructor(e,t){super(e,"PasswordException");this.code=t}}class UnknownErrorException extends an{constructor(e,t){super(e,"UnknownErrorException");this.details=t}}class InvalidPDFException extends an{constructor(e){super(e,"InvalidPDFException")}}class ResponseException extends an{constructor(e,t,n){super(e,"ResponseException");this.status=t;this.missing=n}}class FormatError extends an{constructor(e){super(e,"FormatError")}}class AbortException extends an{constructor(e){super(e,"AbortException")}}function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,n=8192;if(tt.toString(16).padStart(2,"0")))}static makeHexColor(e,t,n){return`#${this.hexNums[e]}${this.hexNums[t]}${this.hexNums[n]}`}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static multiplyByDOMMatrix(e,t){return[e[0]*t.a+e[2]*t.b,e[1]*t.a+e[3]*t.b,e[0]*t.c+e[2]*t.d,e[1]*t.c+e[3]*t.d,e[0]*t.e+e[2]*t.f+e[4],e[1]*t.e+e[3]*t.f+e[5]]}static applyTransform(e,t,n=0){const a=e[n],s=e[n+1];e[n]=a*t[0]+s*t[2]+t[4];e[n+1]=a*t[1]+s*t[3]+t[5]}static applyTransformToBezier(e,t,n=0){const a=t[0],s=t[1],r=t[2],i=t[3],o=t[4],l=t[5];for(let t=0;t<6;t+=2){const f=e[n+t],c=e[n+t+1];e[n+t]=f*a+c*r+o;e[n+t+1]=f*s+c*i+l}}static applyInverseTransform(e,t){const n=e[0],a=e[1],s=t[0]*t[3]-t[1]*t[2];e[0]=(n*t[3]-a*t[2]+t[2]*t[5]-t[4]*t[3])/s;e[1]=(-n*t[1]+a*t[0]+t[4]*t[1]-t[5]*t[0])/s}static axialAlignedBoundingBox(e,t,n){const a=t[0],s=t[1],r=t[2],i=t[3],o=t[4],l=t[5],f=e[0],c=e[1],h=e[2],u=e[3];let m=a*f+o,p=m,d=a*h+o,g=d,b=i*c+l,w=b,j=i*u+l,k=j;if(0!==s||0!==r){const e=s*f,t=s*h,n=r*c,a=r*u;m+=n;g+=n;d+=a;p+=a;b+=e;k+=e;j+=t;w+=t}n[0]=Math.min(n[0],m,d,p,g);n[1]=Math.min(n[1],b,j,w,k);n[2]=Math.max(n[2],m,d,p,g);n[3]=Math.max(n[3],b,j,w,k)}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e,t){const n=e[0],a=e[1],s=e[2],r=e[3],i=n**2+a**2,o=n*s+a*r,l=s**2+r**2,f=(i+l)/2,c=Math.sqrt(f**2-(i*l-o**2));t[0]=Math.sqrt(f+c||1);t[1]=Math.sqrt(f-c||1)}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const n=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(n>a)return null;const s=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),r=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return s>r?null:[n,s,a,r]}static pointBoundingBox(e,t,n){n[0]=Math.min(n[0],e);n[1]=Math.min(n[1],t);n[2]=Math.max(n[2],e);n[3]=Math.max(n[3],t)}static rectBoundingBox(e,t,n,a,s){s[0]=Math.min(s[0],e,n);s[1]=Math.min(s[1],t,a);s[2]=Math.max(s[2],e,n);s[3]=Math.max(s[3],t,a)}static#e(e,t,n,a,s,r,i,o,l,f){if(l<=0||l>=1)return;const c=1-l,h=l*l,u=h*l,m=c*(c*(c*e+3*l*t)+3*h*n)+u*a,p=c*(c*(c*s+3*l*r)+3*h*i)+u*o;f[0]=Math.min(f[0],m);f[1]=Math.min(f[1],p);f[2]=Math.max(f[2],m);f[3]=Math.max(f[3],p)}static#t(e,t,n,a,s,r,i,o,l,f,c,h){if(Math.abs(l)<1e-12){Math.abs(f)>=1e-12&&this.#e(e,t,n,a,s,r,i,o,-c/f,h);return}const u=f**2-4*c*l;if(u<0)return;const m=Math.sqrt(u),p=2*l;this.#e(e,t,n,a,s,r,i,o,(-f+m)/p,h);this.#e(e,t,n,a,s,r,i,o,(-f-m)/p,h)}static bezierBoundingBox(e,t,n,a,s,r,i,o,l){l[0]=Math.min(l[0],e,i);l[1]=Math.min(l[1],t,o);l[2]=Math.max(l[2],e,i);l[3]=Math.max(l[3],t,o);this.#t(e,n,s,i,t,a,r,o,3*(3*(n-s)-e+i),6*(e-2*n+s),3*(n-e),l);this.#t(e,n,s,i,t,a,r,o,3*(3*(a-r)-t+o),6*(t-2*a+r),3*(a-t),l)}}function stringToUTF8String(e){return decodeURIComponent(escape(e))}function utf8StringToString(e){return unescape(encodeURIComponent(e))}function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let n=0,a=e.length;n[],makeMap=()=>new Map,makeObj=()=>Object.create(null),makeSet=()=>new Set;"function"!=typeof Iterator.prototype.join&&(Iterator.prototype.join=function(e){return[...this].join(e)});const on=Symbol("CIRCULAR_REF"),ln=Symbol("EOF");let fn=Object.create(null),cn=Object.create(null),hn=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return cn[e]||=new Name(e)}}class Cmd{constructor(e){this.cmd=e}static get(e){return fn[e]||=new Cmd(e)}}const nonSerializable=()=>nonSerializable;class Dict{__nonSerializable__=nonSerializable;#n=new Map;objId=null;suppressEncryption=!1;xref;constructor(e=null){this.xref=e}assignXref(e){this.xref=e}get size(){return this.#n.size}#a(e,t,n){let a=this.#n.get(t);void 0===a&&void 0!==n&&(a=this.#n.get(n));return a instanceof Ref&&this.xref?e?this.xref.fetchAsync(a,this.suppressEncryption):this.xref.fetch(a,this.suppressEncryption):a}get(e,t){return this.#a(!1,e,t)}async getAsync(e,t){return this.#a(!0,e,t)}getArray(e,t){let n=this.#a(!1,e,t);if(Array.isArray(n)){n=n.slice();for(let e=0,t=n.length;e{unreachable("Should not call `set` on the empty dictionary.")};return shadow(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:n=!1}){const a=new Dict(e),s=new Map;for(const e of t)if(e instanceof Dict)for(const[t,a]of e.getRawEntries()){const e=s.getOrInsertComputed(t,makeArr);(!e.length||n&&a instanceof Dict)&&e.push(a)}for(const[t,n]of s){if(1===n.length||!(n[0]instanceof Dict)){a.set(t,n[0]);continue}const s=new Dict(e);for(const e of n)for(const[t,n]of e.getRawEntries())s.setIfNotExists(t,n);s.size>0&&a.set(t,s)}s.clear();return a.size>0?a:Dict.empty}clone(){const e=new Dict(this.xref);for(const[t,n]of this.#n)e.set(t,n);return e}delete(e){this.#n.delete(e)}}class Ref{#s;constructor(e,t,n){this.#s=e;this.num=t;this.gen=n}toString(){return this.#s}static fromString(e){const t=hn[e];if(t)return t;const n=/^(\d+)R(\d*)$/.exec(e);if(!n||"0"===n[1])return null;const a=parseInt(n[1],10),s=n[2]?parseInt(n[2],10):0;return hn[e]=new Ref(e,a,s)}static get(e,t){const n=0===t?`${e}R`:`${e}R${t}`;return hn[n]||=new Ref(n,e,t)}}class RefSet{#r=new Set;constructor(e=null){if(e)for(const t of e)this.#r.add(t)}has(e){return this.#r.has(e.toString())}put(e){this.#r.add(e.toString())}remove(e){this.#r.delete(e.toString())}[Symbol.iterator](){return this.#r.keys()}clear(){this.#r.clear()}}class RefMap{#n=new Map;get size(){return this.#n.size}get(e){return this.#n.get(e.toString())}has(e){return this.#n.has(e.toString())}put(e,t){this.#n.set(e.toString(),t)}putAlias(e,t){this.#n.set(e.toString(),this.get(t))}getOrPutComputed(e,t){const n=this.#n,a=e.toString();n.has(a)||n.set(a,t(e));return n.get(a)}[Symbol.iterator](){return this.#n.values()}clear(){this.#n.clear()}*values(){yield*this.#n.values()}*items(){for(const[e,t]of this.#n)yield[Ref.fromString(e),t]}*keys(){for(const e of this.#n.keys())yield Ref.fromString(e)}}function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)}function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))}function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen}class BaseStream{get length(){unreachable("Abstract getter `length` accessed")}get isEmpty(){unreachable("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return shadow(this,"isDataLoaded",!0)}getByte(){unreachable("Abstract method `getByte` called")}getBytes(e){unreachable("Abstract method `getBytes` called")}async getImageData(e,t){return this.getBytes(e,t)}async asyncGetBytes(){unreachable("Abstract method `asyncGetBytes` called")}get isAsync(){return!1}get isAsyncDecoder(){return!1}get isImageStream(){return!1}get canAsyncDecodeImageFromBuffer(){return!1}async getTransferableImage(e,t){return null}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){unreachable("Abstract method `getByteRange` called")}getString(e){return bytesToString(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){unreachable("Abstract method `reset` called")}moveStart(){unreachable("Abstract method `moveStart` called")}makeSubStream(e,t,n=null){unreachable("Abstract method `makeSubStream` called")}clone(){unreachable("Abstract method `clone` called")}getBaseStreams(){return null}getOriginalStream(){return this.stream?.getOriginalStream()||this}}const un=/\p{Cc}/u;function serializeFontFamily(e){if(function isCSSString(e){const t=e[0];if(e.length<2||'"'!==t&&"'"!==t||e.at(-1)!==t)return!1;const n=e.length-1;for(let a=1;a=n||un.test(e[a])))return!1}return!0}(e))return e;return`"${e.replaceAll(/["\\\p{Cc}]/gu,e=>'"'===e||"\\"===e?`\\${e}`:`\\${e.codePointAt(0).toString(16)} `)}"`}function stringToAsciiOrUTF16BE(e){return null==e||function isAscii(e){return"string"==typeof e&&(!e||/^[\x00-\x7F]*$/.test(e))}(e)?e:stringToUTF16String(e,!0)}function stringToUTF16HexString(e){const t=[];for(let n=0,a=e.length;n>8&255],Util.hexNums[255&a])}return t.join("")}function stringToUTF16String(e,t=!1){const n=[];t&&n.push("þÿ");for(let t=0,a=e.length;t>8&255),String.fromCharCode(255&a))}return n.join("")}const mn=[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],pn=Object.create(null);function stringToPDFString(e,t=!1){if(e[0]>="ï"){let n;if("þ"===e[0]&&"ÿ"===e[1]){n="utf-16be";e.length%2==1&&(e=e.slice(0,-1))}else if("ÿ"===e[0]&&"þ"===e[1]){n="utf-16le";e.length%2==1&&(e=e.slice(0,-1))}else"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(n="utf-8");if(n)try{const a=pn[n]??=new TextDecoder(n,{fatal:!0}),s=stringToBytes(e),r=a.decode(s);return t||!r.includes("")?r:r.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,"")}catch(e){warn(`stringToPDFString: "${e}".`)}}const n=[];for(let a=0,s=e.length;a0,"The number should be a positive integer.");const n="M".repeat(e/1e3|0)+kn[e%1e3/100|0]+kn[10+(e%100/10|0)]+kn[20+e%10];return t?n.toLowerCase():n}function isWhiteSpace(e){return 32===e||9===e||13===e||10===e}function isNumberArray(e,t){return Array.isArray(e)?(null===t||e.length===t)&&e.every(e=>"number"==typeof e):ArrayBuffer.isView(e)&&!(e instanceof BigInt64Array||e instanceof BigUint64Array)&&(null===t||e.length===t)}function lookupMatrix(e,t){return isNumberArray(e,6)?e:t}function lookupRect(e,t){return isNumberArray(e,4)?e:t}function lookupNormalRect(e,t){return isNumberArray(e,4)?Util.normalizeRect(e):t}function parseXFAPath(e){const t=/^(.+)\[(\d+)\]$/;return e.split(".").map(e=>{const n=e.match(t);return n?{name:n[1],pos:parseInt(n[2],10)}:{name:e,pos:0}})}function escapePDFName(e){const t=[];let n=0;for(let a=0,s=e.length;a126||35===s||40===s||41===s||60===s||62===s||91===s||93===s||123===s||125===s||47===s||37===s){n"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`)}function _collectJS(e,t,n,a){if(!e)return;let s=null;if(e instanceof Ref){if(a.has(e))return;s=e;a.put(s);e=t.fetch(e)}if(Array.isArray(e))for(const s of e)_collectJS(s,t,n,a);else if(e instanceof Dict){if(isName(e.get("S"),"JavaScript")){const t=e.get("JS");let a;t instanceof BaseStream?a=t.getString():"string"==typeof t&&(a=t);a&&=stringToPDFString(a,!0).replaceAll("\0","");a&&n.push(a.trim())}_collectJS(e.getRaw("Next"),t,n,a)}s&&a.remove(s)}function collectActions(e,t,n){const a=new Map,s=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(s)for(let t=s.length-1;t>=0;t--){const r=s[t];if(r instanceof Dict)for(const[t,s]of r.getRawEntries()){const r=n[t];if(!r)continue;const i=[];_collectJS(s,e,i,new RefSet);i.length>0&&a.set(r,i)}}if(t.has("A")){const n=[];_collectJS(t.get("A"),e,n,new RefSet);n.length>0&&a.set("Action",n)}return a.size?a:null}const yn={60:"<",62:">",38:"&",34:""",39:"'"};function*codePointIter(e){for(let t=0,n=e.length;t55295&&(n<57344||n>65533)&&t++;yield n}}function encodeToXmlString(e){const t=[];let n=0;for(let a=0,s=e.length;a65535&&a++;n=a+1}}if(0===t.length)return e;n: ${e}.`);return!1}return!0}function normalizeCSSFontFamily(e){return e.replaceAll(/( +)(\d)?/g,(e,t,n)=>n??" ")}function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:n,fontWeight:a,italicAngle:s}=e;if(!validateFontName(n,!0))return!1;const r=a?a.toString():"";e.fontWeight=t.has(r)?r:"400";const i=parseFloat(s);e.italicAngle=isNaN(i)||i<-90||i>90?"14":s.toString();return!0}function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);return t?.[2]?{url:t[2],newWindow:"app.launchURL"===t[1]&&"true"===t[3]}:null}function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[n,a]of e)n.startsWith(p)&&t.getOrInsertComputed(a.pageIndex,makeArr).push(a);return t.size>0?t:null}function getModificationDate(e=new Date){e instanceof Date||(e=new Date(e));return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")}function getRotationMatrix(e,t,n){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,n];case 270:return[0,-1,1,0,0,n];default:throw new Error("Invalid rotation")}}function getSizeInBytes(e){return Math.ceil(Math.ceil(Math.log2(1+e))/8)}const qn=1===new Uint8Array(new Uint32Array([1]).buffer)[0]?4278190080:255,vn=~qn;class QCMS{static#i=null;static _memory=null;static _destBuffer=null;static _destOffset=0;static _keepAlpha=!1;static get _memoryArray(){const e=this.#i;return e?.byteLength?e:this.#i=new Uint8Array(this._memory.buffer)}}const Sn=Object.freeze({RGB8:0,0:"RGB8",RGBA8:1,1:"RGBA8",BGRA8:2,2:"BGRA8",Gray8:3,3:"Gray8",GrayA8:4,4:"GrayA8",CMYK:5,5:"CMYK"}),An=Object.freeze({Perceptual:0,0:"Perceptual",RelativeColorimetric:1,1:"RelativeColorimetric",Saturation:2,2:"Saturation",AbsoluteColorimetric:3,3:"AbsoluteColorimetric"});function qcms_convert_array(e,t,n){const a=passArray8ToWasm0(t,On.__wbindgen_malloc),s=Hn;On.qcms_convert_array(e,a,s,n)}function __wbg_get_imports(){return{__proto__:null,"./qcms_bg.js":{__proto__:null,__wbg___wbindgen_throw_344f42d3211c4765:function(e,t){throw new Error(function getStringFromWasm0(e,t){return function decodeText(e,t){Fn+=t;if(Fn>=In){Cn=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Cn.decode();Fn=t}return Cn.decode(getUint8ArrayMemory0().subarray(e,e+t))}(e>>>0,t)}(e,t))},__wbg_copy_result_0d15f3bf9d9012ae:function(e,t){!function copy_result(e,t){const{_destBuffer:n,_destOffset:a,_keepAlpha:s,_memoryArray:r}=QCMS;if(!s){n.set(r.subarray(e,e+t),a);return}const i=t>>2,o=n.byteOffset+a;if(!(3&(o|e))){const t=new Uint32Array(n.buffer,o,i),a=new Uint32Array(QCMS._memory.buffer,e,i);for(let e=0;e>>0,t>>>0)},__wbindgen_init_externref_table:function(){const e=On.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0);e.set(t+0,void 0);e.set(t+1,null);e.set(t+2,!0);e.set(t+3,!1)}}}}let xn=null;function getUint8ArrayMemory0(){null!==xn&&0!==xn.byteLength||(xn=new Uint8Array(On.memory.buffer));return xn}function passArray8ToWasm0(e,t){const n=t(1*e.length,1)>>>0;getUint8ArrayMemory0().set(e,n/1);Hn=e.length;return n}let Cn=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Cn.decode();const In=2146435072;let Fn=0;let Tn,Rn,On,Hn=0;function __wbg_finalize_init(e,t){Rn=e;On=e.exports;Tn=t;xn=null;On.__wbindgen_start();return On}function MathClamp(e,t,n){return Math.min(Math.max(e,t),n)}function isDefaultDecodeHelper(e,t){if(!Array.isArray(e))return!0;const n=e.length;if(nt){info("Truncating too long decode map.");e.length=t}return!1}class ColorSpace{static#o=new Uint8ClampedArray(3);constructor(e,t){this.name=e;this.numComps=t}getRgb(e,t,n=new Uint8ClampedArray(3)){this.getRgbItem(e,t,n,0);return n}getRgbHex(e,t){const n=this.getRgb(e,t,ColorSpace.#o);return Util.makeHexColor(n[0],n[1],n[2])}getRgbItem(e,t,n,a){unreachable("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,n,a,s,r,i){unreachable("Should not call ColorSpace.getRgbBuffer")}getRgbItems(e,t,n,a,s){const{numComps:r}=this;for(let i=0,o=0;ih&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=i<=8?new Uint8Array(h):new Uint16Array(h);for(let e=0;e=.99554525?1:MathClamp(1.055*e**(1/2.4)-.055,0,1)}#q(e){return e<0?-this.#q(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#b}#v(e,t,n){if(0===e[0]&&0===e[1]&&0===e[2]){n[0]=t[0];n[1]=t[1];n[2]=t[2];return}const a=this.#q(0),s=(1-a)/(1-this.#q(e[0])),r=1-s,i=(1-a)/(1-this.#q(e[1])),o=1-i,l=(1-a)/(1-this.#q(e[2])),f=1-l;n[0]=t[0]*s+r;n[1]=t[1]*i+o;n[2]=t[2]*l+f}#S(e,t,n){if(1===e[0]&&1===e[2]){n[0]=t[0];n[1]=t[1];n[2]=t[2];return}const a=n;this.#w(CalRGBCS.#c,t,a);const s=CalRGBCS.#p;this.#j(e,a,s);this.#w(CalRGBCS.#h,s,n)}#A(e,t,n){const a=n;this.#w(CalRGBCS.#c,t,a);const s=CalRGBCS.#p;this.#k(e,a,s);this.#w(CalRGBCS.#h,s,n)}#f(e,t,n,a,s){const r=MathClamp(e[t]*s,0,1),i=MathClamp(e[t+1]*s,0,1),o=MathClamp(e[t+2]*s,0,1),l=1===r?1:r**this.GR,f=1===i?1:i**this.GG,c=1===o?1:o**this.GB,h=this.MXA*l+this.MXB*f+this.MXC*c,u=this.MYA*l+this.MYB*f+this.MYC*c,m=this.MZA*l+this.MZB*f+this.MZC*c,p=CalRGBCS.#d;p[0]=h;p[1]=u;p[2]=m;const d=CalRGBCS.#g;this.#S(this.whitePoint,p,d);const g=CalRGBCS.#d;this.#v(this.blackPoint,d,g);const b=CalRGBCS.#g;this.#A(CalRGBCS.#m,g,b);const w=CalRGBCS.#d;this.#w(CalRGBCS.#u,b,w);n[a]=255*this.#y(w[0]);n[a+1]=255*this.#y(w[1]);n[a+2]=255*this.#y(w[2])}getRgbItem(e,t,n,a){this.#f(e,t,n,a,1)}getRgbBuffer(e,t,n,a,s,r,i){const o=1/((1<this.amax||this.bmin>this.bmax){info("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#x(e){return e>=6/29?e**3:108/841*(e-4/29)}#C(e,t,n,a){return n+e*(a-n)/t}#f(e,t,n,a,s){let r=e[t],i=e[t+1],o=e[t+2];if(!1!==n){r=this.#C(r,n,0,100);i=this.#C(i,n,this.amin,this.amax);o=this.#C(o,n,this.bmin,this.bmax)}i>this.amax?i=this.amax:ithis.bmax?o=this.bmax:ofunction qcms_convert_one(e,t){return On.qcms_convert_one(e,t)>>>0}(this.#I,255*e[t]);break;case 3:a=Sn.RGB8;this.#F=(e,t)=>function qcms_convert_three(e,t,n,a){return On.qcms_convert_three(e,t,n,a)>>>0}(this.#I,255*e[t],255*e[t+1],255*e[t+2]);break;case 4:a=Sn.CMYK;this.#F=(e,t)=>function qcms_convert_four(e,t,n,a,s){return On.qcms_convert_four(e,t,n,a,s)>>>0}(this.#I,255*e[t],255*e[t+1],255*e[t+2],255*e[t+3]);break;default:throw new Error(`Unsupported number of components: ${n}`)}this.#I=function qcms_transformer_from_memory(e,t,n){const a=passArray8ToWasm0(e,On.__wbindgen_malloc),s=Hn;return On.qcms_transformer_from_memory(a,s,t,n)>>>0}(e,a,An.Perceptual);if(!this.#I)throw new Error("Failed to create ICC color space");IccColorSpace.#O||=new FinalizationRegistry(e=>{!function qcms_drop_transformer(e){On.qcms_drop_transformer(e)}(e)});IccColorSpace.#O.register(this,this.#I)}getRgbHex(e,t){const n=this.#F(e,t);return Util.makeHexColor(n>>16,n>>8&255,255&n)}getRgbItem(e,t,n,a){const s=this.#F(e,t);n[a]=s>>16;n[a+1]=s>>8&255;n[a+2]=255&s}getRgbItems(e,t,n,a,s){const{numComps:r}=this,i=t*r,o=new Uint8Array(i);for(let t=0;t=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.pos,n=e?Math.min(t+e,this.end):this.end;this.pos=n;return this.bytes.subarray(t,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,n=null){return new Stream(this.bytes.buffer,e,t,n)}clone(){return new Stream(this.bytes.buffer,this.start,this.length,this.dict?.clone())}}class StringStream extends Stream{constructor(e,t=null){super(stringToBytes(e),NaN,NaN,t)}}class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}class ChunkedStream extends Stream{progressiveDataLength=0;_lastSuccessfulEnsureByteChunk=-1;_loadedChunks=new Set;constructor(e,t,n){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this.numChunks=Math.ceil(e/t);this.manager=n}getMissingChunks(){const e=[];for(let t=0,n=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=n;ethis.numChunks)&&t!==this._lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new MissingDataException(e,e+1);this._lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const n=Math.floor(e/this.chunkSize);if(n>this.numChunks)return;const a=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let s=n;s=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.pos,n=e?Math.min(t+e,this.end):this.end;n>this.progressiveDataLength&&this.ensureRange(t,n);this.pos=n;return this.bytes.subarray(t,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,n=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),n=Math.floor((this.end-1)/e)+1,a=[];for(let e=t;e{s.push(e);return[]}).push(t)}if(s.length>0){const e=this.groupChunks(s);for(const t of e){const e=t.beginChunk*this.chunkSize,n=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,n).catch(a.reject)}}return a.promise.catch(e=>{if(!this.#B)throw e})}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const n=this.getBeginChunk(e),a=this.getEndChunk(t),s=[];for(let e=n;ee-t);return this._requestChunks(t)}groupChunks(e){const t=[];let n=-1,a=-1;for(let s=0,r=e.length;s=0&&a+1!==r){t.push({beginChunk:n,endChunk:a+1});n=r}s+1===e.length&&t.push({beginChunk:n,endChunk:r+1});a=r}return t}onReceiveData(e){const{chunkSize:t,length:n,stream:a}=this,s=e.chunk,r=void 0===e.begin,i=r?a.progressiveDataLength:e.begin,o=i+s.byteLength,l=Math.floor(i/t),f=o0||c.push(n)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===a.numChunksLoaded){const t=a.numChunks-1;a.hasChunk(t)||(e=t)}else e=a.nextEmptyChunk(f);Number.isInteger(e)&&this._requestChunks([e])}for(const e of c){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:MathClamp(a.numChunksLoaded*t,a.progressiveDataLength,n),total:n})}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.#B=!0;this.pdfStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e);this.#D.reject(e)}}function convertToRGBA(e){switch(e.kind){case C:return convertBlackAndWhiteToRGBA(e);case F:return function convertRGBToRGBA({src:e,srcPos:t=0,dest:n,destPos:a=0,width:s,height:r}){let i=0;const o=s*r*3,l=o>>2,f=new Uint32Array(e.buffer,t,l),c=FeatureTest.isLittleEndian?4278190080:255;if(FeatureTest.isLittleEndian){for(;i>>24|t<<8|c;n[a+2]=t>>>16|s<<16|c;n[a+3]=s>>>8|c}for(let s=4*i,r=t+o;s>>8|c;n[a+2]=t<<16|s>>>16|c;n[a+3]=s<<8|c}for(let s=4*i,r=t+o;s>3,h=7&a,u=l^f,m=e.length;n=new Uint32Array(n.buffer);let p=0;for(let a=0;a>7&1)&u;n[p+1]=l^-(a>>6&1)&u;n[p+2]=l^-(a>>5&1)&u;n[p+3]=l^-(a>>4&1)&u;n[p+4]=l^-(a>>3&1)&u;n[p+5]=l^-(a>>2&1)&u;n[p+6]=l^-(a>>1&1)&u;n[p+7]=l^-(1&a)&u}if(0===h)continue;const a=t>7-e&1)&u}return{srcPos:t,destPos:p}}class ImageResizer{static#M=2048;static#N=FeatureTest.isImageDecoderSupported;constructor(e,t){this._imgData=e;this._isMask=t}static get canUseImageDecoder(){return shadow(this,"canUseImageDecoder",this.#N?ImageDecoder.isTypeSupported("image/bmp"):Promise.resolve(!1))}static needsToBeResized(e,t){if(e<=this.#M&&t<=this.#M)return!1;const{MAX_DIM:n}=this;if(e>n||t>n)return!0;const a=e*t;if(this._hasMaxArea)return a>this.MAX_AREA;if(a(this.MAX_AREA=this.#M**2)}static getReducePower(e,t,n=1/0){if(!Number.isInteger(e)||e<=0||!Number.isInteger(t)||t<=0)return 0;const a=e*t;if(!this.needsToBeResized(e,t))return a>n?Math.ceil(Math.log2(a/n)):0;const{MAX_DIM:s,MAX_AREA:r}=this,i=Math.max(e/s,t/s,Math.sqrt(a/Math.min(n,r)));return Math.max(0,Math.ceil(Math.log2(i)))}static getReducePowerForJPX(e,t,n){return this.getReducePower(e,t,2**30/(4*n))}static get MAX_DIM(){return shadow(this,"MAX_DIM",this._guessMax(2048,32768,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return shadow(this,"MAX_AREA",this._guessMax(this.#M,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;shadow(this,"MAX_AREA",e)}}static setOptions({canvasMaxAreaInBytes:e=-1,isImageDecoderSupported:t=!1}){this._hasMaxArea||(this.MAX_AREA=e>>2);this.#N=t}static _areGoodDims(e,t){try{const n=new OffscreenCanvas(e,t),a=n.getContext("2d");a.fillRect(0,0,1,1);const s=a.getImageData(0,0,1,1).data[3];n.width=n.height=1;return 0!==s}catch{return!1}}static _guessMax(e,t,n,a){for(;e+n+1gn){const e=this.#P();if(e)return e}const a=this._encodeBMP();let s,r;if(await ImageResizer.canUseImageDecoder){s=new ImageDecoder({data:a,type:"image/bmp",preferAnimation:!1,transfer:[a.buffer]});r=s.decode().catch(e=>{warn(`BMP image decoding failed: ${e}`);return createImageBitmap(new Blob([this._encodeBMP().buffer],{type:"image/bmp"}))}).finally(()=>{s.close()})}else r=createImageBitmap(new Blob([a.buffer],{type:"image/bmp"}));const{MAX_AREA:i,MAX_DIM:o}=ImageResizer,l=Math.max(t/o,n/o,Math.sqrt(t*n/i)),f=Math.max(l,2),c=Math.round(10*(l+1.25))/10/f,h=Math.floor(Math.log2(c)),u=new Array(h+2).fill(2);u[0]=f;u.splice(-1,1,c/(1<>i,l=a>>i;let f,c=a;try{f=new Uint8Array(r)}catch{let e=Math.floor(Math.log2(r+1));for(;;)try{f=new Uint8Array(2**e-1);break}catch{e-=1}c=Math.floor((2**e-1)/(4*n));const t=n*c*4;t>i;e>3,i=n+3&-4;if(n!==i){const e=new Uint8Array(i*t);let a=0;for(let r=0,o=t*n;rs&&(a=s)}else{for(;!this.eof;)this.readBlock(t);a=this.bufferLength}this.pos=a;return this.buffer.subarray(n,a)}async getImageData(e,t){if(!this.canAsyncDecodeImageFromBuffer)return this.isAsyncDecoder?this.decodeImage(null,e,t):this.getBytes(e,t);const n=await this.stream.asyncGetBytes();return this.decodeImage(n,e,t)}async asyncGetBytesFromDecompressionStream(e){this.stream.reset();const t=this.stream.isAsync?await this.stream.asyncGetBytes():this.stream.getBytes();try{const{readable:n,writable:a}=new DecompressionStream(e),s=a.getWriter();await s.ready;s.write(t).then(async()=>{await s.ready;await s.close()}).catch(()=>{});const r=[];let i=0;for await(const e of n){r.push(e);i+=e.byteLength}const o=new Uint8Array(i);let l=0;for(const e of r){o.set(e,l);l+=e.byteLength}return{decompressed:o,compressed:t}}catch{return{decompressed:null,compressed:t}}}reset(){this.pos=0}makeSubStream(e,t,n=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const n=e+t;for(;this.bufferLength<=n&&!this.eof;)this.readBlock()}return new Stream(this.buffer,e,t,n)}clone(){for(;!this.eof;)this.readBlock();return new Stream(this.buffer,0,this.bufferLength,this.dict?.clone())}getBaseStreams(){return this.stream?this.stream.getBaseStreams():null}}class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){e=e.filter(e=>e instanceof BaseStream&&!e.isImageStream);let n=0;for(const t of e)n+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(n);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let n;try{n=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const a=this.bufferLength,s=a+n.length;this.ensureBuffer(s).set(n,a);this.bufferLength=s}getBaseStreams(){const e=[];for(const t of this.streams){const n=t.getBaseStreams();n&&e.push(...n)}return e.length>0?e:null}}class ColorSpaceUtils{static parse({cs:e,xref:t,resources:n=null,pdfFunctionFactory:a,globalColorSpaceCache:s,localColorSpaceCache:r,asyncIfNotCached:i=!1}){const o={xref:t,resources:n,pdfFunctionFactory:a,globalColorSpaceCache:s,localColorSpaceCache:r};let l,f,c;if(e instanceof Ref){f=e;const n=s.getByRef(f)||r.getByRef(f);if(n)return n;e=t.fetch(e)}if(e instanceof Name){l=e.name;const t=r.getByName(l);if(t)return t}try{c=this.#E(e,o)}catch(e){if(i&&!(e instanceof MissingDataException))return Promise.reject(e);throw e}if(l||f){r.set(l,f,c);f&&s.set(null,f,c)}return i?Promise.resolve(c):c}static#_(e,t){const{globalColorSpaceCache:n}=t;let a;if(e instanceof Ref){a=e;const t=n.getByRef(a);if(t)return t}const s=this.#E(e,t);a&&n.set(null,a,s);return s}static#E(e,t){const{xref:n,resources:a,pdfFunctionFactory:s,globalColorSpaceCache:r}=t;if((e=n.fetchIfRef(e))instanceof Name)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 PatternCS(null);default:if(a instanceof Dict){const n=a.get("ColorSpace");if(n instanceof Dict){const a=n.get(e.name);if(a){if(a instanceof Name)return this.#E(a,t);e=a;break}}}warn(`Unrecognized ColorSpace: ${e.name}`);return this.gray}if(Array.isArray(e)){const a=n.fetchIfRef(e[0]).name;let i,o,l,f,c,h;switch(a){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"CMYK":case"DeviceCMYK":return this.cmyk;case"CalGray":i=n.fetchIfRef(e[1]);f=i.getArray("WhitePoint");c=i.getArray("BlackPoint");h=i.get("Gamma");return new CalGrayCS(f,c,h);case"CalRGB":i=n.fetchIfRef(e[1]);f=i.getArray("WhitePoint");c=i.getArray("BlackPoint");h=i.getArray("Gamma");const u=i.getArray("Matrix");return new CalRGBCS(f,c,h,u);case"ICCBased":const m=e[1]instanceof Ref;if(m){const t=r.getByRef(e[1]);if(t)return t}const p=n.fetchIfRef(e[1]),d=p.dict;o=d.get("N");if(IccColorSpace.isUsable)try{const t=new IccColorSpace(p.getBytes(),"ICCBased",o);m&&r.set(null,e[1],t);return t}catch(t){if(t instanceof MissingDataException)throw t;warn(`ICCBased color space (${e[1]}): "${t}".`)}const g=d.getRaw("Alternate");if(g){const e=this.#_(g,t);if(e.numComps===o)return e;warn("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===o)return this.gray;if(3===o)return this.rgb;if(4===o)return this.cmyk;break;case"Pattern":l=e[1]||null;l&&=this.#_(l,t);return new PatternCS(l);case"I":case"Indexed":l=this.#_(e[1],t);const b=MathClamp(n.fetchIfRef(e[2]),0,255),w=n.fetchIfRef(e[3]);return new IndexedCS(l,b,w);case"Separation":case"DeviceN":const j=n.fetchIfRef(e[1]);o=Array.isArray(j)?j.length:1;l=this.#_(e[2],t);const k=s.create(e[3]);return new AlternateCS(o,l,k);case"Lab":i=n.fetchIfRef(e[1]);f=i.getArray("WhitePoint");c=i.getArray("BlackPoint");const y=i.getArray("Range");return new LabCS(f,c,y);default:warn(`Unimplemented ColorSpace object: ${a}`);return this.gray}}warn(`Unrecognized ColorSpace object: ${e}`);return this.gray}static get gray(){return shadow(this,"gray",new DeviceGrayCS)}static get rgb(){return shadow(this,"rgb",new DeviceRgbCS)}static get rgba(){return shadow(this,"rgba",new DeviceRgbaCS)}static get cmyk(){if(CmykICCBasedCS.isUsable)try{return shadow(this,"cmyk",new CmykICCBasedCS)}catch{warn("CMYK fallback: DeviceCMYK")}return shadow(this,"cmyk",new DeviceCmykCS)}}class JpegError extends an{constructor(e){super(e,"JpegError")}}class DNLMarkerError extends an{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends an{constructor(e){super(e,"EOIMarkerError")}}const Dn=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]),Mn=4017,Nn=799,Pn=3406,En=2276,_n=1567,zn=3784,Ln=5793,Un=2896;function buildHuffmanTable(e,t){let n,a,s=0,r=16;for(;r>0&&!e[r-1];)r--;const i=[{children:[],index:0}];let o,l=i[0];for(n=0;n0;)l=i.pop();l.index++;i.push(l);for(;i.length<=n;){i.push(o={children:[],index:0});l.children[l.index]=o.children;l=o}s++}if(n+10){d--;return p>>d&1}p=e[n++];if(255===p){const s=e[n++];if(s){if(220===s&&c){n+=2;const e=t.getUint16(n);n+=2;if(e>0&&e!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",e)}else if(217===s){if(c){const e=j*(8===a.precision?8:0);if(e>0&&Math.round(a.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(p<<8|s).toString(16)}`)}}d=7;return p>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){g--;return}let n=i;const a=o;for(;n<=a;){const a=decodeHuffman(e.huffmanTableAC),s=15&a,r=a>>4;if(0===s){if(r<15){g=receive(r)+(1<>4;if(0===s)if(l<15){g=receive(l)+(1<>4;if(0===a){if(r<15)break;s+=16;continue}s+=r;const i=Dn[s];e.blockData[t+i]=receiveAndExtend(a);s++}};let F,T=0;const R=1===k?s[0].blocksPerLine*s[0].blocksPerColumn:h*a.mcusPerColumn;let O,H;for(;T<=R;){const a=r?Math.min(R-T,r):R;if(a>0){for(q=0;q0?"unexpected":"excessive"} MCU data, current marker is: ${F.invalid}`);n=F.offset}if(!(F.marker>=65488&&F.marker<=65495))break;n+=2}return n-m}function quantizeAndInverse(e,t,n){const a=e.quantizationTable,s=e.blockData;let r,i,o,l,f,c,h,u,m,p,d,g,b,w,j,k,y;if(!a)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){m=s[t+e];p=s[t+e+1];d=s[t+e+2];g=s[t+e+3];b=s[t+e+4];w=s[t+e+5];j=s[t+e+6];k=s[t+e+7];m*=a[e];if(0!==(p|d|g|b|w|j|k)){p*=a[e+1];d*=a[e+2];g*=a[e+3];b*=a[e+4];w*=a[e+5];j*=a[e+6];k*=a[e+7];r=Ln*m+128>>8;i=Ln*b+128>>8;o=d;l=j;f=Un*(p-k)+128>>8;u=Un*(p+k)+128>>8;c=g<<4;h=w<<4;r=r+i+1>>1;i=r-i;y=o*zn+l*_n+128>>8;o=o*_n-l*zn+128>>8;l=y;f=f+h+1>>1;h=f-h;u=u+c+1>>1;c=u-c;r=r+l+1>>1;l=r-l;i=i+o+1>>1;o=i-o;y=f*En+u*Pn+2048>>12;f=f*Pn-u*En+2048>>12;u=y;y=c*Nn+h*Mn+2048>>12;c=c*Mn-h*Nn+2048>>12;h=y;n[e]=r+u;n[e+7]=r-u;n[e+1]=i+h;n[e+6]=i-h;n[e+2]=o+c;n[e+5]=o-c;n[e+3]=l+f;n[e+4]=l-f}else{y=Ln*m+512>>10;n[e]=y;n[e+1]=y;n[e+2]=y;n[e+3]=y;n[e+4]=y;n[e+5]=y;n[e+6]=y;n[e+7]=y}}for(let e=0;e<8;++e){m=n[e];p=n[e+8];d=n[e+16];g=n[e+24];b=n[e+32];w=n[e+40];j=n[e+48];k=n[e+56];if(0!==(p|d|g|b|w|j|k)){r=Ln*m+2048>>12;i=Ln*b+2048>>12;o=d;l=j;f=Un*(p-k)+2048>>12;u=Un*(p+k)+2048>>12;c=g;h=w;r=4112+(r+i+1>>1);i=r-i;y=o*zn+l*_n+2048>>12;o=o*_n-l*zn+2048>>12;l=y;f=f+h+1>>1;h=f-h;u=u+c+1>>1;c=u-c;r=r+l+1>>1;l=r-l;i=i+o+1>>1;o=i-o;y=f*En+u*Pn+2048>>12;f=f*Pn-u*En+2048>>12;u=y;y=c*Nn+h*Mn+2048>>12;c=c*Mn-h*Nn+2048>>12;h=y;m=r+u;k=r-u;p=i+h;j=i-h;d=o+c;w=o-c;g=l+f;b=l-f;m<16?m=0:m>=4080?m=255:m>>=4;p<16?p=0:p>=4080?p=255:p>>=4;d<16?d=0:d>=4080?d=255:d>>=4;g<16?g=0:g>=4080?g=255:g>>=4;b<16?b=0:b>=4080?b=255:b>>=4;w<16?w=0:w>=4080?w=255:w>>=4;j<16?j=0:j>=4080?j=255:j>>=4;k<16?k=0:k>=4080?k=255:k>>=4;s[t+e]=m;s[t+e+8]=p;s[t+e+16]=d;s[t+e+24]=g;s[t+e+32]=b;s[t+e+40]=w;s[t+e+48]=j;s[t+e+56]=k}else{y=Ln*m+8192>>14;y=y<-2040?0:y>=2024?255:y+2056>>4;s[t+e]=y;s[t+e+8]=y;s[t+e+16]=y;s[t+e+24]=y;s[t+e+32]=y;s[t+e+40]=y;s[t+e+48]=y;s[t+e+56]=y}}}function buildComponentData(e,t){const n=t.blocksPerLine,a=t.blocksPerColumn,s=new Int16Array(64);for(let e=0;e=s)return null;const i=t.getUint16(n);if(i>=65472&&i<=65534)return{invalid:null,marker:i,offset:n};let o=t.getUint16(r);for(;!(o>=65472&&o<=65534);){if(++r>=s)return null;o=t.getUint16(r)}return{invalid:i.toString(16),marker:o,offset:r}}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV);for(const a of e.components){const s=Math.ceil(Math.ceil(e.samplesPerLine/8)*a.h/e.maxH),r=Math.ceil(Math.ceil(e.scanLines/8)*a.v/e.maxV),i=t*a.h,o=64*(n*a.v)*(i+1);a.blockData=new Int16Array(o);a.blocksPerLine=s;a.blocksPerColumn=r}e.mcusPerLine=t;e.mcusPerColumn=n}function readDataBlock(e,t,n){const a=t.getUint16(n);let s=(n+=2)+a-2;const r=findNextFileMarker(e,t,s,n);if(r?.invalid){warn("readDataBlock - incorrect length, current marker is: "+r.invalid);s=r.offset}const i=e.subarray(n,s);return{appData:i,oldOffset:n,newOffset:n+i.length}}function skipData(e,t,n){const a=t.getUint16(n),s=(n+=2)+a-2,r=findNextFileMarker(e,t,s,n);return r?.invalid?r.offset:s}class JpegImage{constructor(e){this._colorTransform=e?.colorTransform??-1}static canUseImageDecoder(e,t=-1){const n=new DataView(e.buffer,e.byteOffset,e.byteLength),a={width:0,height:0,exifStart:0,exifEnd:0};let s=0,r=null,i=n.getUint16(s);s+=2;if(65496!==i)throw new JpegError("SOI not found");i=n.getUint16(s);s+=2;e:for(;65497!==i;){switch(i){case 65505:const{appData:t,oldOffset:o,newOffset:l}=readDataBlock(e,n,s);s=l;if(69===t[0]&&120===t[1]&&105===t[2]&&102===t[3]&&0===t[4]&&0===t[5]){if(a.exifStart)throw new JpegError("Duplicate EXIF-blocks found.");a.exifStart=o+6;a.exifEnd=l}i=n.getUint16(s);s+=2;continue;case 65472:case 65473:case 65474:a.height=n.getUint16(s+3);a.width=n.getUint16(s+5);r=e[s+7];break e;case 65535:255!==e[s]&&s--}s=skipData(e,n,s);i=n.getUint16(s);s+=2}return 4===r||3===r&&0===t?null:a}parse(e,{dnlScanLines:t=null}={}){const n=new DataView(e.buffer,e.byteOffset,e.byteLength),a=e.length-1;let s,r,i=0,o=null,l=null,f=0;const c=[],h=[],u=[];let m=n.getUint16(i);i+=2;if(65496!==m)throw new JpegError("SOI not found");m=n.getUint16(i);i+=2;e:for(;65497!==m;){let p,d,g;switch(m){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:b,newOffset:w}=readDataBlock(e,n,i);i=w;65504===m&&74===b[0]&&70===b[1]&&73===b[2]&&70===b[3]&&0===b[4]&&(o={version:{major:b[5],minor:b[6]},densityUnits:b[7],xDensity:b[8]<<8|b[9],yDensity:b[10]<<8|b[11],thumbWidth:b[12],thumbHeight:b[13],thumbData:b.subarray(14,14+3*b[12]*b[13])});65518===m&&65===b[0]&&100===b[1]&&111===b[2]&&98===b[3]&&101===b[4]&&(l={version:b[5]<<8|b[6],flags0:b[7]<<8|b[8],flags1:b[9]<<8|b[10],transformCode:b[11]});break;case 65499:const j=n.getUint16(i);i+=2;const k=j+i-2;let y;for(;i>4){if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(d=0;d<64;d++){y=Dn[d];a[y]=n.getUint16(i);i+=2}}else for(d=0;d<64;d++){y=Dn[d];a[y]=e[i++]}c[15&t]=a}break;case 65472:case 65473:case 65474:if(s)throw new JpegError("Only single frame JPEGs supported");i+=2;s={};s.extended=65473===m;s.progressive=65474===m;s.precision=e[i++];const q=n.getUint16(i);i+=2;s.scanLines=t||q;s.samplesPerLine=n.getUint16(i);i+=2;s.components=[];s.componentIds={};const v=e[i++];let S=0,x=0;for(p=0;p>4,a=15&e[i+1];S>4?h:u)[15&t]=buildHuffmanTable(n,s)}break;case 65501:i+=2;r=n.getUint16(i);i+=2;break;case 65498:const F=1===++f&&!t;i+=2;const T=e[i++],R=[];for(p=0;p>4];a.huffmanTableAC=h[15&r];R.push(a)}const O=e[i++],H=e[i++],D=e[i++];try{i+=decodeScan(e,n,i,s,R,r,O,H,D>>4,15&D,F)}catch(t){if(t instanceof DNLMarkerError){warn(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){warn(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:i+=4;break;case 65535:255!==e[i]&&i--;break;default:const M=findNextFileMarker(e,n,i-2,i-3);if(M?.invalid){warn("JpegImage.parse - unexpected data, current marker is: "+M.invalid);i=M.offset;break}if(!M||i>=a){warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+m.toString(16))}if(i4)throw new JpegError("Unsupported color mode");const s=this.#z(e,t);if(1===this.numComponents&&(n||a)){const e=s.length*(n?4:3),t=new Uint8ClampedArray(e);let a=0;if(n)!function grayToRGBA(e,t){if(FeatureTest.isLittleEndian)for(let n=0,a=e.length;n0&&(e=e.subarray(t));break}return e}decodeImage(e){if(this.eof)return this.buffer;e=this.#L(e||this.bytes);const t=new JpegImage(this.jpegOptions);t.parse(e);const n=t.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB});this.buffer=n;this.bufferLength=n.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}async getTransferableImage(e,t){if(!await JpegStream.canUseImageDecoder)return null;const n=this.jpegOptions;let a;try{const s=this.canAsyncDecodeImageFromBuffer&&await this.stream.asyncGetBytes()||this.bytes;if(!s)return null;let r=this.#L(s);const i=JpegImage.canUseImageDecoder(r,n.colorTransform);if(!i)return null;const{width:o,height:l}=i,f=ImageResizer.getReducePower(o,l);if((o!==e||l!==t)&&(f||!l))return null;if(i.exifStart){r=r.slice();r.fill(0,i.exifStart,i.exifEnd)}const c={data:r,type:"image/jpeg",preferAnimation:!1};if(f){const e=2**f;c.desiredWidth=Math.ceil(o/e);c.desiredHeight=Math.ceil(l/e)}a=new ImageDecoder(c);return(await a.decode()).image}catch(e){warn(`getTransferableImage - failed: "${e}".`);return null}finally{a?.close()}}get isImageStream(){return!0}}function addState(e,t,n,a,s){let r=e;for(let e=0,n=t.length-1;e1e3){f=Math.max(f,u);m+=h+2;u=0;h=0}c.push({transform:t,x:u,y:m,w:n.width,h:n.height});u+=n.width+2;h=Math.max(h,n.height)}const p=Math.max(f,u)+1,d=m+h+1,g=new Uint8Array(p*d*4),b=p<<2;for(let e=0;e=0;){t[r-4]=t[r];t[r-3]=t[r+1];t[r-2]=t[r+2];t[r-1]=t[r+3];t[r+n]=t[r+n-4];t[r+n+1]=t[r+n-3];t[r+n+2]=t[r+n-2];t[r+n+3]=t[r+n-1];r-=b}}const w={width:p,height:d};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(p,d);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(g.buffer),p,d),0,0);w.bitmap=e.transferToImageBitmap();w.data=null}else{w.kind=T;w.data=g}n.splice(r,4*l,zt);a.splice(r,4*l,[w,c]);return r+1});addState(Wn,[ye,ve,Nt,qe],null,function iterateImageMaskGroup(e,t){const n=e.fnArray,a=(t-(e.iCurr-3))%4;switch(a){case 0:return n[t]===ye;case 1:return n[t]===ve;case 2:return n[t]===Nt;case 3:return n[t]===qe}throw new Error(`iterateImageMaskGroup - invalid pos: ${a}`)},function foundImageMaskGroup(e,t){const n=e.fnArray,a=e.argsArray,s=e.iCurr,r=s-3,i=s-2,o=s-1;let l=Math.floor((t-r)/4);if(l<10)return t-(t-r)%4;let f,c,h=!1;const u=a[o][0],m=a[i][0],p=a[i][1],d=a[i][2],g=a[i][3];if(p===d){h=!0;f=i+4;let e=o+4;for(let t=1;t=4&&n[r-4]===n[i]&&n[r-3]===n[o]&&n[r-2]===n[l]&&n[r-1]===n[f]&&a[r-4][0]===c&&a[r-4][1]===h){u++;m-=5}let p=m+4;for(let e=1;e{const t=e.argsArray,n=t[e.iCurr-1][0];if(n!==Re&&n!==Oe&&n!==De&&n!==Me&&n!==Ne&&n!==Pe)return!0;const a=t[e.iCurr-2];return 1===a[0]&&0===a[1]&&0===a[2]&&1===a[3]},()=>!1,(e,t)=>{const{fnArray:a,argsArray:s}=e,r=e.iCurr,i=r-3,o=r-2,l=s[r-1],f=s[o],[,[c],h]=l;if(h){const e=n.slice();Util.axialAlignedBoundingBox(h,f,e);h.set(e);for(let e=0,t=c.length;e=n)break}a=(a||Wn)[e[t]];if(a&&!Array.isArray(a)){r.iCurr=t;t++;if(!a.checkFn||(0,a.checkFn)(r)){s=a;a=null}else a=null}else t++}this.state=a;this.match=s;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;static isOffscreenCanvasSupported=!1;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&m?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?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,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===qe||e===Ue))&&this.flush()}addImageOps(e,t,n,a=!1){if(a){this.addOp(ye);this.addOp(ke,[[["SMask",!1]]])}void 0!==n&&this.addOp(Ct,["OC",n]);this.addOp(e,t);void 0!==n&&this.addOp(It,[]);a&&this.addOp(qe)}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(ue,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,n=e.length;t"boolean"==typeof e)})(m,2)&&([h,u]=m);this.extendStart=h;this.extendEnd=u;const p=e.getRaw("Function"),d=a.create(p,!0),g=840,b=(f-l)/g,w=this.colorStops=[];if(l>=f||b<=0){info("Bad shading domain.");return}const{numComps:j}=o,k=new Float32Array(1),y=getColorConversionBatchSize(g,j),q=new Float32Array(y*j),v=new Uint8ClampedArray(2520);for(let e=0;e{s[i++]=e[2*n];s[i++]=e[2*n+1];r[o++]=t[4*a];r[o++]=t[4*a+1];r[o++]=t[4*a+2];o++};for(const e of n){const t=e.coords,n=e.colors;if(e.type===y)for(let e=0,a=t.length;e0&&o.getRgbItems(F,N,v,E,1);const _=new Uint32Array(k);for(let e=0;e0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){const{stream:t}=this;let{buffer:n,bufferLength:a}=this;if(32===e){if(0===a)return t.getInt32()>>>0;n=n<<24|t.getByte()<<16|t.getByte()<<8|t.getByte();const e=t.getByte();this.buffer=e&(1<>a)>>>0}if(8===e&&0===a)return t.getByte();for(;a>a}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const{bitsPerCoordinate:e,decode:t}=this.context,n=this.readBits(e),a=this.readBits(e),s=e<32?1/((1<Array.from({length:e+1},(t,n)=>{const a=n/e,s=1-a;return new Float32Array([s**3,3*a*s**2,3*a**2*s,a**3])}))}class MeshShading extends BaseShading{static MIN_SPLIT_PATCH_CHUNKS_AMOUNT=3;static MAX_SPLIT_PATCH_CHUNKS_AMOUNT=20;static TRIANGLE_DENSITY=20;constructor(e,t,n,a,s,r){super();if(!(e instanceof BaseStream))throw new FormatError("Mesh data is not a stream");const i=e.dict;this.shadingType=i.get("ShadingType");this.bbox=lookupNormalRect(i.getArray("BBox"),null);const o=ColorSpaceUtils.parse({cs:i.getRaw("CS")||i.getRaw("ColorSpace"),xref:t,resources:n,pdfFunctionFactory:a,globalColorSpaceCache:s,localColorSpaceCache:r});this.background=i.has("Background")?o.getRgb(i.get("Background"),0):null;const l=i.getRaw("Function"),f=l?a.create(l,!0):null;this.coords=[];this.colors=[];this.figures=[];const c={bitsPerCoordinate:i.get("BitsPerCoordinate"),bitsPerComponent:i.get("BitsPerComponent"),bitsPerFlag:i.get("BitsPerFlag"),decode:i.getArray("Decode"),colorFn:f,colorSpace:o,numComps:f?1:o.numComps},h=new MeshStreamReader(e,c);let u=!1;switch(this.shadingType){case Vn:this._decodeType4Shading(h);break;case $n:const e=0|i.get("VerticesPerRow");if(e<2)throw new FormatError("Invalid VerticesPerRow");this._decodeType5Shading(h,e);break;case Yn:this._decodeType6Shading(h);u=!0;break;case Jn:this._decodeType7Shading(h);u=!0;break;default:unreachable("Unsupported mesh type.")}if(u){this._updateBounds();for(let e=0,t=this.figures.length;ei?i:t;n=n>o?o:n;a=a>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,n){let a=0;for(let s=n;s>=0;s--){a+=e[s]+t[s];e[s]=255&a;a>>=8}}function incHex(e,t){let n=1;for(let a=t;a>=0&&n>0;a--){n+=e[a];e[a]=255&n;n>>=8}}const Zn=16;class BinaryCMapStream extends Stream{tmpBuf=new Uint8Array(19);constructor(e){super(e,0,e.length,null)}readNumber(){let e,t=0;do{const n=this.getByte();if(n<0)throw new FormatError("unexpected EOF in bcmap");e=!(128&n);t=t<<7|127&n}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.getBytes(t+1))}readHexNumber(e,t){let n;const a=this.tmpBuf;let s=0;do{const e=this.getByte();if(e<0)throw new FormatError("unexpected EOF in bcmap");n=!(128&e);a[s++]=127&e}while(!n);let r=t,i=0,o=0;for(;r>=0;){for(;o<8&&a.length>0;){i|=a[--s]<>=8;o-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const n=1&e[t]?255:0;let a=0;for(let s=0;s<=t;s++){a=(1&a)<<8|e[s];e[s]=a>>1^n}}readString(){const e=this.readNumber(),t=new Array(e);for(let n=0;n=0;){const e=u>>5;if(7===e){switch(31&u){case 0:a.readString();break;case 1:r=a.readString()}continue}const n=!!(16&u),s=15&u;if(s+1>Zn)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const m=1,p=a.readNumber();switch(e){case 0:a.readHex(i,s);a.readHexNumber(o,s);addHex(o,i,s);t.addCodespaceRange(s+1,hexToInt(i,s),hexToInt(o,s));for(let e=1;e=0;--s){a[n+s]=255&i;i>>=8}}}}class AsciiHexStream extends DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.stream=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.stream.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,n=this.ensureBuffer(this.bufferLength+t);let a=this.bufferLength,s=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(s<0)s=e;else{n[a++]=s<<4|e;s=-1}}if(s>=0&&this.eof){n[a++]=s<<4;s=-1}this.firstDigit=s;this.bufferLength=a}}let ea=(()=>{const e=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]),t=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]),a=Int32Array.from([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),s=Int32Array.from([131072,131076,131075,196610,131072,131076,131075,262145,131072,131076,131075,196610,131072,131076,131075,262149]),r=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]),i=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]),l=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]),f=new Int16Array(2816);!function unpackCommandLookupTable(e){const t=new Int32Array(24),n=new Int32Array(24);n[0]=2;for(let e=0;e<23;++e){t[e+1]=t[e]+(1<>6,r=-4;if(s>=2){s-=2;r=0}const i=(170064>>2*s&3)<<3|a>>3&7,f=(156228>>2*s&3)<<3|7&a,c=n[f],h=r+Math.min(c,5)-2,u=4*a;e[u]=o[i]|l[f]<<8;e[u+1]=t[i];e[u+2]=n[f];e[u+3]=h}}(f);function log2floor(e){let t=-1,n=16,a=e;for(;n>0;){let e=a>>n;if(0!==e){t+=n;a=e}n>>=1}return t+a}function calculateDistanceAlphabetSize(e,t,n){return 16+t+2*(n<>n),r=log2floor(s)-1;return((r-1<<1|s>>r&1)-1<=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}if(0!==readFewBits(e,1)){const t=readFewBits(e,3);return 0===t?1:readFewBits(e,t)+(1<>>n.bitOffset;a+=255&s;const r=e[a]>>16,i=65535&e[a];if(r<=8){n.bitOffset+=r;return i}a+=i;a+=(s&(1<>>8;n.bitOffset+=8+(e[a]>>16);return 65535&e[a]}function readBlockLength(e,t,n){if(n.bitOffset>=16){n.accumulator32=n.shortBuffer[n.halfOffset++]<<16|n.accumulator32>>>16;n.bitOffset-=16}const a=readSymbol(e,t,n),s=i[a];if(n.bitOffset>=16){n.accumulator32=n.shortBuffer[n.halfOffset++]<<16|n.accumulator32>>>16;n.bitOffset-=16}return r[a]+(s<=16?readFewBits(n,s):readManyBits(n,s))}function moveToFront(e,t){let n=t;const a=e[n];for(;n>0;){e[n]=e[n-1];n--}e[0]=a}function readSimpleHuffmanCode(e,t,n,a,s){const r=new Int32Array(t),i=new Int32Array(4),o=1+log2floor(e-1),l=readFewBits(s,2)+1;for(let e=0;e=16){s.accumulator32=s.shortBuffer[s.halfOffset++]<<16|s.accumulator32>>>16;s.bitOffset-=16}const n=readFewBits(s,o);if(n>=t)return makeError(s,-15);i[e]=n}const f=function checkDupes(e,t,n){for(let a=0;a=16){i.accumulator32=i.shortBuffer[i.halfOffset++]<<16|i.accumulator32>>>16;i.bitOffset-=16}const a=i.accumulator32>>>i.bitOffset&15;i.bitOffset+=s[a]>>16;const r=65535&s[a];l[n]=r;if(0!==r){f-=32>>r;c++;if(f<=0)break}}if(0!==f&&1!==c)return makeError(i,-4);const h=function readHuffmanCodeLengths(e,t,n,a){let s=0,r=8,i=0,o=0,l=32768;const f=new Int32Array(33);buildHuffmanTable(f,f.length-1,5,e,18);for(;s0;){if(a.halfOffset>2030){const e=readMoreInput(a);if(e<0)return e}if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}const e=a.accumulator32>>>a.bitOffset&31;a.bitOffset+=f[e]>>16;const c=65535&f[e];if(c<16){i=0;n[s++]=c;if(0!==c){r=c;l-=32768>>c}}else{const e=c-14;let f=0;16===c&&(f=r);if(o!==f){i=0;o=f}const h=i;if(i>0){i-=2;i<<=e}if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}i+=readFewBits(a,e)+3;const u=i-h;if(s+u>t)return makeError(a,-2);for(let e=0;e2030){const e=readMoreInput(s);if(e<0)return e}if(s.bitOffset>=16){s.accumulator32=s.shortBuffer[s.halfOffset++]<<16|s.accumulator32>>>16;s.bitOffset-=16}const r=readFewBits(s,2);return 1===r?readSimpleHuffmanCode(e,t,n,a,s):readComplexHuffmanCode(t,r,n,a,s)}function decodeContextMap(t,n,a){let s;if(a.halfOffset>2030){s=readMoreInput(a);if(s<0)return s}const r=decodeVarLenUnsignedByte(a)+1;if(1===r){n.fill(0,0,t);return r}if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}let i=0;0!==readFewBits(a,1)&&(i=readFewBits(a,4)+1);const o=r+i,l=e[o+31>>5],f=new Int32Array(l+1),c=f.length-1;s=readHuffmanCode(o,o,f,c,a);if(s<0)return s;let h=0;for(;h2030){s=readMoreInput(a);if(s<0)return s}if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}const e=readSymbol(f,c,a);if(0===e){n[h]=0;h++}else if(e<=i){if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}let s=(1<=t)return makeError(a,-3);n[h]=0;h++;s--}}else{n[h]=e-i;h++}}if(a.bitOffset>=16){a.accumulator32=a.shortBuffer[a.halfOffset++]<<16|a.accumulator32>>>16;a.bitOffset-=16}1===readFewBits(a,1)&&function inverseMoveToFrontTransform(e,t){const n=new Int32Array(256);for(let e=0;e<256;++e)n[e]=e;for(let a=0;a=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}let r=readSymbol(e.blockTrees,2*t,e);const i=readBlockLength(e.blockTrees,2*t+1,e);1===r?r=a[s+1]+1:0===r?r=a[s]:r-=2;r>=n&&(r-=n);a[s]=a[s+1];a[s+1]=r;return i}function decodeLiteralBlockSwitch(e){e.literalBlockLength=decodeBlockTypeAndLength(e,0,e.numLiteralBlockTypes);const t=e.rings[5];e.contextMapSlice=t<<6;e.literalTreeIdx=255&e.contextMap[e.contextMapSlice];const n=e.contextModes[t];e.contextLookupOffset1=n<<9;e.contextLookupOffset2=e.contextLookupOffset1+256}function decodeCommandBlockSwitch(e){e.commandBlockLength=decodeBlockTypeAndLength(e,1,e.numCommandBlockTypes);e.commandTreeIdx=e.rings[7]}function decodeDistanceBlockSwitch(e){e.distanceBlockLength=decodeBlockTypeAndLength(e,2,e.numDistanceBlockTypes);e.distContextMapSlice=e.rings[9]<<2}function readNextMetablockHeader(e){if(0!==e.inputEnd){e.nextRunningState=10;e.runningState=12;return 0}e.literalTreeGroup=new Int32Array(0);e.commandTreeGroup=new Int32Array(0);e.distanceTreeGroup=new Int32Array(0);let t;if(e.halfOffset>2030){t=readMoreInput(e);if(t<0)return t}t=function decodeMetaBlockLength(e){if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}e.inputEnd=readFewBits(e,1);e.metaBlockLength=0;e.isUncompressed=0;e.isMetadata=0;if(0!==e.inputEnd&&0!==readFewBits(e,1))return 0;const t=readFewBits(e,2)+4;if(7===t){e.isMetadata=1;if(0!==readFewBits(e,1))return makeError(e,-6);const t=readFewBits(e,2);if(0===t)return 0;for(let n=0;n=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const a=readFewBits(e,8);if(0===a&&n+1===t&&t>1)return makeError(e,-8);e.metaBlockLength+=a<<8*n}}else for(let n=0;n=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const a=readFewBits(e,4);if(0===a&&n+1===t&&t>4)return makeError(e,-8);e.metaBlockLength+=a<<4*n}e.metaBlockLength++;0===e.inputEnd&&(e.isUncompressed=readFewBits(e,1));return 0}(e);if(t<0)return t;if(0===e.metaBlockLength&&0===e.isMetadata)return 0;if(0!==e.isUncompressed||0!==e.isMetadata){t=jumpToByteBoundary(e);if(t<0)return t;0===e.isMetadata?e.runningState=6:e.runningState=5}else e.runningState=3;if(0!==e.isMetadata)return 0;e.expectedTotalSize+=e.metaBlockLength;e.expectedTotalSize>1<<30&&(e.expectedTotalSize=1<<30);e.ringBufferSizee.expectedTotalSize){const n=e.expectedTotalSize;for(;t>>1>n;)t>>=1;0===e.inputEnd&&t<16384&&e.maxRingBufferSize>=16384&&(t=16384)}if(t<=e.ringBufferSize)return;const n=new Int8Array(t+37),a=e.ringBuffer;0!==a.length&&n.set(a.subarray(0,e.ringBufferSize),0);e.ringBuffer=n;e.ringBufferSize=t}(e);return 0}function readMetablockPartition(e,t,n){let a=e.blockTrees[2*t];if(n<=1){e.blockTrees[2*t+1]=a;e.blockTrees[2*t+2]=a;return 1<<28}const s=n+2;let r=readHuffmanCode(s,s,e.blockTrees,2*t,e);if(r<0)return r;a+=r;e.blockTrees[2*t+1]=a;r=readHuffmanCode(26,26,e.blockTrees,2*t+1,e);if(r<0)return r;a+=r;e.blockTrees[2*t+2]=a;return readBlockLength(e.blockTrees,2*t+1,e)}function readMetablockHuffmanCodesAndContextMaps(e){e.numLiteralBlockTypes=decodeVarLenUnsignedByte(e)+1;let t=readMetablockPartition(e,0,e.numLiteralBlockTypes);if(t<0)return t;e.literalBlockLength=t;e.numCommandBlockTypes=decodeVarLenUnsignedByte(e)+1;t=readMetablockPartition(e,1,e.numCommandBlockTypes);if(t<0)return t;e.commandBlockLength=t;e.numDistanceBlockTypes=decodeVarLenUnsignedByte(e)+1;t=readMetablockPartition(e,2,e.numDistanceBlockTypes);if(t<0)return t;e.distanceBlockLength=t;if(e.halfOffset>2030){t=readMoreInput(e);if(t<0)return t}if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}e.distancePostfixBits=readFewBits(e,2);e.numDirectDistanceCodes=readFewBits(e,4)<=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}e.contextModes[n]=readFewBits(e,2);n++}if(e.halfOffset>2030){t=readMoreInput(e);if(t<0)return t}}const a=e.numLiteralBlockTypes<<6;e.contextMap=new Int8Array(a);t=decodeContextMap(a,e.contextMap,e);if(t<0)return t;const s=t;e.trivialLiteralContext=1;for(let t=0;t>6){e.trivialLiteralContext=0;break}e.distContextMap=new Int8Array(e.numDistanceBlockTypes<<2);t=decodeContextMap(e.numDistanceBlockTypes<<2,e.distContextMap,e);if(t<0)return t;const r=t;e.literalTreeGroup=new Int32Array(huffmanTreeGroupAllocSize(256,s));t=decodeHuffmanTreeGroup(256,256,s,e,e.literalTreeGroup);if(t<0)return t;e.commandTreeGroup=new Int32Array(huffmanTreeGroupAllocSize(704,e.numCommandBlockTypes));t=decodeHuffmanTreeGroup(704,704,e.numCommandBlockTypes,e,e.commandTreeGroup);if(t<0)return t;let i=calculateDistanceAlphabetSize(e.distancePostfixBits,e.numDirectDistanceCodes,24),o=i;if(1===e.isLargeWindow){i=calculateDistanceAlphabetSize(e.distancePostfixBits,e.numDirectDistanceCodes,62);t=calculateDistanceAlphabetLimit(e,2147483644,e.distancePostfixBits,e.numDirectDistanceCodes);if(t<0)return t;o=t}e.distanceTreeGroup=new Int32Array(huffmanTreeGroupAllocSize(o,r));t=decodeHuffmanTreeGroup(i,o,r,e,e.distanceTreeGroup);if(t<0)return t;!function calculateDistanceLut(e,t){const n=e.distExtraBits,a=e.distOffset,s=e.distancePostfixBits,r=e.numDirectDistanceCodes,i=1<>>e.bitOffset;e.bitOffset+=8;r--}if(0===r)return 0;const i=Math.min(halfAvailable(e),r>>1);if(i>0){const n=e.halfOffset<<1,a=i<<1;t.set(e.byteBuffer.subarray(n,n+a),s);s+=a;r-=a;e.halfOffset+=i}if(0===r)return 0;if(halfAvailable(e)>0){if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}for(;0!==r;){t[s++]=e.accumulator32>>>e.bitOffset;e.bitOffset+=8;r--}return checkHealth(e,0)}for(;r>0;){const n=readInput(e,t,s,r);if(n<-1)return n;if(n<=0)return makeError(e,-16);s+=n;r-=n}return 0}(e,t,e.pos,a);if(n<0)return n;e.metaBlockLength-=a;e.pos+=a;if(e.pos===e.ringBufferSize){e.nextRunningState=6;e.runningState=12;return 0}n=reload(e);if(n<0)return n;e.runningState=2;return 0}function writeRingBuffer(e){const t=Math.min(e.outputLength-e.outputUsed,e.ringBufferBytesReady-e.ringBufferBytesWritten);if(0!==t){e.output.set(e.ringBuffer.subarray(e.ringBufferBytesWritten,e.ringBufferBytesWritten+t),e.outputOffset+e.outputUsed);e.outputUsed+=t;e.ringBufferBytesWritten+=t}return e.outputUsed>5]}function decodeHuffmanTreeGroup(e,t,n,a,s){let r=n;for(let i=0;i2147483644)return makeError(e,-9);const n=e.distance-e.maxDistance-1-e.cdTotalSize;if(n<0){const t=function initializeCompoundDictionaryCopy(e,t,n){-1===e.cdBlockBits&&function initializeCompoundDictionary(e){e.cdBlockMap=new Int8Array(256);let t=8;for(;e.cdTotalSize-1>>t;)t++;t-=8;e.cdBlockBits=t;let n=0,a=0;for(;n>t]=a;n+=1<>e.cdBlockBits];for(;t>=e.cdChunkOffsets[a+1];)a++;if(e.cdTotalSize>t+n)return makeError(e,-9);e.distRbIdx=e.distRbIdx+1&3;e.rings[e.distRbIdx]=e.distance;e.metaBlockLength-=n;e.cdBrIndex=a;e.cdBrOffset=t-e.cdChunkOffsets[a];e.cdBrLength=n;e.cdBrCopied=0;return 0}(e,-n-1,e.copyLength);if(t<0)return t;e.runningState=14}else{const a=u,s=e.copyLength;if(s>31)return makeError(e,-9);const r=p[s];if(0===r)return makeError(e,-9);let i=m[s];const o=n>>r;i+=(n&(1<=l.numTransforms)return makeError(e,-9);const f=function transformDictionaryWord(e,t,n,a,s,r,i){let o=t;const l=r.triplets,f=r.prefixSuffixStorage,c=r.prefixSuffixHeads,h=3*i,u=l[h],m=l[h+1],p=l[h+2];let d=c[u];const g=c[u+1];let b=c[p];const w=c[p+1];let j=m-11,k=m;(j<1||j>9)&&(j=0);(k<1||k>9)&&(k=0);for(;d!==g;)e[o++]=f[d++];let y=s;j>y&&(j=y);let q=a+j;y-=j;y-=k;let v=y;for(;v>0;){e[o++]=n[q++];v--}if(10===m||11===m){let t=o-y;10===m&&(y=1);for(;y>0;){const n=255&e[t];if(n<192){n>=97&&n<=122&&(e[t]=32^e[t]);t+=1;y-=1}else if(n<224){e[t+1]=32^e[t+1];t+=2;y-=2}else{e[t+2]=5^e[t+2];t+=3;y-=3}}}else if(21===m||22===m){let t=o-y;const n=r.params[i];let a=16777216-(32768&n)+(32767&n);for(;y>0;){let n=1;const s=255&e[t];if(s<128){a+=s;e[t]=127&a}else if(s<192);else if(s<224)if(y>=2){const r=e[t+1];a+=63&r|(31&s)<<6;e[t]=192|a>>6&31;e[t+1]=192&r|63&a;n=2}else n=y;else if(s<240)if(y>=3){const r=e[t+1],i=e[t+2];a+=63&i|(63&r)<<6|(15&s)<<12;e[t]=224|a>>12&15;e[t+1]=192&r|a>>6&63;e[t+2]=192&i|63&a;n=3}else n=y;else if(s<248)if(y>=4){const r=e[t+1],i=e[t+2],o=e[t+3];a+=63&o|(63&i)<<6|(63&r)<<12|(7&s)<<18;e[t]=240|a>>18&7;e[t+1]=192&r|a>>12&63;e[t+2]=192&i|a>>6&63;e[t+3]=192&o|63&a;n=4}else n=y;t+=n;y-=n;21===m&&(y=0)}}for(;b!==w;)e[o++]=f[b++];return o-t}(e.ringBuffer,e.pos,a,i,s,l,o);e.pos+=f;e.metaBlockLength-=f;if(e.pos>=t){e.nextRunningState=4;e.runningState=12;return 0}e.runningState=4}return 0}function copyFromCompoundDictionary(e,t){let n=e.pos;const a=n;for(;e.cdBrLength!==e.cdBrCopied;){const a=t-n,s=e.cdChunkOffsets[e.cdBrIndex+1]-e.cdChunkOffsets[e.cdBrIndex]-e.cdBrOffset;let r=e.cdBrLength-e.cdBrCopied;r>s&&(r=s);r>a&&(r=a);e.ringBuffer.set(e.cdChunks[e.cdBrIndex].subarray(e.cdBrOffset,e.cdBrOffset+r),n);n+=r;e.cdBrOffset+=r;e.cdBrCopied+=r;if(r===s){e.cdBrIndex++;e.cdBrOffset=0}if(n>=t)break}return n-a}function decompress(e){let t;if(0===e.runningState)return makeError(e,-25);if(e.runningState<0)return makeError(e,-28);if(11===e.runningState)return makeError(e,-22);if(1===e.runningState){const t=function decodeWindowBits(e){const t=e.isLargeWindow;e.isLargeWindow=0;if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}if(0===readFewBits(e,1))return 16;let n=readFewBits(e,3);if(0!==n)return 17+n;n=readFewBits(e,3);if(0!==n){if(1===n){if(0===t)return-1;e.isLargeWindow=1;if(1===readFewBits(e,1))return-1;n=readFewBits(e,6);return n<10||n>30?-1:n}return 8+n}return 17}(e);if(-1===t)return makeError(e,-11);e.maxRingBufferSize=1<2030){t=readMoreInput(e);if(t<0)return t}0===e.commandBlockLength&&decodeCommandBlockSwitch(e);e.commandBlockLength--;if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const o=readSymbol(e.commandTreeGroup,e.commandTreeIdx,e)<<2,l=f[o],c=f[o+1],u=f[o+2];e.distanceCode=f[o+3];if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const m=255&l;e.insertLength=c+(m<=16?readFewBits(e,m):readManyBits(e,m));if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const p=l>>8;e.copyLength=u+(p<=16?readFewBits(e,p):readManyBits(e,p));e.j=0;e.runningState=7;continue;case 7:if(0!==e.trivialLiteralContext)for(;e.j2030){t=readMoreInput(e);if(t<0)return t}0===e.literalBlockLength&&decodeLiteralBlockSwitch(e);e.literalBlockLength--;if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}i[e.pos]=readSymbol(e.literalTreeGroup,e.literalTreeIdx,e);e.pos++;e.j++;if(e.pos>=s){e.nextRunningState=7;e.runningState=12;break}}else{let n=255&i[e.pos-1&r],a=255&i[e.pos-2&r];for(;e.j2030){t=readMoreInput(e);if(t<0)return t}0===e.literalBlockLength&&decodeLiteralBlockSwitch(e);const r=h[e.contextLookupOffset1+n]|h[e.contextLookupOffset2+a],o=255&e.contextMap[e.contextMapSlice+r];e.literalBlockLength--;a=n;if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}n=readSymbol(e.literalTreeGroup,o,e);i[e.pos]=n;e.pos++;e.j++;if(e.pos>=s){e.nextRunningState=7;e.runningState=12;break}}}if(7!==e.runningState)continue;e.metaBlockLength-=e.insertLength;if(e.metaBlockLength<=0){e.runningState=4;continue}let d=e.distanceCode;if(d<0)e.distance=e.rings[e.distRbIdx];else{if(e.halfOffset>2030){t=readMoreInput(e);if(t<0)return t}0===e.distanceBlockLength&&decodeDistanceBlockSwitch(e);e.distanceBlockLength--;if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}const s=255&e.distContextMap[e.distContextMapSlice+d];d=readSymbol(e.distanceTreeGroup,s,e);if(d<16){const t=e.distRbIdx+n[d]&3;e.distance=e.rings[t]+a[d];if(e.distance<0)return makeError(e,-12)}else{const t=e.distExtraBits[d];let n;if(e.bitOffset+t<=32)n=readFewBits(e,t);else{if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}n=t<=16?readFewBits(e,t):readManyBits(e,t)}e.distance=e.distOffset[d]+(n<e.maxDistance){e.runningState=9;continue}if(d>0){e.distRbIdx=e.distRbIdx+1&3;e.rings[e.distRbIdx]=e.distance}if(e.copyLength>e.metaBlockLength)return makeError(e,-9);e.j=0;e.runningState=8;continue;case 8:let g=e.pos-e.distance&r,b=e.pos;const w=e.copyLength-e.j,j=g+w,k=b+w;if(jb&&k>g){const e=w+3>>2;for(let t=0;t=s){e.nextRunningState=8;e.runningState=12;break}}8===e.runningState&&(e.runningState=4);continue;case 9:t=doUseDictionary(e,s);if(t<0)return t;continue;case 14:e.pos+=copyFromCompoundDictionary(e,s);if(e.pos>=s){e.nextRunningState=14;e.runningState=12;return 2}e.runningState=4;continue;case 5:for(;e.metaBlockLength>0;){if(e.halfOffset>2030){t=readMoreInput(e);if(t<0)return t}if(e.bitOffset>=16){e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16}readFewBits(e,8);e.metaBlockLength--}e.runningState=2;continue;case 6:t=copyUncompressedData(e);if(t<0)return t;continue;case 12:e.ringBufferBytesReady=Math.min(e.pos,e.ringBufferSize);e.runningState=13;continue;case 13:t=writeRingBuffer(e);if(0!==t)return t;e.pos>=e.maxBackwardDistance&&(e.maxDistance=e.maxBackwardDistance);if(e.pos>=e.ringBufferSize){e.pos>e.ringBufferSize&&i.copyWithin(0,e.ringBufferSize,e.pos);e.pos=e.pos&r;e.ringBufferBytesWritten=0}e.runningState=e.nextRunningState;continue;default:return makeError(e,-28)}if(10!==e.runningState)return makeError(e,-29);if(e.metaBlockLength<0)return makeError(e,-10);t=jumpToByteBoundary(e);if(0!==t)return t;t=checkHealth(e,1);return 0!==t?t:1}const c=new function Transforms(e,t,n){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=e;this.triplets=new Int32Array(3*e);this.params=new Int16Array(e);this.prefixSuffixStorage=new Int8Array(t);this.prefixSuffixHeads=new Int32Array(n+1)}(121,167,50);!function unpackTransforms(e,t,n,a,s){const r=toUtf8Runes(a),i=r.length;let o=1,l=0;for(let n=0;n#\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");function getNextKey(e,t){let n=1<>=1;return(e&n-1)+n}function replicateValue(e,t,n,a,s){let r=a;for(;r>0;){r-=n;e[t+r]=s}}function nextTableBitSize(e,t,n){let a=t,s=1<0;){replicateValue(e,r+u,p,c,t<<16|i[m++]);u=getNextKey(u,t);o[t]--}}const d=h-1;let g=-1,b=r;p=1;for(let t=n+1;t<=15;++t){p<<=1;for(;o[t]>0;){if((u&d)!==g){b+=c;f=nextTableBitSize(o,t,n);c=1<>n),p,c,t-n<<16|i[m++]);u=getNextKey(u,t);o[t]--}}return h}function readMoreInput(e){if(0!==e.endOfStreamReached)return halfAvailable(e)>=-2?0:makeError(e,-16);const t=e.halfOffset<<1;let n=4096-t;e.byteBuffer.copyWithin(0,t,4096);e.halfOffset=0;for(;n<4096;){const t=4096-n,a=readInput(e,e.byteBuffer,n,t);if(a<-1)return a;if(a<=0){e.endOfStreamReached=1;e.tailBytes=n;n+=1;break}n+=a}!function bytesToNibbles(e,t){const n=e.byteBuffer,a=t>>1,s=e.shortBuffer;for(let e=0;e>3)-4;return n>e.tailBytes?makeError(e,-13):0!==t&&n!==e.tailBytes?makeError(e,-17):0}function readFewBits(e,t){const n=e.accumulator32>>>e.bitOffset&(1<>>16;e.bitOffset-=16;return n|readFewBits(e,t-16)<<16}function prepare(e){if(e.halfOffset>2030){const t=readMoreInput(e);if(0!==t)return t}let t=checkHealth(e,0);if(0!==t)return t;e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16;e.accumulator32=e.shortBuffer[e.halfOffset++]<<16|e.accumulator32>>>16;e.bitOffset-=16;return 0}function reload(e){return 32===e.bitOffset?prepare(e):0}function jumpToByteBoundary(e){const t=32-e.bitOffset&7;if(0!==t){if(0!==readFewBits(e,t))return makeError(e,-5)}return 0}function halfAvailable(e){let t=2048;0!==e.endOfStreamReached&&(t=e.tailBytes+1>>1);return t-e.halfOffset}const h=new Int32Array(2048);!function unpackLookupTable(e,t,n){for(let t=0;t<256;++t){e[t]=63&t;e[512+t]=t>>2;e[1792+t]=2+(t>>6)}for(let n=0;n<128;++n)e[1024+n]=4*(t.charCodeAt(n)-32);for(let t=0;t<64;++t){e[1152+t]=1&t;e[1216+t]=2+(1&t)}let a=1280;for(let t=0;t<19;++t){const s=3&t,r=n.charCodeAt(t)-32;for(let t=0;t>1;for(let e=0;e!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{\t~\t&@0&907YifeeF[SJ`bpkujpbdloepmltyk9rvfq-`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~\tKFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf.\t"331*mgltX2^8X^8\tOld#pbow\t\n\nabmdwqjnabwk*x\t33s{\t~*8hl9\0effpbg=p9,,#X^8wloosovd+*x\tx\t#-ip$133sgvboalbw-ISD*8\t~rvlw*8\t\t$*8\t\t~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\tabmgprvfvf>#x~8;3s{8`hjmdx\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*##oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9npjnlm?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*(-isdpvjwfpoj`fkbqqz213!#ptffwwq=\tmbnf>gjfdlsbdf#ptjpp..=\t\t eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9ojg>!`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=\t?"pwffo#zlv#k1=\telqn#ifpvp233&#nfmv-\t\n\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{`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2=\t\\elqn!ofbufppwqfpp!#,=\t-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!=\t)#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\jnbdfwkqfbgmbwjufsl`hfwal{!=\tPzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw##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=vpjmd#\t\nubq#=$*8\t\n?,wg=\t?,wq=\tabkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\bTA\nzk\vBl\bQ\vUmGx\bSM\nmC\bTA\twQ\nd}\bW@\bTl\bTF\ti@\tcT\vBM\v|jBV\tqw\tcC\bWI\npa\tfM\n{Z{X\bTF\bVV\bVK\tmkF\t[]\bPm\bTv\nsI\vpg\t[I\bQpmx\v_W\n^M\npe\vQ}\vGu\nel\npeChBV\bTA\tSo\nzk\vGL\vxD\nd[JzMY\bQpli\nfl\npC{BNt\vwT\ti_\bTgQQ\n|p\vXN\bQS\vxDQC\bWZ\tpD\vVS\bTWNtYh\nzuKjN}\twr\tHa\n_D\tj`\vQ}\vWp\nxZ{c\tji\tBU\nbDa|\tTn\tpV\nZd\nmC\vEV{X\tc}\tTo\bWl\bUd\tIQ\tcg\vxs\nXW\twR\vek\tc}\t]y\tJn\nrp\neg\npV\nz\\{W\npl\nz\\\nzU\tPc\t`{\bV@\nc|\bRw\ti_\bVb\nwX\tHvSu\bTF\v_W\vWs\vsIm\nTT\ndc\tUS\t}f\tiZ\bWz\tc}MD\tBe\tiD\v@@\bTl\bPv\t}tSwM`\vnU\tkW\ved\nqo\vxY\tA|\bTz\vy`BRBM\tiaXU\nyun^\tfL\tiI\nXW\tfD\bWz\bW@\tyj\tm\tav\tBN\vb\\\tpD\bTf\nY[\tJn\bQy\t[^\vWc\vyuDlCJ\vWj\vHR\t`V\vuW\tQy\np@\vGuplJm\bW[\nLP\nxC\n`m\twQuiR\nbI\twQ\tBZ\tWVBR\npg\tcgtiCW\n_y\tRg\bQa\vQB\vWc\nYble\ngESu\nL[\tQ\tea\tdj\v]W\nb~M`\twL\bTV\bVH\nt\npl\t|bs_\bU|\bTaoQlvSkM`\bTv\vK}\nfl\tcCoQBR\tHk\t|d\bQp\tHK\tBZ\vHR\bPv\vLx\vEZ\bT\bTv\tiDoDMU\vwBSuk`St\ntC\tPl\tKg\noi\tjY\vxYh}\nzk\bWZ\tm\ve`\tTB\tfE\nzk\t`zYh\nV|\tHK\tAJ\tAJ\bUL\tp\\\tql\nYcKd\nfyYh\t[I\vDgJm\n]n\nlb\bUd\n{Z\tlu\tfsoQ\bTWJm\vwB\teaYhBC\tsb\tTn\nzU\n_y\vxY\tQ]\ngwmt\tO\\\ntb\bWW\bQy\tmI\tV[\ny\\\naB\vRb\twQ\n]QQJ\bWg\vWa\bQj\ntC\bVH\nYm\vxs\bVK\nel\bWI\vxYCq\ntR\vHV\bTl\bVw\tay\bQa\bVV\t}t\tdj\nr|\tp\\\twR\n{i\nTT\t[I\ti[\tAJ\vxs\v_W\td{\vQ}\tcg\tTz\tA|\tCj\vLmN}m\nbK\tdZ\tp\\\t`V\tsV\np@\tiD\twQ\vQ}\bTfkaJm\v@@\bV`\tzp\n@NSw\tiI\tcg\noiSu\bVwloCy\tc}\vb\\\tsUBA\bWI\bTf\nxS\tVp\nd|\bTV\vbC\tNoJu\nTC\t|`\n{Z\tD]\bU|\tc}lm\bTl\tBv\tPl\tc}\bQp\tm\nLk\tkj\n@NSbKO\tj_\tp\\\nzU\bTl\bTg\bWI\tcfXO\bWW\ndzli\tBN\nd[\bWOMD\vKC\tdj\tI_\bVV\ny\\\vLmxl\txB\tkV\vb\\\vJW\vVS\tVx\vxD\td{MD\bTa\t|`\vPzR}\vWsBM\nsICN\bTaJm\npe\ti_\npV\nrh\tRd\tHv\n~A\nxR\vWh\vWk\nxS\vAz\vwX\nbIoQ\tfw\nqI\nV|\nunz\vpg\td\\\voA{D\ti_xB\bT\t`Vqr\tTTg]CA\vuR\tVJ\tT`\npw\vRb\tI_\nCxRo\vsICjKh\tBv\tWVBBoD{D\nhcKm\v^R\tQE\n{I\np@\nc|Gt\tc}Dl\nzUqN\tsVk}\tHh\v|j\nqou|\tQ]\vekZM`St\npe\tdj\bVG\veE\tm\vWc|I\n[W\tfL\bT\tBZSu\vKaCqNtY[\nqI\bTv\tfM\ti@\t}fB\\\tQy\vBl\bWgXDkc\vx[\bVV\tQ]\ta\tPy\vxD\nfI\t}foD\tdj\tSGls\t~DCN\n{Z\t\\v\n_D\nhc\vx_C[\tAJ\nLM\tVxCI\tbj\tc^\tcF\ntCSx\twrXA\bU\\\t|a\vK\\\bTV\bVj\nd|\tfsCX\ntb\bRw\tVx\tAE\tA|\bTNt\vDg\tVc\bTld@\npo\tM\tcF\npe\tiZ\tBo\bSq\nfHl`\bTx\bWf\tHE\vF{\tcO\tfD\nlm\vfZ\nlm\veU\tdGBH\bTV\tSiMW\nwX\nz\\\t\\cCX\nd}\tl}\bQp\bTV\tF~\bQ\t`i\ng@nO\bUd\bTl\nL[\twQ\tji\ntC\t|J\nLU\naB\vxYKj\tAJuN\ti[\npeSk\vDg\vx]\bVb\bVV\nea\tkV\nqI\bTaSk\nAO\tpD\ntb\nts\nyi\bVg\ti_\v_W\nLkNt\tyj\tfMR\tiI\bTl\vwX\tsV\vMl\nyu\tAJ\bVjKO\tWV\vA}\vW\nrp\tiD\v|olv\vsIBM\td~\tCU\bVbeV\npC\vwT\tj`\tc}\vxs\vps\vvh\tWV\vGg\vAe\vVK\v]W\trg\vWcF`\tBr\vb\\\tdZ\bQp\nqIkF\nLk\vAR\bWI\bTg\tbs\tdw\n{L\n_y\tiZ\bTA\tlg\bVV\bTl\tdk\n`k\ta{\ti_{Awj\twN\v@@\bTe\ti_\n_D\twL\nAH\viK\vek\n[]\tp_\tyj\bTv\tUS\t[r\n{I\npsGt\vVK\nplS}\vWP\t|dMD\vHV\bTR}M`\bTV\bVHlvCh\bW[Ke\tR{\v^R\tab\tBZ\tVA\tB`\nd|\nhsKe\tBeOi\tR{\td\\nB\bWZ\tdZ\tVJOs\tmuQ\vhZQ@QQ\nfI\bW[B\\li\nzU\nMdM`\nxS\bVV\n\\}\vxD\tm\bTpIS\nc|\tkVi~\tV{\vhZ\t|b\bWt\n@R\voA\vnU\bWI\tea\tB`\tiD\tc}\tTzBR\vQBNj\tCP\t[I\bTv\t`WuN\vpg\vpg\vWc\tiT\tbs\twL\tU_\tc\\\t|h\vKa\tNr\tfL\nq|\nzu\nz\\\tNr\bUg\t|bm`\bTv\nyd\nrp\bWf\tUXBV\nzk\nd}\twQ\t}fCe\ved\bTW\bSB\nxU\tcn\bTb\ne\ta\\\tSG\bU|\npV\nN\\Kn\vnU\tAt\tpD\v^R\vIrb[\tR{\tdE\vxD\vWK\vWA\bQL\bW@Su\bUd\nDM\tPcCADloQ\tHswiub\na\bQpOb\nLP\bTlY[\vK}\tAJ\bQn^\vsA\bSM\nqM\bWZ\n^W\vz{S|\tfD\bVK\bTv\bPvBB\tCPdF\tid\vxsmx\vws\tcC\ntC\tycM`\vW\nrh\bQp\vxD\\o\nsI_k\nzukF\tfDXsXO\tjp\bTvBS{B\tBr\nzQ\nbI\tc{BDBVnO\bTF\tcaJd\tfL\tPV\tI_\nlK`o\twX\npa\tgu\bP}{^\bWf\n{I\tBN\npaKl\vpg\tcn\tfL\vvhCq\bTl\vnU\bSqCm\twR\bUJ\npe\nyd\nYgCy\vKW\tfD\neaoQ\tj_\tBvnM\vID\bTa\nzApl\n]n\bTa\tR{\tfr\n_y\bUg{Xkk\vxD|Ixl\nfyCe\vwB\nLk\vd]\noi\n}h\tQ]\npe\bVwHkOQ\nzk\tAJ\npV\bPv\ny\\\tA{Oi\bSBXA\veE\tjp\nq}\tiDqN\v^R\tm\tiZ\tBr\bVg\noi\n\\X\tU_\nc|\vHV\bTf\tTn\\N\\N\nuBlv\nyu\tTd\bTf\bPL\v]W\tdG\nA`\nw^\ngI\npe\tdw\nz\\ia\bWZ\tcFJm\n{Z\bWO_kDfRR\td\\\bVV\vxsBNtilm\tTd\t]y\vHV\tSo\v|jXX\tA|\vZ^\vGu\bTWM`kF\vhZ\vVK\tdG\vBl\tay\nxUqEnO\bVw\nqICX\ne\tPl\bWO\vLm\tdLuHCm\tdTfn\vwBka\vnU\n@M\nyT\tHv\t\\}Kh\td~Yhk}\neR\td\\\bWI\t|b\tHK\tiD\bTWMY\npl\bQ_\twr\vAx\tHE\bTg\bSqvp\vb\\\bWO\nOl\nsI\nfy\vID\t\\c\n{Z\n^~\npe\nAO\tTT\vxvk_\bWO\v|j\vwB\tQy\ti@\tPl\tHa\tdZk}ra\tUT\vJc\ved\np@\tQN\nd|\tkj\tHkM`\noi\twr\td\\\nlq\no_\nlb\nL[\tacBBBHCm\npl\tIQ\bVK\vxs\n`e\viK\npaOi\tUS\bTp\tfD\nPGkkXA\nz\\\neg\vWh\twRqN\nqS\tcnlo\nxS\n^W\tBU\nt\tHE\tp\\\tfF\tfw\bVV\bW@\tak\vVKls\tVJ\bVV\veE\\o\nyX\nYmM`lL\nd|\nzk\tA{sE\twQXT\nt\tPl\t]y\vwT{pMD\vb\\\tQ]Kj\tJn\nAH\vRb\tBU\tHK\t\\c\nfIm\nqM\n@R\tSo\noiBT\tHv\n_yKh\tBZ\t]i\bUJ\tV{Sr\nbI\vGg\ta_\bTR\nfI\nfl\t[K\tIIS|\vuW\tiI\bWI\nqI\v|jBV\bVg\bWZkF\vx]\bTA\tab\tfr\ti@\tJd\tJd\vps\nAO\bTaxu\tiD\nzk\t|d\t|`\bW[\tlP\tdG\bVV\vw}\vqO\ti[\bQ\bTz\vVF\twNts\tdw\bTv\neS\ngi\tNryS\npe\bVV\bSq\n`m\tyj\tBZ\vWX\bSB\tc\\\nUR\t[J\tc_nM\bWQ\vAx\nMd\tBrui\vxY\bSM\vWc\v|j\vxs\t}Q\tBO\bPL\bWW\tfM\nAO\tPc\veUe^\bTg\nqI\tac\bPv\tcFoQ\tQ\vhZka\nz\\\tiK\tBU\n`k\tCPS|M`\n{I\tS{_O\tBZZiSk\tps\tp\\\nYu\n]s\nxC\bWt\nbD\tkV\vGuyS\nqA\t[r\neKM`\tdZlL\bUg\bTl\nbD\tUS\vb\\\tpV\nccS\\\tct\t`z\bPL\vWs\nA`\neg\bSquECR\vDg\t`W\vz{\vWcSkSk\tbW\bUg\tea\nxZ\tiI\tUX\tVJ\nqn\tS{\vRb\bTQ\nplGt\vuWuj\npF\nqI\tfL\t[I\tiaXO\nyu\vDg\ved\tq{VG\bQka\tVj\tkV\txB\nd|\np@\tQN\tPc\tps]j\tkV\toU\bTp\nzUnB\vB]\ta{\bV@\n]nm`\tcz\tR{m`\bQa\vwT\bSMMYqN\tdj~s\vQ}MY\vMB\tBv\twR\bRg\vQ}\tql\vKC\nrmxuCC\vwB\vvh\tBqXq\npV\ti_ObuE\nbd\nqo\v{i\nC~\tBL\veEuH\bVjEyGz\vzR\v{i\tcf\n{Z\n]nXA\vGu\vnU\thS\vGI\nCc\tHE\bTA\tHBBHCj\nCc\bTF\tHE\nXI\tA{\bQ\tc\\\vmO\vWX\nfH\np@MY\bTF\nlK\tBt\nzU\tTTKm\vwT\npV\ndt\vyI\tVx\tQ\tRg\tTd\nzU\bRS\nLM\twAnM\tTn\ndS\t]g\nLc\vwB\t}t\t[I\tCPkX\vFm\vhZm\ti[\np@\vQ}\vW\t|d\nMO\nMd\tf_\tfD\tcJ\tHz\vRb\tio\tPyY[\nxU\tct\v@@\tww\bPvBMFF\ntbv|\vKm\tBq\tBqKh`o\nZdXU\ti]\t|`\tStB\\\bQ\v_W\tTJ\nqI\t|a\tA{\vuPMD\tPl\nxR\tfL\vws\tc{\td\\\bV`\neg\tHKkc\nd|\bVV\ny\\kc\ti]\bVG\t`V\tss\tI_\tAE\tbs\tdu\nel\tpD\vW\nqslv\bSMZi\vVKia\vQB\tQ\n{Z\bPt\vKl\nlK\nhs\ndS\bVKmf\nd^\tkV\tcO\nc|\bVH\t\\]\bTv\bSq\tmI\vDg\tVJ\tcn\ny\\\bVg\bTv\nyX\bTF\t]]\bTp\noi\nhs\veU\nBf\tdjMr\n|p\t\\g\t]r\bVb{D\nd[XN\tfM\tO\\s_\tcf\tiZXN\vWc\tqv\n`m\tU^oD\nd|\vGg\tdE\vwflou}\nd|oQ\t`iOi\vxD\ndZ\nCxYw\nzk\ntb\ngw\tyj\tB`\nyX\vps\ntC\vpP\vqw\bPu\bPX\tDm\npwNj\tss\taG\vxs\bPt\noLGz\tOk\ti@\ti]eC\tIQ\tii\tdj\v@J\t|duh\bWZ\veU\vnU\bTa\tcCg]\nzkYh\bVK\nLU\np@\ntb\ntR\tCj\vNP\ti@\bP{\n\\}\n{c\nwX\tfL\bVG\tc{\t|`\tAJ\t|C\tfDln\t|d\tbs\nqI{B\vAx\np@\nzk\vRbOs\vWSe^\vD_\tBv\vWd\bVb\vxs\veE\bRw\n]n\n|p\vg|\tfwkc\bTIka\n\\TSp\tju\vps\npeu|\vGr\bVe\tCU]MXU\vxD\bTa\tIQ\vWq\tCU\tam\tdj\bSoSw\vnUCh\tQ]s_\bPt\tfS\bTa\t\\}\n@OYc\tUZ\bTx\npe\vnU\nzU\t|}\tiD\nz\\\bSM\vxDBR\nzQ\tQN]MYh\nLP\vFm\vLXvc\vqlka\tHK\bVb\ntC\nCy\bTv\nuVoQ\t`z\t[I\tB`\vRb\tyj\tsb\vWs\bTl\tkV\ved\nelL\vxN\tm\nJn\tjY\vxD\bVb\bSq\vyu\twL\vXL\bTA\tpg\tAt\tnDXX\twR\npl\nhwyS\nps\tcO\bW[\v|jXN\tsV\tp\\\tBe\nb~\nAJ\n]ek`qN\tdw\tWV\tHE\vEVJz\tid\tB`\tzhE]\tfD\bTgqN\bTa\tjaCv\bSM\nhc\bUet_\tieg]\twQ\nPn\bVB\tjw\bVg\vbE\tBZ\vRH\bP{\tjp\n\\}\ta_\tcC\t|a\vD]\tBZ\ti[\tfD\vxW\no_\td\\\n_D\ntb\t\\c\tAJ\nlKoQlo\vLx\vM@\bWZKn\vpg\nTi\nIv\n|r\v@}JzLmWhk}ln\vxD\n]sgc\vps\tBr\bTW\vBMtZ\nBYDW\tjf\vSWC}\nqo\tdE\tmv\tIQ\bPP\bUblvBC\nzQ\t[I\vgl\nig\bUsBT\vbC\bSq\tsU\tiW\nJn\tSY\tHK\trg\npV\vID\v|jKO\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\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=\tNlgfqm#sqlujgf!#bow>!alqgfqp-\t\tElq#\t\tNbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s=\t#@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8\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=\t`lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,=\t9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2=\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+#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\t?"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg=\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#`bqqjfpx~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=\t##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=\t\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\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\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!=\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#,=\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#=\t\t\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=\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=\t?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=\t\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=\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#,=\t\\slsvspp`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=\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+\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=\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..=\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!=\tqfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8\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{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\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@Fr\vBl\bQ\tA{\vUmGx\tA{ypYA\0zX\bTV\bWl\bUdBM\vB{\npV\v@xB\\\np@DbGz\tal\npa\tfM\tuD\bV~mx\vQ}\ndS\tp\\\bVK\bS]\bU|oD\tkV\ved\vHR\nb~M`\nJpoD|Q\nLPSw\bTl\nAI\nxC\bWt\tBqF`Cm\vLm\tKx\t}t\bPv\ny\\\naB\tV\nZdXUli\tfr\ti@\tBHBDBV\t`V\n[]\tp_\tTn\n~A\nxR\tuD\t`{\bV@\tTn\tHK\tAJ\vxsZf\nqIZf\vBM\v|j\t}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=\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=\tbaplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof=\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\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=\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..=\t?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw=\tqfpvowp#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=\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!=?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm=\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-ISDwkvnasbqwj`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\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\t?kfbg=\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=\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\t?,kfbg=\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\t\n?,gju=\t\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=\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#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=\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!=\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=\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#=\t?kfbg=\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=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\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=\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(_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=\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%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^..=\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^..=\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=\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=#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq\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\t?,p`qjsw=\t?tbp#elvmgfg#jmjmwfqujft#tjwk\\jg!#`lmwfmw>!`bsjwbo#le#wkf\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+*#xje#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=\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=\t\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=##?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\t?,p`qjsw=\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\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=\tvo=?,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=\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\t?,p`qjsw=\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-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=\t\npAzWbdMbnf+p*X3^ip!=?,p`qjsw=\t?-ip!=?,p`qjsw=\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,,-isdqjdkwwkvna-ip!=?,p`qjsw=\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\tjmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju=\t?,gju=\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=\t?,gju=\t\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=\t?,kwno="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/-isdwkvnaqjdkw1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz=\t?,kwno=\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=\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#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju=\t?,gju=\t\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\t?,algz=\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..=\t?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju=\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=\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\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=\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!#\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\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=\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$=&*&'&^&ˆŸా&ƭ&ƒ&)&^&%&'&‚&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¨ҴŴ",g,"AAAAKKLLKKKKKJJIHHIHHGGFF");!function setData(e,t){const n=m,a=p;for(let e=0;e=0)return t;e.runningState>=0&&(e.runningState=t);throw new Error("Brotli error code: "+t)}return function decode(e,t){let n=new State;n.input=new InputStream(e);initState(n);if(t){let e=t.customDictionary;e&&function attachDictionaryChunk(e,t){if(1!==e.runningState)return makeError(e,-24);if(0===e.cdNumChunks){e.cdChunks=new Array(16);e.cdChunkOffsets=new Int32Array(16);e.cdBlockBits=-1}if(15===e.cdNumChunks)return makeError(e,-27);e.cdChunks[e.cdNumChunks]=t;e.cdNumChunks++;e.cdTotalSize+=t.length;e.cdChunkOffsets[e.cdNumChunks]=e.cdTotalSize;return 0}(n,e)}let a=0,s=[];for(;;){let e=new Int8Array(16384);s.push(e);n.output=e;n.outputOffset=0;n.outputLength=16384;n.outputUsed=0;decompress(n);a+=n.outputUsed;if(n.outputUsed<16384)break}!function close(e){if(0===e.runningState)return makeError(e,-25);e.runningState>0&&(e.runningState=11);return 0}(n);!function closeInput(e){e.input=new InputStream(new Int8Array(0))}(n);let r=new Int8Array(a),i=0;for(let e=0;e{throw t},n=import.meta.url;try{new URL(".",n).href}catch{}0;console.log.bind(console);var a,s,r,i,o,l=console.error.bind(console),f=!1,c=!1;function updateMemoryViews(){var e=u.buffer;i=new Int8Array(e);new Int16Array(e);o=new Uint8Array(e);new Uint16Array(e);new Int32Array(e);new Uint32Array(e);new Float32Array(e);new Float64Array(e);new BigInt64Array(e);new BigUint64Array(e)}class ExitStatus{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`;this.status=e}}var h,u,callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(t)},m=[],addOnPostRun=e=>m.push(e),p=[],addOnPreRun=e=>p.push(e),d=!0,g=0,b={},handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return a;quit_(0,e)},keepRuntimeAlive=()=>d||g>0,_proc_exit=e=>{a=e;if(!keepRuntimeAlive()){t.onExit?.(e);f=!0}quit_(0,new ExitStatus(e))},_exit=(e,t)=>{a=e;_proc_exit(e)},callUserCallback=e=>{if(!f)try{return e()}catch(e){handleException(e)}finally{(()=>{if(!keepRuntimeAlive())try{_exit(a)}catch(e){handleException(e)}})()}},alignMemory=(e,t)=>Math.ceil(e/t)*t,growMemory=e=>{var t=(e-u.buffer.byteLength+65535)/65536|0;try{u.grow(t);updateMemoryViews();return 1}catch(e){}};t.noExitRuntime&&(d=t.noExitRuntime);t.print&&t.print;t.printErr&&(l=t.printErr);t.wasmBinary&&t.wasmBinary;t.arguments&&t.arguments;t.thisProgram&&t.thisProgram;if(t.preInit){"function"==typeof t.preInit&&(t.preInit=[t.preInit]);for(;t.preInit.length>0;)t.preInit.shift()()}t.writeArrayToMemory=(e,t)=>{i.set(e,t)};var w,j={e:()=>function abort(e){t.onAbort?.(e);l(e="Aborted("+e+")");f=!0;e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);r?.(n);throw n}(""),b:()=>{d=!1;g=0},c:(e,t)=>{if(b[e]){clearTimeout(b[e].id);delete b[e]}if(!t)return 0;var n=setTimeout(()=>{delete b[e];callUserCallback(()=>h(e,performance.now()))},t);b[e]={id:n,timeout_ms:t};return 0},g:function _createImageData(e){t.imageData=new Uint8Array(e)},d:e=>{var t=o.length,n=2147483648;if((e>>>=0)>n)return!1;for(var a=1;a<=4;a*=2){var s=t*(1+.2/a);s=Math.min(s,e+100663296);var r=Math.min(n,alignMemory(Math.max(e,s),65536));if(growMemory(r))return!0}return!1},a:_proc_exit,h:function _setImageData(e,n,a,s){if(a===n){t.imageData=new Uint8ClampedArray(o.subarray(e,e+a*s));return}const r=n*s,i=t.imageData=new Uint8ClampedArray(r);for(let t=e,s=0;s{t.instantiateWasm(e,(e,t)=>{n(receiveInstance(e))})})}();!function run(){!function preRun(){if(t.preRun){"function"==typeof t.preRun&&(t.preRun=[t.preRun]);for(;t.preRun.length;)addOnPreRun(t.preRun.shift())}callRuntimeCallbacks(p)}();function doRun(){t.calledRun=!0;if(!f){!function initRuntime(){c=!0;w.j()}();s?.(t);t.onRuntimeInitialized?.();!function postRun(){if(t.postRun){"function"==typeof t.postRun&&(t.postRun=[t.postRun]);for(;t.postRun.length;)addOnPostRun(t.postRun.shift())}callRuntimeCallbacks(m)}()}}if(t.setStatus){t.setStatus("Running...");setTimeout(()=>{setTimeout(()=>t.setStatus(""),1);doRun()},1)}else doRun()}();return c?t:new Promise((e,t)=>{s=e;r=t})};class WasmImage{static#K=null;static#G=new Set;static#T=!0;static#V=!0;static#R=null;#$=null;#Y=null;_filename=null;_noWasmFilename=null;static setOptions({handler:e,useWasm:t,useWorkerFetch:n,wasmUrl:a}){WasmImage.#T=t;WasmImage.#V=n;WasmImage.#R=a;n||(WasmImage.#K=e)}static get instance(){unreachable("Abstract getter `instance` accessed")}static cleanup(){for(const e of WasmImage.#G)e.#Y=null}constructor(e=!1){e&&WasmImage.#G.add(this)}async#J(e){let t=null;try{t=(await import( +/*webpackIgnore: true*/ +/*@vite-ignore*/ +`${WasmImage.#R}${this._noWasmFilename}`)).default()}catch(e){warn(`#getJsModule: ${e}`)}e(t)}async#Q(e,t,n){try{this.#$||(WasmImage.#V?this.#$=await fetchBinaryData(`${WasmImage.#R}${this._filename}`):this.#$=await WasmImage.#K.sendWithPromise("FetchBinaryData",{kind:"wasmUrl",filename:this._filename}));return n((await WebAssembly.instantiate(this.#$,t)).instance)}catch(t){warn(`#instantiateWasm: ${t}`);this.#J(e);return null}}_getModule(e){if(!this.#Y){const{promise:t,resolve:n}=Promise.withResolvers(),a=[t];WasmImage.#T?a.push(e({warn,instantiateWasm:this.#Q.bind(this,n)})):this.#J(n);this.#Y=Promise.race(a)}return this.#Y}async decode(e,t){unreachable("Abstract method `decode` called")}}class Jbig2Error extends an{constructor(e){super(e,"Jbig2Error")}}class JBig2CCITTFaxImage extends WasmImage{_filename="jbig2.wasm";_noWasmFilename="jbig2_nowasm_fallback.js";static get instance(){return shadow(this,"instance",new JBig2CCITTFaxImage(!0))}async decode(e,t,n,a,s){const r=await this._getModule(ta);if(!r)throw new Jbig2Error("JBig2 failed to initialize");let i,o;try{const l=e.length;i=r._malloc(l);r.writeArrayToMemory(e,i);if(s)r._ccitt_decode(i,l,t,n,s.K,s.EndOfLine?1:0,s.EncodedByteAlign?1:0,s.BlackIs1?1:0,s.Columns,s.Rows);else{const e=a?a.length:0;if(e>0){o=r._malloc(e);r.writeArrayToMemory(a,o)}r._jbig2_decode(i,l,t,n,o,e)}if(!r.imageData)throw new Jbig2Error("Unknown error");const{imageData:f}=r;r.imageData=null;return f}finally{i&&r._free(i);o&&r._free(o)}}}class CCITTFaxStream extends DecodeStream{constructor(e,t,n){super(t);this.stream=e;this.maybeLength=t;this.dict=e.dict;n instanceof Dict||(n=Dict.empty);this.params={K:n.get("K")||0,EndOfLine:!!n.get("EndOfLine"),EncodedByteAlign:!!n.get("EncodedByteAlign"),Columns:n.get("Columns")||1728,Rows:n.get("Rows")||0,EndOfBlock:!!(n.get("EndOfBlock")??1),BlackIs1:!!n.get("BlackIs1")}}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}get isImageStream(){return!0}get isAsyncDecoder(){return!0}async decodeImage(e,t,n){if(this.eof)return this.buffer;e??=this.stream.isAsync&&await this.stream.asyncGetBytes()||this.bytes;this.buffer=await JBig2CCITTFaxImage.instance.decode(e,this.dict.get("W","Width"),this.dict.get("H","Height"),null,this.params);this.bufferLength=this.buffer.length;this.eof=!0;return this.buffer}}const na=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),aa=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]),sa=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]),ra=[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],ia=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends DecodeStream{#X=!0;constructor(e,t){super(t);this.stream=e;this.dict=e.dict;const n=e.getByte(),a=e.getByte();if(-1===n||-1===a)throw new FormatError(`Invalid header in flate stream: ${n}, ${a}`);if(8!=(15&n))throw new FormatError(`Unknown compression method in flate stream: ${n}, ${a}`);if(((n<<8)+a)%31!=0)throw new FormatError(`Bad FCHECK in flate stream: ${n}, ${a}`);if(32&a)throw new FormatError(`FDICT bit set in flate stream: ${n}, ${a}`);this.codeSize=0;this.codeBuf=0}async getImageData(e,t){const n=await this.asyncGetBytes();return n?n.length<=e?n:n.subarray(0,e):this.getBytes(e)}async asyncGetBytes(){const{decompressed:e,compressed:t}=await this.asyncGetBytesFromDecompressionStream("deflate");if(e)return e;this.#X=!1;this.stream=new Stream(t,2,t.length,this.stream.dict);this.reset();return null}get isAsync(){return this.#X}getBits(e){const t=this.stream;let n,a=this.codeSize,s=this.codeBuf;for(;a>e;this.codeSize=a-=e;return n}getCode(e){const t=this.stream,n=e[0],a=e[1];let s,r=this.codeSize,i=this.codeBuf;for(;r>16,f=65535&o;if(l<1||r>l;this.codeSize=r-l;return f}generateHuffmanTable(e){const t=e.length;let n,a=0;for(n=0;na&&(a=e[n]);const s=1<>=1}for(n=e;n>=1;if(0===t){let t;if(-1===(t=a.getByte())){this.#Z("Bad block header in flate stream");return}let n=t;if(-1===(t=a.getByte())){this.#Z("Bad block header in flate stream");return}n|=t<<8;if(-1===(t=a.getByte())){this.#Z("Bad block header in flate stream");return}let s=t;if(-1===(t=a.getByte())){this.#Z("Bad block header in flate stream");return}s|=t<<8;if(s!==(65535&~n)&&(0!==n||0!==s))throw new FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const r=this.bufferLength,i=r+n;e=this.ensureBuffer(i);this.bufferLength=i;if(0===n)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(n);e.set(t,r);t.length0;)c[o++]=m}s=this.generateHuffmanTable(c.subarray(0,e));r=this.generateHuffmanTable(c.subarray(e,f))}}e=this.buffer;let i=e?e.length:0,o=this.bufferLength;for(;;){let t=this.getCode(s);if(t<256){if(o+1>=i){e=this.ensureBuffer(o+1);i=e.length}e[o++]=t;continue}if(256===t){this.bufferLength=o;return}t-=257;t=aa[t];let a=t>>16;a>0&&(a=this.getBits(a));n=(65535&t)+a;t=this.getCode(r);t=sa[t];a=t>>16;a>0&&(a=this.getBits(a));const l=(65535&t)+a;if(o+n>=i){e=this.ensureBuffer(o+n);i=e.length}for(let t=0;t=9&&151===e[0]&&74===e[1]&&66===e[2]&&50===e[3]&&13===e[4]&&10===e[5]&&26===e[6]&&10===e[7]){const t=2&e[8]?9:13;return e.subarray(t)}return e}async decodeImage(e,t,n){if(this.eof)return this.buffer;e=Jbig2Stream.stripFileHeader(e||this.bytes);let a=null;if(this.params instanceof Dict){const e=this.params.get("JBIG2Globals");e instanceof BaseStream&&(a=Jbig2Stream.stripFileHeader(e.getBytes()))}this.buffer=await JBig2CCITTFaxImage.instance.decode(e,this.dict.get("Width"),this.dict.get("Height"),a);this.bufferLength=this.buffer.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}const oa=async function OpenJPEG(e={}){var t=e,n="./this.program",quit_=(e,t)=>{throw t},a=import.meta.url;try{new URL(".",a).href}catch{}0;var s,r,i,o,l,f,c,h=console.log.bind(console),u=console.error.bind(console),m=!1,p=!1;function updateMemoryViews(){var e=g.buffer;l=new Int8Array(e);new Int16Array(e);c=new Uint8Array(e);new Uint16Array(e);o=new Int32Array(e);f=new Uint32Array(e);new Float32Array(e);new Float64Array(e);new BigInt64Array(e);new BigUint64Array(e)}class ExitStatus{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`;this.status=e}}var d,g,callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(t)},b=[],addOnPostRun=e=>b.push(e),w=[],addOnPreRun=e=>w.push(e),j=!0,k=0,y={},handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return s;quit_(0,e)},keepRuntimeAlive=()=>j||k>0,_proc_exit=e=>{s=e;if(!keepRuntimeAlive()){t.onExit?.(e);m=!0}quit_(0,new ExitStatus(e))},_exit=(e,t)=>{s=e;_proc_exit(e)},callUserCallback=e=>{if(!m)try{return e()}catch(e){handleException(e)}finally{(()=>{if(!keepRuntimeAlive())try{_exit(s)}catch(e){handleException(e)}})()}},alignMemory=(e,t)=>Math.ceil(e/t)*t,growMemory=e=>{var t=(e-g.buffer.byteLength+65535)/65536|0;try{g.grow(t);updateMemoryViews();return 1}catch(e){}},q={},getEnvStrings=()=>{if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var t in q)void 0===q[t]?delete e[t]:e[t]=q[t];var a=[];for(var t in e)a.push(`${t}=${e[t]}`);getEnvStrings.strings=a}return getEnvStrings.strings},stringToUTF8=(e,t,n)=>((e,t,n,a)=>{if(!(a>0))return 0;for(var s=n,r=n+a-1,i=0;i=r)break;t[n++]=o}else if(o<=2047){if(n+1>=r)break;t[n++]=192|o>>6;t[n++]=128|63&o}else if(o<=65535){if(n+2>=r)break;t[n++]=224|o>>12;t[n++]=128|o>>6&63;t[n++]=128|63&o}else{if(n+3>=r)break;t[n++]=240|o>>18;t[n++]=128|o>>12&63;t[n++]=128|o>>6&63;t[n++]=128|63&o;i++}}t[n]=0;return n-s})(e,c,t,n),lengthBytesUTF8=e=>{for(var t=0,n=0;n=55296&&a<=57343){t+=4;++n}else t+=3}return t},v=[null,[],[]],S=globalThis.TextDecoder&&new TextDecoder,UTF8ArrayToString=(e,t=0,n,a)=>{var s=((e,t,n,a)=>{var s=t+n;if(a)return s;for(;e[t]&&!(t>=s);)++t;return t})(e,t,n,a);if(s-t>16&&e.buffer&&S)return S.decode(e.subarray(t,s));for(var r="";t>10,56320|1023&f)}}else r+=String.fromCharCode((31&i)<<6|o)}else r+=String.fromCharCode(i)}return r},printChar=(e,t)=>{var n=v[e];if(0===t||10===t){(1===e?h:u)(UTF8ArrayToString(n));n.length=0}else n.push(t)},UTF8ToString=(e,t,n)=>e?UTF8ArrayToString(c,e,t,n):"";t.noExitRuntime&&(j=t.noExitRuntime);t.print&&(h=t.print);t.printErr&&(u=t.printErr);t.wasmBinary&&t.wasmBinary;t.arguments&&t.arguments;t.thisProgram&&(n=t.thisProgram);if(t.preInit){"function"==typeof t.preInit&&(t.preInit=[t.preInit]);for(;t.preInit.length>0;)t.preInit.shift()()}t.writeArrayToMemory=(e,t)=>{l.set(e,t)};var x,C={m:()=>function abort(e){t.onAbort?.(e);u(e=`Aborted(${e})`);m=!0;e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);i?.(n);throw n}(""),l:()=>{j=!1;k=0},i:(e,t)=>{if(y[e]){clearTimeout(y[e].id);delete y[e]}if(!t)return 0;var n=setTimeout(()=>{delete y[e];callUserCallback(()=>d(e,performance.now()))},t);y[e]={id:n,timeout_ms:t};return 0},f:function _copy_pixels_1(e,n){e>>=2;const a=t.imageData=new Uint8ClampedArray(n),s=o.subarray(e,e+n);a.set(s)},e:function _copy_pixels_3(e,n,a,s){e>>=2;n>>=2;a>>=2;const r=t.imageData=new Uint8ClampedArray(3*s),i=o.subarray(e,e+s),l=o.subarray(n,n+s),f=o.subarray(a,a+s);for(let e=0;e>=2;n>>=2;a>>=2;s>>=2;const i=t.imageData=new Uint8ClampedArray(4*r),l=o.subarray(e,e+r),f=o.subarray(n,n+r),c=o.subarray(a,a+r),h=o.subarray(s,s+r);for(let e=0;e{var t=c.length,n=2147483648;if((e>>>=0)>n)return!1;for(var a=1;a<=4;a*=2){var s=t*(1+.2/a);s=Math.min(s,e+100663296);var r=Math.min(n,alignMemory(Math.max(e,s),65536));if(growMemory(r))return!0}return!1},o:(e,t)=>{var n=0,a=0;for(var s of getEnvStrings()){var r=t+n;f[e+a>>2]=r;n+=stringToUTF8(s,r,1/0)+1;a+=4}return 0},p:(e,t)=>{var n=getEnvStrings();f[e>>2]=n.length;var a=0;for(var s of n)a+=lengthBytesUTF8(s)+1;f[t>>2]=a;return 0},n:function _fd_seek(e,t,n,a){t=(s=t)<-9007199254740992||s>9007199254740992?NaN:Number(s);var s;return 70},b:(e,t,n,a)=>{for(var s=0,r=0;r>2],o=f[t+4>>2];t+=8;for(var l=0;l>2]=s;return 0},q:function _gray_to_rgba(e,n){e>>=2;const a=t.imageData=new Uint8ClampedArray(4*n),s=o.subarray(e,e+n);for(let e=0;e>=2;n>>=2;const s=t.imageData=new Uint8ClampedArray(4*a),r=o.subarray(e,e+a),i=o.subarray(n,n+a);for(let e=0;e>=2;n>>=2;a>>=2;const r=t.imageData=new Uint8ClampedArray(4*s),i=o.subarray(e,e+s),l=o.subarray(n,n+s),f=o.subarray(a,a+s);for(let e=0;e{t.instantiateWasm(e,(e,t)=>{n(receiveInstance(e))})})}();!function run(){!function preRun(){if(t.preRun){"function"==typeof t.preRun&&(t.preRun=[t.preRun]);for(;t.preRun.length;)addOnPreRun(t.preRun.shift())}callRuntimeCallbacks(w)}();function doRun(){t.calledRun=!0;if(!m){!function initRuntime(){p=!0;x.s()}();r?.(t);t.onRuntimeInitialized?.();!function postRun(){if(t.postRun){"function"==typeof t.postRun&&(t.postRun=[t.postRun]);for(;t.postRun.length;)addOnPostRun(t.postRun.shift())}callRuntimeCallbacks(b)}()}}if(t.setStatus){t.setStatus("Running...");setTimeout(()=>{setTimeout(()=>t.setStatus(""),1);doRun()},1)}else doRun()}();return p?t:new Promise((e,t)=>{r=e;i=t})};class JpxError extends an{constructor(e){super(e,"JpxError")}}class JpxImage extends WasmImage{_filename="openjpeg.wasm";_noWasmFilename="openjpeg_nowasm_fallback.js";static get instance(){return shadow(this,"instance",new JpxImage(!0))}async decode(e,{numComponents:t=4,isIndexedColormap:n=!1,smaskInData:a=!1,reducePower:s=0}={}){const r=await this._getModule(oa);if(!r)throw new JpxError("OpenJPEG failed to initialize");let i;try{const o=e.length;i=r._malloc(o);r.writeArrayToMemory(e,i);if(r._jp2_decode(i,o,t>0?t:0,!!n,!!a,s)){const{errorMessages:e}=r;if(e){delete r.errorMessages;throw new JpxError(e)}throw new JpxError("Unknown error")}const{imageData:l}=r;r.imageData=null;return l}finally{i&&r._free(i)}}static parseImageProperties(e){let t=e.getByte();for(;t>=0;){const n=t;t=e.getByte();if(65361===(n<<8|t)){e.skip(4);const t=e.getInt32()>>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0,s=e.getInt32()>>>0;e.skip(16);return{width:t-a,height:n-s,bitsPerComponent:8,componentsCount:e.getUint16()}}}throw new JpxError("No size marker found in JPX stream")}}class JpxStream extends DecodeStream{constructor(e,t){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}get isAsyncDecoder(){return!0}async decodeImage(e,t,n){if(this.eof)return this.buffer;e||=this.bytes;this.buffer=await JpxImage.instance.decode(e,n);this.bufferLength=this.buffer.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}get isImageStream(){return!0}}class LZWStream extends DecodeStream{constructor(e,t,n){super(t);this.stream=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const a=4096,s={earlyChange:n,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let e=0;e<256;++e){s.dictionaryValues[e]=e;s.dictionaryLengths[e]=1}this.lzwState=s}readBits(e){let t=this.bitsCached,n=this.cachedData;for(;t>>t&(1<0;if(e<256){u[0]=e;m=1}else{if(!(e>=258)){if(256===e){c=9;i=258;m=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){u[t]=o[n];n=f[n]}}else u[m++]=u[0]}if(s){f[i]=h;l[i]=l[h]+1;o[i]=u[0];i++;c=i+r&i+r-1?c:0|Math.min(Math.log(i+r)/.6931471805599453+1,12)}h=e;p+=m;if(a15))throw new FormatError(`Unsupported predictor: ${a}`);this.readBlock=2===a?this.readBlockTiff:this.readBlockPng;this.stream=e;this.dict=e.dict;const s=this.colors=n.get("Colors")||1,r=this.bits=n.get("BPC","BitsPerComponent")||8,i=this.columns=n.get("Columns")||1;this.pixBytes=s*r+7>>3;this.rowBytes=i*s*r+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,n=this.ensureBuffer(t+e),a=this.bits,s=this.colors,r=this.stream.getBytes(e);this.eof=!r.length;if(this.eof)return;let i,o=0,l=0,f=0,c=0,h=t;if(1===a&&1===s)for(i=0;i>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;n[h++]=e}else if(8===a){for(i=0;i>8&255;n[h++]=255&e}}else{const e=new Uint8Array(s+1),h=(1<>f-a)&h;f-=a;l=l<=8){n[m++]=l>>c-8&255;c-=8}}c>0&&(n[m++]=(l<<8-c)+(o&(1<<8-c)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,n=this.stream.getByte(),a=this.stream.getBytes(e);this.eof=!a.length;if(this.eof)return;const s=this.bufferLength,r=this.ensureBuffer(s+e);let i=r.subarray(s-e,s);0===i.length&&(i=new Uint8Array(e));let o,l,f,c=s;switch(n){case 0:for(o=0;o>1)+a[o];for(;o>1)+a[o]&255;c++}break;case 4:for(o=0;o0){const e=this.stream.getBytes(a);t.set(e,n);n+=a}}else{a=257-a;t=this.ensureBuffer(n+a+1);t.fill(e[1],n,n+a);n+=a}this.bufferLength=n}}class Parser{#ee=null;#te=0;constructor({lexer:e,xref:t,allowStreams:n=!1,recoveryMode:a=!1}){this.lexer=e;this.xref=t;this.allowStreams=n;this.recoveryMode=a;this.refill()}refill(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()}shift(){if(this.buf2 instanceof Cmd&&"ID"===this.buf2.cmd){this.buf1=this.buf2;this.buf2=null}else{this.buf1=this.buf2;this.buf2=this.lexer.getObj()}}tryShift(){try{this.shift();return!0}catch(e){if(e instanceof MissingDataException)throw e;return!1}}getObj(e=null){const t=this.buf1;this.shift();if(t instanceof Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const n=[];for(;!isCmd(this.buf1,"]")&&this.buf1!==ln;)n.push(this.getObj(e));if(this.buf1===ln){if(this.recoveryMode)return n;throw new ParserEOFException("End of file inside array.")}this.shift();return n;case"<<":const a=new Dict(this.xref);for(;!isCmd(this.buf1,">>")&&this.buf1!==ln;){if(!(this.buf1 instanceof Name)){info("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===ln)break;a.set(t,this.getObj(e))}if(this.buf1===ln){if(this.recoveryMode)return a;throw new ParserEOFException("End of file inside dictionary.")}if(isCmd(this.buf2,"stream"))return this.allowStreams?this.makeStream(a,e):a;this.shift();return a;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&isCmd(this.buf2,"R")){const e=Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,n=e.pos;let a,s,r=0;for(;-1!==(a=e.getByte());)if(0===r)r=69===a?1:0;else if(1===r)r=73===a?2:0;else if(32===a||10===a||13===a){s=e.pos;const n=e.peekBytes(15),i=n.length;if(0===i)break;for(let e=0;e127))){r=0;break}}if(2!==r)continue;if(!t){warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const o=new Lexer(new Stream(e.peekBytes(75)),t);o._hexStringWarn=()=>{};let l=0;for(;;){const e=o.getObj();if(e===ln){r=0;break}if(e instanceof Cmd){const n=t[e.cmd];if(!n){r=0;break}if(n.variableArgs?l<=n.numArgs:l===n.numArgs)break;l=0;continue}l++}if(2===r)break}else r=0;if(-1===a){warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(s){warn('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-s))}}let i=4;e.skip(-i);a=e.peekByte();e.skip(i);isWhiteSpace(a)||i--;return e.pos-i-n}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let n,a,s=!1;for(;-1!==(n=e.getByte());)if(255===n){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:a=e.getUint16();a>2?e.skip(a-2):e.skip(-2)}if(s)break}const r=e.pos-t;if(-1===n){warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let n;for(;-1!==(n=e.getByte());)if(126===n){const t=e.pos;n=e.peekByte();for(;isWhiteSpace(n);){e.skip();n=e.peekByte()}if(62===n){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const a=e.pos-t;if(-1===n){warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let n;for(;-1!==(n=e.getByte())&&62!==n;);const a=e.pos-t;if(-1===n){warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}inlineStreamSkipEI(e){let t,n=0;for(;-1!==(t=e.getByte());)if(0===n)n=69===t?1:0;else if(1===n)n=73===t?2:0;else if(2===n)break}makeInlineImage(e){const t=this.lexer,n=t.stream,a=new Dict(this.xref);let s;for(;!isCmd(this.buf1,"ID")&&this.buf1!==ln;){if(!(this.buf1 instanceof Name))throw new FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===ln)break;a.set(t,this.getObj(e))}-1!==t.beginInlineImagePos&&(s=n.pos-t.beginInlineImagePos);const r=a.get("F","Filter");let i;if(r instanceof Name)i=r.name;else if(Array.isArray(r)){const e=this.#ne(r[0]);e instanceof Name&&(i=e.name)}const o=n.pos;let l,f;switch(i){case"DCT":case"DCTDecode":l=this.findDCTDecodeInlineStreamEnd(n);break;case"A85":case"ASCII85Decode":l=this.findASCII85DecodeInlineStreamEnd(n);break;case"AHx":case"ASCIIHexDecode":l=this.findASCIIHexDecodeInlineStreamEnd(n);break;default:l=this.findDefaultInlineStreamEnd(n)}if(l<1e3&&s>0){const e=n.pos;n.pos=t.beginInlineImagePos;f=function getInlineImageCacheKey(e){const t=[],n=e.length;let a=0;for(;aisName(this.#ne(e),"Crypt")):isName(e,"Crypt")}#se(e){const{stream:t}=this.lexer;t.pos=e;const n=new Uint8Array([101,110,100]),a=n.length,s=[new Uint8Array([115,116,114,101,97,109]),new Uint8Array([115,116,101,97,109]),new Uint8Array([115,116,114,101,97])],r=9-a;for(;t.pos=a){let a=!1;for(const e of s){const t=e.length;let s=0;for(;s=r){a=!0;break}if(s>=t){if(isWhiteSpace(i[l+o+s])){info(`Found "${bytesToString([...n,...e])}" when searching for endstream command.`);a=!0}break}}if(a){t.pos+=l;return t.pos-e}}l++}t.pos+=o}return-1}makeStream(e,t){const n=this.lexer;let a=n.stream;n.skipToNextLine();const s=a.pos-1;let r=e.get("Length");if(!Number.isInteger(r)){info(`Bad length "${r&&r.toString()}" in stream.`);r=0}a.pos=s+r;n.nextChar();if(this.tryShift()&&isCmd(this.buf2,"endstream"))this.shift();else{r=this.#se(s);if(r<0)throw new FormatError("Missing endstream command.");n.nextChar();this.shift();this.shift()}this.shift();a=a.makeSubStream(s,r,e);const i=e.get("F","Filter");t&&!this.#ae(i)&&(a=t.createStream(a,r));a=this.filter(a,e,r,t);a.dict=e;return a}filter(e,t,n,a=null){let s=t.get("F","Filter"),r=t.get("DP","DecodeParms");if(s instanceof Name){Array.isArray(r)&&warn("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,s.name,n,r,a)}let i=n;if(Array.isArray(s)){const t=s,n=r;for(let o=0,l=t.length;o=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=0,n=1;if(45===e){n=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){t=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(isWhiteSpace(e)||40===e||60===e||-1===e){info(`Lexer.getNumber - "${t}".`);return 0}throw new FormatError(t)}let a=e-48;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){0!==t&&(t*=10);a=10*a+(e-48)}else if(46===e){if(0!==t)break;t=1}else{if(45!==e)break;warn("Badly formatted number: minus sign in the middle")}0!==t&&(a/=t);return n*a}getString(){let e=1,t=!1;const n=this.strBuf;n.length=0;let a=this.nextChar();for(;;){let s=!1;switch(0|a){case-1:warn("Unterminated string");t=!0;break;case 40:++e;n.push("(");break;case 41:if(0===--e){this.nextChar();t=!0}else n.push(")");break;case 92:a=this.nextChar();switch(a){case-1:warn("Unterminated string");t=!0;break;case 110:n.push("\n");break;case 114:n.push("\r");break;case 116:n.push("\t");break;case 98:n.push("\b");break;case 102:n.push("\f");break;case 92:case 40:case 41:n.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&a;a=this.nextChar();s=!0;if(a>=48&&a<=55){e=(e<<3)+(15&a);a=this.nextChar();if(a>=48&&a<=55){s=!1;e=(e<<3)+(15&a)}}n.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:n.push(String.fromCharCode(a))}break;default:n.push(String.fromCharCode(a))}if(t)break;s||(a=this.nextChar())}return n.join("")}getName(){let e,t;const n=this.strBuf;n.length=0;for(;(e=this.nextChar())>=0&&!la[e];)if(35===e){e=this.nextChar();if(la[e]){warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");n.push("#");break}const a=toHexDigit(e);if(-1!==a){t=e;e=this.nextChar();const s=toHexDigit(e);if(-1===s){warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);n.push("#",String.fromCharCode(t));if(la[e])break;n.push(String.fromCharCode(e));continue}n.push(String.fromCharCode(a<<4|s))}else n.push("#",String.fromCharCode(e))}else n.push(String.fromCharCode(e));n.length>127&&warn(`Name token is longer than allowed by the spec: ${n.length}`);return Name.get(n.join(""))}_hexStringWarn(e){5!==this._hexStringNumWarn++?this._hexStringNumWarn>5||warn(`getHexString - ignoring invalid character: ${e}`):warn("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t=this.currentChar,n=-1,a=-1;this._hexStringNumWarn=0;for(;;){if(t<0){warn("Unterminated hex string");break}if(62===t){this.nextChar();break}if(1!==la[t]){a=toHexDigit(t);if(-1===a)this._hexStringWarn(t);else if(-1===n)n=a;else{e.push(String.fromCharCode(n<<4|a));n=-1}t=this.nextChar()}else t=this.nextChar()}-1!==n&&e.push(String.fromCharCode(n<<4));return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return ln;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==la[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return Cmd.get("[");case 93:this.nextChar();return Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return Cmd.get(">>")}return Cmd.get(">");case 123:this.nextChar();return Cmd.get("{");case 125:this.nextChar();return Cmd.get("}");case 41:this.nextChar();throw new FormatError(`Illegal character: ${t}`)}let n=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return Cmd.get(n)}}const a=this.knownCommands;let s=void 0!==a?.[n];for(;(t=this.nextChar())>=0&&!la[t];){const e=n+String.fromCharCode(t);if(s&&void 0===a[e])break;if(128===n.length)throw new FormatError(`Command token too long: ${n.length}`);n=e;s=void 0!==a?.[n]}if("true"===n)return!0;if("false"===n)return!1;if("null"===n)return null;"BI"===n&&(this.beginInlineImagePos=this.stream.pos);return Cmd.get(n)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}class Linearization{static create(e){function getInt(e,t,n=!1){const a=e.get(t);if(Number.isInteger(a)&&(n?a>=0:a>0))return a;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),n=t.getObj(),a=t.getObj(),s=t.getObj(),r=t.getObj();let i,o;if(!(Number.isInteger(n)&&Number.isInteger(a)&&isCmd(s,"obj")&&r instanceof Dict&&"number"==typeof(i=r.get("Linearized"))&&i>0))return null;if((o=getInt(r,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:o,hints:function getHints(e){const t=e.get("H");let n;if(Array.isArray(t)&&(2===(n=t.length)||4===n)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(r),objectNumberFirst:getInt(r,"O"),endFirst:getInt(r,"E"),numPages:getInt(r,"N"),mainXRefEntriesOffset:getInt(r,"T"),pageFirst:r.has("P")?getInt(r,"P",!0):0}}}const fa=["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"],ca=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,n){this.codespaceRanges[e-1].push(t,n);this.numCodespaceRanges++}mapCidRange(e,t,n){if(t-e>ca)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=n++}mapBfRange(e,t,n){if(t-e>ca)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=n.length-1;for(;e<=t;){this._map[e++]=n;const t=n.charCodeAt(a)+1;t>255?n=n.substring(0,a-1)+String.fromCharCode(n.charCodeAt(a-1)+1)+"\0":n=n.substring(0,a)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,n){if(t-e>ca)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=n.length;let s=0;for(;e<=t&&s>>0;const i=s[r];for(let e=0,t=i.length;e=t&&a<=s){n.charcode=a;n.length=r+1;return}}}n.charcode=0;n.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let n=0,a=t.length;n=s&&e<=r)return n+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,n){unreachable("should not call mapCidRange")}mapBfRange(e,t,n){unreachable("should not call mapBfRange")}mapBfRangeToArray(e,t,n){unreachable("should not call mapBfRangeToArray")}mapOne(e,t){unreachable("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){unreachable("should not access .isIdentityCMap")}}function strToInt(e){let t=0;for(let n=0;n>>0}function expectString(e){if("string"!=typeof e)throw new FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let n=t.getObj();if(n===ln)break;if(isCmd(n,"endbfchar"))return;expectString(n);const a=strToInt(n);n=t.getObj();expectString(n);const s=n;e.mapOne(a,s)}}function parseBfRange(e,t){for(;;){let n=t.getObj();if(n===ln)break;if(isCmd(n,"endbfrange"))return;expectString(n);const a=strToInt(n);n=t.getObj();expectString(n);const s=strToInt(n);n=t.getObj();if(Number.isInteger(n)||"string"==typeof n){const t=Number.isInteger(n)?String.fromCharCode(n):n;e.mapBfRange(a,s,t)}else{if(!isCmd(n,"["))break;{n=t.getObj();const r=[];for(;!isCmd(n,"]")&&n!==ln;){r.push(n);n=t.getObj()}e.mapBfRangeToArray(a,s,r)}}}throw new FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let n=t.getObj();if(n===ln)break;if(isCmd(n,"endcidchar"))return;expectString(n);const a=strToInt(n);n=t.getObj();expectInt(n);const s=n;e.mapOne(a,s)}}function parseCidRange(e,t){for(;;){let n=t.getObj();if(n===ln)break;if(isCmd(n,"endcidrange"))return;expectString(n);const a=strToInt(n);n=t.getObj();expectString(n);const s=strToInt(n);n=t.getObj();expectInt(n);const r=n;e.mapCidRange(a,s,r)}}function parseCodespaceRange(e,t){for(;;){let n=t.getObj();if(n===ln)break;if(isCmd(n,"endcodespacerange"))return;if("string"!=typeof n)break;const a=strToInt(n);n=t.getObj();if("string"!=typeof n)break;const s=strToInt(n);e.addCodespaceRange(n.length,a,s)}throw new FormatError("Invalid codespace range.")}function parseWMode(e,t){const n=t.getObj();Number.isInteger(n)&&(e.vertical=!!n)}function parseCMapName(e,t){const n=t.getObj();n instanceof Name&&(e.name=n.name)}async function parseCMap(e,t,n,a){let s,r;e:for(;;)try{const n=t.getObj();if(n===ln)break;if(n instanceof Name){"WMode"===n.name?parseWMode(e,t):"CMapName"===n.name&&parseCMapName(e,t);s=n}else if(n instanceof Cmd)switch(n.cmd){case"endcmap":break e;case"usecmap":s instanceof Name&&(r=s.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof MissingDataException)throw e;warn("Invalid cMap data: "+e);continue}!a&&r&&(a=r);return a?extendCMap(e,n,a):e}async function extendCMap(e,t,n){e.useCMap=await createBuiltInCMap(n,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let n=0;nextendCMap(s,t,e));const r=new Lexer(new Stream(n));return parseCMap(s,r,t,null)}class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:n}){if(e instanceof Name)return createBuiltInCMap(e.name,t);if(e instanceof BaseStream){if(e.isAsync){const t=await e.asyncGetBytes();t&&(e=new Stream(t,0,t.length,e.dict))}const a=await parseCMap(new CMap,new Lexer(e),t,n);return a.isIdentityCMap?createBuiltInCMap(a.name,t):a}throw new Error("Encoding required.")}}const ha=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],ua=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],ma=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],pa=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],da=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],ga=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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",""],ba=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 getEncoding(e){switch(e){case"WinAnsiEncoding":return da;case"StandardEncoding":return pa;case"MacRomanEncoding":return ma;case"SymbolSetEncoding":return ga;case"ZapfDingbatsEncoding":return ba;case"ExpertEncoding":return ha;case"MacExpertEncoding":return ua;default:return null}}const wa=getLookupTableFactory(function(e){e.A=65;e.AE=198;e.AEacute=508;e.AEmacron=482;e.AEsmall=63462;e.Aacute=193;e.Aacutesmall=63457;e.Abreve=258;e.Abreveacute=7854;e.Abrevecyrillic=1232;e.Abrevedotbelow=7862;e.Abrevegrave=7856;e.Abrevehookabove=7858;e.Abrevetilde=7860;e.Acaron=461;e.Acircle=9398;e.Acircumflex=194;e.Acircumflexacute=7844;e.Acircumflexdotbelow=7852;e.Acircumflexgrave=7846;e.Acircumflexhookabove=7848;e.Acircumflexsmall=63458;e.Acircumflextilde=7850;e.Acute=63177;e.Acutesmall=63412;e.Acyrillic=1040;e.Adblgrave=512;e.Adieresis=196;e.Adieresiscyrillic=1234;e.Adieresismacron=478;e.Adieresissmall=63460;e.Adotbelow=7840;e.Adotmacron=480;e.Agrave=192;e.Agravesmall=63456;e.Ahookabove=7842;e.Aiecyrillic=1236;e.Ainvertedbreve=514;e.Alpha=913;e.Alphatonos=902;e.Amacron=256;e.Amonospace=65313;e.Aogonek=260;e.Aring=197;e.Aringacute=506;e.Aringbelow=7680;e.Aringsmall=63461;e.Asmall=63329;e.Atilde=195;e.Atildesmall=63459;e.Aybarmenian=1329;e.B=66;e.Bcircle=9399;e.Bdotaccent=7682;e.Bdotbelow=7684;e.Becyrillic=1041;e.Benarmenian=1330;e.Beta=914;e.Bhook=385;e.Blinebelow=7686;e.Bmonospace=65314;e.Brevesmall=63220;e.Bsmall=63330;e.Btopbar=386;e.C=67;e.Caarmenian=1342;e.Cacute=262;e.Caron=63178;e.Caronsmall=63221;e.Ccaron=268;e.Ccedilla=199;e.Ccedillaacute=7688;e.Ccedillasmall=63463;e.Ccircle=9400;e.Ccircumflex=264;e.Cdot=266;e.Cdotaccent=266;e.Cedillasmall=63416;e.Chaarmenian=1353;e.Cheabkhasiancyrillic=1212;e.Checyrillic=1063;e.Chedescenderabkhasiancyrillic=1214;e.Chedescendercyrillic=1206;e.Chedieresiscyrillic=1268;e.Cheharmenian=1347;e.Chekhakassiancyrillic=1227;e.Cheverticalstrokecyrillic=1208;e.Chi=935;e.Chook=391;e.Circumflexsmall=63222;e.Cmonospace=65315;e.Coarmenian=1361;e.Csmall=63331;e.D=68;e.DZ=497;e.DZcaron=452;e.Daarmenian=1332;e.Dafrican=393;e.Dcaron=270;e.Dcedilla=7696;e.Dcircle=9401;e.Dcircumflexbelow=7698;e.Dcroat=272;e.Ddotaccent=7690;e.Ddotbelow=7692;e.Decyrillic=1044;e.Deicoptic=1006;e.Delta=8710;e.Deltagreek=916;e.Dhook=394;e.Dieresis=63179;e.DieresisAcute=63180;e.DieresisGrave=63181;e.Dieresissmall=63400;e.Digammagreek=988;e.Djecyrillic=1026;e.Dlinebelow=7694;e.Dmonospace=65316;e.Dotaccentsmall=63223;e.Dslash=272;e.Dsmall=63332;e.Dtopbar=395;e.Dz=498;e.Dzcaron=453;e.Dzeabkhasiancyrillic=1248;e.Dzecyrillic=1029;e.Dzhecyrillic=1039;e.E=69;e.Eacute=201;e.Eacutesmall=63465;e.Ebreve=276;e.Ecaron=282;e.Ecedillabreve=7708;e.Echarmenian=1333;e.Ecircle=9402;e.Ecircumflex=202;e.Ecircumflexacute=7870;e.Ecircumflexbelow=7704;e.Ecircumflexdotbelow=7878;e.Ecircumflexgrave=7872;e.Ecircumflexhookabove=7874;e.Ecircumflexsmall=63466;e.Ecircumflextilde=7876;e.Ecyrillic=1028;e.Edblgrave=516;e.Edieresis=203;e.Edieresissmall=63467;e.Edot=278;e.Edotaccent=278;e.Edotbelow=7864;e.Efcyrillic=1060;e.Egrave=200;e.Egravesmall=63464;e.Eharmenian=1335;e.Ehookabove=7866;e.Eightroman=8551;e.Einvertedbreve=518;e.Eiotifiedcyrillic=1124;e.Elcyrillic=1051;e.Elevenroman=8554;e.Emacron=274;e.Emacronacute=7702;e.Emacrongrave=7700;e.Emcyrillic=1052;e.Emonospace=65317;e.Encyrillic=1053;e.Endescendercyrillic=1186;e.Eng=330;e.Enghecyrillic=1188;e.Enhookcyrillic=1223;e.Eogonek=280;e.Eopen=400;e.Epsilon=917;e.Epsilontonos=904;e.Ercyrillic=1056;e.Ereversed=398;e.Ereversedcyrillic=1069;e.Escyrillic=1057;e.Esdescendercyrillic=1194;e.Esh=425;e.Esmall=63333;e.Eta=919;e.Etarmenian=1336;e.Etatonos=905;e.Eth=208;e.Ethsmall=63472;e.Etilde=7868;e.Etildebelow=7706;e.Euro=8364;e.Ezh=439;e.Ezhcaron=494;e.Ezhreversed=440;e.F=70;e.Fcircle=9403;e.Fdotaccent=7710;e.Feharmenian=1366;e.Feicoptic=996;e.Fhook=401;e.Fitacyrillic=1138;e.Fiveroman=8548;e.Fmonospace=65318;e.Fourroman=8547;e.Fsmall=63334;e.G=71;e.GBsquare=13191;e.Gacute=500;e.Gamma=915;e.Gammaafrican=404;e.Gangiacoptic=1002;e.Gbreve=286;e.Gcaron=486;e.Gcedilla=290;e.Gcircle=9404;e.Gcircumflex=284;e.Gcommaaccent=290;e.Gdot=288;e.Gdotaccent=288;e.Gecyrillic=1043;e.Ghadarmenian=1346;e.Ghemiddlehookcyrillic=1172;e.Ghestrokecyrillic=1170;e.Gheupturncyrillic=1168;e.Ghook=403;e.Gimarmenian=1331;e.Gjecyrillic=1027;e.Gmacron=7712;e.Gmonospace=65319;e.Grave=63182;e.Gravesmall=63328;e.Gsmall=63335;e.Gsmallhook=667;e.Gstroke=484;e.H=72;e.H18533=9679;e.H18543=9642;e.H18551=9643;e.H22073=9633;e.HPsquare=13259;e.Haabkhasiancyrillic=1192;e.Hadescendercyrillic=1202;e.Hardsigncyrillic=1066;e.Hbar=294;e.Hbrevebelow=7722;e.Hcedilla=7720;e.Hcircle=9405;e.Hcircumflex=292;e.Hdieresis=7718;e.Hdotaccent=7714;e.Hdotbelow=7716;e.Hmonospace=65320;e.Hoarmenian=1344;e.Horicoptic=1e3;e.Hsmall=63336;e.Hungarumlaut=63183;e.Hungarumlautsmall=63224;e.Hzsquare=13200;e.I=73;e.IAcyrillic=1071;e.IJ=306;e.IUcyrillic=1070;e.Iacute=205;e.Iacutesmall=63469;e.Ibreve=300;e.Icaron=463;e.Icircle=9406;e.Icircumflex=206;e.Icircumflexsmall=63470;e.Icyrillic=1030;e.Idblgrave=520;e.Idieresis=207;e.Idieresisacute=7726;e.Idieresiscyrillic=1252;e.Idieresissmall=63471;e.Idot=304;e.Idotaccent=304;e.Idotbelow=7882;e.Iebrevecyrillic=1238;e.Iecyrillic=1045;e.Ifraktur=8465;e.Igrave=204;e.Igravesmall=63468;e.Ihookabove=7880;e.Iicyrillic=1048;e.Iinvertedbreve=522;e.Iishortcyrillic=1049;e.Imacron=298;e.Imacroncyrillic=1250;e.Imonospace=65321;e.Iniarmenian=1339;e.Iocyrillic=1025;e.Iogonek=302;e.Iota=921;e.Iotaafrican=406;e.Iotadieresis=938;e.Iotatonos=906;e.Ismall=63337;e.Istroke=407;e.Itilde=296;e.Itildebelow=7724;e.Izhitsacyrillic=1140;e.Izhitsadblgravecyrillic=1142;e.J=74;e.Jaarmenian=1345;e.Jcircle=9407;e.Jcircumflex=308;e.Jecyrillic=1032;e.Jheharmenian=1355;e.Jmonospace=65322;e.Jsmall=63338;e.K=75;e.KBsquare=13189;e.KKsquare=13261;e.Kabashkircyrillic=1184;e.Kacute=7728;e.Kacyrillic=1050;e.Kadescendercyrillic=1178;e.Kahookcyrillic=1219;e.Kappa=922;e.Kastrokecyrillic=1182;e.Kaverticalstrokecyrillic=1180;e.Kcaron=488;e.Kcedilla=310;e.Kcircle=9408;e.Kcommaaccent=310;e.Kdotbelow=7730;e.Keharmenian=1364;e.Kenarmenian=1343;e.Khacyrillic=1061;e.Kheicoptic=998;e.Khook=408;e.Kjecyrillic=1036;e.Klinebelow=7732;e.Kmonospace=65323;e.Koppacyrillic=1152;e.Koppagreek=990;e.Ksicyrillic=1134;e.Ksmall=63339;e.L=76;e.LJ=455;e.LL=63167;e.Lacute=313;e.Lambda=923;e.Lcaron=317;e.Lcedilla=315;e.Lcircle=9409;e.Lcircumflexbelow=7740;e.Lcommaaccent=315;e.Ldot=319;e.Ldotaccent=319;e.Ldotbelow=7734;e.Ldotbelowmacron=7736;e.Liwnarmenian=1340;e.Lj=456;e.Ljecyrillic=1033;e.Llinebelow=7738;e.Lmonospace=65324;e.Lslash=321;e.Lslashsmall=63225;e.Lsmall=63340;e.M=77;e.MBsquare=13190;e.Macron=63184;e.Macronsmall=63407;e.Macute=7742;e.Mcircle=9410;e.Mdotaccent=7744;e.Mdotbelow=7746;e.Menarmenian=1348;e.Mmonospace=65325;e.Msmall=63341;e.Mturned=412;e.Mu=924;e.N=78;e.NJ=458;e.Nacute=323;e.Ncaron=327;e.Ncedilla=325;e.Ncircle=9411;e.Ncircumflexbelow=7754;e.Ncommaaccent=325;e.Ndotaccent=7748;e.Ndotbelow=7750;e.Nhookleft=413;e.Nineroman=8552;e.Nj=459;e.Njecyrillic=1034;e.Nlinebelow=7752;e.Nmonospace=65326;e.Nowarmenian=1350;e.Nsmall=63342;e.Ntilde=209;e.Ntildesmall=63473;e.Nu=925;e.O=79;e.OE=338;e.OEsmall=63226;e.Oacute=211;e.Oacutesmall=63475;e.Obarredcyrillic=1256;e.Obarreddieresiscyrillic=1258;e.Obreve=334;e.Ocaron=465;e.Ocenteredtilde=415;e.Ocircle=9412;e.Ocircumflex=212;e.Ocircumflexacute=7888;e.Ocircumflexdotbelow=7896;e.Ocircumflexgrave=7890;e.Ocircumflexhookabove=7892;e.Ocircumflexsmall=63476;e.Ocircumflextilde=7894;e.Ocyrillic=1054;e.Odblacute=336;e.Odblgrave=524;e.Odieresis=214;e.Odieresiscyrillic=1254;e.Odieresissmall=63478;e.Odotbelow=7884;e.Ogoneksmall=63227;e.Ograve=210;e.Ogravesmall=63474;e.Oharmenian=1365;e.Ohm=8486;e.Ohookabove=7886;e.Ohorn=416;e.Ohornacute=7898;e.Ohorndotbelow=7906;e.Ohorngrave=7900;e.Ohornhookabove=7902;e.Ohorntilde=7904;e.Ohungarumlaut=336;e.Oi=418;e.Oinvertedbreve=526;e.Omacron=332;e.Omacronacute=7762;e.Omacrongrave=7760;e.Omega=8486;e.Omegacyrillic=1120;e.Omegagreek=937;e.Omegaroundcyrillic=1146;e.Omegatitlocyrillic=1148;e.Omegatonos=911;e.Omicron=927;e.Omicrontonos=908;e.Omonospace=65327;e.Oneroman=8544;e.Oogonek=490;e.Oogonekmacron=492;e.Oopen=390;e.Oslash=216;e.Oslashacute=510;e.Oslashsmall=63480;e.Osmall=63343;e.Ostrokeacute=510;e.Otcyrillic=1150;e.Otilde=213;e.Otildeacute=7756;e.Otildedieresis=7758;e.Otildesmall=63477;e.P=80;e.Pacute=7764;e.Pcircle=9413;e.Pdotaccent=7766;e.Pecyrillic=1055;e.Peharmenian=1354;e.Pemiddlehookcyrillic=1190;e.Phi=934;e.Phook=420;e.Pi=928;e.Piwrarmenian=1363;e.Pmonospace=65328;e.Psi=936;e.Psicyrillic=1136;e.Psmall=63344;e.Q=81;e.Qcircle=9414;e.Qmonospace=65329;e.Qsmall=63345;e.R=82;e.Raarmenian=1356;e.Racute=340;e.Rcaron=344;e.Rcedilla=342;e.Rcircle=9415;e.Rcommaaccent=342;e.Rdblgrave=528;e.Rdotaccent=7768;e.Rdotbelow=7770;e.Rdotbelowmacron=7772;e.Reharmenian=1360;e.Rfraktur=8476;e.Rho=929;e.Ringsmall=63228;e.Rinvertedbreve=530;e.Rlinebelow=7774;e.Rmonospace=65330;e.Rsmall=63346;e.Rsmallinverted=641;e.Rsmallinvertedsuperior=694;e.S=83;e.SF010000=9484;e.SF020000=9492;e.SF030000=9488;e.SF040000=9496;e.SF050000=9532;e.SF060000=9516;e.SF070000=9524;e.SF080000=9500;e.SF090000=9508;e.SF100000=9472;e.SF110000=9474;e.SF190000=9569;e.SF200000=9570;e.SF210000=9558;e.SF220000=9557;e.SF230000=9571;e.SF240000=9553;e.SF250000=9559;e.SF260000=9565;e.SF270000=9564;e.SF280000=9563;e.SF360000=9566;e.SF370000=9567;e.SF380000=9562;e.SF390000=9556;e.SF400000=9577;e.SF410000=9574;e.SF420000=9568;e.SF430000=9552;e.SF440000=9580;e.SF450000=9575;e.SF460000=9576;e.SF470000=9572;e.SF480000=9573;e.SF490000=9561;e.SF500000=9560;e.SF510000=9554;e.SF520000=9555;e.SF530000=9579;e.SF540000=9578;e.Sacute=346;e.Sacutedotaccent=7780;e.Sampigreek=992;e.Scaron=352;e.Scarondotaccent=7782;e.Scaronsmall=63229;e.Scedilla=350;e.Schwa=399;e.Schwacyrillic=1240;e.Schwadieresiscyrillic=1242;e.Scircle=9416;e.Scircumflex=348;e.Scommaaccent=536;e.Sdotaccent=7776;e.Sdotbelow=7778;e.Sdotbelowdotaccent=7784;e.Seharmenian=1357;e.Sevenroman=8550;e.Shaarmenian=1351;e.Shacyrillic=1064;e.Shchacyrillic=1065;e.Sheicoptic=994;e.Shhacyrillic=1210;e.Shimacoptic=1004;e.Sigma=931;e.Sixroman=8549;e.Smonospace=65331;e.Softsigncyrillic=1068;e.Ssmall=63347;e.Stigmagreek=986;e.T=84;e.Tau=932;e.Tbar=358;e.Tcaron=356;e.Tcedilla=354;e.Tcircle=9417;e.Tcircumflexbelow=7792;e.Tcommaaccent=354;e.Tdotaccent=7786;e.Tdotbelow=7788;e.Tecyrillic=1058;e.Tedescendercyrillic=1196;e.Tenroman=8553;e.Tetsecyrillic=1204;e.Theta=920;e.Thook=428;e.Thorn=222;e.Thornsmall=63486;e.Threeroman=8546;e.Tildesmall=63230;e.Tiwnarmenian=1359;e.Tlinebelow=7790;e.Tmonospace=65332;e.Toarmenian=1337;e.Tonefive=444;e.Tonesix=388;e.Tonetwo=423;e.Tretroflexhook=430;e.Tsecyrillic=1062;e.Tshecyrillic=1035;e.Tsmall=63348;e.Twelveroman=8555;e.Tworoman=8545;e.U=85;e.Uacute=218;e.Uacutesmall=63482;e.Ubreve=364;e.Ucaron=467;e.Ucircle=9418;e.Ucircumflex=219;e.Ucircumflexbelow=7798;e.Ucircumflexsmall=63483;e.Ucyrillic=1059;e.Udblacute=368;e.Udblgrave=532;e.Udieresis=220;e.Udieresisacute=471;e.Udieresisbelow=7794;e.Udieresiscaron=473;e.Udieresiscyrillic=1264;e.Udieresisgrave=475;e.Udieresismacron=469;e.Udieresissmall=63484;e.Udotbelow=7908;e.Ugrave=217;e.Ugravesmall=63481;e.Uhookabove=7910;e.Uhorn=431;e.Uhornacute=7912;e.Uhorndotbelow=7920;e.Uhorngrave=7914;e.Uhornhookabove=7916;e.Uhorntilde=7918;e.Uhungarumlaut=368;e.Uhungarumlautcyrillic=1266;e.Uinvertedbreve=534;e.Ukcyrillic=1144;e.Umacron=362;e.Umacroncyrillic=1262;e.Umacrondieresis=7802;e.Umonospace=65333;e.Uogonek=370;e.Upsilon=933;e.Upsilon1=978;e.Upsilonacutehooksymbolgreek=979;e.Upsilonafrican=433;e.Upsilondieresis=939;e.Upsilondieresishooksymbolgreek=980;e.Upsilonhooksymbol=978;e.Upsilontonos=910;e.Uring=366;e.Ushortcyrillic=1038;e.Usmall=63349;e.Ustraightcyrillic=1198;e.Ustraightstrokecyrillic=1200;e.Utilde=360;e.Utildeacute=7800;e.Utildebelow=7796;e.V=86;e.Vcircle=9419;e.Vdotbelow=7806;e.Vecyrillic=1042;e.Vewarmenian=1358;e.Vhook=434;e.Vmonospace=65334;e.Voarmenian=1352;e.Vsmall=63350;e.Vtilde=7804;e.W=87;e.Wacute=7810;e.Wcircle=9420;e.Wcircumflex=372;e.Wdieresis=7812;e.Wdotaccent=7814;e.Wdotbelow=7816;e.Wgrave=7808;e.Wmonospace=65335;e.Wsmall=63351;e.X=88;e.Xcircle=9421;e.Xdieresis=7820;e.Xdotaccent=7818;e.Xeharmenian=1341;e.Xi=926;e.Xmonospace=65336;e.Xsmall=63352;e.Y=89;e.Yacute=221;e.Yacutesmall=63485;e.Yatcyrillic=1122;e.Ycircle=9422;e.Ycircumflex=374;e.Ydieresis=376;e.Ydieresissmall=63487;e.Ydotaccent=7822;e.Ydotbelow=7924;e.Yericyrillic=1067;e.Yerudieresiscyrillic=1272;e.Ygrave=7922;e.Yhook=435;e.Yhookabove=7926;e.Yiarmenian=1349;e.Yicyrillic=1031;e.Yiwnarmenian=1362;e.Ymonospace=65337;e.Ysmall=63353;e.Ytilde=7928;e.Yusbigcyrillic=1130;e.Yusbigiotifiedcyrillic=1132;e.Yuslittlecyrillic=1126;e.Yuslittleiotifiedcyrillic=1128;e.Z=90;e.Zaarmenian=1334;e.Zacute=377;e.Zcaron=381;e.Zcaronsmall=63231;e.Zcircle=9423;e.Zcircumflex=7824;e.Zdot=379;e.Zdotaccent=379;e.Zdotbelow=7826;e.Zecyrillic=1047;e.Zedescendercyrillic=1176;e.Zedieresiscyrillic=1246;e.Zeta=918;e.Zhearmenian=1338;e.Zhebrevecyrillic=1217;e.Zhecyrillic=1046;e.Zhedescendercyrillic=1174;e.Zhedieresiscyrillic=1244;e.Zlinebelow=7828;e.Zmonospace=65338;e.Zsmall=63354;e.Zstroke=437;e.a=97;e.aabengali=2438;e.aacute=225;e.aadeva=2310;e.aagujarati=2694;e.aagurmukhi=2566;e.aamatragurmukhi=2622;e.aarusquare=13059;e.aavowelsignbengali=2494;e.aavowelsigndeva=2366;e.aavowelsigngujarati=2750;e.abbreviationmarkarmenian=1375;e.abbreviationsigndeva=2416;e.abengali=2437;e.abopomofo=12570;e.abreve=259;e.abreveacute=7855;e.abrevecyrillic=1233;e.abrevedotbelow=7863;e.abrevegrave=7857;e.abrevehookabove=7859;e.abrevetilde=7861;e.acaron=462;e.acircle=9424;e.acircumflex=226;e.acircumflexacute=7845;e.acircumflexdotbelow=7853;e.acircumflexgrave=7847;e.acircumflexhookabove=7849;e.acircumflextilde=7851;e.acute=180;e.acutebelowcmb=791;e.acutecmb=769;e.acutecomb=769;e.acutedeva=2388;e.acutelowmod=719;e.acutetonecmb=833;e.acyrillic=1072;e.adblgrave=513;e.addakgurmukhi=2673;e.adeva=2309;e.adieresis=228;e.adieresiscyrillic=1235;e.adieresismacron=479;e.adotbelow=7841;e.adotmacron=481;e.ae=230;e.aeacute=509;e.aekorean=12624;e.aemacron=483;e.afii00208=8213;e.afii08941=8356;e.afii10017=1040;e.afii10018=1041;e.afii10019=1042;e.afii10020=1043;e.afii10021=1044;e.afii10022=1045;e.afii10023=1025;e.afii10024=1046;e.afii10025=1047;e.afii10026=1048;e.afii10027=1049;e.afii10028=1050;e.afii10029=1051;e.afii10030=1052;e.afii10031=1053;e.afii10032=1054;e.afii10033=1055;e.afii10034=1056;e.afii10035=1057;e.afii10036=1058;e.afii10037=1059;e.afii10038=1060;e.afii10039=1061;e.afii10040=1062;e.afii10041=1063;e.afii10042=1064;e.afii10043=1065;e.afii10044=1066;e.afii10045=1067;e.afii10046=1068;e.afii10047=1069;e.afii10048=1070;e.afii10049=1071;e.afii10050=1168;e.afii10051=1026;e.afii10052=1027;e.afii10053=1028;e.afii10054=1029;e.afii10055=1030;e.afii10056=1031;e.afii10057=1032;e.afii10058=1033;e.afii10059=1034;e.afii10060=1035;e.afii10061=1036;e.afii10062=1038;e.afii10063=63172;e.afii10064=63173;e.afii10065=1072;e.afii10066=1073;e.afii10067=1074;e.afii10068=1075;e.afii10069=1076;e.afii10070=1077;e.afii10071=1105;e.afii10072=1078;e.afii10073=1079;e.afii10074=1080;e.afii10075=1081;e.afii10076=1082;e.afii10077=1083;e.afii10078=1084;e.afii10079=1085;e.afii10080=1086;e.afii10081=1087;e.afii10082=1088;e.afii10083=1089;e.afii10084=1090;e.afii10085=1091;e.afii10086=1092;e.afii10087=1093;e.afii10088=1094;e.afii10089=1095;e.afii10090=1096;e.afii10091=1097;e.afii10092=1098;e.afii10093=1099;e.afii10094=1100;e.afii10095=1101;e.afii10096=1102;e.afii10097=1103;e.afii10098=1169;e.afii10099=1106;e.afii10100=1107;e.afii10101=1108;e.afii10102=1109;e.afii10103=1110;e.afii10104=1111;e.afii10105=1112;e.afii10106=1113;e.afii10107=1114;e.afii10108=1115;e.afii10109=1116;e.afii10110=1118;e.afii10145=1039;e.afii10146=1122;e.afii10147=1138;e.afii10148=1140;e.afii10192=63174;e.afii10193=1119;e.afii10194=1123;e.afii10195=1139;e.afii10196=1141;e.afii10831=63175;e.afii10832=63176;e.afii10846=1241;e.afii299=8206;e.afii300=8207;e.afii301=8205;e.afii57381=1642;e.afii57388=1548;e.afii57392=1632;e.afii57393=1633;e.afii57394=1634;e.afii57395=1635;e.afii57396=1636;e.afii57397=1637;e.afii57398=1638;e.afii57399=1639;e.afii57400=1640;e.afii57401=1641;e.afii57403=1563;e.afii57407=1567;e.afii57409=1569;e.afii57410=1570;e.afii57411=1571;e.afii57412=1572;e.afii57413=1573;e.afii57414=1574;e.afii57415=1575;e.afii57416=1576;e.afii57417=1577;e.afii57418=1578;e.afii57419=1579;e.afii57420=1580;e.afii57421=1581;e.afii57422=1582;e.afii57423=1583;e.afii57424=1584;e.afii57425=1585;e.afii57426=1586;e.afii57427=1587;e.afii57428=1588;e.afii57429=1589;e.afii57430=1590;e.afii57431=1591;e.afii57432=1592;e.afii57433=1593;e.afii57434=1594;e.afii57440=1600;e.afii57441=1601;e.afii57442=1602;e.afii57443=1603;e.afii57444=1604;e.afii57445=1605;e.afii57446=1606;e.afii57448=1608;e.afii57449=1609;e.afii57450=1610;e.afii57451=1611;e.afii57452=1612;e.afii57453=1613;e.afii57454=1614;e.afii57455=1615;e.afii57456=1616;e.afii57457=1617;e.afii57458=1618;e.afii57470=1607;e.afii57505=1700;e.afii57506=1662;e.afii57507=1670;e.afii57508=1688;e.afii57509=1711;e.afii57511=1657;e.afii57512=1672;e.afii57513=1681;e.afii57514=1722;e.afii57519=1746;e.afii57534=1749;e.afii57636=8362;e.afii57645=1470;e.afii57658=1475;e.afii57664=1488;e.afii57665=1489;e.afii57666=1490;e.afii57667=1491;e.afii57668=1492;e.afii57669=1493;e.afii57670=1494;e.afii57671=1495;e.afii57672=1496;e.afii57673=1497;e.afii57674=1498;e.afii57675=1499;e.afii57676=1500;e.afii57677=1501;e.afii57678=1502;e.afii57679=1503;e.afii57680=1504;e.afii57681=1505;e.afii57682=1506;e.afii57683=1507;e.afii57684=1508;e.afii57685=1509;e.afii57686=1510;e.afii57687=1511;e.afii57688=1512;e.afii57689=1513;e.afii57690=1514;e.afii57694=64298;e.afii57695=64299;e.afii57700=64331;e.afii57705=64287;e.afii57716=1520;e.afii57717=1521;e.afii57718=1522;e.afii57723=64309;e.afii57793=1460;e.afii57794=1461;e.afii57795=1462;e.afii57796=1467;e.afii57797=1464;e.afii57798=1463;e.afii57799=1456;e.afii57800=1458;e.afii57801=1457;e.afii57802=1459;e.afii57803=1474;e.afii57804=1473;e.afii57806=1465;e.afii57807=1468;e.afii57839=1469;e.afii57841=1471;e.afii57842=1472;e.afii57929=700;e.afii61248=8453;e.afii61289=8467;e.afii61352=8470;e.afii61573=8236;e.afii61574=8237;e.afii61575=8238;e.afii61664=8204;e.afii63167=1645;e.afii64937=701;e.agrave=224;e.agujarati=2693;e.agurmukhi=2565;e.ahiragana=12354;e.ahookabove=7843;e.aibengali=2448;e.aibopomofo=12574;e.aideva=2320;e.aiecyrillic=1237;e.aigujarati=2704;e.aigurmukhi=2576;e.aimatragurmukhi=2632;e.ainarabic=1593;e.ainfinalarabic=65226;e.aininitialarabic=65227;e.ainmedialarabic=65228;e.ainvertedbreve=515;e.aivowelsignbengali=2504;e.aivowelsigndeva=2376;e.aivowelsigngujarati=2760;e.akatakana=12450;e.akatakanahalfwidth=65393;e.akorean=12623;e.alef=1488;e.alefarabic=1575;e.alefdageshhebrew=64304;e.aleffinalarabic=65166;e.alefhamzaabovearabic=1571;e.alefhamzaabovefinalarabic=65156;e.alefhamzabelowarabic=1573;e.alefhamzabelowfinalarabic=65160;e.alefhebrew=1488;e.aleflamedhebrew=64335;e.alefmaddaabovearabic=1570;e.alefmaddaabovefinalarabic=65154;e.alefmaksuraarabic=1609;e.alefmaksurafinalarabic=65264;e.alefmaksurainitialarabic=65267;e.alefmaksuramedialarabic=65268;e.alefpatahhebrew=64302;e.alefqamatshebrew=64303;e.aleph=8501;e.allequal=8780;e.alpha=945;e.alphatonos=940;e.amacron=257;e.amonospace=65345;e.ampersand=38;e.ampersandmonospace=65286;e.ampersandsmall=63270;e.amsquare=13250;e.anbopomofo=12578;e.angbopomofo=12580;e.angbracketleft=12296;e.angbracketright=12297;e.angkhankhuthai=3674;e.angle=8736;e.anglebracketleft=12296;e.anglebracketleftvertical=65087;e.anglebracketright=12297;e.anglebracketrightvertical=65088;e.angleleft=9001;e.angleright=9002;e.angstrom=8491;e.anoteleia=903;e.anudattadeva=2386;e.anusvarabengali=2434;e.anusvaradeva=2306;e.anusvaragujarati=2690;e.aogonek=261;e.apaatosquare=13056;e.aparen=9372;e.apostrophearmenian=1370;e.apostrophemod=700;e.apple=63743;e.approaches=8784;e.approxequal=8776;e.approxequalorimage=8786;e.approximatelyequal=8773;e.araeaekorean=12686;e.araeakorean=12685;e.arc=8978;e.arighthalfring=7834;e.aring=229;e.aringacute=507;e.aringbelow=7681;e.arrowboth=8596;e.arrowdashdown=8675;e.arrowdashleft=8672;e.arrowdashright=8674;e.arrowdashup=8673;e.arrowdblboth=8660;e.arrowdbldown=8659;e.arrowdblleft=8656;e.arrowdblright=8658;e.arrowdblup=8657;e.arrowdown=8595;e.arrowdownleft=8601;e.arrowdownright=8600;e.arrowdownwhite=8681;e.arrowheaddownmod=709;e.arrowheadleftmod=706;e.arrowheadrightmod=707;e.arrowheadupmod=708;e.arrowhorizex=63719;e.arrowleft=8592;e.arrowleftdbl=8656;e.arrowleftdblstroke=8653;e.arrowleftoverright=8646;e.arrowleftwhite=8678;e.arrowright=8594;e.arrowrightdblstroke=8655;e.arrowrightheavy=10142;e.arrowrightoverleft=8644;e.arrowrightwhite=8680;e.arrowtableft=8676;e.arrowtabright=8677;e.arrowup=8593;e.arrowupdn=8597;e.arrowupdnbse=8616;e.arrowupdownbase=8616;e.arrowupleft=8598;e.arrowupleftofdown=8645;e.arrowupright=8599;e.arrowupwhite=8679;e.arrowvertex=63718;e.asciicircum=94;e.asciicircummonospace=65342;e.asciitilde=126;e.asciitildemonospace=65374;e.ascript=593;e.ascriptturned=594;e.asmallhiragana=12353;e.asmallkatakana=12449;e.asmallkatakanahalfwidth=65383;e.asterisk=42;e.asteriskaltonearabic=1645;e.asteriskarabic=1645;e.asteriskmath=8727;e.asteriskmonospace=65290;e.asterisksmall=65121;e.asterism=8258;e.asuperior=63209;e.asymptoticallyequal=8771;e.at=64;e.atilde=227;e.atmonospace=65312;e.atsmall=65131;e.aturned=592;e.aubengali=2452;e.aubopomofo=12576;e.audeva=2324;e.augujarati=2708;e.augurmukhi=2580;e.aulengthmarkbengali=2519;e.aumatragurmukhi=2636;e.auvowelsignbengali=2508;e.auvowelsigndeva=2380;e.auvowelsigngujarati=2764;e.avagrahadeva=2365;e.aybarmenian=1377;e.ayin=1506;e.ayinaltonehebrew=64288;e.ayinhebrew=1506;e.b=98;e.babengali=2476;e.backslash=92;e.backslashmonospace=65340;e.badeva=2348;e.bagujarati=2732;e.bagurmukhi=2604;e.bahiragana=12400;e.bahtthai=3647;e.bakatakana=12496;e.bar=124;e.barmonospace=65372;e.bbopomofo=12549;e.bcircle=9425;e.bdotaccent=7683;e.bdotbelow=7685;e.beamedsixteenthnotes=9836;e.because=8757;e.becyrillic=1073;e.beharabic=1576;e.behfinalarabic=65168;e.behinitialarabic=65169;e.behiragana=12409;e.behmedialarabic=65170;e.behmeeminitialarabic=64671;e.behmeemisolatedarabic=64520;e.behnoonfinalarabic=64621;e.bekatakana=12505;e.benarmenian=1378;e.bet=1489;e.beta=946;e.betasymbolgreek=976;e.betdagesh=64305;e.betdageshhebrew=64305;e.bethebrew=1489;e.betrafehebrew=64332;e.bhabengali=2477;e.bhadeva=2349;e.bhagujarati=2733;e.bhagurmukhi=2605;e.bhook=595;e.bihiragana=12403;e.bikatakana=12499;e.bilabialclick=664;e.bindigurmukhi=2562;e.birusquare=13105;e.blackcircle=9679;e.blackdiamond=9670;e.blackdownpointingtriangle=9660;e.blackleftpointingpointer=9668;e.blackleftpointingtriangle=9664;e.blacklenticularbracketleft=12304;e.blacklenticularbracketleftvertical=65083;e.blacklenticularbracketright=12305;e.blacklenticularbracketrightvertical=65084;e.blacklowerlefttriangle=9699;e.blacklowerrighttriangle=9698;e.blackrectangle=9644;e.blackrightpointingpointer=9658;e.blackrightpointingtriangle=9654;e.blacksmallsquare=9642;e.blacksmilingface=9787;e.blacksquare=9632;e.blackstar=9733;e.blackupperlefttriangle=9700;e.blackupperrighttriangle=9701;e.blackuppointingsmalltriangle=9652;e.blackuppointingtriangle=9650;e.blank=9251;e.blinebelow=7687;e.block=9608;e.bmonospace=65346;e.bobaimaithai=3610;e.bohiragana=12412;e.bokatakana=12508;e.bparen=9373;e.bqsquare=13251;e.braceex=63732;e.braceleft=123;e.braceleftbt=63731;e.braceleftmid=63730;e.braceleftmonospace=65371;e.braceleftsmall=65115;e.bracelefttp=63729;e.braceleftvertical=65079;e.braceright=125;e.bracerightbt=63742;e.bracerightmid=63741;e.bracerightmonospace=65373;e.bracerightsmall=65116;e.bracerighttp=63740;e.bracerightvertical=65080;e.bracketleft=91;e.bracketleftbt=63728;e.bracketleftex=63727;e.bracketleftmonospace=65339;e.bracketlefttp=63726;e.bracketright=93;e.bracketrightbt=63739;e.bracketrightex=63738;e.bracketrightmonospace=65341;e.bracketrighttp=63737;e.breve=728;e.brevebelowcmb=814;e.brevecmb=774;e.breveinvertedbelowcmb=815;e.breveinvertedcmb=785;e.breveinverteddoublecmb=865;e.bridgebelowcmb=810;e.bridgeinvertedbelowcmb=826;e.brokenbar=166;e.bstroke=384;e.bsuperior=63210;e.btopbar=387;e.buhiragana=12406;e.bukatakana=12502;e.bullet=8226;e.bulletinverse=9688;e.bulletoperator=8729;e.bullseye=9678;e.c=99;e.caarmenian=1390;e.cabengali=2458;e.cacute=263;e.cadeva=2330;e.cagujarati=2714;e.cagurmukhi=2586;e.calsquare=13192;e.candrabindubengali=2433;e.candrabinducmb=784;e.candrabindudeva=2305;e.candrabindugujarati=2689;e.capslock=8682;e.careof=8453;e.caron=711;e.caronbelowcmb=812;e.caroncmb=780;e.carriagereturn=8629;e.cbopomofo=12568;e.ccaron=269;e.ccedilla=231;e.ccedillaacute=7689;e.ccircle=9426;e.ccircumflex=265;e.ccurl=597;e.cdot=267;e.cdotaccent=267;e.cdsquare=13253;e.cedilla=184;e.cedillacmb=807;e.cent=162;e.centigrade=8451;e.centinferior=63199;e.centmonospace=65504;e.centoldstyle=63394;e.centsuperior=63200;e.chaarmenian=1401;e.chabengali=2459;e.chadeva=2331;e.chagujarati=2715;e.chagurmukhi=2587;e.chbopomofo=12564;e.cheabkhasiancyrillic=1213;e.checkmark=10003;e.checyrillic=1095;e.chedescenderabkhasiancyrillic=1215;e.chedescendercyrillic=1207;e.chedieresiscyrillic=1269;e.cheharmenian=1395;e.chekhakassiancyrillic=1228;e.cheverticalstrokecyrillic=1209;e.chi=967;e.chieuchacirclekorean=12919;e.chieuchaparenkorean=12823;e.chieuchcirclekorean=12905;e.chieuchkorean=12618;e.chieuchparenkorean=12809;e.chochangthai=3594;e.chochanthai=3592;e.chochingthai=3593;e.chochoethai=3596;e.chook=392;e.cieucacirclekorean=12918;e.cieucaparenkorean=12822;e.cieuccirclekorean=12904;e.cieuckorean=12616;e.cieucparenkorean=12808;e.cieucuparenkorean=12828;e.circle=9675;e.circlecopyrt=169;e.circlemultiply=8855;e.circleot=8857;e.circleplus=8853;e.circlepostalmark=12342;e.circlewithlefthalfblack=9680;e.circlewithrighthalfblack=9681;e.circumflex=710;e.circumflexbelowcmb=813;e.circumflexcmb=770;e.clear=8999;e.clickalveolar=450;e.clickdental=448;e.clicklateral=449;e.clickretroflex=451;e.club=9827;e.clubsuitblack=9827;e.clubsuitwhite=9831;e.cmcubedsquare=13220;e.cmonospace=65347;e.cmsquaredsquare=13216;e.coarmenian=1409;e.colon=58;e.colonmonetary=8353;e.colonmonospace=65306;e.colonsign=8353;e.colonsmall=65109;e.colontriangularhalfmod=721;e.colontriangularmod=720;e.comma=44;e.commaabovecmb=787;e.commaaboverightcmb=789;e.commaaccent=63171;e.commaarabic=1548;e.commaarmenian=1373;e.commainferior=63201;e.commamonospace=65292;e.commareversedabovecmb=788;e.commareversedmod=701;e.commasmall=65104;e.commasuperior=63202;e.commaturnedabovecmb=786;e.commaturnedmod=699;e.compass=9788;e.congruent=8773;e.contourintegral=8750;e.control=8963;e.controlACK=6;e.controlBEL=7;e.controlBS=8;e.controlCAN=24;e.controlCR=13;e.controlDC1=17;e.controlDC2=18;e.controlDC3=19;e.controlDC4=20;e.controlDEL=127;e.controlDLE=16;e.controlEM=25;e.controlENQ=5;e.controlEOT=4;e.controlESC=27;e.controlETB=23;e.controlETX=3;e.controlFF=12;e.controlFS=28;e.controlGS=29;e.controlHT=9;e.controlLF=10;e.controlNAK=21;e.controlNULL=0;e.controlRS=30;e.controlSI=15;e.controlSO=14;e.controlSOT=2;e.controlSTX=1;e.controlSUB=26;e.controlSYN=22;e.controlUS=31;e.controlVT=11;e.copyright=169;e.copyrightsans=63721;e.copyrightserif=63193;e.cornerbracketleft=12300;e.cornerbracketlefthalfwidth=65378;e.cornerbracketleftvertical=65089;e.cornerbracketright=12301;e.cornerbracketrighthalfwidth=65379;e.cornerbracketrightvertical=65090;e.corporationsquare=13183;e.cosquare=13255;e.coverkgsquare=13254;e.cparen=9374;e.cruzeiro=8354;e.cstretched=663;e.curlyand=8911;e.curlyor=8910;e.currency=164;e.cyrBreve=63185;e.cyrFlex=63186;e.cyrbreve=63188;e.cyrflex=63189;e.d=100;e.daarmenian=1380;e.dabengali=2470;e.dadarabic=1590;e.dadeva=2342;e.dadfinalarabic=65214;e.dadinitialarabic=65215;e.dadmedialarabic=65216;e.dagesh=1468;e.dageshhebrew=1468;e.dagger=8224;e.daggerdbl=8225;e.dagujarati=2726;e.dagurmukhi=2598;e.dahiragana=12384;e.dakatakana=12480;e.dalarabic=1583;e.dalet=1491;e.daletdagesh=64307;e.daletdageshhebrew=64307;e.dalethebrew=1491;e.dalfinalarabic=65194;e.dammaarabic=1615;e.dammalowarabic=1615;e.dammatanaltonearabic=1612;e.dammatanarabic=1612;e.danda=2404;e.dargahebrew=1447;e.dargalefthebrew=1447;e.dasiapneumatacyrilliccmb=1157;e.dblGrave=63187;e.dblanglebracketleft=12298;e.dblanglebracketleftvertical=65085;e.dblanglebracketright=12299;e.dblanglebracketrightvertical=65086;e.dblarchinvertedbelowcmb=811;e.dblarrowleft=8660;e.dblarrowright=8658;e.dbldanda=2405;e.dblgrave=63190;e.dblgravecmb=783;e.dblintegral=8748;e.dbllowline=8215;e.dbllowlinecmb=819;e.dbloverlinecmb=831;e.dblprimemod=698;e.dblverticalbar=8214;e.dblverticallineabovecmb=782;e.dbopomofo=12553;e.dbsquare=13256;e.dcaron=271;e.dcedilla=7697;e.dcircle=9427;e.dcircumflexbelow=7699;e.dcroat=273;e.ddabengali=2465;e.ddadeva=2337;e.ddagujarati=2721;e.ddagurmukhi=2593;e.ddalarabic=1672;e.ddalfinalarabic=64393;e.dddhadeva=2396;e.ddhabengali=2466;e.ddhadeva=2338;e.ddhagujarati=2722;e.ddhagurmukhi=2594;e.ddotaccent=7691;e.ddotbelow=7693;e.decimalseparatorarabic=1643;e.decimalseparatorpersian=1643;e.decyrillic=1076;e.degree=176;e.dehihebrew=1453;e.dehiragana=12391;e.deicoptic=1007;e.dekatakana=12487;e.deleteleft=9003;e.deleteright=8998;e.delta=948;e.deltaturned=397;e.denominatorminusonenumeratorbengali=2552;e.dezh=676;e.dhabengali=2471;e.dhadeva=2343;e.dhagujarati=2727;e.dhagurmukhi=2599;e.dhook=599;e.dialytikatonos=901;e.dialytikatonoscmb=836;e.diamond=9830;e.diamondsuitwhite=9826;e.dieresis=168;e.dieresisacute=63191;e.dieresisbelowcmb=804;e.dieresiscmb=776;e.dieresisgrave=63192;e.dieresistonos=901;e.dihiragana=12386;e.dikatakana=12482;e.dittomark=12291;e.divide=247;e.divides=8739;e.divisionslash=8725;e.djecyrillic=1106;e.dkshade=9619;e.dlinebelow=7695;e.dlsquare=13207;e.dmacron=273;e.dmonospace=65348;e.dnblock=9604;e.dochadathai=3598;e.dodekthai=3604;e.dohiragana=12393;e.dokatakana=12489;e.dollar=36;e.dollarinferior=63203;e.dollarmonospace=65284;e.dollaroldstyle=63268;e.dollarsmall=65129;e.dollarsuperior=63204;e.dong=8363;e.dorusquare=13094;e.dotaccent=729;e.dotaccentcmb=775;e.dotbelowcmb=803;e.dotbelowcomb=803;e.dotkatakana=12539;e.dotlessi=305;e.dotlessj=63166;e.dotlessjstrokehook=644;e.dotmath=8901;e.dottedcircle=9676;e.doubleyodpatah=64287;e.doubleyodpatahhebrew=64287;e.downtackbelowcmb=798;e.downtackmod=725;e.dparen=9375;e.dsuperior=63211;e.dtail=598;e.dtopbar=396;e.duhiragana=12389;e.dukatakana=12485;e.dz=499;e.dzaltone=675;e.dzcaron=454;e.dzcurl=677;e.dzeabkhasiancyrillic=1249;e.dzecyrillic=1109;e.dzhecyrillic=1119;e.e=101;e.eacute=233;e.earth=9793;e.ebengali=2447;e.ebopomofo=12572;e.ebreve=277;e.ecandradeva=2317;e.ecandragujarati=2701;e.ecandravowelsigndeva=2373;e.ecandravowelsigngujarati=2757;e.ecaron=283;e.ecedillabreve=7709;e.echarmenian=1381;e.echyiwnarmenian=1415;e.ecircle=9428;e.ecircumflex=234;e.ecircumflexacute=7871;e.ecircumflexbelow=7705;e.ecircumflexdotbelow=7879;e.ecircumflexgrave=7873;e.ecircumflexhookabove=7875;e.ecircumflextilde=7877;e.ecyrillic=1108;e.edblgrave=517;e.edeva=2319;e.edieresis=235;e.edot=279;e.edotaccent=279;e.edotbelow=7865;e.eegurmukhi=2575;e.eematragurmukhi=2631;e.efcyrillic=1092;e.egrave=232;e.egujarati=2703;e.eharmenian=1383;e.ehbopomofo=12573;e.ehiragana=12360;e.ehookabove=7867;e.eibopomofo=12575;e.eight=56;e.eightarabic=1640;e.eightbengali=2542;e.eightcircle=9319;e.eightcircleinversesansserif=10129;e.eightdeva=2414;e.eighteencircle=9329;e.eighteenparen=9349;e.eighteenperiod=9369;e.eightgujarati=2798;e.eightgurmukhi=2670;e.eighthackarabic=1640;e.eighthangzhou=12328;e.eighthnotebeamed=9835;e.eightideographicparen=12839;e.eightinferior=8328;e.eightmonospace=65304;e.eightoldstyle=63288;e.eightparen=9339;e.eightperiod=9359;e.eightpersian=1784;e.eightroman=8567;e.eightsuperior=8312;e.eightthai=3672;e.einvertedbreve=519;e.eiotifiedcyrillic=1125;e.ekatakana=12456;e.ekatakanahalfwidth=65396;e.ekonkargurmukhi=2676;e.ekorean=12628;e.elcyrillic=1083;e.element=8712;e.elevencircle=9322;e.elevenparen=9342;e.elevenperiod=9362;e.elevenroman=8570;e.ellipsis=8230;e.ellipsisvertical=8942;e.emacron=275;e.emacronacute=7703;e.emacrongrave=7701;e.emcyrillic=1084;e.emdash=8212;e.emdashvertical=65073;e.emonospace=65349;e.emphasismarkarmenian=1371;e.emptyset=8709;e.enbopomofo=12579;e.encyrillic=1085;e.endash=8211;e.endashvertical=65074;e.endescendercyrillic=1187;e.eng=331;e.engbopomofo=12581;e.enghecyrillic=1189;e.enhookcyrillic=1224;e.enspace=8194;e.eogonek=281;e.eokorean=12627;e.eopen=603;e.eopenclosed=666;e.eopenreversed=604;e.eopenreversedclosed=606;e.eopenreversedhook=605;e.eparen=9376;e.epsilon=949;e.epsilontonos=941;e.equal=61;e.equalmonospace=65309;e.equalsmall=65126;e.equalsuperior=8316;e.equivalence=8801;e.erbopomofo=12582;e.ercyrillic=1088;e.ereversed=600;e.ereversedcyrillic=1101;e.escyrillic=1089;e.esdescendercyrillic=1195;e.esh=643;e.eshcurl=646;e.eshortdeva=2318;e.eshortvowelsigndeva=2374;e.eshreversedloop=426;e.eshsquatreversed=645;e.esmallhiragana=12359;e.esmallkatakana=12455;e.esmallkatakanahalfwidth=65386;e.estimated=8494;e.esuperior=63212;e.eta=951;e.etarmenian=1384;e.etatonos=942;e.eth=240;e.etilde=7869;e.etildebelow=7707;e.etnahtafoukhhebrew=1425;e.etnahtafoukhlefthebrew=1425;e.etnahtahebrew=1425;e.etnahtalefthebrew=1425;e.eturned=477;e.eukorean=12641;e.euro=8364;e.evowelsignbengali=2503;e.evowelsigndeva=2375;e.evowelsigngujarati=2759;e.exclam=33;e.exclamarmenian=1372;e.exclamdbl=8252;e.exclamdown=161;e.exclamdownsmall=63393;e.exclammonospace=65281;e.exclamsmall=63265;e.existential=8707;e.ezh=658;e.ezhcaron=495;e.ezhcurl=659;e.ezhreversed=441;e.ezhtail=442;e.f=102;e.fadeva=2398;e.fagurmukhi=2654;e.fahrenheit=8457;e.fathaarabic=1614;e.fathalowarabic=1614;e.fathatanarabic=1611;e.fbopomofo=12552;e.fcircle=9429;e.fdotaccent=7711;e.feharabic=1601;e.feharmenian=1414;e.fehfinalarabic=65234;e.fehinitialarabic=65235;e.fehmedialarabic=65236;e.feicoptic=997;e.female=9792;e.ff=64256;e.f_f=64256;e.ffi=64259;e.f_f_i=64259;e.ffl=64260;e.f_f_l=64260;e.fi=64257;e.f_i=64257;e.fifteencircle=9326;e.fifteenparen=9346;e.fifteenperiod=9366;e.figuredash=8210;e.filledbox=9632;e.filledrect=9644;e.finalkaf=1498;e.finalkafdagesh=64314;e.finalkafdageshhebrew=64314;e.finalkafhebrew=1498;e.finalmem=1501;e.finalmemhebrew=1501;e.finalnun=1503;e.finalnunhebrew=1503;e.finalpe=1507;e.finalpehebrew=1507;e.finaltsadi=1509;e.finaltsadihebrew=1509;e.firsttonechinese=713;e.fisheye=9673;e.fitacyrillic=1139;e.five=53;e.fivearabic=1637;e.fivebengali=2539;e.fivecircle=9316;e.fivecircleinversesansserif=10126;e.fivedeva=2411;e.fiveeighths=8541;e.fivegujarati=2795;e.fivegurmukhi=2667;e.fivehackarabic=1637;e.fivehangzhou=12325;e.fiveideographicparen=12836;e.fiveinferior=8325;e.fivemonospace=65301;e.fiveoldstyle=63285;e.fiveparen=9336;e.fiveperiod=9356;e.fivepersian=1781;e.fiveroman=8564;e.fivesuperior=8309;e.fivethai=3669;e.fl=64258;e.f_l=64258;e.florin=402;e.fmonospace=65350;e.fmsquare=13209;e.fofanthai=3615;e.fofathai=3613;e.fongmanthai=3663;e.forall=8704;e.four=52;e.fourarabic=1636;e.fourbengali=2538;e.fourcircle=9315;e.fourcircleinversesansserif=10125;e.fourdeva=2410;e.fourgujarati=2794;e.fourgurmukhi=2666;e.fourhackarabic=1636;e.fourhangzhou=12324;e.fourideographicparen=12835;e.fourinferior=8324;e.fourmonospace=65300;e.fournumeratorbengali=2551;e.fouroldstyle=63284;e.fourparen=9335;e.fourperiod=9355;e.fourpersian=1780;e.fourroman=8563;e.foursuperior=8308;e.fourteencircle=9325;e.fourteenparen=9345;e.fourteenperiod=9365;e.fourthai=3668;e.fourthtonechinese=715;e.fparen=9377;e.fraction=8260;e.franc=8355;e.g=103;e.gabengali=2455;e.gacute=501;e.gadeva=2327;e.gafarabic=1711;e.gaffinalarabic=64403;e.gafinitialarabic=64404;e.gafmedialarabic=64405;e.gagujarati=2711;e.gagurmukhi=2583;e.gahiragana=12364;e.gakatakana=12460;e.gamma=947;e.gammalatinsmall=611;e.gammasuperior=736;e.gangiacoptic=1003;e.gbopomofo=12557;e.gbreve=287;e.gcaron=487;e.gcedilla=291;e.gcircle=9430;e.gcircumflex=285;e.gcommaaccent=291;e.gdot=289;e.gdotaccent=289;e.gecyrillic=1075;e.gehiragana=12370;e.gekatakana=12466;e.geometricallyequal=8785;e.gereshaccenthebrew=1436;e.gereshhebrew=1523;e.gereshmuqdamhebrew=1437;e.germandbls=223;e.gershayimaccenthebrew=1438;e.gershayimhebrew=1524;e.getamark=12307;e.ghabengali=2456;e.ghadarmenian=1394;e.ghadeva=2328;e.ghagujarati=2712;e.ghagurmukhi=2584;e.ghainarabic=1594;e.ghainfinalarabic=65230;e.ghaininitialarabic=65231;e.ghainmedialarabic=65232;e.ghemiddlehookcyrillic=1173;e.ghestrokecyrillic=1171;e.gheupturncyrillic=1169;e.ghhadeva=2394;e.ghhagurmukhi=2650;e.ghook=608;e.ghzsquare=13203;e.gihiragana=12366;e.gikatakana=12462;e.gimarmenian=1379;e.gimel=1490;e.gimeldagesh=64306;e.gimeldageshhebrew=64306;e.gimelhebrew=1490;e.gjecyrillic=1107;e.glottalinvertedstroke=446;e.glottalstop=660;e.glottalstopinverted=662;e.glottalstopmod=704;e.glottalstopreversed=661;e.glottalstopreversedmod=705;e.glottalstopreversedsuperior=740;e.glottalstopstroke=673;e.glottalstopstrokereversed=674;e.gmacron=7713;e.gmonospace=65351;e.gohiragana=12372;e.gokatakana=12468;e.gparen=9378;e.gpasquare=13228;e.gradient=8711;e.grave=96;e.gravebelowcmb=790;e.gravecmb=768;e.gravecomb=768;e.gravedeva=2387;e.gravelowmod=718;e.gravemonospace=65344;e.gravetonecmb=832;e.greater=62;e.greaterequal=8805;e.greaterequalorless=8923;e.greatermonospace=65310;e.greaterorequivalent=8819;e.greaterorless=8823;e.greateroverequal=8807;e.greatersmall=65125;e.gscript=609;e.gstroke=485;e.guhiragana=12368;e.guillemotleft=171;e.guillemotright=187;e.guilsinglleft=8249;e.guilsinglright=8250;e.gukatakana=12464;e.guramusquare=13080;e.gysquare=13257;e.h=104;e.haabkhasiancyrillic=1193;e.haaltonearabic=1729;e.habengali=2489;e.hadescendercyrillic=1203;e.hadeva=2361;e.hagujarati=2745;e.hagurmukhi=2617;e.haharabic=1581;e.hahfinalarabic=65186;e.hahinitialarabic=65187;e.hahiragana=12399;e.hahmedialarabic=65188;e.haitusquare=13098;e.hakatakana=12495;e.hakatakanahalfwidth=65418;e.halantgurmukhi=2637;e.hamzaarabic=1569;e.hamzalowarabic=1569;e.hangulfiller=12644;e.hardsigncyrillic=1098;e.harpoonleftbarbup=8636;e.harpoonrightbarbup=8640;e.hasquare=13258;e.hatafpatah=1458;e.hatafpatah16=1458;e.hatafpatah23=1458;e.hatafpatah2f=1458;e.hatafpatahhebrew=1458;e.hatafpatahnarrowhebrew=1458;e.hatafpatahquarterhebrew=1458;e.hatafpatahwidehebrew=1458;e.hatafqamats=1459;e.hatafqamats1b=1459;e.hatafqamats28=1459;e.hatafqamats34=1459;e.hatafqamatshebrew=1459;e.hatafqamatsnarrowhebrew=1459;e.hatafqamatsquarterhebrew=1459;e.hatafqamatswidehebrew=1459;e.hatafsegol=1457;e.hatafsegol17=1457;e.hatafsegol24=1457;e.hatafsegol30=1457;e.hatafsegolhebrew=1457;e.hatafsegolnarrowhebrew=1457;e.hatafsegolquarterhebrew=1457;e.hatafsegolwidehebrew=1457;e.hbar=295;e.hbopomofo=12559;e.hbrevebelow=7723;e.hcedilla=7721;e.hcircle=9431;e.hcircumflex=293;e.hdieresis=7719;e.hdotaccent=7715;e.hdotbelow=7717;e.he=1492;e.heart=9829;e.heartsuitblack=9829;e.heartsuitwhite=9825;e.hedagesh=64308;e.hedageshhebrew=64308;e.hehaltonearabic=1729;e.heharabic=1607;e.hehebrew=1492;e.hehfinalaltonearabic=64423;e.hehfinalalttwoarabic=65258;e.hehfinalarabic=65258;e.hehhamzaabovefinalarabic=64421;e.hehhamzaaboveisolatedarabic=64420;e.hehinitialaltonearabic=64424;e.hehinitialarabic=65259;e.hehiragana=12408;e.hehmedialaltonearabic=64425;e.hehmedialarabic=65260;e.heiseierasquare=13179;e.hekatakana=12504;e.hekatakanahalfwidth=65421;e.hekutaarusquare=13110;e.henghook=615;e.herutusquare=13113;e.het=1495;e.hethebrew=1495;e.hhook=614;e.hhooksuperior=689;e.hieuhacirclekorean=12923;e.hieuhaparenkorean=12827;e.hieuhcirclekorean=12909;e.hieuhkorean=12622;e.hieuhparenkorean=12813;e.hihiragana=12402;e.hikatakana=12498;e.hikatakanahalfwidth=65419;e.hiriq=1460;e.hiriq14=1460;e.hiriq21=1460;e.hiriq2d=1460;e.hiriqhebrew=1460;e.hiriqnarrowhebrew=1460;e.hiriqquarterhebrew=1460;e.hiriqwidehebrew=1460;e.hlinebelow=7830;e.hmonospace=65352;e.hoarmenian=1392;e.hohipthai=3627;e.hohiragana=12411;e.hokatakana=12507;e.hokatakanahalfwidth=65422;e.holam=1465;e.holam19=1465;e.holam26=1465;e.holam32=1465;e.holamhebrew=1465;e.holamnarrowhebrew=1465;e.holamquarterhebrew=1465;e.holamwidehebrew=1465;e.honokhukthai=3630;e.hookabovecomb=777;e.hookcmb=777;e.hookpalatalizedbelowcmb=801;e.hookretroflexbelowcmb=802;e.hoonsquare=13122;e.horicoptic=1001;e.horizontalbar=8213;e.horncmb=795;e.hotsprings=9832;e.house=8962;e.hparen=9379;e.hsuperior=688;e.hturned=613;e.huhiragana=12405;e.huiitosquare=13107;e.hukatakana=12501;e.hukatakanahalfwidth=65420;e.hungarumlaut=733;e.hungarumlautcmb=779;e.hv=405;e.hyphen=45;e.hypheninferior=63205;e.hyphenmonospace=65293;e.hyphensmall=65123;e.hyphensuperior=63206;e.hyphentwo=8208;e.i=105;e.iacute=237;e.iacyrillic=1103;e.ibengali=2439;e.ibopomofo=12583;e.ibreve=301;e.icaron=464;e.icircle=9432;e.icircumflex=238;e.icyrillic=1110;e.idblgrave=521;e.ideographearthcircle=12943;e.ideographfirecircle=12939;e.ideographicallianceparen=12863;e.ideographiccallparen=12858;e.ideographiccentrecircle=12965;e.ideographicclose=12294;e.ideographiccomma=12289;e.ideographiccommaleft=65380;e.ideographiccongratulationparen=12855;e.ideographiccorrectcircle=12963;e.ideographicearthparen=12847;e.ideographicenterpriseparen=12861;e.ideographicexcellentcircle=12957;e.ideographicfestivalparen=12864;e.ideographicfinancialcircle=12950;e.ideographicfinancialparen=12854;e.ideographicfireparen=12843;e.ideographichaveparen=12850;e.ideographichighcircle=12964;e.ideographiciterationmark=12293;e.ideographiclaborcircle=12952;e.ideographiclaborparen=12856;e.ideographicleftcircle=12967;e.ideographiclowcircle=12966;e.ideographicmedicinecircle=12969;e.ideographicmetalparen=12846;e.ideographicmoonparen=12842;e.ideographicnameparen=12852;e.ideographicperiod=12290;e.ideographicprintcircle=12958;e.ideographicreachparen=12867;e.ideographicrepresentparen=12857;e.ideographicresourceparen=12862;e.ideographicrightcircle=12968;e.ideographicsecretcircle=12953;e.ideographicselfparen=12866;e.ideographicsocietyparen=12851;e.ideographicspace=12288;e.ideographicspecialparen=12853;e.ideographicstockparen=12849;e.ideographicstudyparen=12859;e.ideographicsunparen=12848;e.ideographicsuperviseparen=12860;e.ideographicwaterparen=12844;e.ideographicwoodparen=12845;e.ideographiczero=12295;e.ideographmetalcircle=12942;e.ideographmooncircle=12938;e.ideographnamecircle=12948;e.ideographsuncircle=12944;e.ideographwatercircle=12940;e.ideographwoodcircle=12941;e.ideva=2311;e.idieresis=239;e.idieresisacute=7727;e.idieresiscyrillic=1253;e.idotbelow=7883;e.iebrevecyrillic=1239;e.iecyrillic=1077;e.ieungacirclekorean=12917;e.ieungaparenkorean=12821;e.ieungcirclekorean=12903;e.ieungkorean=12615;e.ieungparenkorean=12807;e.igrave=236;e.igujarati=2695;e.igurmukhi=2567;e.ihiragana=12356;e.ihookabove=7881;e.iibengali=2440;e.iicyrillic=1080;e.iideva=2312;e.iigujarati=2696;e.iigurmukhi=2568;e.iimatragurmukhi=2624;e.iinvertedbreve=523;e.iishortcyrillic=1081;e.iivowelsignbengali=2496;e.iivowelsigndeva=2368;e.iivowelsigngujarati=2752;e.ij=307;e.ikatakana=12452;e.ikatakanahalfwidth=65394;e.ikorean=12643;e.ilde=732;e.iluyhebrew=1452;e.imacron=299;e.imacroncyrillic=1251;e.imageorapproximatelyequal=8787;e.imatragurmukhi=2623;e.imonospace=65353;e.increment=8710;e.infinity=8734;e.iniarmenian=1387;e.integral=8747;e.integralbottom=8993;e.integralbt=8993;e.integralex=63733;e.integraltop=8992;e.integraltp=8992;e.intersection=8745;e.intisquare=13061;e.invbullet=9688;e.invcircle=9689;e.invsmileface=9787;e.iocyrillic=1105;e.iogonek=303;e.iota=953;e.iotadieresis=970;e.iotadieresistonos=912;e.iotalatin=617;e.iotatonos=943;e.iparen=9380;e.irigurmukhi=2674;e.ismallhiragana=12355;e.ismallkatakana=12451;e.ismallkatakanahalfwidth=65384;e.issharbengali=2554;e.istroke=616;e.isuperior=63213;e.iterationhiragana=12445;e.iterationkatakana=12541;e.itilde=297;e.itildebelow=7725;e.iubopomofo=12585;e.iucyrillic=1102;e.ivowelsignbengali=2495;e.ivowelsigndeva=2367;e.ivowelsigngujarati=2751;e.izhitsacyrillic=1141;e.izhitsadblgravecyrillic=1143;e.j=106;e.jaarmenian=1393;e.jabengali=2460;e.jadeva=2332;e.jagujarati=2716;e.jagurmukhi=2588;e.jbopomofo=12560;e.jcaron=496;e.jcircle=9433;e.jcircumflex=309;e.jcrossedtail=669;e.jdotlessstroke=607;e.jecyrillic=1112;e.jeemarabic=1580;e.jeemfinalarabic=65182;e.jeeminitialarabic=65183;e.jeemmedialarabic=65184;e.jeharabic=1688;e.jehfinalarabic=64395;e.jhabengali=2461;e.jhadeva=2333;e.jhagujarati=2717;e.jhagurmukhi=2589;e.jheharmenian=1403;e.jis=12292;e.jmonospace=65354;e.jparen=9381;e.jsuperior=690;e.k=107;e.kabashkircyrillic=1185;e.kabengali=2453;e.kacute=7729;e.kacyrillic=1082;e.kadescendercyrillic=1179;e.kadeva=2325;e.kaf=1499;e.kafarabic=1603;e.kafdagesh=64315;e.kafdageshhebrew=64315;e.kaffinalarabic=65242;e.kafhebrew=1499;e.kafinitialarabic=65243;e.kafmedialarabic=65244;e.kafrafehebrew=64333;e.kagujarati=2709;e.kagurmukhi=2581;e.kahiragana=12363;e.kahookcyrillic=1220;e.kakatakana=12459;e.kakatakanahalfwidth=65398;e.kappa=954;e.kappasymbolgreek=1008;e.kapyeounmieumkorean=12657;e.kapyeounphieuphkorean=12676;e.kapyeounpieupkorean=12664;e.kapyeounssangpieupkorean=12665;e.karoriisquare=13069;e.kashidaautoarabic=1600;e.kashidaautonosidebearingarabic=1600;e.kasmallkatakana=12533;e.kasquare=13188;e.kasraarabic=1616;e.kasratanarabic=1613;e.kastrokecyrillic=1183;e.katahiraprolongmarkhalfwidth=65392;e.kaverticalstrokecyrillic=1181;e.kbopomofo=12558;e.kcalsquare=13193;e.kcaron=489;e.kcedilla=311;e.kcircle=9434;e.kcommaaccent=311;e.kdotbelow=7731;e.keharmenian=1412;e.kehiragana=12369;e.kekatakana=12465;e.kekatakanahalfwidth=65401;e.kenarmenian=1391;e.kesmallkatakana=12534;e.kgreenlandic=312;e.khabengali=2454;e.khacyrillic=1093;e.khadeva=2326;e.khagujarati=2710;e.khagurmukhi=2582;e.khaharabic=1582;e.khahfinalarabic=65190;e.khahinitialarabic=65191;e.khahmedialarabic=65192;e.kheicoptic=999;e.khhadeva=2393;e.khhagurmukhi=2649;e.khieukhacirclekorean=12920;e.khieukhaparenkorean=12824;e.khieukhcirclekorean=12906;e.khieukhkorean=12619;e.khieukhparenkorean=12810;e.khokhaithai=3586;e.khokhonthai=3589;e.khokhuatthai=3587;e.khokhwaithai=3588;e.khomutthai=3675;e.khook=409;e.khorakhangthai=3590;e.khzsquare=13201;e.kihiragana=12365;e.kikatakana=12461;e.kikatakanahalfwidth=65399;e.kiroguramusquare=13077;e.kiromeetorusquare=13078;e.kirosquare=13076;e.kiyeokacirclekorean=12910;e.kiyeokaparenkorean=12814;e.kiyeokcirclekorean=12896;e.kiyeokkorean=12593;e.kiyeokparenkorean=12800;e.kiyeoksioskorean=12595;e.kjecyrillic=1116;e.klinebelow=7733;e.klsquare=13208;e.kmcubedsquare=13222;e.kmonospace=65355;e.kmsquaredsquare=13218;e.kohiragana=12371;e.kohmsquare=13248;e.kokaithai=3585;e.kokatakana=12467;e.kokatakanahalfwidth=65402;e.kooposquare=13086;e.koppacyrillic=1153;e.koreanstandardsymbol=12927;e.koroniscmb=835;e.kparen=9382;e.kpasquare=13226;e.ksicyrillic=1135;e.ktsquare=13263;e.kturned=670;e.kuhiragana=12367;e.kukatakana=12463;e.kukatakanahalfwidth=65400;e.kvsquare=13240;e.kwsquare=13246;e.l=108;e.labengali=2482;e.lacute=314;e.ladeva=2354;e.lagujarati=2738;e.lagurmukhi=2610;e.lakkhangyaothai=3653;e.lamaleffinalarabic=65276;e.lamalefhamzaabovefinalarabic=65272;e.lamalefhamzaaboveisolatedarabic=65271;e.lamalefhamzabelowfinalarabic=65274;e.lamalefhamzabelowisolatedarabic=65273;e.lamalefisolatedarabic=65275;e.lamalefmaddaabovefinalarabic=65270;e.lamalefmaddaaboveisolatedarabic=65269;e.lamarabic=1604;e.lambda=955;e.lambdastroke=411;e.lamed=1500;e.lameddagesh=64316;e.lameddageshhebrew=64316;e.lamedhebrew=1500;e.lamfinalarabic=65246;e.lamhahinitialarabic=64714;e.laminitialarabic=65247;e.lamjeeminitialarabic=64713;e.lamkhahinitialarabic=64715;e.lamlamhehisolatedarabic=65010;e.lammedialarabic=65248;e.lammeemhahinitialarabic=64904;e.lammeeminitialarabic=64716;e.largecircle=9711;e.lbar=410;e.lbelt=620;e.lbopomofo=12556;e.lcaron=318;e.lcedilla=316;e.lcircle=9435;e.lcircumflexbelow=7741;e.lcommaaccent=316;e.ldot=320;e.ldotaccent=320;e.ldotbelow=7735;e.ldotbelowmacron=7737;e.leftangleabovecmb=794;e.lefttackbelowcmb=792;e.less=60;e.lessequal=8804;e.lessequalorgreater=8922;e.lessmonospace=65308;e.lessorequivalent=8818;e.lessorgreater=8822;e.lessoverequal=8806;e.lesssmall=65124;e.lezh=622;e.lfblock=9612;e.lhookretroflex=621;e.lira=8356;e.liwnarmenian=1388;e.lj=457;e.ljecyrillic=1113;e.ll=63168;e.lladeva=2355;e.llagujarati=2739;e.llinebelow=7739;e.llladeva=2356;e.llvocalicbengali=2529;e.llvocalicdeva=2401;e.llvocalicvowelsignbengali=2531;e.llvocalicvowelsigndeva=2403;e.lmiddletilde=619;e.lmonospace=65356;e.lmsquare=13264;e.lochulathai=3628;e.logicaland=8743;e.logicalnot=172;e.logicalnotreversed=8976;e.logicalor=8744;e.lolingthai=3621;e.longs=383;e.lowlinecenterline=65102;e.lowlinecmb=818;e.lowlinedashed=65101;e.lozenge=9674;e.lparen=9383;e.lslash=322;e.lsquare=8467;e.lsuperior=63214;e.ltshade=9617;e.luthai=3622;e.lvocalicbengali=2444;e.lvocalicdeva=2316;e.lvocalicvowelsignbengali=2530;e.lvocalicvowelsigndeva=2402;e.lxsquare=13267;e.m=109;e.mabengali=2478;e.macron=175;e.macronbelowcmb=817;e.macroncmb=772;e.macronlowmod=717;e.macronmonospace=65507;e.macute=7743;e.madeva=2350;e.magujarati=2734;e.magurmukhi=2606;e.mahapakhhebrew=1444;e.mahapakhlefthebrew=1444;e.mahiragana=12414;e.maichattawalowleftthai=63637;e.maichattawalowrightthai=63636;e.maichattawathai=3659;e.maichattawaupperleftthai=63635;e.maieklowleftthai=63628;e.maieklowrightthai=63627;e.maiekthai=3656;e.maiekupperleftthai=63626;e.maihanakatleftthai=63620;e.maihanakatthai=3633;e.maitaikhuleftthai=63625;e.maitaikhuthai=3655;e.maitholowleftthai=63631;e.maitholowrightthai=63630;e.maithothai=3657;e.maithoupperleftthai=63629;e.maitrilowleftthai=63634;e.maitrilowrightthai=63633;e.maitrithai=3658;e.maitriupperleftthai=63632;e.maiyamokthai=3654;e.makatakana=12510;e.makatakanahalfwidth=65423;e.male=9794;e.mansyonsquare=13127;e.maqafhebrew=1470;e.mars=9794;e.masoracirclehebrew=1455;e.masquare=13187;e.mbopomofo=12551;e.mbsquare=13268;e.mcircle=9436;e.mcubedsquare=13221;e.mdotaccent=7745;e.mdotbelow=7747;e.meemarabic=1605;e.meemfinalarabic=65250;e.meeminitialarabic=65251;e.meemmedialarabic=65252;e.meemmeeminitialarabic=64721;e.meemmeemisolatedarabic=64584;e.meetorusquare=13133;e.mehiragana=12417;e.meizierasquare=13182;e.mekatakana=12513;e.mekatakanahalfwidth=65426;e.mem=1502;e.memdagesh=64318;e.memdageshhebrew=64318;e.memhebrew=1502;e.menarmenian=1396;e.merkhahebrew=1445;e.merkhakefulahebrew=1446;e.merkhakefulalefthebrew=1446;e.merkhalefthebrew=1445;e.mhook=625;e.mhzsquare=13202;e.middledotkatakanahalfwidth=65381;e.middot=183;e.mieumacirclekorean=12914;e.mieumaparenkorean=12818;e.mieumcirclekorean=12900;e.mieumkorean=12609;e.mieumpansioskorean=12656;e.mieumparenkorean=12804;e.mieumpieupkorean=12654;e.mieumsioskorean=12655;e.mihiragana=12415;e.mikatakana=12511;e.mikatakanahalfwidth=65424;e.minus=8722;e.minusbelowcmb=800;e.minuscircle=8854;e.minusmod=727;e.minusplus=8723;e.minute=8242;e.miribaarusquare=13130;e.mirisquare=13129;e.mlonglegturned=624;e.mlsquare=13206;e.mmcubedsquare=13219;e.mmonospace=65357;e.mmsquaredsquare=13215;e.mohiragana=12418;e.mohmsquare=13249;e.mokatakana=12514;e.mokatakanahalfwidth=65427;e.molsquare=13270;e.momathai=3617;e.moverssquare=13223;e.moverssquaredsquare=13224;e.mparen=9384;e.mpasquare=13227;e.mssquare=13235;e.msuperior=63215;e.mturned=623;e.mu=181;e.mu1=181;e.muasquare=13186;e.muchgreater=8811;e.muchless=8810;e.mufsquare=13196;e.mugreek=956;e.mugsquare=13197;e.muhiragana=12416;e.mukatakana=12512;e.mukatakanahalfwidth=65425;e.mulsquare=13205;e.multiply=215;e.mumsquare=13211;e.munahhebrew=1443;e.munahlefthebrew=1443;e.musicalnote=9834;e.musicalnotedbl=9835;e.musicflatsign=9837;e.musicsharpsign=9839;e.mussquare=13234;e.muvsquare=13238;e.muwsquare=13244;e.mvmegasquare=13241;e.mvsquare=13239;e.mwmegasquare=13247;e.mwsquare=13245;e.n=110;e.nabengali=2472;e.nabla=8711;e.nacute=324;e.nadeva=2344;e.nagujarati=2728;e.nagurmukhi=2600;e.nahiragana=12394;e.nakatakana=12490;e.nakatakanahalfwidth=65413;e.napostrophe=329;e.nasquare=13185;e.nbopomofo=12555;e.nbspace=160;e.ncaron=328;e.ncedilla=326;e.ncircle=9437;e.ncircumflexbelow=7755;e.ncommaaccent=326;e.ndotaccent=7749;e.ndotbelow=7751;e.nehiragana=12397;e.nekatakana=12493;e.nekatakanahalfwidth=65416;e.newsheqelsign=8362;e.nfsquare=13195;e.ngabengali=2457;e.ngadeva=2329;e.ngagujarati=2713;e.ngagurmukhi=2585;e.ngonguthai=3591;e.nhiragana=12435;e.nhookleft=626;e.nhookretroflex=627;e.nieunacirclekorean=12911;e.nieunaparenkorean=12815;e.nieuncieuckorean=12597;e.nieuncirclekorean=12897;e.nieunhieuhkorean=12598;e.nieunkorean=12596;e.nieunpansioskorean=12648;e.nieunparenkorean=12801;e.nieunsioskorean=12647;e.nieuntikeutkorean=12646;e.nihiragana=12395;e.nikatakana=12491;e.nikatakanahalfwidth=65414;e.nikhahitleftthai=63641;e.nikhahitthai=3661;e.nine=57;e.ninearabic=1641;e.ninebengali=2543;e.ninecircle=9320;e.ninecircleinversesansserif=10130;e.ninedeva=2415;e.ninegujarati=2799;e.ninegurmukhi=2671;e.ninehackarabic=1641;e.ninehangzhou=12329;e.nineideographicparen=12840;e.nineinferior=8329;e.ninemonospace=65305;e.nineoldstyle=63289;e.nineparen=9340;e.nineperiod=9360;e.ninepersian=1785;e.nineroman=8568;e.ninesuperior=8313;e.nineteencircle=9330;e.nineteenparen=9350;e.nineteenperiod=9370;e.ninethai=3673;e.nj=460;e.njecyrillic=1114;e.nkatakana=12531;e.nkatakanahalfwidth=65437;e.nlegrightlong=414;e.nlinebelow=7753;e.nmonospace=65358;e.nmsquare=13210;e.nnabengali=2467;e.nnadeva=2339;e.nnagujarati=2723;e.nnagurmukhi=2595;e.nnnadeva=2345;e.nohiragana=12398;e.nokatakana=12494;e.nokatakanahalfwidth=65417;e.nonbreakingspace=160;e.nonenthai=3603;e.nonuthai=3609;e.noonarabic=1606;e.noonfinalarabic=65254;e.noonghunnaarabic=1722;e.noonghunnafinalarabic=64415;e.nooninitialarabic=65255;e.noonjeeminitialarabic=64722;e.noonjeemisolatedarabic=64587;e.noonmedialarabic=65256;e.noonmeeminitialarabic=64725;e.noonmeemisolatedarabic=64590;e.noonnoonfinalarabic=64653;e.notcontains=8716;e.notelement=8713;e.notelementof=8713;e.notequal=8800;e.notgreater=8815;e.notgreaternorequal=8817;e.notgreaternorless=8825;e.notidentical=8802;e.notless=8814;e.notlessnorequal=8816;e.notparallel=8742;e.notprecedes=8832;e.notsubset=8836;e.notsucceeds=8833;e.notsuperset=8837;e.nowarmenian=1398;e.nparen=9385;e.nssquare=13233;e.nsuperior=8319;e.ntilde=241;e.nu=957;e.nuhiragana=12396;e.nukatakana=12492;e.nukatakanahalfwidth=65415;e.nuktabengali=2492;e.nuktadeva=2364;e.nuktagujarati=2748;e.nuktagurmukhi=2620;e.numbersign=35;e.numbersignmonospace=65283;e.numbersignsmall=65119;e.numeralsigngreek=884;e.numeralsignlowergreek=885;e.numero=8470;e.nun=1504;e.nundagesh=64320;e.nundageshhebrew=64320;e.nunhebrew=1504;e.nvsquare=13237;e.nwsquare=13243;e.nyabengali=2462;e.nyadeva=2334;e.nyagujarati=2718;e.nyagurmukhi=2590;e.o=111;e.oacute=243;e.oangthai=3629;e.obarred=629;e.obarredcyrillic=1257;e.obarreddieresiscyrillic=1259;e.obengali=2451;e.obopomofo=12571;e.obreve=335;e.ocandradeva=2321;e.ocandragujarati=2705;e.ocandravowelsigndeva=2377;e.ocandravowelsigngujarati=2761;e.ocaron=466;e.ocircle=9438;e.ocircumflex=244;e.ocircumflexacute=7889;e.ocircumflexdotbelow=7897;e.ocircumflexgrave=7891;e.ocircumflexhookabove=7893;e.ocircumflextilde=7895;e.ocyrillic=1086;e.odblacute=337;e.odblgrave=525;e.odeva=2323;e.odieresis=246;e.odieresiscyrillic=1255;e.odotbelow=7885;e.oe=339;e.oekorean=12634;e.ogonek=731;e.ogonekcmb=808;e.ograve=242;e.ogujarati=2707;e.oharmenian=1413;e.ohiragana=12362;e.ohookabove=7887;e.ohorn=417;e.ohornacute=7899;e.ohorndotbelow=7907;e.ohorngrave=7901;e.ohornhookabove=7903;e.ohorntilde=7905;e.ohungarumlaut=337;e.oi=419;e.oinvertedbreve=527;e.okatakana=12458;e.okatakanahalfwidth=65397;e.okorean=12631;e.olehebrew=1451;e.omacron=333;e.omacronacute=7763;e.omacrongrave=7761;e.omdeva=2384;e.omega=969;e.omega1=982;e.omegacyrillic=1121;e.omegalatinclosed=631;e.omegaroundcyrillic=1147;e.omegatitlocyrillic=1149;e.omegatonos=974;e.omgujarati=2768;e.omicron=959;e.omicrontonos=972;e.omonospace=65359;e.one=49;e.onearabic=1633;e.onebengali=2535;e.onecircle=9312;e.onecircleinversesansserif=10122;e.onedeva=2407;e.onedotenleader=8228;e.oneeighth=8539;e.onefitted=63196;e.onegujarati=2791;e.onegurmukhi=2663;e.onehackarabic=1633;e.onehalf=189;e.onehangzhou=12321;e.oneideographicparen=12832;e.oneinferior=8321;e.onemonospace=65297;e.onenumeratorbengali=2548;e.oneoldstyle=63281;e.oneparen=9332;e.oneperiod=9352;e.onepersian=1777;e.onequarter=188;e.oneroman=8560;e.onesuperior=185;e.onethai=3665;e.onethird=8531;e.oogonek=491;e.oogonekmacron=493;e.oogurmukhi=2579;e.oomatragurmukhi=2635;e.oopen=596;e.oparen=9386;e.openbullet=9702;e.option=8997;e.ordfeminine=170;e.ordmasculine=186;e.orthogonal=8735;e.oshortdeva=2322;e.oshortvowelsigndeva=2378;e.oslash=248;e.oslashacute=511;e.osmallhiragana=12361;e.osmallkatakana=12457;e.osmallkatakanahalfwidth=65387;e.ostrokeacute=511;e.osuperior=63216;e.otcyrillic=1151;e.otilde=245;e.otildeacute=7757;e.otildedieresis=7759;e.oubopomofo=12577;e.overline=8254;e.overlinecenterline=65098;e.overlinecmb=773;e.overlinedashed=65097;e.overlinedblwavy=65100;e.overlinewavy=65099;e.overscore=175;e.ovowelsignbengali=2507;e.ovowelsigndeva=2379;e.ovowelsigngujarati=2763;e.p=112;e.paampssquare=13184;e.paasentosquare=13099;e.pabengali=2474;e.pacute=7765;e.padeva=2346;e.pagedown=8671;e.pageup=8670;e.pagujarati=2730;e.pagurmukhi=2602;e.pahiragana=12401;e.paiyannoithai=3631;e.pakatakana=12497;e.palatalizationcyrilliccmb=1156;e.palochkacyrillic=1216;e.pansioskorean=12671;e.paragraph=182;e.parallel=8741;e.parenleft=40;e.parenleftaltonearabic=64830;e.parenleftbt=63725;e.parenleftex=63724;e.parenleftinferior=8333;e.parenleftmonospace=65288;e.parenleftsmall=65113;e.parenleftsuperior=8317;e.parenlefttp=63723;e.parenleftvertical=65077;e.parenright=41;e.parenrightaltonearabic=64831;e.parenrightbt=63736;e.parenrightex=63735;e.parenrightinferior=8334;e.parenrightmonospace=65289;e.parenrightsmall=65114;e.parenrightsuperior=8318;e.parenrighttp=63734;e.parenrightvertical=65078;e.partialdiff=8706;e.paseqhebrew=1472;e.pashtahebrew=1433;e.pasquare=13225;e.patah=1463;e.patah11=1463;e.patah1d=1463;e.patah2a=1463;e.patahhebrew=1463;e.patahnarrowhebrew=1463;e.patahquarterhebrew=1463;e.patahwidehebrew=1463;e.pazerhebrew=1441;e.pbopomofo=12550;e.pcircle=9439;e.pdotaccent=7767;e.pe=1508;e.pecyrillic=1087;e.pedagesh=64324;e.pedageshhebrew=64324;e.peezisquare=13115;e.pefinaldageshhebrew=64323;e.peharabic=1662;e.peharmenian=1402;e.pehebrew=1508;e.pehfinalarabic=64343;e.pehinitialarabic=64344;e.pehiragana=12410;e.pehmedialarabic=64345;e.pekatakana=12506;e.pemiddlehookcyrillic=1191;e.perafehebrew=64334;e.percent=37;e.percentarabic=1642;e.percentmonospace=65285;e.percentsmall=65130;e.period=46;e.periodarmenian=1417;e.periodcentered=183;e.periodhalfwidth=65377;e.periodinferior=63207;e.periodmonospace=65294;e.periodsmall=65106;e.periodsuperior=63208;e.perispomenigreekcmb=834;e.perpendicular=8869;e.perthousand=8240;e.peseta=8359;e.pfsquare=13194;e.phabengali=2475;e.phadeva=2347;e.phagujarati=2731;e.phagurmukhi=2603;e.phi=966;e.phi1=981;e.phieuphacirclekorean=12922;e.phieuphaparenkorean=12826;e.phieuphcirclekorean=12908;e.phieuphkorean=12621;e.phieuphparenkorean=12812;e.philatin=632;e.phinthuthai=3642;e.phisymbolgreek=981;e.phook=421;e.phophanthai=3614;e.phophungthai=3612;e.phosamphaothai=3616;e.pi=960;e.pieupacirclekorean=12915;e.pieupaparenkorean=12819;e.pieupcieuckorean=12662;e.pieupcirclekorean=12901;e.pieupkiyeokkorean=12658;e.pieupkorean=12610;e.pieupparenkorean=12805;e.pieupsioskiyeokkorean=12660;e.pieupsioskorean=12612;e.pieupsiostikeutkorean=12661;e.pieupthieuthkorean=12663;e.pieuptikeutkorean=12659;e.pihiragana=12404;e.pikatakana=12500;e.pisymbolgreek=982;e.piwrarmenian=1411;e.planckover2pi=8463;e.planckover2pi1=8463;e.plus=43;e.plusbelowcmb=799;e.pluscircle=8853;e.plusminus=177;e.plusmod=726;e.plusmonospace=65291;e.plussmall=65122;e.plussuperior=8314;e.pmonospace=65360;e.pmsquare=13272;e.pohiragana=12413;e.pointingindexdownwhite=9759;e.pointingindexleftwhite=9756;e.pointingindexrightwhite=9758;e.pointingindexupwhite=9757;e.pokatakana=12509;e.poplathai=3611;e.postalmark=12306;e.postalmarkface=12320;e.pparen=9387;e.precedes=8826;e.prescription=8478;e.primemod=697;e.primereversed=8245;e.product=8719;e.projective=8965;e.prolongedkana=12540;e.propellor=8984;e.propersubset=8834;e.propersuperset=8835;e.proportion=8759;e.proportional=8733;e.psi=968;e.psicyrillic=1137;e.psilipneumatacyrilliccmb=1158;e.pssquare=13232;e.puhiragana=12407;e.pukatakana=12503;e.pvsquare=13236;e.pwsquare=13242;e.q=113;e.qadeva=2392;e.qadmahebrew=1448;e.qafarabic=1602;e.qaffinalarabic=65238;e.qafinitialarabic=65239;e.qafmedialarabic=65240;e.qamats=1464;e.qamats10=1464;e.qamats1a=1464;e.qamats1c=1464;e.qamats27=1464;e.qamats29=1464;e.qamats33=1464;e.qamatsde=1464;e.qamatshebrew=1464;e.qamatsnarrowhebrew=1464;e.qamatsqatanhebrew=1464;e.qamatsqatannarrowhebrew=1464;e.qamatsqatanquarterhebrew=1464;e.qamatsqatanwidehebrew=1464;e.qamatsquarterhebrew=1464;e.qamatswidehebrew=1464;e.qarneyparahebrew=1439;e.qbopomofo=12561;e.qcircle=9440;e.qhook=672;e.qmonospace=65361;e.qof=1511;e.qofdagesh=64327;e.qofdageshhebrew=64327;e.qofhebrew=1511;e.qparen=9388;e.quarternote=9833;e.qubuts=1467;e.qubuts18=1467;e.qubuts25=1467;e.qubuts31=1467;e.qubutshebrew=1467;e.qubutsnarrowhebrew=1467;e.qubutsquarterhebrew=1467;e.qubutswidehebrew=1467;e.question=63;e.questionarabic=1567;e.questionarmenian=1374;e.questiondown=191;e.questiondownsmall=63423;e.questiongreek=894;e.questionmonospace=65311;e.questionsmall=63295;e.quotedbl=34;e.quotedblbase=8222;e.quotedblleft=8220;e.quotedblmonospace=65282;e.quotedblprime=12318;e.quotedblprimereversed=12317;e.quotedblright=8221;e.quoteleft=8216;e.quoteleftreversed=8219;e.quotereversed=8219;e.quoteright=8217;e.quoterightn=329;e.quotesinglbase=8218;e.quotesingle=39;e.quotesinglemonospace=65287;e.r=114;e.raarmenian=1404;e.rabengali=2480;e.racute=341;e.radeva=2352;e.radical=8730;e.radicalex=63717;e.radoverssquare=13230;e.radoverssquaredsquare=13231;e.radsquare=13229;e.rafe=1471;e.rafehebrew=1471;e.ragujarati=2736;e.ragurmukhi=2608;e.rahiragana=12425;e.rakatakana=12521;e.rakatakanahalfwidth=65431;e.ralowerdiagonalbengali=2545;e.ramiddlediagonalbengali=2544;e.ramshorn=612;e.ratio=8758;e.rbopomofo=12566;e.rcaron=345;e.rcedilla=343;e.rcircle=9441;e.rcommaaccent=343;e.rdblgrave=529;e.rdotaccent=7769;e.rdotbelow=7771;e.rdotbelowmacron=7773;e.referencemark=8251;e.reflexsubset=8838;e.reflexsuperset=8839;e.registered=174;e.registersans=63720;e.registerserif=63194;e.reharabic=1585;e.reharmenian=1408;e.rehfinalarabic=65198;e.rehiragana=12428;e.rekatakana=12524;e.rekatakanahalfwidth=65434;e.resh=1512;e.reshdageshhebrew=64328;e.reshhebrew=1512;e.reversedtilde=8765;e.reviahebrew=1431;e.reviamugrashhebrew=1431;e.revlogicalnot=8976;e.rfishhook=638;e.rfishhookreversed=639;e.rhabengali=2525;e.rhadeva=2397;e.rho=961;e.rhook=637;e.rhookturned=635;e.rhookturnedsuperior=693;e.rhosymbolgreek=1009;e.rhotichookmod=734;e.rieulacirclekorean=12913;e.rieulaparenkorean=12817;e.rieulcirclekorean=12899;e.rieulhieuhkorean=12608;e.rieulkiyeokkorean=12602;e.rieulkiyeoksioskorean=12649;e.rieulkorean=12601;e.rieulmieumkorean=12603;e.rieulpansioskorean=12652;e.rieulparenkorean=12803;e.rieulphieuphkorean=12607;e.rieulpieupkorean=12604;e.rieulpieupsioskorean=12651;e.rieulsioskorean=12605;e.rieulthieuthkorean=12606;e.rieultikeutkorean=12650;e.rieulyeorinhieuhkorean=12653;e.rightangle=8735;e.righttackbelowcmb=793;e.righttriangle=8895;e.rihiragana=12426;e.rikatakana=12522;e.rikatakanahalfwidth=65432;e.ring=730;e.ringbelowcmb=805;e.ringcmb=778;e.ringhalfleft=703;e.ringhalfleftarmenian=1369;e.ringhalfleftbelowcmb=796;e.ringhalfleftcentered=723;e.ringhalfright=702;e.ringhalfrightbelowcmb=825;e.ringhalfrightcentered=722;e.rinvertedbreve=531;e.rittorusquare=13137;e.rlinebelow=7775;e.rlongleg=636;e.rlonglegturned=634;e.rmonospace=65362;e.rohiragana=12429;e.rokatakana=12525;e.rokatakanahalfwidth=65435;e.roruathai=3619;e.rparen=9389;e.rrabengali=2524;e.rradeva=2353;e.rragurmukhi=2652;e.rreharabic=1681;e.rrehfinalarabic=64397;e.rrvocalicbengali=2528;e.rrvocalicdeva=2400;e.rrvocalicgujarati=2784;e.rrvocalicvowelsignbengali=2500;e.rrvocalicvowelsigndeva=2372;e.rrvocalicvowelsigngujarati=2756;e.rsuperior=63217;e.rtblock=9616;e.rturned=633;e.rturnedsuperior=692;e.ruhiragana=12427;e.rukatakana=12523;e.rukatakanahalfwidth=65433;e.rupeemarkbengali=2546;e.rupeesignbengali=2547;e.rupiah=63197;e.ruthai=3620;e.rvocalicbengali=2443;e.rvocalicdeva=2315;e.rvocalicgujarati=2699;e.rvocalicvowelsignbengali=2499;e.rvocalicvowelsigndeva=2371;e.rvocalicvowelsigngujarati=2755;e.s=115;e.sabengali=2488;e.sacute=347;e.sacutedotaccent=7781;e.sadarabic=1589;e.sadeva=2360;e.sadfinalarabic=65210;e.sadinitialarabic=65211;e.sadmedialarabic=65212;e.sagujarati=2744;e.sagurmukhi=2616;e.sahiragana=12373;e.sakatakana=12469;e.sakatakanahalfwidth=65403;e.sallallahoualayhewasallamarabic=65018;e.samekh=1505;e.samekhdagesh=64321;e.samekhdageshhebrew=64321;e.samekhhebrew=1505;e.saraaathai=3634;e.saraaethai=3649;e.saraaimaimalaithai=3652;e.saraaimaimuanthai=3651;e.saraamthai=3635;e.saraathai=3632;e.saraethai=3648;e.saraiileftthai=63622;e.saraiithai=3637;e.saraileftthai=63621;e.saraithai=3636;e.saraothai=3650;e.saraueeleftthai=63624;e.saraueethai=3639;e.saraueleftthai=63623;e.sarauethai=3638;e.sarauthai=3640;e.sarauuthai=3641;e.sbopomofo=12569;e.scaron=353;e.scarondotaccent=7783;e.scedilla=351;e.schwa=601;e.schwacyrillic=1241;e.schwadieresiscyrillic=1243;e.schwahook=602;e.scircle=9442;e.scircumflex=349;e.scommaaccent=537;e.sdotaccent=7777;e.sdotbelow=7779;e.sdotbelowdotaccent=7785;e.seagullbelowcmb=828;e.second=8243;e.secondtonechinese=714;e.section=167;e.seenarabic=1587;e.seenfinalarabic=65202;e.seeninitialarabic=65203;e.seenmedialarabic=65204;e.segol=1462;e.segol13=1462;e.segol1f=1462;e.segol2c=1462;e.segolhebrew=1462;e.segolnarrowhebrew=1462;e.segolquarterhebrew=1462;e.segoltahebrew=1426;e.segolwidehebrew=1462;e.seharmenian=1405;e.sehiragana=12379;e.sekatakana=12475;e.sekatakanahalfwidth=65406;e.semicolon=59;e.semicolonarabic=1563;e.semicolonmonospace=65307;e.semicolonsmall=65108;e.semivoicedmarkkana=12444;e.semivoicedmarkkanahalfwidth=65439;e.sentisquare=13090;e.sentosquare=13091;e.seven=55;e.sevenarabic=1639;e.sevenbengali=2541;e.sevencircle=9318;e.sevencircleinversesansserif=10128;e.sevendeva=2413;e.seveneighths=8542;e.sevengujarati=2797;e.sevengurmukhi=2669;e.sevenhackarabic=1639;e.sevenhangzhou=12327;e.sevenideographicparen=12838;e.seveninferior=8327;e.sevenmonospace=65303;e.sevenoldstyle=63287;e.sevenparen=9338;e.sevenperiod=9358;e.sevenpersian=1783;e.sevenroman=8566;e.sevensuperior=8311;e.seventeencircle=9328;e.seventeenparen=9348;e.seventeenperiod=9368;e.seventhai=3671;e.sfthyphen=173;e.shaarmenian=1399;e.shabengali=2486;e.shacyrillic=1096;e.shaddaarabic=1617;e.shaddadammaarabic=64609;e.shaddadammatanarabic=64606;e.shaddafathaarabic=64608;e.shaddakasraarabic=64610;e.shaddakasratanarabic=64607;e.shade=9618;e.shadedark=9619;e.shadelight=9617;e.shademedium=9618;e.shadeva=2358;e.shagujarati=2742;e.shagurmukhi=2614;e.shalshelethebrew=1427;e.shbopomofo=12565;e.shchacyrillic=1097;e.sheenarabic=1588;e.sheenfinalarabic=65206;e.sheeninitialarabic=65207;e.sheenmedialarabic=65208;e.sheicoptic=995;e.sheqel=8362;e.sheqelhebrew=8362;e.sheva=1456;e.sheva115=1456;e.sheva15=1456;e.sheva22=1456;e.sheva2e=1456;e.shevahebrew=1456;e.shevanarrowhebrew=1456;e.shevaquarterhebrew=1456;e.shevawidehebrew=1456;e.shhacyrillic=1211;e.shimacoptic=1005;e.shin=1513;e.shindagesh=64329;e.shindageshhebrew=64329;e.shindageshshindot=64300;e.shindageshshindothebrew=64300;e.shindageshsindot=64301;e.shindageshsindothebrew=64301;e.shindothebrew=1473;e.shinhebrew=1513;e.shinshindot=64298;e.shinshindothebrew=64298;e.shinsindot=64299;e.shinsindothebrew=64299;e.shook=642;e.sigma=963;e.sigma1=962;e.sigmafinal=962;e.sigmalunatesymbolgreek=1010;e.sihiragana=12375;e.sikatakana=12471;e.sikatakanahalfwidth=65404;e.siluqhebrew=1469;e.siluqlefthebrew=1469;e.similar=8764;e.sindothebrew=1474;e.siosacirclekorean=12916;e.siosaparenkorean=12820;e.sioscieuckorean=12670;e.sioscirclekorean=12902;e.sioskiyeokkorean=12666;e.sioskorean=12613;e.siosnieunkorean=12667;e.siosparenkorean=12806;e.siospieupkorean=12669;e.siostikeutkorean=12668;e.six=54;e.sixarabic=1638;e.sixbengali=2540;e.sixcircle=9317;e.sixcircleinversesansserif=10127;e.sixdeva=2412;e.sixgujarati=2796;e.sixgurmukhi=2668;e.sixhackarabic=1638;e.sixhangzhou=12326;e.sixideographicparen=12837;e.sixinferior=8326;e.sixmonospace=65302;e.sixoldstyle=63286;e.sixparen=9337;e.sixperiod=9357;e.sixpersian=1782;e.sixroman=8565;e.sixsuperior=8310;e.sixteencircle=9327;e.sixteencurrencydenominatorbengali=2553;e.sixteenparen=9347;e.sixteenperiod=9367;e.sixthai=3670;e.slash=47;e.slashmonospace=65295;e.slong=383;e.slongdotaccent=7835;e.smileface=9786;e.smonospace=65363;e.sofpasuqhebrew=1475;e.softhyphen=173;e.softsigncyrillic=1100;e.sohiragana=12381;e.sokatakana=12477;e.sokatakanahalfwidth=65407;e.soliduslongoverlaycmb=824;e.solidusshortoverlaycmb=823;e.sorusithai=3625;e.sosalathai=3624;e.sosothai=3595;e.sosuathai=3626;e.space=32;e.spacehackarabic=32;e.spade=9824;e.spadesuitblack=9824;e.spadesuitwhite=9828;e.sparen=9390;e.squarebelowcmb=827;e.squarecc=13252;e.squarecm=13213;e.squarediagonalcrosshatchfill=9641;e.squarehorizontalfill=9636;e.squarekg=13199;e.squarekm=13214;e.squarekmcapital=13262;e.squareln=13265;e.squarelog=13266;e.squaremg=13198;e.squaremil=13269;e.squaremm=13212;e.squaremsquared=13217;e.squareorthogonalcrosshatchfill=9638;e.squareupperlefttolowerrightfill=9639;e.squareupperrighttolowerleftfill=9640;e.squareverticalfill=9637;e.squarewhitewithsmallblack=9635;e.srsquare=13275;e.ssabengali=2487;e.ssadeva=2359;e.ssagujarati=2743;e.ssangcieuckorean=12617;e.ssanghieuhkorean=12677;e.ssangieungkorean=12672;e.ssangkiyeokkorean=12594;e.ssangnieunkorean=12645;e.ssangpieupkorean=12611;e.ssangsioskorean=12614;e.ssangtikeutkorean=12600;e.ssuperior=63218;e.sterling=163;e.sterlingmonospace=65505;e.strokelongoverlaycmb=822;e.strokeshortoverlaycmb=821;e.subset=8834;e.subsetnotequal=8842;e.subsetorequal=8838;e.succeeds=8827;e.suchthat=8715;e.suhiragana=12377;e.sukatakana=12473;e.sukatakanahalfwidth=65405;e.sukunarabic=1618;e.summation=8721;e.sun=9788;e.superset=8835;e.supersetnotequal=8843;e.supersetorequal=8839;e.svsquare=13276;e.syouwaerasquare=13180;e.t=116;e.tabengali=2468;e.tackdown=8868;e.tackleft=8867;e.tadeva=2340;e.tagujarati=2724;e.tagurmukhi=2596;e.taharabic=1591;e.tahfinalarabic=65218;e.tahinitialarabic=65219;e.tahiragana=12383;e.tahmedialarabic=65220;e.taisyouerasquare=13181;e.takatakana=12479;e.takatakanahalfwidth=65408;e.tatweelarabic=1600;e.tau=964;e.tav=1514;e.tavdages=64330;e.tavdagesh=64330;e.tavdageshhebrew=64330;e.tavhebrew=1514;e.tbar=359;e.tbopomofo=12554;e.tcaron=357;e.tccurl=680;e.tcedilla=355;e.tcheharabic=1670;e.tchehfinalarabic=64379;e.tchehinitialarabic=64380;e.tchehmedialarabic=64381;e.tcircle=9443;e.tcircumflexbelow=7793;e.tcommaaccent=355;e.tdieresis=7831;e.tdotaccent=7787;e.tdotbelow=7789;e.tecyrillic=1090;e.tedescendercyrillic=1197;e.teharabic=1578;e.tehfinalarabic=65174;e.tehhahinitialarabic=64674;e.tehhahisolatedarabic=64524;e.tehinitialarabic=65175;e.tehiragana=12390;e.tehjeeminitialarabic=64673;e.tehjeemisolatedarabic=64523;e.tehmarbutaarabic=1577;e.tehmarbutafinalarabic=65172;e.tehmedialarabic=65176;e.tehmeeminitialarabic=64676;e.tehmeemisolatedarabic=64526;e.tehnoonfinalarabic=64627;e.tekatakana=12486;e.tekatakanahalfwidth=65411;e.telephone=8481;e.telephoneblack=9742;e.telishagedolahebrew=1440;e.telishaqetanahebrew=1449;e.tencircle=9321;e.tenideographicparen=12841;e.tenparen=9341;e.tenperiod=9361;e.tenroman=8569;e.tesh=679;e.tet=1496;e.tetdagesh=64312;e.tetdageshhebrew=64312;e.tethebrew=1496;e.tetsecyrillic=1205;e.tevirhebrew=1435;e.tevirlefthebrew=1435;e.thabengali=2469;e.thadeva=2341;e.thagujarati=2725;e.thagurmukhi=2597;e.thalarabic=1584;e.thalfinalarabic=65196;e.thanthakhatlowleftthai=63640;e.thanthakhatlowrightthai=63639;e.thanthakhatthai=3660;e.thanthakhatupperleftthai=63638;e.theharabic=1579;e.thehfinalarabic=65178;e.thehinitialarabic=65179;e.thehmedialarabic=65180;e.thereexists=8707;e.therefore=8756;e.theta=952;e.theta1=977;e.thetasymbolgreek=977;e.thieuthacirclekorean=12921;e.thieuthaparenkorean=12825;e.thieuthcirclekorean=12907;e.thieuthkorean=12620;e.thieuthparenkorean=12811;e.thirteencircle=9324;e.thirteenparen=9344;e.thirteenperiod=9364;e.thonangmonthothai=3601;e.thook=429;e.thophuthaothai=3602;e.thorn=254;e.thothahanthai=3607;e.thothanthai=3600;e.thothongthai=3608;e.thothungthai=3606;e.thousandcyrillic=1154;e.thousandsseparatorarabic=1644;e.thousandsseparatorpersian=1644;e.three=51;e.threearabic=1635;e.threebengali=2537;e.threecircle=9314;e.threecircleinversesansserif=10124;e.threedeva=2409;e.threeeighths=8540;e.threegujarati=2793;e.threegurmukhi=2665;e.threehackarabic=1635;e.threehangzhou=12323;e.threeideographicparen=12834;e.threeinferior=8323;e.threemonospace=65299;e.threenumeratorbengali=2550;e.threeoldstyle=63283;e.threeparen=9334;e.threeperiod=9354;e.threepersian=1779;e.threequarters=190;e.threequartersemdash=63198;e.threeroman=8562;e.threesuperior=179;e.threethai=3667;e.thzsquare=13204;e.tihiragana=12385;e.tikatakana=12481;e.tikatakanahalfwidth=65409;e.tikeutacirclekorean=12912;e.tikeutaparenkorean=12816;e.tikeutcirclekorean=12898;e.tikeutkorean=12599;e.tikeutparenkorean=12802;e.tilde=732;e.tildebelowcmb=816;e.tildecmb=771;e.tildecomb=771;e.tildedoublecmb=864;e.tildeoperator=8764;e.tildeoverlaycmb=820;e.tildeverticalcmb=830;e.timescircle=8855;e.tipehahebrew=1430;e.tipehalefthebrew=1430;e.tippigurmukhi=2672;e.titlocyrilliccmb=1155;e.tiwnarmenian=1407;e.tlinebelow=7791;e.tmonospace=65364;e.toarmenian=1385;e.tohiragana=12392;e.tokatakana=12488;e.tokatakanahalfwidth=65412;e.tonebarextrahighmod=741;e.tonebarextralowmod=745;e.tonebarhighmod=742;e.tonebarlowmod=744;e.tonebarmidmod=743;e.tonefive=445;e.tonesix=389;e.tonetwo=424;e.tonos=900;e.tonsquare=13095;e.topatakthai=3599;e.tortoiseshellbracketleft=12308;e.tortoiseshellbracketleftsmall=65117;e.tortoiseshellbracketleftvertical=65081;e.tortoiseshellbracketright=12309;e.tortoiseshellbracketrightsmall=65118;e.tortoiseshellbracketrightvertical=65082;e.totaothai=3605;e.tpalatalhook=427;e.tparen=9391;e.trademark=8482;e.trademarksans=63722;e.trademarkserif=63195;e.tretroflexhook=648;e.triagdn=9660;e.triaglf=9668;e.triagrt=9658;e.triagup=9650;e.ts=678;e.tsadi=1510;e.tsadidagesh=64326;e.tsadidageshhebrew=64326;e.tsadihebrew=1510;e.tsecyrillic=1094;e.tsere=1461;e.tsere12=1461;e.tsere1e=1461;e.tsere2b=1461;e.tserehebrew=1461;e.tserenarrowhebrew=1461;e.tserequarterhebrew=1461;e.tserewidehebrew=1461;e.tshecyrillic=1115;e.tsuperior=63219;e.ttabengali=2463;e.ttadeva=2335;e.ttagujarati=2719;e.ttagurmukhi=2591;e.tteharabic=1657;e.ttehfinalarabic=64359;e.ttehinitialarabic=64360;e.ttehmedialarabic=64361;e.tthabengali=2464;e.tthadeva=2336;e.tthagujarati=2720;e.tthagurmukhi=2592;e.tturned=647;e.tuhiragana=12388;e.tukatakana=12484;e.tukatakanahalfwidth=65410;e.tusmallhiragana=12387;e.tusmallkatakana=12483;e.tusmallkatakanahalfwidth=65391;e.twelvecircle=9323;e.twelveparen=9343;e.twelveperiod=9363;e.twelveroman=8571;e.twentycircle=9331;e.twentyhangzhou=21316;e.twentyparen=9351;e.twentyperiod=9371;e.two=50;e.twoarabic=1634;e.twobengali=2536;e.twocircle=9313;e.twocircleinversesansserif=10123;e.twodeva=2408;e.twodotenleader=8229;e.twodotleader=8229;e.twodotleadervertical=65072;e.twogujarati=2792;e.twogurmukhi=2664;e.twohackarabic=1634;e.twohangzhou=12322;e.twoideographicparen=12833;e.twoinferior=8322;e.twomonospace=65298;e.twonumeratorbengali=2549;e.twooldstyle=63282;e.twoparen=9333;e.twoperiod=9353;e.twopersian=1778;e.tworoman=8561;e.twostroke=443;e.twosuperior=178;e.twothai=3666;e.twothirds=8532;e.u=117;e.uacute=250;e.ubar=649;e.ubengali=2441;e.ubopomofo=12584;e.ubreve=365;e.ucaron=468;e.ucircle=9444;e.ucircumflex=251;e.ucircumflexbelow=7799;e.ucyrillic=1091;e.udattadeva=2385;e.udblacute=369;e.udblgrave=533;e.udeva=2313;e.udieresis=252;e.udieresisacute=472;e.udieresisbelow=7795;e.udieresiscaron=474;e.udieresiscyrillic=1265;e.udieresisgrave=476;e.udieresismacron=470;e.udotbelow=7909;e.ugrave=249;e.ugujarati=2697;e.ugurmukhi=2569;e.uhiragana=12358;e.uhookabove=7911;e.uhorn=432;e.uhornacute=7913;e.uhorndotbelow=7921;e.uhorngrave=7915;e.uhornhookabove=7917;e.uhorntilde=7919;e.uhungarumlaut=369;e.uhungarumlautcyrillic=1267;e.uinvertedbreve=535;e.ukatakana=12454;e.ukatakanahalfwidth=65395;e.ukcyrillic=1145;e.ukorean=12636;e.umacron=363;e.umacroncyrillic=1263;e.umacrondieresis=7803;e.umatragurmukhi=2625;e.umonospace=65365;e.underscore=95;e.underscoredbl=8215;e.underscoremonospace=65343;e.underscorevertical=65075;e.underscorewavy=65103;e.union=8746;e.universal=8704;e.uogonek=371;e.uparen=9392;e.upblock=9600;e.upperdothebrew=1476;e.upsilon=965;e.upsilondieresis=971;e.upsilondieresistonos=944;e.upsilonlatin=650;e.upsilontonos=973;e.uptackbelowcmb=797;e.uptackmod=724;e.uragurmukhi=2675;e.uring=367;e.ushortcyrillic=1118;e.usmallhiragana=12357;e.usmallkatakana=12453;e.usmallkatakanahalfwidth=65385;e.ustraightcyrillic=1199;e.ustraightstrokecyrillic=1201;e.utilde=361;e.utildeacute=7801;e.utildebelow=7797;e.uubengali=2442;e.uudeva=2314;e.uugujarati=2698;e.uugurmukhi=2570;e.uumatragurmukhi=2626;e.uuvowelsignbengali=2498;e.uuvowelsigndeva=2370;e.uuvowelsigngujarati=2754;e.uvowelsignbengali=2497;e.uvowelsigndeva=2369;e.uvowelsigngujarati=2753;e.v=118;e.vadeva=2357;e.vagujarati=2741;e.vagurmukhi=2613;e.vakatakana=12535;e.vav=1493;e.vavdagesh=64309;e.vavdagesh65=64309;e.vavdageshhebrew=64309;e.vavhebrew=1493;e.vavholam=64331;e.vavholamhebrew=64331;e.vavvavhebrew=1520;e.vavyodhebrew=1521;e.vcircle=9445;e.vdotbelow=7807;e.vecyrillic=1074;e.veharabic=1700;e.vehfinalarabic=64363;e.vehinitialarabic=64364;e.vehmedialarabic=64365;e.vekatakana=12537;e.venus=9792;e.verticalbar=124;e.verticallineabovecmb=781;e.verticallinebelowcmb=809;e.verticallinelowmod=716;e.verticallinemod=712;e.vewarmenian=1406;e.vhook=651;e.vikatakana=12536;e.viramabengali=2509;e.viramadeva=2381;e.viramagujarati=2765;e.visargabengali=2435;e.visargadeva=2307;e.visargagujarati=2691;e.vmonospace=65366;e.voarmenian=1400;e.voicediterationhiragana=12446;e.voicediterationkatakana=12542;e.voicedmarkkana=12443;e.voicedmarkkanahalfwidth=65438;e.vokatakana=12538;e.vparen=9393;e.vtilde=7805;e.vturned=652;e.vuhiragana=12436;e.vukatakana=12532;e.w=119;e.wacute=7811;e.waekorean=12633;e.wahiragana=12431;e.wakatakana=12527;e.wakatakanahalfwidth=65436;e.wakorean=12632;e.wasmallhiragana=12430;e.wasmallkatakana=12526;e.wattosquare=13143;e.wavedash=12316;e.wavyunderscorevertical=65076;e.wawarabic=1608;e.wawfinalarabic=65262;e.wawhamzaabovearabic=1572;e.wawhamzaabovefinalarabic=65158;e.wbsquare=13277;e.wcircle=9446;e.wcircumflex=373;e.wdieresis=7813;e.wdotaccent=7815;e.wdotbelow=7817;e.wehiragana=12433;e.weierstrass=8472;e.wekatakana=12529;e.wekorean=12638;e.weokorean=12637;e.wgrave=7809;e.whitebullet=9702;e.whitecircle=9675;e.whitecircleinverse=9689;e.whitecornerbracketleft=12302;e.whitecornerbracketleftvertical=65091;e.whitecornerbracketright=12303;e.whitecornerbracketrightvertical=65092;e.whitediamond=9671;e.whitediamondcontainingblacksmalldiamond=9672;e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661;e.whiteleftpointingsmalltriangle=9667;e.whiteleftpointingtriangle=9665;e.whitelenticularbracketleft=12310;e.whitelenticularbracketright=12311;e.whiterightpointingsmalltriangle=9657;e.whiterightpointingtriangle=9655;e.whitesmallsquare=9643;e.whitesmilingface=9786;e.whitesquare=9633;e.whitestar=9734;e.whitetelephone=9743;e.whitetortoiseshellbracketleft=12312;e.whitetortoiseshellbracketright=12313;e.whiteuppointingsmalltriangle=9653;e.whiteuppointingtriangle=9651;e.wihiragana=12432;e.wikatakana=12528;e.wikorean=12639;e.wmonospace=65367;e.wohiragana=12434;e.wokatakana=12530;e.wokatakanahalfwidth=65382;e.won=8361;e.wonmonospace=65510;e.wowaenthai=3623;e.wparen=9394;e.wring=7832;e.wsuperior=695;e.wturned=653;e.wynn=447;e.x=120;e.xabovecmb=829;e.xbopomofo=12562;e.xcircle=9447;e.xdieresis=7821;e.xdotaccent=7819;e.xeharmenian=1389;e.xi=958;e.xmonospace=65368;e.xparen=9395;e.xsuperior=739;e.y=121;e.yaadosquare=13134;e.yabengali=2479;e.yacute=253;e.yadeva=2351;e.yaekorean=12626;e.yagujarati=2735;e.yagurmukhi=2607;e.yahiragana=12420;e.yakatakana=12516;e.yakatakanahalfwidth=65428;e.yakorean=12625;e.yamakkanthai=3662;e.yasmallhiragana=12419;e.yasmallkatakana=12515;e.yasmallkatakanahalfwidth=65388;e.yatcyrillic=1123;e.ycircle=9448;e.ycircumflex=375;e.ydieresis=255;e.ydotaccent=7823;e.ydotbelow=7925;e.yeharabic=1610;e.yehbarreearabic=1746;e.yehbarreefinalarabic=64431;e.yehfinalarabic=65266;e.yehhamzaabovearabic=1574;e.yehhamzaabovefinalarabic=65162;e.yehhamzaaboveinitialarabic=65163;e.yehhamzaabovemedialarabic=65164;e.yehinitialarabic=65267;e.yehmedialarabic=65268;e.yehmeeminitialarabic=64733;e.yehmeemisolatedarabic=64600;e.yehnoonfinalarabic=64660;e.yehthreedotsbelowarabic=1745;e.yekorean=12630;e.yen=165;e.yenmonospace=65509;e.yeokorean=12629;e.yeorinhieuhkorean=12678;e.yerahbenyomohebrew=1450;e.yerahbenyomolefthebrew=1450;e.yericyrillic=1099;e.yerudieresiscyrillic=1273;e.yesieungkorean=12673;e.yesieungpansioskorean=12675;e.yesieungsioskorean=12674;e.yetivhebrew=1434;e.ygrave=7923;e.yhook=436;e.yhookabove=7927;e.yiarmenian=1397;e.yicyrillic=1111;e.yikorean=12642;e.yinyang=9775;e.yiwnarmenian=1410;e.ymonospace=65369;e.yod=1497;e.yoddagesh=64313;e.yoddageshhebrew=64313;e.yodhebrew=1497;e.yodyodhebrew=1522;e.yodyodpatahhebrew=64287;e.yohiragana=12424;e.yoikorean=12681;e.yokatakana=12520;e.yokatakanahalfwidth=65430;e.yokorean=12635;e.yosmallhiragana=12423;e.yosmallkatakana=12519;e.yosmallkatakanahalfwidth=65390;e.yotgreek=1011;e.yoyaekorean=12680;e.yoyakorean=12679;e.yoyakthai=3618;e.yoyingthai=3597;e.yparen=9396;e.ypogegrammeni=890;e.ypogegrammenigreekcmb=837;e.yr=422;e.yring=7833;e.ysuperior=696;e.ytilde=7929;e.yturned=654;e.yuhiragana=12422;e.yuikorean=12684;e.yukatakana=12518;e.yukatakanahalfwidth=65429;e.yukorean=12640;e.yusbigcyrillic=1131;e.yusbigiotifiedcyrillic=1133;e.yuslittlecyrillic=1127;e.yuslittleiotifiedcyrillic=1129;e.yusmallhiragana=12421;e.yusmallkatakana=12517;e.yusmallkatakanahalfwidth=65389;e.yuyekorean=12683;e.yuyeokorean=12682;e.yyabengali=2527;e.yyadeva=2399;e.z=122;e.zaarmenian=1382;e.zacute=378;e.zadeva=2395;e.zagurmukhi=2651;e.zaharabic=1592;e.zahfinalarabic=65222;e.zahinitialarabic=65223;e.zahiragana=12374;e.zahmedialarabic=65224;e.zainarabic=1586;e.zainfinalarabic=65200;e.zakatakana=12470;e.zaqefgadolhebrew=1429;e.zaqefqatanhebrew=1428;e.zarqahebrew=1432;e.zayin=1494;e.zayindagesh=64310;e.zayindageshhebrew=64310;e.zayinhebrew=1494;e.zbopomofo=12567;e.zcaron=382;e.zcircle=9449;e.zcircumflex=7825;e.zcurl=657;e.zdot=380;e.zdotaccent=380;e.zdotbelow=7827;e.zecyrillic=1079;e.zedescendercyrillic=1177;e.zedieresiscyrillic=1247;e.zehiragana=12380;e.zekatakana=12476;e.zero=48;e.zeroarabic=1632;e.zerobengali=2534;e.zerodeva=2406;e.zerogujarati=2790;e.zerogurmukhi=2662;e.zerohackarabic=1632;e.zeroinferior=8320;e.zeromonospace=65296;e.zerooldstyle=63280;e.zeropersian=1776;e.zerosuperior=8304;e.zerothai=3664;e.zerowidthjoiner=65279;e.zerowidthnonjoiner=8204;e.zerowidthspace=8203;e.zeta=950;e.zhbopomofo=12563;e.zhearmenian=1386;e.zhebrevecyrillic=1218;e.zhecyrillic=1078;e.zhedescendercyrillic=1175;e.zhedieresiscyrillic=1245;e.zihiragana=12376;e.zikatakana=12472;e.zinorhebrew=1454;e.zlinebelow=7829;e.zmonospace=65370;e.zohiragana=12382;e.zokatakana=12478;e.zparen=9397;e.zretroflexhook=656;e.zstroke=438;e.zuhiragana=12378;e.zukatakana=12474;e[".notdef"]=0;e.angbracketleftbig=9001;e.angbracketleftBig=9001;e.angbracketleftbigg=9001;e.angbracketleftBigg=9001;e.angbracketrightBig=9002;e.angbracketrightbig=9002;e.angbracketrightBigg=9002;e.angbracketrightbigg=9002;e.arrowhookleft=8618;e.arrowhookright=8617;e.arrowlefttophalf=8636;e.arrowleftbothalf=8637;e.arrownortheast=8599;e.arrownorthwest=8598;e.arrowrighttophalf=8640;e.arrowrightbothalf=8641;e.arrowsoutheast=8600;e.arrowsouthwest=8601;e.backslashbig=8726;e.backslashBig=8726;e.backslashBigg=8726;e.backslashbigg=8726;e.bardbl=8214;e.bracehtipdownleft=65079;e.bracehtipdownright=65079;e.bracehtipupleft=65080;e.bracehtipupright=65080;e.braceleftBig=123;e.braceleftbig=123;e.braceleftbigg=123;e.braceleftBigg=123;e.bracerightBig=125;e.bracerightbig=125;e.bracerightbigg=125;e.bracerightBigg=125;e.bracketleftbig=91;e.bracketleftBig=91;e.bracketleftbigg=91;e.bracketleftBigg=91;e.bracketrightBig=93;e.bracketrightbig=93;e.bracketrightbigg=93;e.bracketrightBigg=93;e.ceilingleftbig=8968;e.ceilingleftBig=8968;e.ceilingleftBigg=8968;e.ceilingleftbigg=8968;e.ceilingrightbig=8969;e.ceilingrightBig=8969;e.ceilingrightbigg=8969;e.ceilingrightBigg=8969;e.circledotdisplay=8857;e.circledottext=8857;e.circlemultiplydisplay=8855;e.circlemultiplytext=8855;e.circleplusdisplay=8853;e.circleplustext=8853;e.contintegraldisplay=8750;e.contintegraltext=8750;e.coproductdisplay=8720;e.coproducttext=8720;e.floorleftBig=8970;e.floorleftbig=8970;e.floorleftbigg=8970;e.floorleftBigg=8970;e.floorrightbig=8971;e.floorrightBig=8971;e.floorrightBigg=8971;e.floorrightbigg=8971;e.hatwide=770;e.hatwider=770;e.hatwidest=770;e.intercal=7488;e.integraldisplay=8747;e.integraltext=8747;e.intersectiondisplay=8898;e.intersectiontext=8898;e.logicalanddisplay=8743;e.logicalandtext=8743;e.logicalordisplay=8744;e.logicalortext=8744;e.parenleftBig=40;e.parenleftbig=40;e.parenleftBigg=40;e.parenleftbigg=40;e.parenrightBig=41;e.parenrightbig=41;e.parenrightBigg=41;e.parenrightbigg=41;e.prime=8242;e.productdisplay=8719;e.producttext=8719;e.radicalbig=8730;e.radicalBig=8730;e.radicalBigg=8730;e.radicalbigg=8730;e.radicalbt=8730;e.radicaltp=8730;e.radicalvertex=8730;e.slashbig=47;e.slashBig=47;e.slashBigg=47;e.slashbigg=47;e.summationdisplay=8721;e.summationtext=8721;e.tildewide=732;e.tildewider=732;e.tildewidest=732;e.uniondisplay=8899;e.unionmultidisplay=8846;e.unionmultitext=8846;e.unionsqdisplay=8852;e.unionsqtext=8852;e.uniontext=8899;e.vextenddouble=8741;e.vextendsingle=8739}),ja=getLookupTableFactory(function(e){e.space=32;e.a1=9985;e.a2=9986;e.a202=9987;e.a3=9988;e.a4=9742;e.a5=9990;e.a119=9991;e.a118=9992;e.a117=9993;e.a11=9755;e.a12=9758;e.a13=9996;e.a14=9997;e.a15=9998;e.a16=9999;e.a105=1e4;e.a17=10001;e.a18=10002;e.a19=10003;e.a20=10004;e.a21=10005;e.a22=10006;e.a23=10007;e.a24=10008;e.a25=10009;e.a26=10010;e.a27=10011;e.a28=10012;e.a6=10013;e.a7=10014;e.a8=10015;e.a9=10016;e.a10=10017;e.a29=10018;e.a30=10019;e.a31=10020;e.a32=10021;e.a33=10022;e.a34=10023;e.a35=9733;e.a36=10025;e.a37=10026;e.a38=10027;e.a39=10028;e.a40=10029;e.a41=10030;e.a42=10031;e.a43=10032;e.a44=10033;e.a45=10034;e.a46=10035;e.a47=10036;e.a48=10037;e.a49=10038;e.a50=10039;e.a51=10040;e.a52=10041;e.a53=10042;e.a54=10043;e.a55=10044;e.a56=10045;e.a57=10046;e.a58=10047;e.a59=10048;e.a60=10049;e.a61=10050;e.a62=10051;e.a63=10052;e.a64=10053;e.a65=10054;e.a66=10055;e.a67=10056;e.a68=10057;e.a69=10058;e.a70=10059;e.a71=9679;e.a72=10061;e.a73=9632;e.a74=10063;e.a203=10064;e.a75=10065;e.a204=10066;e.a76=9650;e.a77=9660;e.a78=9670;e.a79=10070;e.a81=9687;e.a82=10072;e.a83=10073;e.a84=10074;e.a97=10075;e.a98=10076;e.a99=10077;e.a100=10078;e.a101=10081;e.a102=10082;e.a103=10083;e.a104=10084;e.a106=10085;e.a107=10086;e.a108=10087;e.a112=9827;e.a111=9830;e.a110=9829;e.a109=9824;e.a120=9312;e.a121=9313;e.a122=9314;e.a123=9315;e.a124=9316;e.a125=9317;e.a126=9318;e.a127=9319;e.a128=9320;e.a129=9321;e.a130=10102;e.a131=10103;e.a132=10104;e.a133=10105;e.a134=10106;e.a135=10107;e.a136=10108;e.a137=10109;e.a138=10110;e.a139=10111;e.a140=10112;e.a141=10113;e.a142=10114;e.a143=10115;e.a144=10116;e.a145=10117;e.a146=10118;e.a147=10119;e.a148=10120;e.a149=10121;e.a150=10122;e.a151=10123;e.a152=10124;e.a153=10125;e.a154=10126;e.a155=10127;e.a156=10128;e.a157=10129;e.a158=10130;e.a159=10131;e.a160=10132;e.a161=8594;e.a163=8596;e.a164=8597;e.a196=10136;e.a165=10137;e.a192=10138;e.a166=10139;e.a167=10140;e.a168=10141;e.a169=10142;e.a170=10143;e.a171=10144;e.a172=10145;e.a173=10146;e.a162=10147;e.a174=10148;e.a175=10149;e.a176=10150;e.a177=10151;e.a178=10152;e.a179=10153;e.a193=10154;e.a180=10155;e.a199=10156;e.a181=10157;e.a200=10158;e.a182=10159;e.a201=10161;e.a183=10162;e.a184=10163;e.a197=10164;e.a185=10165;e.a194=10166;e.a198=10167;e.a186=10168;e.a195=10169;e.a187=10170;e.a188=10171;e.a189=10172;e.a190=10173;e.a191=10174;e.a89=10088;e.a90=10089;e.a93=10090;e.a94=10091;e.a91=10092;e.a92=10093;e.a205=10094;e.a85=10095;e.a206=10096;e.a86=10097;e.a87=10098;e.a88=10099;e.a95=10100;e.a96=10101;e[".notdef"]=0}),ka=getLookupTableFactory(function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63718]=9168;e[63719]=9135;e[63733]=9134;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120});function getUnicodeForGlyph(e,t){let n=t[e];if(void 0!==n)return n;if(!e)return-1;if("u"===e[0]){const t=e.length;let a;if(7===t&&"n"===e[1]&&"i"===e[2])a=e.substring(3);else{if(!(t>=5&&t<=7))return-1;a=e.substring(1)}if(a===a.toUpperCase()){n=parseInt(a,16);if(n>=0)return n}}return-1}const ya=[[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 getUnicodeRangeFor(e,t=-1){if(-1!==t){const n=ya[t];for(let a=0,s=n.length;a=n[a]&&e<=n[a+1])return t}for(let t=0,n=ya.length;t=n[a]&&e<=n[a+1])return t}return-1}const qa=/^(\s)|(\p{Mn})|(\p{Cf})$/u,va=new Map;const Sa=1,Aa=2,xa=4,Ca=32,Ia=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const n=getUnicodeForGlyph(e,t);if(-1!==n)for(const e in t)if(t[e]===n)return e;info("Unable to recover a standard glyph name for: "+e);return e}function type1FontGlyphMapping(e,t,n){const a=Object.create(null);let s,r,i;const o=!!(e.flags&xa);if(e.isInternalFont){i=t;for(r=0;r=0?s:0}}else if(e.baseEncodingName){i=getEncoding(e.baseEncodingName);for(r=0;r=0?s:0}}else if(o)for(r in t)a[r]=t[r];else{i=pa;for(r=0;r=0?s:0}}const l=e.differences;let f;if(l)for(r in l){const e=l[r];s=n.indexOf(e);if(-1===s){f??=wa();const t=recoverGlyphName(e,f);t!==e&&(s=n.indexOf(t))}a[r]=s>=0?s:0}return a}function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const Fa=getLookupTableFactory(e=>{e[8211]=65074;e[8212]=65073;e[8229]=65072;e[8230]=65049;e[12289]=65041;e[12290]=65042;e[12296]=65087;e[12297]=65088;e[12298]=65085;e[12299]=65086;e[12300]=65089;e[12301]=65090;e[12302]=65091;e[12303]=65092;e[12304]=65083;e[12305]=65084;e[12308]=65081;e[12309]=65082;e[12310]=65047;e[12311]=65048;e[65103]=65076;e[65281]=65045;e[65288]=65077;e[65289]=65078;e[65292]=65040;e[65306]=65043;e[65307]=65044;e[65311]=65046;e[65339]=65095;e[65341]=65096;e[65343]=65075;e[65371]=65079;e[65373]=65080});const Ta=[".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"],Ra=[".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"],Oa=[".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 DataBuilder{#re;#ie=1024;#oe=!1;#le=0;#fe;constructor({exactLength:e=0,minLength:t=0}){this.#oe=!!e;this.#ce(e||t)}#ce(e){if(this.#oe)this.#ie=e;else for(;this.#iethis.#ie&&this.#ce(t);this.#re.set(e,this.#le);this.#le=t}setInt16(e){const t=this.#le+2;!this.#oe&&t>this.#ie&&this.#ce(t);this.#fe.setInt16(this.#le,e);this.#le=t}setSafeInt16(e){const t=this.#le+2;!this.#oe&&t>this.#ie&&this.#ce(t);this.#fe.setInt16(this.#le,MathClamp(e,-32768,32767));this.#le=t}setInt32(e){const t=this.#le+4;!this.#oe&&t>this.#ie&&this.#ce(t);this.#fe.setInt32(this.#le,e);this.#le=t}}function looksLikeUnsigned16BitNegative(e){return e>32767&&e<=65535}function recoverSigned16BitBBox(e,t=!1){return Util.normalizeRect(e.map((e,n)=>(!t||n<2)&&looksLikeUnsigned16BitNegative(e)?e-65536:e))}const Ha=[".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"],Ba=391,Da=.039625,Ma=[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}],Na=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];class CFFParser{constructor(e,t,n){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!n}parse(){const e=this.properties,t=new CFF(this.bytes.length);this.cff=t;const n=this.parseHeader(),a=this.parseIndex(n.endPos),s=this.parseIndex(a.endPos),r=this.parseIndex(s.endPos),i=this.parseIndex(r.endPos),o=this.parseDict(s.obj.get(0)),l=this.createDict(CFFTopDict,o,t.strings);t.header=n.obj;t.names=this.parseNameIndex(a.obj);t.strings=this.parseStringIndex(r.obj);t.topDict=l;t.globalSubrIndex=i.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=l.hasName("ROS");const f=l.getByName("CharStrings"),c=this.parseIndex(f).obj;t.charStringCount=c.count;const h=l.getByName("FontMatrix");h&&(e.fontMatrix=h);let u=l.getByName("FontBBox");const m=e.bbox?.some(e=>0!==e)?recoverSigned16BitBBox(e.bbox):null,p=u?.slice(0,2).some(looksLikeUnsigned16BitNegative),d=u?.some(looksLikeUnsigned16BitNegative);if(u?.every(e=>0===e)&&m){u=m;l.setByName("FontBBox",u)}else if(d){const t=recoverSigned16BitBBox(u),n=m&&e.bbox.some(e=>e<0)&&!e.bbox.some(looksLikeUnsigned16BitNegative)&&isArrayEqual(t,m);if(n||p){u=n?t:recoverSigned16BitBBox(u,!0);l.setByName("FontBBox",u)}}if(u?.some(e=>0!==e)){e.ascent=Math.max(u[3],u[1]);e.descent=Math.min(u[1],u[3]);e.ascentScaled=!0}let g,b;if(t.isCIDFont){const e=this.parseIndex(l.getByName("FDArray")).obj;for(let n=0,a=e.count;n=t)throw new FormatError("Invalid CFF header");if(0!==n){info("cff data is shifted");e=e.subarray(n);this.bytes=e}const a=e[0],s=e[1],r=e[2],i=e[3];return{obj:new CFFHeader(a,s,r,i),endPos:r}}parseDict(e){const t=new DataView(e.buffer,e.byteOffset,e.bytesLength);let n=0;function parseOperand(){let a=e[n++];if(30===a)return function parseFloatOperand(){let t="";const a=15,s=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],r=e.length;for(;n>4,o=15&r;if(i===a)break;t+=s[i];if(o===a)break;t+=s[o]}return parseFloat(t)}();if(28===a){a=t.getInt16(n);n+=2;return a}if(29===a){a=t.getInt32(n);n+=4;return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[n++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[n++]-108;warn(`CFFParser.parseDict: "${a}" is a reserved command.`);return NaN}let a=[];const s=[];n=0;const r=e.length;for(;n10)return!1;const s=new DataView(t.buffer,t.byteOffset,t.bytesLength);let r=e.stackSize;const i=e.stack;let o=t.length;for(let l=0;l=4){r-=4;if(this.seacAnalysisEnabled){e.seac=i.slice(r,r+4);return!1}}c=Ma[f]}else if(f>=32&&f<=246){i[r]=f-139;r++}else if(f>=247&&f<=254){i[r]=f<251?(f-247<<8)+t[l]+108:-(f-251<<8)-t[l]-108;l++;r++}else if(255===f){i[r]=s.getInt32(l)/65536;l+=4;r++}else if(19===f||20===f){e.hints+=r>>1;if(0===e.hints){t.copyWithin(l-1,l,-1);l-=1;o-=1;continue}l+=e.hints+7>>3;r%=2;c=Ma[f]}else{if(10===f||29===f){const t=10===f?n:a;if(!t){c=Ma[f];warn("Missing subrsIndex for "+c.id);return!1}let s=32768;t.count<1240?s=107:t.count<33900&&(s=1131);const o=i[--r]+s;if(o<0||o>=t.count||isNaN(o)){c=Ma[f];warn("Out of bounds subrIndex for "+c.id);return!1}e.stackSize=r;e.callDepth++;if(!this.parseCharString(e,t.get(o),n,a))return!1;e.callDepth--;r=e.stackSize;continue}if(11===f){e.stackSize=r;return!0}if(0===f&&l===t.length){t[l-1]=14;c=Ma[14]}else{if(9===f){t.copyWithin(l-1,l,-1);l-=1;o-=1;continue}c=Ma[f]}}if(c){if(c.stem){e.hints+=r>>1;if(3===f||23===f)e.hasVStems=!0;else if(e.hasVStems&&(1===f||18===f)){warn("CFF stem hints are in wrong order");t[l-1]=1===f?3:23}}if(r=2&&c.stem?r%=2:r>1&&warn("Found too many parameters for stack-clearing command");r>0&&(e.width=i[r-1])}if("stackDelta"in c){"stackFn"in c&&c.stackFn(i,r);r+=c.stackDelta}else(c.stackClearing||c.resetStack)&&(r=0)}}o=s.length){warn("Invalid fd index for glyph index.");h=!1}if(h){m=s[e].privateDict;u=m.subrsIndex}}else t&&(u=t);h&&=this.parseCharString(c,l,u,n);if(null!==c.width){const e=m.getByName("nominalWidthX");o[f]=e+c.width}else{const e=m.getByName("defaultWidthX");o[f]=e}null!==c.seac&&(i[f]=c.seac);h||e.set(f,new Uint8Array([14]))}return{charStrings:e,seacs:i,widths:o}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const n=t[0],a=t[1];if(0===n||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}if(a+n>this.bytes.length)throw new FormatError("CFF Private DICT extends past end of font");const s=a+n,r=this.bytes.subarray(a,s),i=this.parseDict(r),o=this.createDict(CFFPrivateDict,i,e.strings);e.privateDict=o;const l=o.getByName("BlueScale"),f=o.getByName("BlueShift"),c=o.getByName("BlueFuzz"),h=o.getByName("ExpansionFactor");if(0===l&&0===f&&0===c&&0===h){o.setByName("BlueScale",Da);o.setByName("BlueShift",7);o.setByName("BlueFuzz",1)}0===h&&o.setByName("ExpansionFactor",.06);if(l>0){let e=0;for(const t of[o.getByName("BlueValues"),o.getByName("OtherBlues")])if(t)for(let n=1;ne&&(e=t[n]);if(e>0){const t=1e5,n=.5/e,a=MathClamp(l,n<=Da?Math.ceil(n*t)/t:-1/0,Math.floor(t/e)/t);a!==l&&o.setByName("BlueScale",a)}}if(!o.getByName("Subrs"))return;const u=o.getByName("Subrs"),m=a+u;if(0===u||m>=this.bytes.length){this.emptyPrivateDictionary(e);return}const p=this.parseIndex(m);o.subrsIndex=p.obj}parseCharsets(e,t,n,a){if(0===e)return new CFFCharset(!0,_a.ISO_ADOBE,Ta);if(1===e)return new CFFCharset(!0,_a.EXPERT,Ra);if(2===e)return new CFFCharset(!0,_a.EXPERT_SUBSET,Oa);const{bytes:s}=this,r=s[e++],i=[a?0:".notdef"];let o,l,f;t-=1;switch(r){case 0:for(f=0;f=65535){warn("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}class CFFHeader{constructor(e,t,n,a){this.major=e;this.minor=t;this.hdrSize=n;this.offSize=a}}class CFFStrings{strings=[];get(e){return e>=0&&e<=390?Ha[e]:e-Ba<=this.strings.length?this.strings[e-Ba]:Ha[0]}getSID(e){let t=Ha.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+Ba:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}class CFFIndex{objects=[];length=0;add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const n of t)if(isNaN(n)){warn(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const n=this.types[e];"num"!==n&&"sid"!==n&&"offset"!==n||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const n of e){const e=Array.isArray(n[0])?(n[0][0]<<8)+n[0][1]:n[0];t.keyToNameMap[e]=n[1];t.nameToKeyMap[n[1]]=e;t.types[e]=n[2];t.defaults[e]=n[3];t.opcodes[e]=Array.isArray(n[0])?n[0]:[n[0]];t.order.push(e)}return t}}const Pa=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(Pa))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}const Ea=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",Da],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(Ea))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}const _a={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,n){this.predefined=e;this.format=t;this.charset=n}}class CFFEncoding{constructor(e,t,n,a){this.predefined=e;this.format=t;this.encoding=n;this.raw=a}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class CFFOffsetTracker{offsets=Object.create(null);isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,n){if(!(e in this.offsets))throw new FormatError(`Not tracking location of ${e}`);const a=n.data,s=this.offsets[e];for(let e=0,n=t.length;e>24&255;a[i]=f>>16&255;a[o]=f>>8&255;a[l]=255&f}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t=new DataBuilder({minLength:e.rawFileLength}),n=this.compileHeader(e.header);t.setArray(n);const a=this.compileNameIndex(e.names);t.setArray(a);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const n of e.fdArray){let e=t.slice(0);n.hasName("FontMatrix")&&(e=Util.transform(e,n.getByName("FontMatrix")));n.setByName("FontMatrix",e)}}const s=e.topDict.getByName("XUID");s?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let r=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.setArray(r.output);const i=r.trackers[0],o=this.compileStringIndex(e.strings.strings);t.setArray(o);const l=this.compileIndex(e.globalSubrIndex);t.setArray(l);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)i.setEntryLocation("Encoding",[e.encoding.format],t);else{const n=this.compileEncoding(e.encoding);i.setEntryLocation("Encoding",[t.length],t);t.setArray(n)}const f=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);i.setEntryLocation("charset",[t.length],t);t.setArray(f);const c=this.compileCharStrings(e.charStrings);i.setEntryLocation("CharStrings",[t.length],t);t.setArray(c);if(e.isCIDFont){i.setEntryLocation("FDSelect",[t.length],t);const n=this.compileFDSelect(e.fdSelect);t.setArray(n);r=this.compileTopDicts(e.fdArray,t.length,!0);i.setEntryLocation("FDArray",[t.length],t);t.setArray(r.output);const a=r.trackers;this.compilePrivateDicts(e.fdArray,a,t)}this.compilePrivateDicts([e.topDict],[i],t);t.setArray([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return shadow(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const n=CFFCompiler.EncodeFloatRegExp.exec(t);if(n){const a=parseFloat("1e"+((n[2]?+n[2]:0)+n[1].length));t=(Math.round(e*a)/a).toString()}let a,s,r="";for(a=0,s=t.length;a=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const n of e){const e=Math.min(n.length,127);let a=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");a[t]=e}a=a.join("");""===a&&(a="Bad_Font_Name");t.add(stringToBytes(a))}return this.compileIndex(t)}compileTopDicts(e,t,n){const a=[];let s=new CFFIndex;for(const r of e){if(n){r.removeByName("CIDFontVersion");r.removeByName("CIDFontRevision");r.removeByName("CIDFontType");r.removeByName("CIDCount");r.removeByName("UIDBase")}const e=new CFFOffsetTracker,i=this.compileDict(r,e);a.push(e);s.add(i);e.offset(t)}s=this.compileIndex(s,a);return{trackers:a,output:s}}compilePrivateDicts(e,t,n){for(let a=0,s=e.length;a>8&255,255&e])}else{s=new Uint8Array(1+2*r);let t=0;const a=e.charset.length;let i=!1;for(let r=1;r>8&255;s[r+1]=255&o}}return s}compileEncoding(e){return e.raw}compileFDSelect(e){const t=e.format;let n,a;switch(t){case 0:n=new Uint8Array(1+e.fdSelect.length);n[0]=t;n.set(e.fdSelect,1);break;case 3:const s=0;let r=e.fdSelect[0];const i=[t,0,0,s>>8&255,255&s,r];for(a=1;a>8&255,255&a,t);r=t}}const o=(i.length-3)/3;i[1]=o>>8&255;i[2]=255&o;i.push(a>>8&255,255&a);n=new Uint8Array(i)}return n}compileIndex(e,t=[]){const n=e.objects,a=n.length;if(0===a)return new Uint8Array(2);let s,r,i=1;for(s=0;s>8&255;o[l++]=255&a;o[l++]=r;let f=1;for(s=0;s>8&255;o[l++]=255&f}else if(3===r){o[l++]=f>>16&255;o[l++]=f>>8&255;o[l++]=255&f}else{o[l++]=f>>>24&255;o[l++]=f>>16&255;o[l++]=f>>8&255;o[l++]=255&f}n[s]&&(f+=n[s].length)}for(s=0;se.getSize()+3&-4))}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),n=e>131070,a=n?4:2,s=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));n?s.setUint32(0,0):s.setUint16(0,0);let r=0,i=0;for(const e of this.glyphs){r+=e.write(r,t);r=r+3&-4;i+=a;n?s.setUint32(i,r):s.setUint16(i,r>>1)}return{isLocationLong:n,loca:new Uint8Array(s.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,n=this.glyphs.length;te.getSize()));return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const n=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const n of this.composites)e+=n.write(e,t);return e-n}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const n of this.composites)n.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:n,xMax:a,yMax:s}){this.numberOfContours=e;this.xMin=t;this.yMin=n;this.xMax=a;this.yMax=s}static parse(e,t){return[Qa,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return Qa}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return Qa}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:n}){this.xCoordinates=t;this.yCoordinates=n;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,n){const a=[];for(let s=0;s255?e+=2:o>0&&(e+=1);t=r;o=Math.abs(i-n);o>255?e+=2:o>0&&(e+=1);n=i}}return e}write(e,t){const n=e,a=[],s=[],r=[];let i=0,o=0;for(const n of this.contours){for(let e=0,t=n.xCoordinates.length;e=0?18:2;a.push(e)}else a.push(f)}i=l;const c=n.yCoordinates[e];f=c-o;if(0===f){t|=32;s.push(0)}else{const e=Math.abs(f);if(e<=255){t|=f>=0?36:4;s.push(e)}else s.push(f)}o=c;r.push(t)}t.setUint16(e,a.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const n of r)t.setUint8(e++,n);for(let n=0,s=a.length;n=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const n=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(this.flags&Ja){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-n}scale(e,t){}}class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].codePointAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const n in t)if(t[n]===e)return 0|n;return-1}amend(e){for(const t in e)this._map[t]=e[t]}}class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,n=this.lastChar;t<=n;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){return this.firstChar<=e&&e<=this.lastChar?String.fromCharCode(e):void 0}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){unreachable("Should not call amend()")}}class CFFFont{constructor(e,t){this.properties=t;const n=new CFFParser(e,t,!0);this.cff=n.parse();this.cff.duplicateFirstGlyph();const a=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=a.compile()}catch(n){warn(`Failed to compile font "${t.loadedName}": "${n}".`);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,t=this.properties,{cidToGidMap:n,cMap:a}=t,s=e.charset.charset;let r,i;if(t.composite){let t,o;if(n?.length>0){t=Object.create(null);for(let e=0,a=n.length;e=0){const a=n[t];a&&(s[e]=a)}}s.length>0&&(this.properties.builtInEncoding=s)}}class CSS_FONT_INFO{static strings=["fontFamily","fontWeight","italicAngle"]}class SYSTEM_FONT_INFO{static strings=["css","loadedName","baseFontName","src"]}class FONT_INFO{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(2*this.bools.length/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+8*this.numbers.length;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 PATTERN_INFO{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 InfoUtils{static get decoder(){return shadow(this,"decoder",new TextDecoder)}static get encoder(){return shadow(this,"encoder",new TextEncoder)}}function compileFontInfo(e){const t=e.systemFontInfo?function compileSystemFontInfo(e){const{encoder:t}=InfoUtils,n={};let a=0;for(const s of SYSTEM_FONT_INFO.strings){const r=t.encode(e[s]);n[s]=r;a+=4+r.length}a+=4;let s,r,i=1+a;if(e.style){s=t.encode(e.style.style);r=t.encode(e.style.weight);i+=4+s.length+4+r.length}const o=new ArrayBuffer(i),l=new Uint8Array(o),f=new DataView(o);let c=0;f.setUint8(c++,e.guessFallback?1:0);f.setUint32(c,0);c+=4;a=0;for(const e of SYSTEM_FONT_INFO.strings){const t=n[e],s=t.length;a+=4+s;f.setUint32(c,s);l.set(t,c+4);c+=4+s}f.setUint32(c-a-4,a);if(e.style){f.setUint32(c,s.length);l.set(s,c+4);c+=4+s.length;f.setUint32(c,r.length);l.set(r,c+4);c+=4+r.length}assert(c<=o.byteLength,"compileSystemFontInfo: Buffer overflow");return o.transferToFixedLength(c)}(e.systemFontInfo):null,n=e.cssFontInfo?function compileCssFontInfo(e){const{encoder:t}=InfoUtils,n={};let a=0;for(const s of CSS_FONT_INFO.strings){const r=t.encode(e[s]);n[s]=r;a+=4+r.length}const s=new ArrayBuffer(a),r=new Uint8Array(s),i=new DataView(s);let o=0;for(const e of CSS_FONT_INFO.strings){const t=n[e],a=t.length;i.setUint32(o,a);r.set(t,o+4);o+=4+a}assert(o===s.byteLength,"compileCssFontInfo: Buffer overflow");return s}(e.cssFontInfo):null,{encoder:a}=InfoUtils,s={};let r=0;for(const t of FONT_INFO.strings){s[t]=a.encode(e[t]);r+=4+s[t].length}const i=FONT_INFO.OFFSET_STRINGS+4+r+4+(t?.byteLength??0)+4+(n?.byteLength??0)+4+(e.data?.length??0),o=new ArrayBuffer(i),l=new Uint8Array(o),f=new DataView(o);let c=0;const h=FONT_INFO.bools.length;let u=0,m=0;for(let t=0;t=33900?32768:t<1240?107:1131}function parseCmap(e,t,n){const a=new DataView(e.buffer,e.byteOffset,e.byteLength),s=1===a.getUint16(t+2)?a.getUint32(t+8):a.getUint32(t+16),r=a.getUint16(t+s);let i,o,l;if(4===r){const e=a.getUint16(t+s+6)>>1;o=t+s+14;i=[];for(l=0;l>1;n0;)h.push({flags:o})}for(n=0;n>1;j=!0;break;case 4:i+=s.pop();moveTo(r,i);j=!0;break;case 5:for(;s.length>0;){r+=s.shift();i+=s.shift();lineTo(r,i)}break;case 6:for(;s.length>0;){r+=s.shift();lineTo(r,i);if(0===s.length)break;i+=s.shift();lineTo(r,i)}break;case 7:for(;s.length>0;){i+=s.shift();lineTo(r,i);if(0===s.length)break;r+=s.shift();lineTo(r,i)}break;case 8:for(;s.length>0;){c=r+s.shift();u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m+s.shift();bezierCurveTo(c,u,h,m,r,i)}break;case 10:b=s.pop();w=null;if(n.isCFFCIDFont){const e=n.fdSelect.getFDIndex(a);if(e>=0&&eMath.abs(i-t)?r+=s.shift():i+=s.shift();bezierCurveTo(c,u,h,m,r,i);break;default:throw new FormatError(`unknown operator: 12 ${k}`)}break;case 14:if(s.length>=4){const e=s.pop(),a=s.pop();i=s.pop();r=s.pop();t.save();t.translate(r,i);let o=lookupCmap(n.cmap,String.fromCharCode(n.glyphNameMap[pa[e]]));compileCharString(n.glyphs[o.glyphId],t,n,o.glyphId);t.restore();o=lookupCmap(n.cmap,String.fromCharCode(n.glyphNameMap[pa[a]]));compileCharString(n.glyphs[o.glyphId],t,n,o.glyphId)}return;case 19:case 20:o+=s.length>>1;f+=o+7>>3;j=!0;break;case 21:i+=s.pop();r+=s.pop();moveTo(r,i);j=!0;break;case 22:r+=s.pop();moveTo(r,i);j=!0;break;case 24:for(;s.length>2;){c=r+s.shift();u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m+s.shift();bezierCurveTo(c,u,h,m,r,i)}r+=s.shift();i+=s.shift();lineTo(r,i);break;case 25:for(;s.length>6;){r+=s.shift();i+=s.shift();lineTo(r,i)}c=r+s.shift();u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m+s.shift();bezierCurveTo(c,u,h,m,r,i);break;case 26:s.length%2&&(r+=s.shift());for(;s.length>0;){c=r;u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h;i=m+s.shift();bezierCurveTo(c,u,h,m,r,i)}break;case 27:s.length%2&&(i+=s.shift());for(;s.length>0;){c=r+s.shift();u=i;h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m;bezierCurveTo(c,u,h,m,r,i)}break;case 28:s.push(l.getInt16(f));f+=2;break;case 29:b=s.pop()+n.gsubrsBias;w=n.gsubrs[b];w&&parse(w);break;case 30:for(;s.length>0;){c=r;u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m+(1===s.length?s.shift():0);bezierCurveTo(c,u,h,m,r,i);if(0===s.length)break;c=r+s.shift();u=i;h=c+s.shift();m=u+s.shift();i=m+s.shift();r=h+(1===s.length?s.shift():0);bezierCurveTo(c,u,h,m,r,i)}break;case 31:for(;s.length>0;){c=r+s.shift();u=i;h=c+s.shift();m=u+s.shift();i=m+s.shift();r=h+(1===s.length?s.shift():0);bezierCurveTo(c,u,h,m,r,i);if(0===s.length)break;c=r;u=i+s.shift();h=c+s.shift();m=u+s.shift();r=h+s.shift();i=m+(1===s.length?s.shift():0);bezierCurveTo(c,u,h,m,r,i)}break;default:if(k<32)throw new FormatError(`unknown operator: ${k}`);if(k<247)s.push(k-139);else if(k<251)s.push(256*(k-247)+e[f++]+108);else if(k<255)s.push(256*-(k-251)-e[f++]-108);else{s.push(l.getInt32(f)/65536);f+=4}}j&&(s.length=0)}}(e)}class Commands{cmds=[];transformStack=[];currentTransform=[1,0,0,1,0,0];add(e,t){if(t){const{currentTransform:n}=this;for(let e=0,a=t.length;e{try{return this.compileGlyph(this.glyphs[n],n)}catch(e){return e}});this.#he.add(t);if(a instanceof Error)throw a;return function compileFontPathInfo(e){return e.slice().buffer}(a)}compileGlyph(e,t){if(!e?.length||14===e[0])return CompiledFont.NOOP;let n=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&ee.getUint32(t)}else{s=2;r=(e,t)=>2*e.getUint16(t)}const i=[];let o=r(a,0);for(let n=s;nn;){n<<=1;a++}const s=n*t;return{range:s,entry:a,rangeShift:t*e-s}}toArray(){let e=this.sfnt;const t=this.#me,n=[...t.keys()].sort(),a=n.length;let s=12+16*a;const r=[s];for(let e=0;e>>0;r.push(s)}const i=new Uint8Array(s),o=new DataView(i.buffer);for(let e=0;e>>0}o.setInt32(s+4,l);o.setInt32(s+8,r[e]);o.setInt32(s+12,t.get(a).length);s+=16}this.#me.clear();return i}addTable(e,t){if(this.#me.has(e))throw new Error(`Table ${e} already exists`);this.#me.set(e,t)}}const ts=[4],ns=[5],as=[6],ss=[7],rs=[8],is=[12,35],os=[14],ls=[21],fs=[22],cs=[30],hs=[31];class Type1CharString{width=0;lsb=0;flexing=!1;output=[];stack=[];convert(e,t,n){const a=e.length;let s,r,i,o=!1;for(let l=0;la)return!0;const s=a-e;for(let e=s;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);n?this.stack.splice(s,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,n){if(n>=e.length)return new Uint8Array(0);let a,s,r=0|t;for(a=0;a>8;r=52845*(t+r)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}class Type1Parser{constructor(e,t,n){if(t){const t=e.getBytes(),n=!((isHexDigit(t[0])||isWhiteSpace(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new Stream(n?decrypt(t,55665,4):function decryptAscii(e,t,n){let a=0|t;const s=e.length,r=new Uint8Array(s>>>1);let i,o;for(i=0,o=0;i>8;a=52845*(e+a)+22719&65535}}return r.slice(n,o)}(t,55665,4))}this.seacAnalysisEnabled=!!n;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let n="";do{n+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!isWhiteSpace(t)&&!isSpecial(t));return n}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,n=[],a=[],s=new Map([["lenIV",4]]),r={subrs:[],charstrings:[],properties:{privateData:s}};let i,o,l,f=!1,c=!1;for(;null!==(i=this.getToken());)if("/"===i){i=this.getToken();switch(i){case"CharStrings":if(c)break;c=!0;this.getToken();this.getToken();this.getToken();this.getToken();for(;;){i=this.getToken();if(null===i||"end"===i)break;if("/"!==i)continue;const e=this.getToken();o=this.readInt();this.getToken();l=o>0?t.getBytes(o):new Uint8Array(0);const n=this.readCharStrings(l,s.get("lenIV"));this.nextChar();i=this.getToken();"noaccess"===i?this.getToken():"/"===i&&this.prevChar();a.push({glyph:e,encoded:n})}break;case"Subrs":if(f)break;f=!0;this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();l=o>0?t.getBytes(o):new Uint8Array(0);const a=this.readCharStrings(l,s.get("lenIV"));this.nextChar();i=this.getToken();"noaccess"===i&&this.getToken();n[e]=a}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();0;break;case"StemSnapH":case"StemSnapV":s.set(i,this.readNumberArray());break;case"StdHW":case"StdVW":s.set(i,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":s.set(i,this.readNumber());break;case"ExpansionFactor":s.set(i,this.readNumber()||.06);break;case"ForceBold":s.set(i,this.readBoolean())}}for(const{encoded:t,glyph:s}of a){const a=new Type1CharString,i={glyphName:s,charstring:a.convert(t,n,this.seacAnalysisEnabled)?[14]:a.output,width:a.width,lsb:a.lsb,seac:a.seac};".notdef"===s?r.charstrings.unshift(i):r.charstrings.push(i);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(s);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=a.width)}}return r}extractCidKeyedFontProgram(e){const t=this.stream,n=new Map([["lenIV",4]]),a={subrs:[],charstrings:[],properties:{privateData:n}};let s=0,r=-1,i=1,o=0,l=-1,f=0,c=0,h=0,u=!1,m=!1;const p=[];function rememberToken(e){p.push(e);p.length>4&&p.shift()}let d;for(;null!==(d=this.getToken());){if("StartData"===d){const e=p.at(-3),t=p.at(-1);if("("!==p.at(-4)||")"!==p.at(-2)||"Binary"!==e&&"Hex"!==e||!/^\d+$/.test(t))return null;h=parseInt(t,10);if(h<=0)return null;u="Hex"===e;m=!0;break}rememberToken(d);if("/"===d){d=this.getToken();rememberToken(d);switch(d){case"FontMatrix":e.fontMatrix=this.readNumberArray();break;case"FontBBox":const t=this.readNumberArray();e.ascent=Math.max(t[3],t[1]);e.descent=Math.min(t[1],t[3]);e.ascentScaled=!0;break;case"CIDCount":s=this.readInt();break;case"CIDMapOffset":r=this.readInt();break;case"FDBytes":i=this.readInt();break;case"GDBytes":o=this.readInt();break;case"SubrMapOffset":l=this.readInt();break;case"SDBytes":f=this.readInt();break;case"SubrCount":c=this.readInt();break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":this.readNumberArray();break;case"StemSnapH":case"StemSnapV":n.set(d,this.readNumberArray());break;case"StdHW":case"StdVW":n.set(d,this.readNumberArray()[0]);break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":n.set(d,this.readNumber());break;case"ExpansionFactor":n.set(d,this.readNumber()||.06);break;case"ForceBold":n.set(d,this.readBoolean())}}}if(!m||s<=0||r<0||i<0||i>4||o<1||o>4)return null;const g=t.end-t.pos;if(h>g)if(u){if(h>2*g)return null}else h=g;let b=t.getBytes(u?void 0:h);if(u){const e=new Uint8Array(h);let t=-1,n=0;for(let a=0,s=b.length;a>>0}if(r+(s+1)*j>b.length||c>0&&(l<0||f<1||f>4||l+(c+1)*f>b.length))return null;if(i>0)for(let e=0;e0){const e=new Array(c+1);for(let t=0;t<=c;t++)e[t]=readUint(l+t*f,f);for(let t=0;tb.length||aq&&t<=b.length){const e=this.readCharStrings(b.subarray(q,t),w),a=new Type1CharString,s=a.convert(e,k,this.seacAnalysisEnabled);y.push({glyphName:n,charstring:s?[14]:a.output,width:a.width,lsb:a.lsb,seac:a.seac})}else{const e=y[0];y.push({glyphName:n,charstring:e?.charstring.slice()||[139,14],width:e?.width||0,lsb:e?.lsb||0})}q=t}a.subrs=k;a.charstrings=y;return a}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const n=this.readNumberArray();e.fontMatrix=n;break;case"Encoding":const a=this.getToken();let s;if(/^\d+$/.test(a)){s=[];const e=0|parseInt(a,10);this.getToken();for(let n=0;n=s){i+=n;for(;i=0&&(a[e]=s)}}return type1FontGlyphMapping(e,a,n)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let n=0,a=e.length;n0;e--)t[e]-=t[e-1];h.setByName(e,t)}r.topDict.privateDict=h;const m=new CFFIndex;for(const e of a)m.add(e);h.subrsIndex=m;return new CFFCompiler(r).compile()}}const us=[[57344,63743],[1048576,1114109]],ms=1e3,ps=["ascent","bbox","black","bold","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","disableFontFace","fallbackName","fontExtraProperties","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","systemFontInfo","vertical"],ds=["cMap","composite","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","subtype","toFontChar","toUnicode","type","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===a[0])return;const t=.001/e.fontMatrix[0],n=e.widths;for(const e in n)n[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const t=[];for(const n in e.fallbackToUnicode)e.toUnicode.has(n)||(t[n]=e.fallbackToUnicode[n]);t.length>0&&e.toUnicode.amend(t)}class fonts_Glyph{constructor(e,t,n,a,s,r,i,o,l){this.originalCharCode=e;this.fontChar=t;this.unicode=n;this.accent=a;this.width=s;this.vmetric=r;this.operatorListId=i;this.isSpace=o;this.isInFont=l}get category(){return shadow(this,"category",function getCharUnicodeCategory(e){const t=va.get(e);if(t)return t;const n=e.match(qa),a={isWhitespace:!!n?.[1],isZeroWidthDiacritic:!!n?.[2],isInvisibleFormatMark:!!n?.[3]};va.set(e,a);return a}(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,n){e[t+1]=n;e[t]=n>>>8}function signedInt16(e,t){const n=(e<<8)+t;return 32768&n?n-65536:n}function writeUint32(e,t,n){e[t+3]=255&n;e[t+2]=n>>>8;e[t+1]=n>>>16;e[t]=n>>>24}function isTrueTypeCollectionFile(e){return"ttcf"===bytesToString(e.peekBytes(4))}function getFontFileType(e,{type:t,subtype:n,composite:a}){let s,r;if(function isTrueTypeFile(e){const t=bytesToString(e.peekBytes(4));return"\0\0\0"===t||"true"===t}(e)||isTrueTypeCollectionFile(e))s=a?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){return"OTTO"===bytesToString(e.peekBytes(4))}(e))s=a?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))s=a?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(a){s="CIDFontType0";r="CIDFontType0C"}else{s="MMType1"===t?"MMType1":"Type1";r="Type1C"}else{warn("getFontFileType: Unable to detect correct font file Type/Subtype.");s=t;r=n}return[s,r]}function applyStandardFontGlyphMap(e,t){for(const n in t)e[+n]=t[n]}const gs=getLookupTableFactory(e=>{let t=3;for(const[n,a]of[[32,126],[161,254]])for(let s=n;s<=a;s++)e[t++]=ga[s]},!0);function buildToFontChar(e,t,n){const a=[];let s;for(let n=0,r=e.length;nus[0][0]<=e&&e<=us[0][1]||us[1][0]<=e&&e<=us[1][1];let h=null;for(const u in e){let m=e[u];if(!t(m))continue;if(f>c){l++;if(l>=us.length){warn("Ran out of space in font private use area.");break}f=us[l][0];c=us[l][1]}const p=f++;0===m&&(m=n);let d=a.get(u);if("string"==typeof d)if(1===d.length)d=d.codePointAt(0);else{if(!h){h=new Map;for(let e=64256;e<=64335;e++){const t=String.fromCharCode(e).normalize("NFKD");t.length>1&&h.set(t,e)}}d=h.get(d)||d.codePointAt(0)}if(d&&!isInPrivateArea(d)&&!o.has(m)){r.set(d,m);o.add(m)}s[p]=m;i[u]=p}return{toFontChar:i,charCodeToGlyphId:s,toUnicodeExtraMap:r,nextAvailableFontCharCode:f}}function createCmapTable(e,t,n){const a=function getRanges(e,t,n){const a=[];for(const t in e)e[t]>=n||a.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,s]of t)s>=n||a.push({fontCharCode:e,glyphId:s});0===a.length&&a.push({fontCharCode:0,glyphId:0});a.sort((e,t)=>e.fontCharCode-t.fontCharCode);const s=[],r=a.length;for(let e=0;e65535;let r,i,o,l;for(r=a.length-1;r>=0&&!(a[r][0]<=65535);--r);const f=r+1;a[r][0]<65535&&65535===a[r][1]&&(a[r][1]=65534);const c=a[r][1]<65535?1:0,h=f+c,u=OpenTypeFileBuilder.getSearchParams(h,2),m=2*f+2*c,p=new DataBuilder({exactLength:m}),d=new DataBuilder({exactLength:m}),g=new DataBuilder({exactLength:m}),b=new DataBuilder({exactLength:m}),w=new DataBuilder({});let j=0,k=!1;for(r=0,i=f;r65535){k=!0;b.skip(2)}else b.setInt16(a);for(o=0,l=n.length;o0){d.setArray([255,255]);p.setArray([255,255]);g.setArray([0,1]);b.skip(2)}const y=new DataBuilder({exactLength:12+p.length+d.length+g.length+b.length+w.length});y.skip(2);y.setInt16(2*h);y.setInt16(u.range);y.setInt16(u.entry);y.setInt16(u.rangeShift);y.setArray(d.data);y.skip(2);y.setArray(p.data);y.setArray(g.data);y.setArray(b.data);y.setArray(w.data);const q=!k&&y.length+4<=65535,v=s||!q,S=(q?1:0)+(v?1:0);let x=null,C=null;if(v){x=new DataBuilder({});for(const e of a){let t=e[0];const n=e[2];let a=n[0];for(o=1,l=n.length;oe||!o)&&(o=e);l 123 are reserved for internal usage");i|=1<65535&&(l=65535)}else{o=0;l=255}const c=e.bbox||[0,0,0,0],h=n.unitsPerEm||(e.fontMatrix?1/Math.max(...e.fontMatrix.slice(0,4).map(Math.abs)):1e3),u=e.ascentScaled?1:h/ms,m=n.ascent||Math.round(u*(e.ascent||c[3]));let p=n.descent||Math.round(u*(e.descent||c[1]));p>0&&e.descent>0&&c[1]<0&&(p=-p);const d=n.yMax||m,g=-n.yMin||-p,b=new DataBuilder({exactLength:96});b.setArray([0,3]);b.setArray([2,36]);b.setArray([1,244]);b.setArray([0,5]);b.skip(2);b.setArray([2,138]);b.setArray([2,187]);b.skip(2);b.setArray([0,140]);b.setArray([2,138]);b.setArray([2,187]);b.skip(2);b.setArray([1,223]);b.setArray([0,49]);b.setArray([1,2]);b.skip(2);b.setArray([0,0,6,e.fixedPitch?9:0,0,0,0,0,0,0]);b.setInt32(a);b.setInt32(s);b.setInt32(r);b.setInt32(i);b.setArray([42,50,49,42]);b.setInt16(e.italicAngle?1:0);b.setInt16(o||e.firstChar);b.setInt16(l||e.lastChar);b.setInt16(m);b.setInt16(p);b.setArray([0,100]);b.setInt16(d);b.setInt16(g);b.skip(8);b.setInt16(e.xHeight);b.setInt16(e.capHeight);b.skip(2);b.setInt16(o||e.firstChar);b.setArray([0,3]);return b.data}function createPostTable(e){const t=new DataBuilder({exactLength:32});t.setArray([0,3,0,0]);t.setInt32(Math.floor(65536*e.italicAngle));t.skip(4);t.setInt32(e.fixedPitch?1:0);t.skip(16);return t.data}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||=[[],[]];const n=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],a=n.map(stringToBytes),s=new Array(n.length);let r,i,o,l,f;for(r=0,i=n.length;re.length))+Math.sumPrecise(a.map(e=>e.length))+Math.sumPrecise(s.map(e=>e.length))});b.skip(2);b.setInt16(g);b.setInt16(12*g+6);for(const e of p)b.setArray(e);for(const e of a)b.setArray(e);for(const e of s)b.setArray(e);return b.data}class Font{#be=new Map;#we=new Map;charProcOperatorList;constructor(e,t,n,a){this.name=e;this.psName=null;this.mimetype=null;this.disableFontFace=a.disableFontFace;this.fontExtraProperties=a.fontExtraProperties;this.loadedName=n.loadedName;this.isType3Font=n.isType3Font;this.missingFile=!1;this.cssFontInfo=n.cssFontInfo;let s=!!(n.flags&Aa);if(!s&&!n.isSimulatedFlags){const t=za(),n=Ua(),a=Wa();for(const r of e.split("+")){let e=normalizeFontName(r);e=t[e]||n[e]||e;e=e.split("-",1)[0];if(a[e]){s=!0;break}}}this.isSerifFont=s;this.isSymbolicFont=!!(n.flags&xa);this.isMonospace=!!(n.flags&Sa);let{type:r,subtype:i}=n;this.type=r;this.subtype=i;this.systemFontInfo=n.systemFontInfo;const o=e.match(/^InvalidPDFjsFont_(.*)_\d+$/);this.isInvalidPDFjsFont=!!o;this.isInvalidPDFjsFont?this.fallbackName=o[1]:this.isMonospace?this.fallbackName="monospace":this.isSerifFont?this.fallbackName="serif":this.fallbackName="sans-serif";if(this.systemFontInfo?.guessFallback){this.systemFontInfo.guessFallback=!1;this.systemFontInfo.css+=`,${this.fallbackName}`}this.differences=n.differences;this.widths=n.widths;this.defaultWidth=n.defaultWidth;this.composite=n.composite;this.cMap=n.cMap;this.capHeight=n.capHeight/ms;this.ascent=n.ascent/ms;this.descent=n.descent/ms;this.lineHeight=this.ascent-this.descent;this.fontMatrix=n.fontMatrix;this.bbox=n.bbox;this.defaultEncoding=n.defaultEncoding;this.toUnicode=n.toUnicode;this.toFontChar=[];if("Type3"===n.type){for(let e=0;e<256;e++)this.toFontChar[e]=this.differences[e]||n.defaultEncoding[e];return}this.cidEncoding=n.cidEncoding||"";this.vertical=!!n.vertical;if(this.vertical){this.vmetrics=n.vmetrics;this.defaultVMetrics=n.defaultVMetrics}if(!t||t.isEmpty){t&&warn('Font file is empty in "'+e+'" ('+this.loadedName+")");this.fallbackToSystemFont(n);return}[r,i]=getFontFileType(t,n);r===this.type&&i===this.subtype||info(`Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${r}/${i}.`);let l;try{switch(r){case"MMType1":info("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const a="Type1C"===i||"CIDFontType0C"===i?new CFFFont(t,n):new Type1Font(e,t,n);adjustWidths(n);l=this.convert(e,a,n);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype";l=this.checkAndRepair(e,t,n);adjustWidths(n);this.isOpenType&&(r="OpenType");break;default:throw new FormatError(`Font ${r} is not supported`)}}catch(e){warn(e);this.fallbackToSystemFont(n);return}amendFallbackToUnicode(n);this.data=l;this.type=r;this.subtype=i;this.fontMatrix=n.fontMatrix;this.widths=n.widths;this.defaultWidth=n.defaultWidth;this.toUnicode=n.toUnicode;this.seacMap=n.seacMap}get renderer(){return shadow(this,"renderer",FontRendererFactory.create(this,!0))}#je(e){const t=Object.create(null);for(const n of e){const e=this[n];void 0!==e&&(t[n]=e)}return t}exportData(){return{buffer:compileFontInfo(this.#je(ps)),charProcOperatorList:this.charProcOperatorList,extra:this.fontExtraProperties?this.#je(ds):void 0}}fallbackToSystemFont(e){this.missingFile=!0;const{name:t,type:n}=this;let a=normalizeFontName(t);const s=za(),r=Ua(),i=!!s[a],o=!(!r[a]||!s[r[a]]);a=s[a]||r[a]||a;const l=es()[a];if(l){isNaN(this.ascent)&&(this.ascent=l.ascent/ms);isNaN(this.descent)&&(this.descent=l.descent/ms);isNaN(this.capHeight)&&(this.capHeight=l.capHeight/ms)}this.bold=/bold/i.test(a);this.italic=/oblique|italic/i.test(a);this.black=/Black/.test(t);const f=/Narrow/.test(t);this.remeasure=(!i||f)&&Object.keys(this.widths).length>0;if((i||o)&&"CIDFontType2"===n&&this.cidEncoding.startsWith("Identity-")){const n=e.cidToGidMap,a=[];if(/Trebuchet/i.test(t)){applyStandardFontGlyphMap(a,Ka());applyStandardFontGlyphMap(a,Va())}else{applyStandardFontGlyphMap(a,Ga());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(a,$a()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(a,Ya())}if(n){for(const e in a){const t=a[e];void 0!==n[t]&&(a[+e]=n[t])}n.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof IdentityToUnicodeMap&&this.toUnicode.forEach(function(e,t){const s=a[e];void 0===n[s]&&(a[+e]=t)})}this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach(function(e,t){a[+e]=t});this.toFontChar=a;this.toUnicode=new ToUnicodeMap(a)}else if(/Symbol/i.test(a)){const e=this.composite&&this.cidEncoding.startsWith("Identity-");this.toFontChar=buildToFontChar(e?gs():ga,wa(),this.differences)}else if(/Dingbats/i.test(a))this.toFontChar=buildToFontChar(ba,ja(),this.differences);else if(i||o){const e=buildToFontChar(this.defaultEncoding,wa(),this.differences);"CIDFontType2"!==n||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach(function(t,n){e[+t]=n});this.toFontChar=e}else{const e=wa(),n=[];this.toUnicode.forEach((t,a)=>{if(!this.composite){const n=getUnicodeForGlyph(this.differences[t]||this.defaultEncoding[t],e);-1!==n&&(a=n)}n[+t]=a});this.composite&&this.toUnicode instanceof IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(n,Ga());this.toFontChar=n}amendFallbackToUnicode(e);this.loadedName=a.split("-",1)[0]}checkAndRepair(e,t,n){const a=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const n=Object.create(null);n["OS/2"]=null;n.cmap=null;n.head=null;n.hhea=null;n.hmtx=null;n.maxp=null;n.name=null;n.post=null;for(let s=0;s>>0,a=e.getInt32()>>>0,s=e.getInt32()>>>0,r=e.pos;e.pos=e.start||0;e.skip(a);const i=e.getBytes(s);e.pos=r;if("head"===t){i[8]=i[9]=i[10]=i[11]=0;i[17]|=32}return{tag:t,checksum:n,length:s,offset:a,data:i,view:"CFF "===t?null:new DataView(i.buffer,i.byteOffset,i.byteLength)}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,n,a,s,r){const i={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||n>e.length||n-t<=12)return i;const o=e.subarray(t,n),l=signedInt16(o[2],o[3]),f=signedInt16(o[4],o[5]),c=signedInt16(o[6],o[7]),h=signedInt16(o[8],o[9]);if(l>c){writeSignedInt16(o,2,c);writeSignedInt16(o,6,l)}if(f>h){writeSignedInt16(o,4,h);writeSignedInt16(o,8,f)}const u=signedInt16(o[0],o[1]);if(u<0){if(u<-1)return i;a.set(o,s);i.length=o.length;return i}let m,p=10,d=0;for(m=0;mo.length)return i;if(!r&&b>0){a.set(o.subarray(0,g),s);a.set([0,0],s+g);a.set(o.subarray(w,k),s+g+2);k-=b;o.length-k>3&&(k=k+3&-4);i.length=k;return i}if(o.length-k>3){k=k+3&-4;a.set(o.subarray(0,k),s);i.length=k;return i}a.set(o,s);i.length=o.length;return i}function readNameTable(e){const n=(t.start||0)+e.offset;t.pos=n;const a=[[],[]],s=[],r=e.length,i=n+r;if(0!==t.getUint16()||r<6)return[a,s];const o=t.getUint16(),l=t.getUint16();let f,c;for(f=0;fi)continue;t.pos=r;const o=e.name;if(e.encoding){let n="";for(let a=0,s=e.length;a0&&(f+=e-1)}}else{if(g||w){warn("TT: nested FDEFs not allowed");d=!0}g=!0;h=f;i=u.pop();t.functionsDefined[i]={data:l,i:f}}else if(!g&&!w){i=u.at(-1);if(isNaN(i))info("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[i]=!0;if(i in t.functionsStackDeltas){const e=u.length+t.functionsStackDeltas[i];if(e<0){warn("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}u.length=e}else if(i in t.functionsDefined&&!p.includes(i)){m.push({data:l,i:f,stackTop:u.length-1});p.push(i);o=t.functionsDefined[i];if(!o){warn("TT: CALL non-existent function");t.hintsValid=!1;return}l=o.data;f=o.i}}}if(!g&&!w){let t=0;e<=142?t=s[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){a=u.pop();isNaN(a)||(t=2*-a)}for(;t<0&&u.length>0;){u.pop();t++}for(;t>0;){u.push(NaN);t--}}}t.tooComplexToFollowFunctions=d;const j=[l];f>l.length&&j.push(new Uint8Array(f-l.length));if(h>c){warn("TT: complementing a missing function tail");j.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let n,a,s=0;for(n=0,a=t.length;n>>0,r=[];for(let t=0;t>>0);const i={ttcTag:t,majorVersion:n,minorVersion:a,numFonts:s,offsetTable:r};switch(n){case 1:return i;case 2:i.dsigTag=e.getInt32()>>>0;i.dsigLength=e.getInt32()>>>0;i.dsigOffset=e.getInt32()>>>0;return i}throw new FormatError(`Invalid TrueType Collection majorVersion: ${n}.`)}(e),s=t.split("+");let r;for(let i=0;i=32))throw new FormatError('"maxp" table has a wrong version number');c=65536}writeUint32(i.maxp.data,0,c)}let u=int16(i.head.data[50],i.head.data[51]);if(i.loca){const e=u?4*(h+1):2*(h+1);if(i.loca.length!==e){warn("Incorrect 'loca' table length -- attempting to fix it.");const n=Object.values(i).filter(Boolean).sort((e,t)=>e.offset-t.offset),a=n.indexOf(i.loca),s=n[a+1]||null;if(s&&i.loca.offset+e>8&255;o[n+1]=255&a;writeSignedInt16(o,n+2,Math.round(e[t]*signedInt16(o[n+2],o[n+3])))}}let m=h+1,p=!0;if(m>65535){p=!1;m=h;warn("Not enough space in glyfs to duplicate first glyph.")}let d=0,g=0;if(c>=65536&&i.maxp.length>=32){t.pos+=8;if(t.getUint16()>2){i.maxp.data[14]=0;i.maxp.data[15]=2}t.pos+=4;d=t.getUint16();t.pos+=4;g=t.getUint16()}else if(o&&20480===c){const e=new Uint8Array(32);writeUint32(e,0,65536);e[4]=h>>8&255;e[5]=255&h;e.fill(255,6,14);e[15]=2;e[28]=255;e[29]=255;e[31]=16;i.maxp.data=e;i.maxp.length=32;c=65536}i.maxp.data[4]=m>>8;i.maxp.data[5]=255&m;const b=function sanitizeTTPrograms(e,t,n,a){const s={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,s);t&&sanitizeTTProgram(t,s);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){warn("TT: more functions defined than expected");e.hintsValid=!1}else for(let n=0,a=e.functionsUsed.length;nt){warn("TT: invalid function id: "+n);e.hintsValid=!1;return}if(e.functionsUsed[n]&&!e.functionsDefined[n]){warn("TT: undefined function: "+n);e.hintsValid=!1;return}}}(s,a);if(n&&1&n.length){const e=new Uint8Array(n.length+1);e.set(n.data);n.data=e}return s.hintsValid}(i.fpgm,i.prep,i["cvt "],d);if(!b){delete i.fpgm;delete i.prep;delete i["cvt "]}!function sanitizeMetrics(e,t,n,a,s,r){if(!t){n&&(n.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const i=e.getUint16();e.pos+=8;e.pos+=2;let o=e.getUint16();if(0!==i){if(!(2&int16(a.data[44],a.data[45]))){t.data[22]=0;t.data[23]=0}}if(o>s){info(`The numOfMetrics (${o}) should not be greater than the numGlyphs (${s}).`);o=s;t.data[34]=(65280&o)>>8;t.data[35]=255&o}const l=s-o-(n.length-4*o>>1);if(l>0){const e=new Uint8Array(n.length+2*l);e.set(n.data);if(r){e[n.length]=n.data[2];e[n.length+1]=n.data[3]}n.data=e}}(t,i.hhea,i.hmtx,i.head,m,p);if(!i.head)throw new FormatError('Required "head" table is not found');!function sanitizeHead(e,t,n){const{data:a,view:s}=e,r=s.getInt32(0);if(r>>16!=1){info("Attempting to fix invalid version in head table: "+r);s.setInt32(0,65536)}const i=signedInt16(a[50],a[51]);if(i<0||i>1){info("Attempting to fix invalid indexToLocFormat in head table: "+i);const e=t+1;if(n===e<<1){a[50]=0;a[51]=0}else{if(n!==e<<2)throw new FormatError("Could not fix indexToLocFormat: "+i);a[50]=0;a[51]=1}}}(i.head,h,o?i.loca.length:0);let w=Object.create(null);if(o){const e=function sanitizeGlyphLocations(e,t,n,a,s,r,i){let o,l,f;if(a){o=4;l=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};f=function fontItemEncodeLong(e,t,n){e[t]=n>>>24&255;e[t+1]=n>>16&255;e[t+2]=n>>8&255;e[t+3]=255&n}}else{o=2;l=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};f=function fontItemEncode(e,t,n){e[t]=n>>9&255;e[t+1]=n>>1&255}}const c=r?n+1:n,h=o*(1+c),u=new Uint8Array(h);u.set(e.data.subarray(0,h));e.data=u;const m=t.data,p=m.length,d=new Uint8Array(p);let g,b;const w=[];for(g=0,b=0;gp&&(e=p);w.push({index:g,offset:e,endOffset:0})}w.sort((e,t)=>e.offset-t.offset);for(g=0;ge.index-t.index);for(g=0;g=0)continue;const i=[];let o=n+Qa;for(;o+4<=r;){const e=a.getUint16(o),t=a.getUint16(o+2);let n=4+(1&e?4:2);8&e?n+=2:64&e?n+=4:128&e&&(n+=8);i.push({gid:t,offset:o,size:n,flags:e});o+=n;if(!(32&e))break}i.length&&(s[e]=i)}const r=new Uint8Array(n),i=new Map;for(let e=0;e0;){const e=t.at(-1),a=s[e.node];if(!a||e.idx>=a.length){r[e.node]=2;t.pop();continue}const o=e.idx++,l=a[o].gid;if(!(l>=n||2===r[l]))if(0!==r[l])i.getOrInsertComputed(e.node,makeSet).add(o);else{r[l]=1;t.push({node:l,idx:0})}}}const o=new Set;for(const[n,r]of i){const i=s[n],l=[];for(let e=0;ei&&(i=e.sizeOfInstructions);q+=t;f(u,b,q)}if(0===q){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(g=0,b=o;gn+q)t.data=d.subarray(0,n+q);else{t.data=new Uint8Array(n+q);t.data.set(d.subarray(0,q))}t.data.set(d.subarray(0,n),q);f(e.data,u.length-o,q+n)}else t.data=d.subarray(0,q);return{missingGlyphs:y,maxSizeOfInstructions:i}}(i.loca,i.glyf,h,u,b,p,g);w=e.missingGlyphs;if(c>=65536&&i.maxp.length>=32){i.maxp.data[26]=e.maxSizeOfInstructions>>8;i.maxp.data[27]=255&e.maxSizeOfInstructions}}if(!i.hhea)throw new FormatError('Required "hhea" table is not found');if(0===i.hhea.data[10]&&0===i.hhea.data[11]){i.hhea.data[10]=255;i.hhea.data[11]=255}const j={unitsPerEm:int16(i.head.data[18],i.head.data[19]),yMax:signedInt16(i.head.data[42],i.head.data[43]),yMin:signedInt16(i.head.data[38],i.head.data[39]),ascent:signedInt16(i.hhea.data[4],i.hhea.data[5]),descent:signedInt16(i.hhea.data[6],i.hhea.data[7]),lineGap:signedInt16(i.hhea.data[8],i.hhea.data[9])};this.ascent=j.ascent/j.unitsPerEm;this.descent=j.descent/j.unitsPerEm;this.lineGap=j.lineGap/j.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;i.post&&function readPostScriptTable(e,n,a){const s=(t.start||0)+e.offset;t.pos=s;const r=s+e.length,i=t.getInt32();t.skip(28);let o,l,f=!0;switch(i){case 65536:o=Ia;break;case 131072:const e=t.getUint16();if(e!==a){f=!1;break}const s=[];for(l=0;l=32768){f=!1;break}s.push(e)}if(!f)break;const c=[];for(;t.pos65535)throw new FormatError("Max size of CID is 65,535");let s=-1;t?s=a:void 0!==e[a]&&(s=e[a]);s>=0&&s>>0;let c=!1;if(o?.platformId!==s||o?.encodingId!==r){if(0!==s||0!==r&&1!==r&&3!==r)if(1===s&&0===r)c=!0;else if(3!==s||1!==r||!a&&o){if(n&&3===s&&0===r){c=!0;let n=!0;if(e>3;e.push(a);n=Math.max(a,n)}const a=[];for(let e=0;e<=n;e++)a.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let n=0;n<256;n++)if(0===e[n]){t.pos=a[0].idRangePos+2*n;m=t.getUint16();h.push({charCode:n,glyphId:m})}else{const s=a[e[n]];for(u=0;u>1;t.skip(6);const n=[];let a;for(a=0;a>1)-(e-a);s.offsetIndex=i;o=Math.max(o,i+s.end-s.start+1)}else s.offsetIndex=-1}const l=[];for(u=0;u>>0;for(u=0;u>>0,n=t.getInt32()>>>0;let a=t.getInt32()>>>0;for(let t=e;t<=n;t++)h.push({charCode:t,glyphId:a++})}}}const p=[],d=new Set;for(const e of h){const{charCode:t}=e;if(!d.has(t)){d.add(t);p.push(e)}}return{platformId:o.platformId,encodingId:o.encodingId,mappings:p.sort((e,t)=>e.charCode-t.charCode),hasShortCmap:c}}(i.cmap,t,this.isSymbolicFont,n.hasEncoding),a=e.platformId,s=e.encodingId,r=e.mappings;let o=[],l=!1;!n.hasEncoding||"MacRomanEncoding"!==n.baseEncodingName&&"WinAnsiEncoding"!==n.baseEncodingName||(o=getEncoding(n.baseEncodingName));if(n.hasEncoding&&!this.isSymbolicFont&&(3===a&&1===s||1===a&&0===s)){const e=wa();for(let t=0;t<256;t++){let i;i=void 0!==this.differences[t]?this.differences[t]:o.length&&""!==o[t]?o[t]:pa[t];if(!i)continue;const l=recoverGlyphName(i,e);let f;3===a&&1===s?f=e[l]:1===a&&0===s&&(f=ma.indexOf(l));if(void 0===f){if(!n.glyphNames&&n.hasIncludedToUnicodeMap&&!(this.toUnicode instanceof IdentityToUnicodeMap)){const e=this.toUnicode.get(t);e&&(f=e.codePointAt(0))}if(void 0===f)continue}for(const e of r)if(e.charCode===f){k[t]=e.glyphId;break}}}else if(0===a){for(const e of r)k[e.charCode]=e.glyphId;l=!0}else if(3===a&&0===s)for(const e of r){let t=e.charCode;t>=61440&&t<=61695&&(t&=255);k[t]=e.glyphId}else for(const e of r)k[e.charCode]=e.glyphId;if(n.glyphNames&&(o.length||this.differences.length))for(let e=0;e<256;++e){if(!l&&void 0!==k[e])continue;const t=this.differences[e]||o[e];if(!t)continue;const a=n.glyphNames.indexOf(t);a>0&&hasGlyph(a)&&(k[e]=a)}!n.isInternalFont&&void 0===k[0]&&hasGlyph(0)&&(k[0]=0)}0===k.length&&(k[0]=0);const y=p?m-1:0;if(!n.cssFontInfo){const e=adjustMapping(k,hasGlyph,y,this.toUnicode);this.toFontChar=e.toFontChar;i.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,m)};i["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const n=t.getUint16(),a=[78,86,96,96,96,100][n];if(void 0===a||e.lengtht.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(i["OS/2"],t)||(i["OS/2"]={tag:"OS/2",data:createOS2Table(n,e.charCodeToGlyphId,j)})}if(i.name){const[t,a]=readNameTable(i.name);i.name.data=createNameTable(e,t);this.psName=t[0][6]||null;n.composite||function adjustTrueTypeToUnicode(e,t,n){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;if(!t)return;if(0===n.length)return;if(e.defaultEncoding===da)return;for(const e of n)if(!isWinNameRecord(e))return;const a=da,s=[],r=wa();for(const e in a){const t=a[e];if(""===t)continue;const n=r[t];void 0!==n&&(s[e]=String.fromCharCode(n))}s.length>0&&e.toUnicode.amend(s)}(n,this.isSymbolicFont,a)}else i.name={tag:"name",data:createNameTable(this.name)};const q=new OpenTypeFileBuilder(r.version);for(const e in i)q.addTable(e,i[e].data);return q.toArray()}convert(e,t,n){n.fixedPitch=!1;n.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const n=[],a=wa();for(const s in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[s]))continue;const r=getUnicodeForGlyph(t[s],a);-1!==r&&(n[s]=String.fromCharCode(r))}n.length>0&&e.toUnicode.amend(n)}(n,n.builtInEncoding);const s=t instanceof CFFFont?t.numGlyphs-1:1,r=t.getGlyphMapping(n);let i=null,o=r,l=null;if(!n.cssFontInfo){i=adjustMapping(r,t.hasGlyphId.bind(t),s,this.toUnicode);this.toFontChar=i.toFontChar;o=i.charCodeToGlyphId;l=i.toUnicodeExtraMap}const f=t.numGlyphs;function getCharCodes(e,t){let n=null;for(const a in e)t===e[a]&&(n||=[]).push(0|a);return n}function createCharCode(e,t){for(const n in e)if(t===e[n])return 0|n;i.charCodeToGlyphId[i.nextAvailableFontCharCode]=t;return i.nextAvailableFontCharCode++}const c=t.seacs;if(i&&c?.length){const e=n.fontMatrix||a,s=t.getCharset(),o=Object.create(null);for(let t in c){t|=0;const n=c[t],a=pa[n[2]],l=pa[n[3]],f=s.indexOf(a),h=s.indexOf(l);if(f<0||h<0)continue;const u={x:n[0]*e[0]+n[1]*e[2]+e[4],y:n[0]*e[1]+n[1]*e[3]+e[5]},m=getCharCodes(r,t);if(m)for(const e of m){const t=i.charCodeToGlyphId,n=createCharCode(t,f),a=createCharCode(t,h);o[e]={baseFontCharCode:n,accentFontCharCode:a,accentOffset:u}}}n.seacMap=o}const h=n.fontMatrix?1/Math.max(...n.fontMatrix.slice(0,4).map(Math.abs)):1e3,u=new OpenTypeFileBuilder("OTTO");u.addTable("CFF ",t.data);u.addTable("OS/2",createOS2Table(n,o));u.addTable("cmap",createCmapTable(o,l,f));u.addTable("head",function fontTableHead(){const e=[0,0,0,0,158,11,126,39],t=new DataBuilder({exactLength:54});t.setArray([0,1,0,0]);t.setArray([0,0,16,0]);t.skip(4);t.setArray([95,15,60,245]);t.skip(2);t.setSafeInt16(h);t.setArray(e);t.setArray(e);t.skip(2);t.setSafeInt16(n.descent);t.setArray([15,255]);t.setSafeInt16(n.ascent);t.setInt16(n.italicAngle?2:0);t.setArray([0,17]);t.skip(6);return t.data}());u.addTable("hhea",function fontTableHhea(){const e=new DataBuilder({exactLength:36});e.setArray([0,1,0,0]);e.setSafeInt16(n.ascent);e.setSafeInt16(n.descent);e.skip(2);e.setArray([255,255]);e.skip(6);e.setSafeInt16(n.capHeight);e.setSafeInt16(Math.tan(n.italicAngle)*n.xHeight);e.skip(12);e.setInt16(f);return e.data}());u.addTable("hmtx",function fontTableHmtx(){const e=t.charstrings,n=t.cff?.widths??null,a=new DataBuilder({exactLength:4*f});a.skip(4);for(let t=1,s=f;t=65520&&e<=65535?0:e>=62976&&e<=63743?ka()[e]||e:173===e?45:e}(n)}this.isType3Font&&(s=n);let c=null;if(this.seacMap?.[e]){f=!0;const t=this.seacMap[e];n=t.baseFontCharCode;c={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let h="";"number"==typeof n&&(n<=1114111?h=String.fromCodePoint(n):warn(`charToGlyph - invalid fontCharCode: ${n}`));if(this.missingFile&&this.vertical&&1===h.length){const e=Fa()[h.charCodeAt(0)];e&&(h=l=String.fromCharCode(e))}r=new fonts_Glyph(e,h,l,c,a,o,s,t,f);this.#we.set(e,r);return r}charsToGlyphs(e){let t=this.#be.get(e);if(t)return t;t=[];if(this.cMap){const n=Object.create(null),a=e.length;let s=0;for(;st.length%2==1,a=this.toUnicode instanceof IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let s=0,r=e.length;s65535&&s++;if(this.toUnicode){const e=a(r);if(-1!==e){if(hasCurrentBufErrors()){t.push(n.join(""));n.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)n.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(n.join(""));n.length=0}n.push(String.fromCodePoint(r))}t.push(n.join(""));return t}}class ErrorFont{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 bs=[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],ws={lineHeight:1.2207,lineGap:.2207},js=[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],ks={lineHeight:1.2207,lineGap:.2207},ys=[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],qs={lineHeight:1.2207,lineGap:.2207},vs=[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],Ss={lineHeight:1.2207,lineGap:.2207},As=[.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],xs={lineHeight:1.2,lineGap:.2},Cs=[.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],Is={lineHeight:1.35,lineGap:.2},Fs=[.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],Ts={lineHeight:1.35,lineGap:.2},Rs=[.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],Os={lineHeight:1.2,lineGap:.2},Hs=[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],Bs=[-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],Ds=[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],Ms=[-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],Ns=[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],Es=[-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],_s=[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],zs=[-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],Ls=[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],Us={lineHeight:1.2,lineGap:.2},Ws=[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],Xs={lineHeight:1.2,lineGap:.2},Ks=[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],Gs={lineHeight:1.2,lineGap:.2},Vs=[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],$s={lineHeight:1.2,lineGap:.2},Ys=[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],Js={lineHeight:1.33008,lineGap:0},Qs=[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],Zs={lineHeight:1.33008,lineGap:0},er=[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],tr={lineHeight:1.33008,lineGap:0},nr=[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],ar={lineHeight:1.33008,lineGap:0},sr=getLookupTableFactory(function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:Vs,baseWidths:_s,baseMapping:zs,metrics:$s};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:Ls,baseWidths:Hs,baseMapping:Bs,metrics:Us};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:Ks,baseWidths:Ns,baseMapping:Es,metrics:Gs};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Ws,baseWidths:Ds,baseMapping:Ms,metrics:Xs};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:_s,baseMapping:zs};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:Hs,baseMapping:Bs};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:Ns,baseMapping:Es};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:Ds,baseMapping:Ms};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:vs,baseWidths:_s,baseMapping:zs,metrics:Ss};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:bs,baseWidths:Hs,baseMapping:Bs,metrics:ws};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:ys,baseWidths:Ns,baseMapping:Es,metrics:qs};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:js,baseWidths:Ds,baseMapping:Ms,metrics:ks};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:nr,baseWidths:_s,baseMapping:zs,metrics:ar};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:Ys,baseWidths:Hs,baseMapping:Bs,metrics:Js};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:er,baseWidths:Ns,baseMapping:Es,metrics:tr};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Qs,baseWidths:Ds,baseMapping:Ms,metrics:Zs};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:Rs,baseWidths:_s,baseMapping:zs,metrics:Os};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:As,baseWidths:Hs,baseMapping:Bs,metrics:xs};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:Fs,baseWidths:Ns,baseMapping:Es,metrics:Ts};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:Cs,baseWidths:Ds,baseMapping:Ms,metrics:Is}});function getXfaFontName(e){const t=normalizeFontName(e);return sr()[t]}function getXfaFontDict(e){const t=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:n,baseMapping:a,factors:s}=t,r=s?n.map((e,t)=>e*s[t]):n;let i,o=-2;const l=[];for(const[e,t]of a.map((e,t)=>[e,t]).sort(([e],[t])=>e-t))if(-1!==e)if(e===o+1){i.push(r[t]);o+=1}else{o=e;i=[r[t]];l.push(e,i)}return l}(e),n=new Dict(null);n.set("BaseFont",Name.get(e));n.set("Type",Name.get("Font"));n.set("Subtype",Name.get("CIDFontType2"));n.set("Encoding",Name.get("Identity-H"));n.set("CIDToGIDMap",Name.get("Identity"));n.set("W",t);n.set("FirstChar",t[0]);n.set("LastChar",t.at(-2)+t.at(-1).length-1);const a=new Dict(null);n.set("FontDescriptor",a);const s=new Dict(null);s.set("Ordering","Identity");s.set("Registry","Adobe");s.set("Supplement",0);n.set("CIDSystemInfo",s);return n}const rr={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 Token{constructor(e,t=null){this.id=e;this.value=t}}class lexer_Lexer{static#ke=null;static#ye=null;static#qe(){const e=Object.create(null),t=Object.create(null);for(const[n,a]of Object.entries(rr)){if("number"===n)continue;const s=a>=rr.true&&a<=rr.ifelse,r=new Token(a,s?n:null);e[n]=r;s&&(t[n]=r)}this.#ke=e;this.#ye=t}constructor(e){lexer_Lexer.#ke||lexer_Lexer.#qe();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("\n",this.pos),t=this.data.indexOf("\r",this.pos),n=Math.min(e<0?this.len:e,t<0?this.len:t);this.pos=Math.min(n+1,this.len)}_getNumber(){this._numberPattern.lastIndex=this.pos;const e=this._numberPattern.exec(this.data);if(!e)return new Token(rr.number,0);const t=parseFloat(e[0]);if(!Number.isFinite(t))return new Token(rr.number,0);this.pos=this._numberPattern.lastIndex;return new Token(rr.number,t)}_getOperator(){this._identifierPattern.lastIndex=this.pos;const e=this._identifierPattern.exec(this.data);if(!e)return new Token(rr.number,0);this.pos=this._identifierPattern.lastIndex;const t=e[0],n=lexer_Lexer.#ye[t];return n||new Token(rr.number,0)}next(){for(;this.pos=48&&e<=57){this.pos--;return this._getNumber()}if(e>=97&&e<=122){this.pos--;return this._getOperator()}return new Token(rr.number,0)}}return lexer_Lexer.#ke.eof}}const ir=0,or=1,lr=2,fr=0,cr=1,hr=2,ur=3,mr=4,pr=5,dr=6,gr=7,br=8,wr=9,jr=10;class PsNode{constructor(e){this.type=e}}class PsProgram extends PsNode{constructor(e){super(fr);this.body=e}}class PsBlock extends PsNode{constructor(e){super(cr);this.instructions=e}}class PsNumber extends PsNode{constructor(e){super(hr);this.value=e}}class PsOperator extends PsNode{constructor(e){super(ur);this.op=e}}class PsIf extends PsNode{constructor(e){super(mr);this.then=e}}class PsIfElse extends PsNode{constructor(e,t){super(pr);this.then=e;this.otherwise=t}}class PsArgNode extends PsNode{constructor(e){super(dr);this.index=e;this.valueType=ir}}class PsConstNode extends PsNode{constructor(e){super(gr);this.value=e;this.valueType="boolean"==typeof e?or:ir}}class PsUnaryNode extends PsNode{constructor(e,t,n=lr){super(br);this.op=e;this.operand=t;this.valueType=n}}class PsBinaryNode extends PsNode{constructor(e,t,n,a=lr){super(wr);this.op=e;this.first=t;this.second=n;this.valueType=a}}class PsTernaryNode extends PsNode{constructor(e,t,n,a=lr){super(jr);this.cond=e;this.then=t;this.otherwise=n;this.valueType=a}}class ast_Parser{constructor(e){this.lexer=e;this._token=null}static _isRegularOperator(e){return e>=rr.true&&ekr)return null;const n=[];for(let e=0;e{if(!e||e.type===dr||e.type===gr)return;const n=t.get(e)??0;t.set(e,n+1);if(!(n>0))switch(e.type){case br:visit(e.operand);break;case wr:visit(e.first);visit(e.second);break;case jr:visit(e.cond);visit(e.then);visit(e.otherwise)}};for(const t of e)visit(t);for(const[e,n]of t)if(n>1){e.shared=!0;e.sharedCount=n}}_evalBlock(e,t){this._evalBlockFrom(e.instructions,0,t)}_evalBlockFrom(e,t,n){for(let a=t;akr&&(this._failed=!0);break;case ur:this._evalOp(t.op,n);break;case mr:{if(n.length<1){this._failed=!0;break}const s=n.pop(),r=n.slice();this._evalBlock(t.then,n);if(this._failed)break;if(n.length===r.length)for(let e=0;er.length){if(s.type===gr){if(!s.value){n.length=0;n.push(...r)}break}const t=n.slice();this._evalBlockFrom(e,a+1,t);if(this._failed)break;const i=r;this._evalBlockFrom(e,a+1,i);if(this._failed)break;if(t.length!==i.length){const e=new PsConstNode(0);for(;t.lengthkr&&(this._failed=!0);break;case rr.false:t.push(new PsConstNode(!1));t.length>kr&&(this._failed=!0);break;case rr.dup:if(t.length<1){this._failed=!0;break}t.push(t.at(-1));t.length>kr&&(this._failed=!0);break;case rr.exch:{if(t.length<2){this._failed=!0;break}const e=t.pop(),n=t.pop();t.push(e,n);break}case rr.pop:if(t.length<1){this._failed=!0;break}t.pop();break;case rr.copy:{if(t.length<1){this._failed=!0;break}const e=t.pop();if(e.type===gr){const n=0|e.value;if(0===n);else if(n<0||n>t.length)this._failed=!0;else{t.push(...t.slice(-n));t.length>kr&&(this._failed=!0)}}else this._failed=!0;break}case rr.index:{if(t.length<1){this._failed=!0;break}const e=t.pop();if(e.type===gr){const n=0|e.value;n<0||n>=t.length?this._failed=!0:t.push(t.at(-n-1))}else this._failed=!0;break}case rr.roll:{if(t.length<2){this._failed=!0;break}const e=t.pop(),n=t.pop();if(n.type===gr&&e.type===gr){const a=0|n.value;if(0===a);else if(a<0||a>t.length)this._failed=!0;else{const n=((0|e.value)%a+a)%a;if(n>0){const e=t.splice(-a,a);t.push(...e.slice(a-n),...e.slice(0,a-n))}}}else this._failed=!0;break}default:this._failed=!0}}_makeBinary(e,t,n){if(t.type===gr&&n.type===gr){const a=function _evalBinaryConst(e,t,n){switch(e){case rr.add:return t+n;case rr.sub:return t-n;case rr.mul:return t*n;case rr.div:return 0!==n?t/n:0;case rr.idiv:return 0!==n?Math.trunc(t/n):0;case rr.mod:return 0!==n?t-Math.trunc(t/n)*n:0;case rr.exp:{const e=t**n;return Number.isFinite(e)?e:void 0}case rr.atan:{let e=Math.atan2(t,n)*(180/Math.PI);e<0&&(e+=360);return e}case rr.eq:return t===n;case rr.ne:return t!==n;case rr.gt:return t>n;case rr.ge:return t>=n;case rr.lt:return t=0?t<>-n|0;case rr.min:return Math.min(t,n);case rr.max:return Math.max(t,n);default:return}}(e,n.value,t.value);if(void 0!==a)return new PsConstNode(a)}if(_nodesEqual(t,n))switch(e){case rr.sub:return new PsConstNode(0);case rr.xor:return new PsConstNode(t.valueType!==or&&0);case rr.and:case rr.or:case rr.min:case rr.max:return t;case rr.eq:case rr.ge:case rr.le:return new PsConstNode(!0);case rr.ne:case rr.gt:case rr.lt:return new PsConstNode(!1)}if(t.type===gr){const a=t.value;switch(e){case rr.add:case rr.sub:if(0===a)return n;break;case rr.mul:if(1===a)return n;if(0===a)return t;if(-1===a)return this._makeUnary(rr.neg,n);break;case rr.div:if(0!==a)return this._makeBinary(rr.mul,new PsConstNode(1/a),n);break;case rr.idiv:if(1===a)return n;break;case rr.exp:if(1===a)return n;if(-1===a)return this._makeBinary(rr.div,n,new PsConstNode(1));if(.5===a)return this._makeUnary(rr.sqrt,n);if(.25===a){const e=this._makeUnary(rr.sqrt,n);return this._makeUnary(rr.sqrt,e)}if(2===a)return this._makeBinary(rr.mul,n,n);if(3===a)return this._makeBinary(rr.mul,this._makeBinary(rr.mul,n,n),n);if(4===a){const e=this._makeBinary(rr.mul,n,n);return this._makeBinary(rr.mul,e,e)}if(0===a)return new PsConstNode(1);break;case rr.and:if(!0===a)return n;if(!1===a)return t;break;case rr.or:if(!1===a)return n;if(!0===a)return t;break;case rr.min:if(n.type===wr&&n.op===rr.max&&n.first.type===gr&&n.first.value>=a)return t;break;case rr.max:if(n.type===wr&&n.op===rr.min&&n.first.type===gr&&n.first.value<=a)return t}}if(n.type===gr){const a=n.value;switch(e){case rr.add:if(0===a)return t;break;case rr.sub:if(0===a)return this._makeUnary(rr.neg,t);break;case rr.mul:if(1===a)return t;if(0===a)return n;if(-1===a)return this._makeUnary(rr.neg,t);break;case rr.and:if(!0===a)return t;if(!1===a)return n;break;case rr.or:if(!1===a)return t;if(!0===a)return n}}return new PsBinaryNode(e,t,n,function _binaryValueType(e,t,n){switch(e){case rr.eq:case rr.ne:case rr.gt:case rr.ge:case rr.lt:case rr.le:return or;case rr.and:case rr.or:case rr.xor:return t===n&&t!==lr?t:lr;default:return ir}}(e,t.valueType,n.valueType))}_makeUnary(e,t){if(t.type===gr){const n=function _evalUnaryConst(e,t){switch(e){case rr.abs:return Math.abs(t);case rr.neg:return-t;case rr.ceiling:return Math.ceil(t);case rr.floor:return Math.floor(t);case rr.round:return Math.round(t);case rr.truncate:return Math.trunc(t);case rr.sqrt:{const e=Math.sqrt(t);return Number.isFinite(e)?e:void 0}case rr.sin:return Math.sin(t%360*Math.PI/180);case rr.cos:return Math.cos(t%360*Math.PI/180);case rr.ln:{const e=Math.log(t);return Number.isFinite(e)?e:void 0}case rr.log:{const e=Math.log10(t);return Number.isFinite(e)?e:void 0}case rr.cvi:return Math.trunc(t);case rr.cvr:return t;case rr.not:return"boolean"==typeof t?!t:~t;default:return}}(e,t.value);if(void 0!==n)return new PsConstNode(n)}if(e===rr.not&&t.type===wr){const e=PSStackToTree.#xe.get(t.op);if(void 0!==e)return new PsBinaryNode(e,t.first,t.second,or)}if(e===rr.neg&&t.type===wr&&t.op===rr.sub)return this._makeBinary(rr.sub,t.second,t.first);if(t.type===br){if(e===rr.neg&&t.op===rr.neg||e===rr.not&&t.op===rr.not)return t.operand;if(e===rr.abs&&t.op===rr.neg)return this._makeUnary(rr.abs,t.operand);if(PSStackToTree.#Ae.has(e)&&e===t.op)return t}return new PsUnaryNode(e,t,function _unaryValueType(e,t){return e===rr.not?t:ir}(e,t.valueType))}_makeTernary(e,t,n){if(e.type===gr)return e.value?t:n;if(_nodesEqual(t,n))return t;if(t.type===gr&&n.type===gr){if(!0===t.value&&!1===n.value)return e;if(!1===t.value&&!0===n.value)return this._makeUnary(rr.not,e)}if(e.type===wr){const{op:a,first:s,second:r}=e;if(a===rr.gt||a===rr.ge){if(_nodesEqual(t,s)&&_nodesEqual(n,r))return this._makeBinary(rr.min,s,r);if(_nodesEqual(t,r)&&_nodesEqual(n,s))return this._makeBinary(rr.max,s,r)}else if(a===rr.lt||a===rr.le){if(_nodesEqual(t,s)&&_nodesEqual(n,r))return this._makeBinary(rr.max,s,r);if(_nodesEqual(t,r)&&_nodesEqual(n,s))return this._makeBinary(rr.min,s,r)}}return new PsTernaryNode(e,t,n,t.valueType===n.valueType?t.valueType:lr)}}const yr=0,qr=1,vr=2,Sr=3,Ar=4,xr=5,Cr=6,Ir=7,Fr=8,Tr=9,Rr=10,Or=11,Hr=12,Dr=13,Mr=14,Nr=15,Pr=16,Er=17,_r=18,zr=19,Lr=20,Ur=21,Wr=22,Xr=23,Kr=24,Gr=25,Vr=26,$r=27,Yr=28,Jr=29,Qr=30,Zr=31,ei=32,ti=33,ni=34,ai=35,si=36,ri=37,ii=38,oi=39,li=40,fi=Math.PI/180,ci=180/Math.PI;class PsJsCompiler{static#Fe=new Float64Array(64);static#Te=new Float64Array(64);constructor(e,t){this.nIn=e.length>>1;this.nOut=t.length>>1;this.range=t;this.ir=[];this._tmpMap=new Map;this._nextTmp=0}_compileNode(e){if(e.shared){const t=this._tmpMap.get(e);if(void 0!==t){this.ir.push(li,t);return!0}if(!this._compileNodeImpl(e))return!1;const n=this._nextTmp++;this._tmpMap.set(e,n);this.ir.push(oi,n);return!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case dr:this.ir.push(yr,e.index);return!0;case gr:{const t=e.value;this.ir.push(qr,"boolean"==typeof t?Number(t):t);return!0}case br:return this._compileUnary(e);case wr:return this._compileBinary(e);case jr:return this._compileTernary(e);default:return!1}}_compileUnary(e){const{op:t,operand:n,valueType:a}=e;if(t===rr.cvr)return this._compileNode(n);if(!this._compileNode(n))return!1;switch(t){case rr.abs:this.ir.push(xr);break;case rr.neg:this.ir.push(Cr);break;case rr.ceiling:this.ir.push(Ir);break;case rr.floor:this.ir.push(Fr);break;case rr.round:this.ir.push(Tr);break;case rr.truncate:this.ir.push(Rr);break;case rr.sqrt:this.ir.push(Dr);break;case rr.sin:this.ir.push(Mr);break;case rr.cos:this.ir.push(Nr);break;case rr.ln:this.ir.push(Pr);break;case rr.log:this.ir.push(Er);break;case rr.cvi:this.ir.push(_r);break;case rr.not:if(a===or)this.ir.push(Or);else{if(a!==ir)return!1;this.ir.push(Hr)}break;default:return!1}return!0}_compileBinary(e){const{op:t,first:n,second:a}=e;if(t===rr.bitshift){if(n.type!==gr||!Number.isInteger(n.value))return!1;if(!this._compileNode(a))return!1;this.ir.push(zr,n.value);return!0}if(!this._compileNode(a))return!1;if(!this._compileNode(n))return!1;switch(t){case rr.add:this.ir.push(Lr);break;case rr.sub:this.ir.push(Ur);break;case rr.mul:this.ir.push(Wr);break;case rr.div:this.ir.push(Xr);break;case rr.idiv:this.ir.push(Kr);break;case rr.mod:this.ir.push(Gr);break;case rr.exp:this.ir.push(Vr);break;case rr.eq:this.ir.push($r);break;case rr.ne:this.ir.push(Yr);break;case rr.gt:this.ir.push(Jr);break;case rr.ge:this.ir.push(Qr);break;case rr.lt:this.ir.push(Zr);break;case rr.le:this.ir.push(ei);break;case rr.and:this.ir.push(ti);break;case rr.or:this.ir.push(ni);break;case rr.xor:this.ir.push(ai);break;case rr.atan:this.ir.push(si);break;case rr.min:this.ir.push(ri);break;case rr.max:this.ir.push(ii);break;default:return!1}return!0}_compileTernary(e){if(!this._compileNode(e.cond))return!1;this.ir.push(Sr,0);const t=this.ir.length-1;if(!this._compileNode(e.then))return!1;this.ir.push(Ar,0);const n=this.ir.length-1;this.ir[t]=this.ir.length;if(!this._compileNode(e.otherwise))return!1;this.ir[n]=this.ir.length;return!0}compile(e){const t=(new PSStackToTree).evaluate(e,this.nIn);if(!t||t.length0?n<>-t:n;break}case Lr:{const e=l[--i];l[i-1]+=e;break}case Ur:{const e=l[--i];l[i-1]-=e;break}case Wr:{const e=l[--i];l[i-1]*=e;break}case Xr:{const e=l[--i];l[i-1]=0!==e?l[i-1]/e:0;break}case Kr:{const e=l[--i];l[i-1]=0!==e?Math.trunc(l[i-1]/e):0;break}case Gr:{const e=l[--i];l[i-1]=0!==e?l[i-1]%e:0;break}case Vr:{const e=l[--i];l[i-1]**=e;break}case $r:{const e=l[--i];l[i-1]=l[i-1]===e?1:0;break}case Yr:{const e=l[--i];l[i-1]=l[i-1]!==e?1:0;break}case Jr:{const e=l[--i];l[i-1]=l[i-1]>e?1:0;break}case Qr:{const e=l[--i];l[i-1]=l[i-1]>=e?1:0;break}case Zr:{const e=l[--i];l[i-1]=l[i-1]e?1:0;break}case rr.ge:{const e=t[--this.#Re];t[this.#Re-1]=t[this.#Re-1]>=e?1:0;break}case rr.lt:{const e=t[--this.#Re];t[this.#Re-1]=t[this.#Re-1]0?n<>-e;break}case rr.min:{const e=t[--this.#Re];t[this.#Re-1]=Math.min(t[this.#Re-1],e);break}case rr.max:{const e=t[--this.#Re];t[this.#Re-1]=Math.max(t[this.#Re-1],e);break}case rr.dup:this.#Oe(t[this.#Re-1]);break;case rr.exch:{const e=t[--this.#Re],n=t[--this.#Re];this.#Oe(e);this.#Oe(n);break}case rr.pop:this.#Re--;break;case rr.copy:{const e=Math.trunc(t[--this.#Re]),n=this.#Re-e;for(let a=0;a1&&0!==e){const a=(e%n+n)%n;if(0!==a){const e=this.#Re-n,s=t.slice(e,this.#Re);for(let r=0;r>1,s=n.length>>1,{instructions:r}=e.body;return(e,t,i,o)=>{this.#Re=0;for(let n=0;n=0?this.#Fe[l+e]:0;i[o+e]=MathClamp(t,n[2*e],n[2*e+1])}}}}const hi={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},ui=124,mi=1,pi=2,di=3,gi=5,bi=7,wi=10;function unsignedLEB128(e){const t=[];do{let n=127&e;0!==(e>>>=7)&&(n|=128);t.push(n)}while(0!==e);return t}function encodeASCIIString(e){return[...unsignedLEB128(e.length),...stringToBytes(e)]}function section(e,t){return[e,...unsignedLEB128(t.length),...t]}function vec(e){const t=unsignedLEB128(e.length);for(const n of e)if("number"!=typeof n)for(const e of n)t.push(e);else t.push(n);return t}const ji=[["sin","Math","sin",[ui],[ui]],["cos","Math","cos",[ui],[ui]],["atan2","Math","atan2",[ui,ui],[ui]],["log","Math","log",[ui],[ui]],["log10","Math","log10",[ui],[ui]],["pow","Math","pow",[ui,ui],[ui]]],ki={Math:Object.fromEntries(ji.map(([e])=>[e,Math[e]]))};class PsWasmCompiler{static#De=!1;static#Me=null;static#Ne=null;static#Pe=0;static#Ee=0;static#_e=null;static#ze=null;static#Le=null;static#Ue=null;static#We=null;static#Xe=null;static#Ke=null;static#Ge=null;static#Ce(){this.#Me=new Map([[rr.eq,hi.f64_eq],[rr.ne,hi.f64_ne],[rr.lt,hi.f64_lt],[rr.le,hi.f64_le],[rr.gt,hi.f64_gt],[rr.ge,hi.f64_ge]]);this.#Ne=Object.create(null);for(let e=0;e[96,...vec(e),...vec(t)]);this.#ze=new Uint8Array(section(pi,vec(ji.map(([,e,t],n)=>[...encodeASCIIString(e),...encodeASCIIString(t),0,...unsignedLEB128(n+1)]))));this.#Le=new Uint8Array(section(di,vec([[0]])));this.#Ue=new Uint8Array(section(gi,vec([[0,1]])));this.#We=new Uint8Array(section(bi,vec([[...encodeASCIIString("fn"),0,...unsignedLEB128(ji.length)],[...encodeASCIIString("mem"),2,0]])));this.#Xe=new Uint8Array([0,97,115,109,1,0,0,0]);const e=new ArrayBuffer(8);this.#Ke=new DataView(e);this.#Ge=new Uint8Array(e);this.#De=!0}constructor(e,t){PsWasmCompiler.#De||PsWasmCompiler.#Ce();this._nIn=e.length>>1;this._nOut=t.length>>1;this._range=t;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 t=127&e;0!==(e>>>=7)&&(t|=128);this._code.push(t)}while(0!==e)}_emitSLEB128(e){for(;;){const t=127&e;if(0===(e>>=7)&&!(64&t)||-1===e&&64&t){this._code.push(t);return}this._code.push(128|t)}}_emitF64Const(e){this._code.push(hi.f64_const);PsWasmCompiler.#Ke.setFloat64(0,e,!0);for(let e=0;e<8;e++)this._code.push(PsWasmCompiler.#Ge[e])}_emitLocalGet(e){this._code.push(hi.local_get);this._emitULEB128(e)}_emitLocalSet(e){this._code.push(hi.local_set);this._emitULEB128(e)}_emitLocalTee(e){this._code.push(hi.local_tee);this._emitULEB128(e)}_compileNode(e){if(e.shared){const t=this._sharedLocals.get(e);if(void 0!==t){this._emitLocalGet(t.local);0===--t.remaining&&this._releaseLocal(t.local);return!0}if(!this._compileNodeImpl(e))return!1;const n=this._allocLocal();this._sharedLocals.set(e,{local:n,remaining:e.sharedCount-1});this._emitLocalTee(n);return!0}return this._compileNodeImpl(e)}_compileNodeImpl(e){switch(e.type){case dr:this._emitLocalGet(e.index);return!0;case gr:{let t=e.value;"boolean"==typeof t&&(t=t?1:0);this._emitF64Const(t);return!0}case br:return this._compileUnaryNode(e);case wr:return this._compileBinaryNode(e);case jr:return this._compileTernaryNode(e);default:return!1}}_compileSinCosNode(e){const t=this._allocLocal();try{if(!this._compileNode(e.operand))return!1;const n=this._code;this._emitLocalSet(t);this._emitLocalGet(t);this._emitLocalGet(t);this._emitF64Const(360);n.push(hi.f64_div,hi.f64_trunc);this._emitF64Const(360);n.push(hi.f64_mul,hi.f64_sub);this._emitF64Const(PsWasmCompiler.#Pe);n.push(hi.f64_mul,hi.call);this._emitULEB128(PsWasmCompiler.#Ne[e.op===rr.sin?"sin":"cos"]);return!0}finally{this._releaseLocal(t)}}_compileUnaryNode(e){const t=this._code;if(e.op===rr.sin||e.op===rr.cos)return this._compileSinCosNode(e);if(e.op===rr.not){if(e.valueType===or){if(!this._compileNodeAsBoolI32(e.operand))return!1;t.push(hi.i32_eqz,hi.f64_convert_i32_s);return!0}if(e.valueType===ir){if(!this._compileNode(e.operand))return!1;t.push(hi.i32_trunc_f64_s,hi.i32_const,127,hi.i32_xor,hi.f64_convert_i32_s);return!0}return!1}if(!this._compileNode(e.operand))return!1;switch(e.op){case rr.abs:t.push(hi.f64_abs);break;case rr.neg:t.push(hi.f64_neg);break;case rr.sqrt:t.push(hi.f64_sqrt);break;case rr.floor:t.push(hi.f64_floor);break;case rr.ceiling:t.push(hi.f64_ceil);break;case rr.round:this._emitF64Const(.5);t.push(hi.f64_add,hi.f64_floor);break;case rr.truncate:t.push(hi.f64_trunc);break;case rr.cvi:t.push(hi.i32_trunc_f64_s,hi.f64_convert_i32_s);break;case rr.cvr:break;case rr.ln:t.push(hi.call);this._emitULEB128(PsWasmCompiler.#Ne.log);break;case rr.log:t.push(hi.call);this._emitULEB128(PsWasmCompiler.#Ne.log10);break;default:return!1}return!0}_compileSafeDivNode(e,t){const n=this._allocLocal();try{if(!this._compileNode(t))return!1;if(!this._compileNode(e))return!1;const a=this._code;this._emitLocalTee(n);a.push(hi.f64_div);this._emitF64Const(0);this._emitLocalGet(n);this._emitF64Const(0);a.push(hi.f64_ne,hi.select);return!0}finally{this._releaseLocal(n)}}_compileSafeIdivNode(e,t){const n=this._allocLocal();try{if(!this._compileNode(t))return!1;if(!this._compileNode(e))return!1;const a=this._code;this._emitLocalTee(n);a.push(hi.f64_div,hi.f64_trunc);this._emitF64Const(0);this._emitLocalGet(n);this._emitF64Const(0);a.push(hi.f64_ne,hi.select);return!0}finally{this._releaseLocal(n)}}_compileBitshiftNode(e,t){if(e.type!==gr||!Number.isInteger(e.value))return!1;if(!this._compileNode(t))return!1;const n=this._code;n.push(hi.i32_trunc_f64_s);const a=e.value;if(a>0){n.push(hi.i32_const);this._emitSLEB128(a);n.push(hi.i32_shl)}else if(a<0){n.push(hi.i32_const);this._emitSLEB128(-a);n.push(hi.i32_shr_s)}n.push(hi.f64_convert_i32_s);return!0}_compileModNode(e,t){if(e.type===gr&&0===e.value){if(!this._compileNode(t))return!1;this._code.push(hi.drop);this._emitF64Const(0);return!0}const n=this._allocLocal();try{if(!this._compileNode(t))return!1;this._emitLocalTee(n);const a=this._code;if(e.type===gr){this._emitLocalGet(n);this._emitF64Const(e.value);a.push(hi.f64_div,hi.f64_trunc);this._emitF64Const(e.value);a.push(hi.f64_mul,hi.f64_sub)}else{const t=this._allocLocal();try{if(!this._compileNode(e))return!1;this._emitLocalSet(t);this._emitLocalGet(n);this._emitLocalGet(t);a.push(hi.f64_div,hi.f64_trunc);this._emitLocalGet(t);a.push(hi.f64_mul,hi.f64_sub);this._emitF64Const(0);this._emitLocalGet(t);this._emitF64Const(0);a.push(hi.f64_ne,hi.select)}finally{this._releaseLocal(t)}}return!0}finally{this._releaseLocal(n)}}_compileAtanNode(e,t){const n=this._allocLocal();try{if(!this._compileNode(t))return!1;if(!this._compileNode(e))return!1;const a=this._code;a.push(hi.call);this._emitULEB128(PsWasmCompiler.#Ne.atan2);this._emitF64Const(PsWasmCompiler.#Ee);a.push(hi.f64_mul);this._emitLocalTee(n);this._emitF64Const(0);a.push(hi.f64_lt,hi.if,ui);this._emitLocalGet(n);this._emitF64Const(360);a.push(hi.f64_add,hi.else);this._emitLocalGet(n);a.push(hi.end);return!0}finally{this._releaseLocal(n)}}_compileBitwiseNode(e,t,n){if(!this._compileBitwiseOperandI32(n))return!1;if(!this._compileBitwiseOperandI32(t))return!1;const a=this._code;switch(e){case rr.and:a.push(hi.i32_and);break;case rr.or:a.push(hi.i32_or);break;case rr.xor:a.push(hi.i32_xor);break;default:return!1}a.push(hi.f64_convert_i32_s);return!0}_compileBitwiseOperandI32(e){if(e.valueType===or)return this._compileNodeAsBoolI32(e);if(!this._compileNode(e))return!1;this._code.push(hi.i32_trunc_f64_s);return!0}_compileStandardBinaryNode(e,t,n){if(t!==n||t.type===dr||t.type===gr||t.shared){if(!this._compileNode(n))return!1;if(!this._compileNode(t))return!1}else{const e=this._allocLocal();try{if(!this._compileNode(t))return!1;this._emitLocalTee(e);this._emitLocalGet(e)}finally{this._releaseLocal(e)}}const a=this._code;switch(e){case rr.add:a.push(hi.f64_add);break;case rr.sub:a.push(hi.f64_sub);break;case rr.mul:a.push(hi.f64_mul);break;case rr.exp:a.push(hi.call);this._emitULEB128(PsWasmCompiler.#Ne.pow);break;case rr.eq:a.push(hi.f64_eq,hi.f64_convert_i32_s);break;case rr.ne:a.push(hi.f64_ne,hi.f64_convert_i32_s);break;case rr.lt:a.push(hi.f64_lt,hi.f64_convert_i32_s);break;case rr.le:a.push(hi.f64_le,hi.f64_convert_i32_s);break;case rr.gt:a.push(hi.f64_gt,hi.f64_convert_i32_s);break;case rr.ge:a.push(hi.f64_ge,hi.f64_convert_i32_s);break;case rr.min:a.push(hi.f64_min);break;case rr.max:a.push(hi.f64_max);break;default:return!1}return!0}_compileBinaryNode(e){const{op:t,first:n,second:a}=e;return t===rr.bitshift?this._compileBitshiftNode(n,a):t===rr.div?this._compileSafeDivNode(n,a):t===rr.idiv?this._compileSafeIdivNode(n,a):t===rr.mod?this._compileModNode(n,a):t===rr.atan?this._compileAtanNode(n,a):t===rr.and||t===rr.or||t===rr.xor?this._compileBitwiseNode(t,n,a):this._compileStandardBinaryNode(t,n,a)}_compileNodeAsBoolI32(e){if(e.type===wr){const t=PsWasmCompiler.#Me.get(e.op);if(void 0!==t){if(!this._compileNode(e.second))return!1;if(!this._compileNode(e.first))return!1;this._code.push(t);return!0}if(e.valueType===or&&(e.op===rr.and||e.op===rr.or||e.op===rr.xor)){if(!this._compileNodeAsBoolI32(e.second))return!1;if(!this._compileNodeAsBoolI32(e.first))return!1;switch(e.op){case rr.and:this._code.push(hi.i32_and);break;case rr.or:this._code.push(hi.i32_or);break;case rr.xor:this._code.push(hi.i32_xor)}return!0}}if(e.type===br&&e.op===rr.not&&e.valueType===or){if(!this._compileNodeAsBoolI32(e.operand))return!1;this._code.push(hi.i32_eqz);return!0}if(!this._compileNode(e))return!1;if(e.valueType===or)this._code.push(hi.i32_trunc_f64_s);else{this._emitF64Const(0);this._code.push(hi.f64_ne)}return!0}_compileTernaryNode(e){if(!this._compileNodeAsBoolI32(e.cond))return!1;this._code.push(hi.if,ui);if(!this._compileNode(e.then))return!1;this._code.push(hi.else);if(!this._compileNode(e.otherwise))return!1;this._code.push(hi.end);return!0}compile(e){const t=(new PSStackToTree).evaluate(e,this._nIn);if(!t||t.length0?[[...unsignedLEB128(s),ui]]:[]),l=o.length+n.length,f=new Uint8Array(section(wi,vec([[...unsignedLEB128(l),...o,...n]]))),c=PsWasmCompiler.#Xe,h=PsWasmCompiler.#ze,u=PsWasmCompiler.#Le,m=PsWasmCompiler.#Ue,p=PsWasmCompiler.#We,d=c.length+i.length+h.length+u.length+m.length+p.length+f.length,g=new Uint8Array(d);let b=0;g.set(c,b);b+=c.length;g.set(i,b);b+=i.length;g.set(h,b);b+=h.length;g.set(u,b);b+=u.length;g.set(m,b);b+=m.length;g.set(p,b);b+=p.length;g.set(f,b);return g}}function buildPostScriptWasmFunction(e,t,n){const a=function compilePostScriptToWasm(e,t,n){return new PsWasmCompiler(t,n).compile(parsePostScriptFunction(e))}(e,t,n);if(!a)return null;try{return function _makeWrapper(e,t,n){const{fn:a,mem:s}=e,r=new Float64Array(s.buffer,0,n);let i;switch(n){case 1:i=(e,t)=>{e[t]=r[0]};break;case 2:i=(e,t)=>{e[t]=r[0];e[t+1]=r[1]};break;case 3:i=(e,t)=>{e[t]=r[0];e[t+1]=r[1];e[t+2]=r[2]};break;case 4:i=(e,t)=>{e[t]=r[0];e[t+1]=r[1];e[t+2]=r[2];e[t+3]=r[3]};break;default:i=(e,t)=>{for(let a=0;a{a(e[t]);i(n,s)};case 2:return(e,t,n,s)=>{a(e[t],e[t+1]);i(n,s)};case 3:return(e,t,n,s)=>{a(e[t],e[t+1],e[t+2]);i(n,s)};case 4:return(e,t,n,s)=>{a(e[t],e[t+1],e[t+2],e[t+3]);i(n,s)};default:{const e=new Float64Array(t);return(n,s,r,o)=>{for(let a=0;a>1,n.length>>1)}catch{return null}}class BaseLocalCache{constructor(e){this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new RefMap}getByName(e){this._onlyRefs&&unreachable("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,n){unreachable("Abstract method `set` called.")}}class LocalImageCache extends BaseLocalCache{set(e,t=null,n){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,n)}else this._imageMap.has(e)||this._imageMap.set(e,n)}}class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,n){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,n)}else this._imageMap.has(e)||this._imageMap.set(e,n)}}class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,n){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,n)}}class LocalGStateCache extends BaseLocalCache{set(e,t=null,n){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,n)}else this._imageMap.has(e)||this._imageMap.set(e,n)}}class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,n){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,n)}}class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,n){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,n)}}class GlobalColorSpaceCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,n){if(!t)throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,n)}clear(){this._imageCache.clear()}}class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#Ve=new RefSet;constructor(){this._refCache=new RefMap;this._imageCache=new RefMap}get#$e(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get#Ye(){return!(this._imageCache.size+e):null}class PDFFunction{static getSampleArray(e,t,n,a){let s=t;for(const t of e)s*=t;const r=new Array(s);let i=0,o=0;const l=1/(2**n-1),f=a.getBytes((s*n+7)/8);let c=0;for(let e=0;e>i)*l;o&=(1<0?r[h-1]:n[0],m=h{PsJsCompiler.execute(r,e,t,n,a)}:PSStackBasedInterpreter.build(s,t,n)}(r,a,s)}}function isPDFFunction(e){let t;if(e instanceof Dict)t=e;else{if(!(e instanceof BaseStream))return!1;t=e.dict}return t.has("FunctionType")}function textSinkWrapper(e){const t=e?null:Promise.resolve();return{enqueueInvoked:!1,enqueue(t,n){this.enqueueInvoked=!0;e?.enqueue(t,n)},get desiredSize(){return e?.desiredSize??100},get ready(){return e?.ready??t}}}function _parseVisibilityExpression(e,t,n,a){if(++n>10){warn("Visibility expression is too deeply nested");return}const s=t.length,r=e.fetchIfRef(t[0]);if(!(s<2)&&r instanceof Name){switch(r.name){case"And":case"Or":case"Not":a.push(r.name);break;default:warn(`Invalid operator ${r.name} in visibility expression`);return}for(let r=1;r0)return{type:"OCMD",expression:n}}const n=a.get("OCGs");if(Array.isArray(n)||n instanceof Dict){const e=[];if(Array.isArray(n))for(const t of n)e.push(t.toString());else e.push(n.objId);const t=a.get("P");return{type:s,ids:e,policy:t instanceof Name?t.name:null,expression:null}}if(n instanceof Ref)return{type:s,id:n.toString()}}return null}const Ai=["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"],xi=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return!!(1&e)}function isEven(e){return!(1&e)}function findUnequal(e,t,n){let a,s;for(a=t,s=e.length;a4){a=!0;t=0}else{a=!1;t=1}const l=[];for(r=0;r=0&&"ET"===Ii[e];--e)Ii[e]="EN";for(let e=r+1;e=0;e--){const n=Ii[e];if("L"===n){t="L";break}if("R"===n||"EN"===n||"AN"===n){t="R";break}}let n=h;for(let t=e;tp&&isOdd(p)&&(g=p)}for(p=d;p>=g;--p){let e=-1;for(r=0,i=l.length;r=0){reverseValues(Ci,e,r);e=-1}}else e<0&&(e=r);e>=0&&reverseValues(Ci,e,l.length)}for(r=0,i=Ci.length;r"!==e||(Ci[r]="")}return createBidiText(Ci.join(""),a)}const Fi={style:"normal",weight:"normal"},Ti={style:"normal",weight:"500"},Ri={style:"normal",weight:"bold"},Oi={style:"italic",weight:"normal"},Hi={style:"italic",weight:"bold"},Bi=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:Fi,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:Ri,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:Oi,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:Hi,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:Fi,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:Ri,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:Oi,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:Hi,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:Fi,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:Ri,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:Oi,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:Hi,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:Fi,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:Ri,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:Oi,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:Hi,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:Fi,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:Ri,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:Oi,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:Hi,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:Fi}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}],["ËÎÌå",{local:["SimSun","SimSun Regular","NSimSun"],style:Fi,ultimate:"serif"}],["ºÚÌå",{local:["SimHei","SimHei Regular"],style:Fi,ultimate:"sans-serif"}],["¿¬Ìå",{local:["KaiTi","SimKai","SimKai Regular"],style:Fi,ultimate:"sans-serif"}],["·ÂËÎ",{local:["FangSong","SimFang","SimFang Regular"],style:Fi,ultimate:"serif"}],["¿¬Ìå_GB2312",{alias:"¿¬Ìå"}],["·ÂËÎ_GB2312",{alias:"·ÂËÎ"}],["Á¥Êé",{local:["SimLi","SimLi Regular"],style:Fi,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:Fi,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:Ti,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:Fi,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:Fi,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:Fi,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:Ti,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:Ti,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:Ti,ultimate:"sans-serif"}],["HYSMyeongJoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["AdobeMyungjoStd-Medium",{alias:"HYSMyeongJo-Medium"}],["HYGoThic-Bold",{alias:"HYGoThic-Medium",style:Ri}],["AdobeGothicStd-Bold",{alias:"HYGoThic-Medium",style:Ri}]]),Di=new Map([["Arial-Black","ArialBlack"]]);function getFamilyName(e){const t=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 e.split(/[- ,+]+/g).filter(e=>!t.has(e.toLowerCase())).join(" ")}function generateFont({alias:e,local:t,path:n,fallback:a,style:s,ultimate:r},i,o,l=!0,f=!0,c=""){const h={style:null,ultimate:null};if(t){const e=c?` ${c}`:"";for(const n of t)i.push(`local(${n}${e})`)}if(e){const t=Bi.get(e),r=c||function getStyleToAppend(e){switch(e){case Ri:return"Bold";case Oi:return"Italic";case Hi:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(s);Object.assign(h,generateFont(t,i,o,l&&!a,f&&!n,r))}s&&(h.style=s);r&&(h.ultimate=r);if(l&&a){const e=Bi.get(a),{ultimate:t}=generateFont(e,i,o,l,f&&!n,c);h.ultimate||=t}f&&n&&o&&i.push(`url(${o}${n})`);return h}function getFontSubstitution(e,t,n,a,s,r){if(a.startsWith("InvalidPDFjsFont_"))return null;"TrueType"!==r&&"Type1"!==r||!/^[A-Z]{6}\+/.test(a)||(a=a.slice(7));const i=a=normalizeFontName(a);let o=e.get(i);if(o)return o;let l=Bi.get(a);if(!l)for(const[e,t]of Di)if(a.startsWith(e)){a=`${t}${a.substring(e.length)}`;l=Bi.get(a);break}let f=!1;if(!l){l=Bi.get(s);f=!0}const c=`${t.getDocId()}_s${t.createFontId()}`;if(!l){if(!validateFontName(a)){warn(`Cannot substitute the font because of its name: ${a}`);e.set(i,null);return null}const t=/bold/i.test(a),n=/oblique|italic/i.test(a),s=t&&n&&Hi||t&&Ri||n&&Oi||Fi;o={css:`"${getFamilyName(a)}",${c}`,guessFallback:!0,loadedName:c,baseFontName:a,src:`local(${a})`,style:s};e.set(i,o);return o}const h=[];f&&validateFontName(a)&&h.push(`local(${a})`);const{style:u,ultimate:m}=generateFont(l,h,n),p=null===m,d=p?"":`,${m}`;o={css:`"${getFamilyName(a)}",${c}${d}`,guessFallback:p,loadedName:c,baseFontName:a,src:h.join(","),style:u};e.set(i,o);return o}const Mi=3285377520,Ni=4294901760,Pi=65535;class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:Mi;this.h2=e?4294967295&e:Mi}update(e){let t,n;if("string"==typeof e){t=new Uint8Array(2*e.length);n=0;for(let a=0,s=e.length;a>>8;t[n++]=255&s}}}else{if(!ArrayBuffer.isView(e))throw new Error("Invalid data format, must be a string or TypedArray.");t=e.slice();n=t.byteLength}const a=n>>2,s=n-4*a,r=new Uint32Array(t.buffer,0,a);let i=0,o=0,l=this.h1,f=this.h2;const c=3432918353,h=461845907,u=11601,m=13715;for(let e=0;e>>17;i=i*h&Ni|i*mΠl^=i;l=l<<13|l>>>19;l=5*l+3864292196}else{o=r[e];o=o*c&Ni|o*uΠo=o<<15|o>>>17;o=o*h&Ni|o*mΠf^=o;f=f<<13|f>>>19;f=5*f+3864292196}i=0;switch(s){case 3:i^=t[4*a+2]<<16;case 2:i^=t[4*a+1]<<8;case 1:i^=t[4*a];i=i*c&Ni|i*uΠi=i<<15|i>>>17;i=i*h&Ni|i*mΠ1&a?l^=i:f^=i}this.h1=l;this.h2=f}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&Ni|36045*eΠt=4283543511*t&Ni|(2950163797*(t<<16|e>>>16)&Ni)>>>16;e^=t>>>1;e=444984403*e&Ni|60499*eΠt=3301882366*t&Ni|(3120437893*(t<<16|e>>>16)&Ni)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}class PDFImage{constructor({xref:e,res:t,image:n,isInline:a=!1,smask:s=null,mask:r=null,isMask:i=!1,pdfFunctionFactory:o,globalColorSpaceCache:l,localColorSpaceCache:f}){this.image=n;const c=n.dict,h=c.get("F","Filter");let u;if(h instanceof Name)u=h.name;else if(Array.isArray(h)){const t=e.fetchIfRef(h[0]);t instanceof Name&&(u=t.name)}switch(u){case"JPXDecode":({width:n.width,height:n.height,componentsCount:n.numComps,bitsPerComponent:n.bitsPerComponent}=JpxImage.parseImageProperties(n.stream));n.stream.reset();const e=ImageResizer.getReducePowerForJPX(n.width,n.height,n.numComps);this.jpxDecoderOptions={numComponents:0,isIndexedColormap:!1,smaskInData:c.get("SMaskInData")>=1,reducePower:e};if(e){const t=2**e;n.width=Math.ceil(n.width/t);n.height=Math.ceil(n.height/t)}break;case"JBIG2Decode":n.bitsPerComponent=1;n.numComps=1}let m=c.get("W","Width"),p=c.get("H","Height");if(Number.isInteger(n.width)&&n.width>0&&Number.isInteger(n.height)&&n.height>0&&(n.width!==m||n.height!==p)){warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");m=n.width;p=n.height}else{const e="number"==typeof m&&m>0,t="number"==typeof p&&p>0;if(!e||!t){if(!n.fallbackDims)throw new FormatError(`Invalid image width: ${m} or height: ${p}`);warn("PDFImage - using the Width/Height of the parent image, for SMask/Mask data.");e||(m=n.fallbackDims.width);t||(p=n.fallbackDims.height)}}this.width=m;this.height=p;this.interpolate=c.get("I","Interpolate");this.imageMask=c.get("IM","ImageMask")||!1;this.matte=c.get("Matte")||!1;let d=n.bitsPerComponent;if(!d){d=c.get("BPC","BitsPerComponent");if(!d){if(!this.imageMask)throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);d=1}}this.bpc=d;if(this.imageMask)this.numComps=1;else{let s=c.getRaw("CS")||c.getRaw("ColorSpace");const r=!!s;if(this.jpxDecoderOptions?.smaskInData&&2===c.get("SMaskInData")){this.jpxPremultiplied=!0;if(this.matte){const n=ColorSpaceUtils.parse({cs:r?s:Name.get("DeviceRGB"),xref:e,resources:a?t:null,pdfFunctionFactory:o,globalColorSpaceCache:l,localColorSpaceCache:f});this.preblendMatte=n.getRgb(this.matte,0)}}if(r)this.jpxDecoderOptions?.smaskInData&&(s=Name.get("DeviceRGBA"));else if(this.jpxDecoderOptions)s=Name.get("DeviceRGBA");else switch(n.numComps){case 1:s=Name.get("DeviceGray");break;case 3:s=Name.get("DeviceRGB");break;case 4:s=Name.get("DeviceCMYK");break;default:throw new Error(`Images with ${n.numComps} color components not supported.`)}this.colorSpace=ColorSpaceUtils.parse({cs:s,xref:e,resources:a?t:null,pdfFunctionFactory:o,globalColorSpaceCache:l,localColorSpaceCache:f});this.numComps=this.colorSpace.numComps;if(this.jpxDecoderOptions){this.jpxDecoderOptions.numComponents=r?this.numComps:0;this.jpxDecoderOptions.isIndexedColormap="Indexed"===this.colorSpace.name}}this.decode=c.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,d)||i&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<0,l=(a+7>>3)*s,f=await e.getImageData(l),c=1===a&&1===s&&o===(0===f.length||!!(128&f[0]));if(c)return{isSingleOpaquePixel:c};if(t){if(ImageResizer.needsToBeResized(a,s)){const e=new Uint8ClampedArray(a*s*4);convertBlackAndWhiteToRGBA({src:f,dest:e,width:a,height:s,nonBlackColor:0,inverseDecode:o});return ImageResizer.createImage({kind:T,data:e,width:a,height:s,interpolate:r})}const e=new OffscreenCanvas(a,s),t=e.getContext("2d"),n=t.createImageData(a,s);convertBlackAndWhiteToRGBA({src:f,dest:n.data,width:a,height:s,nonBlackColor:0,inverseDecode:o});t.putImageData(n,0,0);return{data:null,width:a,height:s,interpolate:r,bitmap:e.transferToImageBitmap()}}const h=f.byteLength;let u;if(e instanceof DecodeStream&&(!o||l===h))u=f;else if(o){u=new Uint8Array(l);u.set(f);u.fill(255,h)}else u=new Uint8Array(f);if(o)for(let e=0;e>7&1;i[u+1]=h>>6&1;i[u+2]=h>>5&1;i[u+3]=h>>4&1;i[u+4]=h>>3&1;i[u+5]=h>>2&1;i[u+6]=h>>1&1;i[u+7]=1&h;u+=8}if(u>=1}}}}else{let n=0;h=0;for(u=0,c=r;u>a,0,f);h&=(1<this.smask.fillGrayBuffer(e,{...a,destWidth:t,destHeight:n});else if(this.mask)if(this.mask instanceof PDFImage)r=(e,a)=>this.mask.fillGrayBuffer(e,{...a,invertOutput:!0,destWidth:t,destHeight:n});else{if(!Array.isArray(this.mask))throw new FormatError("Unknown mask format.");r=(e,{maxRows:n,offset:a,stride:r})=>{for(let i=0,o=t*n;ithis.mask[r+1]){t=255;break}}e[i*r+a]=t}}}else r=(e,{maxRows:n,offset:a,stride:s})=>{for(let r=0,i=t*n;r>3,c=t&&ImageResizer.needsToBeResized(n,a);if(!this.smask&&!this.mask&&"DeviceRGBA"===this.colorSpace.name){s.kind=T;const e=s.data=await this.getImageBytes(o*i*4,{internal:t&&c});if(this.jpxPremultiplied){const t=this.preblendMatte;PDFImage.#Je(e,e.length,t?.[0]??0,t?.[1]??0,t?.[2]??0)}return t?c?ImageResizer.createImage(s,!1):this.createBitmap(T,n,a,e):s}if(!e&&!this.smask&&!this.mask){let e;"DeviceGray"===this.colorSpace.name&&1===l?e=C:"DeviceRGB"!==this.colorSpace.name||8!==l||this.needsDecode||(e=F);if(e&&n===i&&a===o){const r=await this.#Qe(i,o);if(r)return r;const l=await this.getImageBytes(o*f,{internal:t&&c});if(t)return c?ImageResizer.createImage({data:l,kind:e,width:n,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,i,o,l);s.kind=e;s.data=l;if(this.needsDecode){assert(e===C,"PDFImage.createImageData: The image must be grayscale.");const t=s.data;for(let e=0,n=t.length;e>3,u=await this.getImageBytes(f*h,{internal:!0}),m=this.getComponents(u),p=t??l,d=n??f,g=p!==l||d!==f,b=void 0===s?d:Math.min(d,s);let w=l,j=0,k=null;if(g){w=p;j=f/d;const e=l/p;k=new Uint32Array(p);for(let t=0;t0&&a[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checked!isFinite(e))&&(m=null);l.has("OC")&&(h=await this.parseMarkedContentProps(l.get("OC"),e));void 0!==h&&a.addOp(Ct,["OC",h]);const p=l.get("Group");let d;const g=[f&&new Float32Array(f),!p&&m||null],b=l.get("Resources");if(p){u={matrix:f,bbox:m,smask:n,isolated:!1,knockout:!1,needsIsolation:!1,hasSoftMask:!1,isGray:!1};let t=null;if(isName(p.get("S"),"Transparency")){u.isolated=p.get("I")||!1;u.knockout=p.get("K")||!1;if(p.has("CS")){const n=this._getColorSpace(p.getRaw("CS"),e,i);t=n instanceof ColorSpace?n:await this._handleColorSpace(n)}}u.isGray=1===t?.numComps;if(n?.backdrop){t||=ColorSpaceUtils.rgb;n.backdrop=t.getRgbHex(n.backdrop,0)}else"Luminosity"===n?.subtype&&(n.backdrop="#000000");d=new CheckedOperatorList}else{d=a;a.addOp(Rt,g)}await this.getOperatorList({stream:t,task:s,resources:b instanceof Dict?b:e,operatorList:d,initialState:r,prevRefs:o});if(p){u.needsIsolation=d.needsIsolation||!!n;u.hasSoftMask=d.hasSoftMask||!!n;a.addOp(Ht,[u]);a.addOp(Rt,g);a.addOpList(d);a.addOp(Ot,[]);a.addOp(Bt,[u])}else a.addOp(Ot,[]);void 0!==h&&a.addOp(It,[])}_sendImgData(e,t,n=!1){const a=t?[t.bitmap||t.data.buffer]:null;return this.parsingType3Font||n?this.handler.send("commonobj",[e,"Image",t],a):this.handler.send("obj",[e,this.pageIndex,"Image",t],a)}async buildPaintImageXObject({resources:e,image:t,isInline:n=!1,operatorList:a,cacheKey:s,localImageCache:r,localColorSpaceCache:i}){const{maxImageSize:o,ignoreErrors:l,isOffscreenCanvasSupported:f}=this.options,{dict:c}=t,h=c.objId,u=c.get("W","Width"),m=c.get("H","Height");if(!u||"number"!=typeof u||!m||"number"!=typeof m){warn("Image dimensions are missing, or not numbers.");return}if(-1!==o&&u*m>o){const e="Image exceeded maximum allowed size and was removed.";if(!l)throw new Error(e);warn(e);return}let p;c.has("OC")&&(p=await this.parseMarkedContentProps(c.get("OC"),e));let d,g,b;if(c.get("IM","ImageMask")||!1){d=await PDFImage.createMask({image:t,isOffscreenCanvasSupported:f&&!this.parsingType3Font});if(d.isSingleOpaquePixel){g=Wt;b=[];a.addImageOps(g,b,p);if(s){const e={fn:g,args:b,optionalContent:p};r.set(s,h,e);h&&this._regionalImageCache.set(null,h,e)}return}if(this.parsingType3Font){b=function compileType3Glyph({data:e,width:t,height:n}){if(t>1e3||n>1e3)return null;const a=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),s=t+1,r=new Uint8Array(s*(n+1));let i,o,l;const f=t+7&-8,c=new Uint8Array(f*n);let h=0;for(const t of e){let e=128;for(;e>0;){c[h++]=t&e?0:255;e>>=1}}let u=0;h=0;if(0!==c[h]){r[0]=1;++u}for(o=1;o>2)+(c[h+1]?4:0)+(c[h-f+1]?8:0);if(a[e]){r[l+o]=a[e];++u}h++}if(c[h-f]!==c[h]){r[l+o]=c[h]?2:4;++u}if(u>1e3)return null}h=f*(n-1);l=i*s;if(0!==c[h]){r[l]=8;++u}for(o=1;o1e3)return null;const m=new Int32Array([0,s,-1,0,-s,0,0,0,1]),p=[],{a:d,b:g,c:b,d:w,e:j,f:k}=(new DOMMatrix).scaleSelf(1/t,-1/n).translateSelf(0,-n);for(i=0;u&&i<=n;i++){let e=i*s;const n=e+t;for(;e>4;r[e]&=f>>2|f<<2}a=e%s;o=e/s|0;p.push(Yt,d*a+b*o+j,g*a+w*o+k);r[e]||--u}while(l!==e);--i}return[Vt,[new Float32Array(p)],new Float32Array([0,0,t,n])]}(d);if(b){a.addImageOps(Xt,b,p);return}warn("Cannot compile Type3 glyph.");a.addImageOps(Nt,[d],p);return}const e=`mask_${this.idFactory.createObjId()}`;a.addDependency(e);d.dataLen=d.bitmap?d.width*d.height*4:d.data.length;this._sendImgData(e,d);g=Nt;b=[{data:e,width:d.width,height:d.height,interpolate:d.interpolate,count:1}];a.addImageOps(g,b,p);if(s){const t={objId:e,fn:g,args:b,optionalContent:p};r.set(s,h,t);h&&this._regionalImageCache.set(null,h,t)}return}const w=c.has("SMask")||c.has("Mask");if(n&&u+m<200&&!w){try{const s=new PDFImage({xref:this.xref,res:e,image:t,isInline:n,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:i});d=await s.createImageData(!0,!1);a.addImageOps(_t,[d],p)}catch(e){const t=`Unable to decode inline image: "${e}".`;if(!l)throw new Error(t);warn(t)}return}let j=`img_${this.idFactory.createObjId()}`,k=!1,y=null;if(this.parsingType3Font)j=`${this.idFactory.getDocId()}_type3_${j}`;else if(s&&h){k=this.globalImageCache.shouldCache(h,this.pageIndex);if(k){assert(!n,"Cannot cache an inline image globally.");j=`${this.idFactory.getDocId()}_${j}`}}a.addDependency(j);g=Et;b=[j,u,m];a.addImageOps(g,b,p,w);if(k){y={objId:j,fn:g,args:b,optionalContent:p,hasMask:w,byteSize:0};if(this.globalImageCache.hasDecodeFailed(h)){this.globalImageCache.setData(h,y);this._sendImgData(j,null,k);return}if(u*m>25e4||w){const e=await this.handler.sendWithPromise("commonobj",[j,"CopyLocalImage",{imageRef:h}]);if(e){this.globalImageCache.setData(h,y);this.globalImageCache.addByteSize(h,e);return}}}PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:n,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:i}).then(async e=>{d=await e.createImageData(!1,f);d.dataLen=d.bitmap?d.width*d.height*4:d.data.length;d.ref=h;k&&this.globalImageCache.addByteSize(h,d.dataLen);return this._sendImgData(j,d,k)}).catch(e=>{warn(`Unable to decode image "${j}": "${e}".`);h&&this.globalImageCache.addDecodeFailed(h);return this._sendImgData(j,null,k)});if(s){const e={objId:j,fn:g,args:b,optionalContent:p,hasMask:w};r.set(s,h,e);if(h){this._regionalImageCache.set(null,h,e);if(k){assert(y,"The global cache-data must be available.");this.globalImageCache.setData(h,y)}}}}#Ze(e){const t=this._pdfFunctionFactory.create(e),n=new Float32Array(1);return Uint8Array.from({length:256},(e,a)=>{n[0]=a/255;t(n,0,n,0);return 255*n[0]|0})}handleSMask(e,t,n,a,s,r,i){const o=e.get("G"),l={subtype:e.get("S").name,backdrop:e.get("BC")},f=e.get("TR");isPDFFunction(f)&&(l.transferMap=this.#Ze(f));return this.buildFormXObject(t,o,l,n,a,s.state.clone({newPath:!0}),r,i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e.length>1&&e.every(t=>t===e[0])?[e[0]]:e;else{if(!isPDFFunction(e))return null;t=[e]}const n=[];let a=0,s=0;for(const e of t){const t=this.xref.fetchIfRef(e);a++;if(isName(t,"Identity"))n.push(null);else{if(!isPDFFunction(t))return null;n.push(this.#Ze(t));s++}}return 1!==a&&4!==a||0===s?null:n}handleTilingType(e,t,n,a,s,r,i,o,l){const f=new CheckedOperatorList,c=Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),n]});return this.getOperatorList({stream:a,task:i,resources:c,operatorList:f,prevRefs:l}).then(function(){const n=f.getIR(),{needsIsolation:a}=f,i=getTilingPatternIR(n,s,t,a);r.addDependencies(f.dependencies);r.addOp(e,i);s.objId&&o.set(null,s.objId,{operatorListIR:n,needsIsolation:a,dict:s})}).catch(e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`handleTilingType - ignoring pattern: "${e}".`)}})}async handleSetFont(e,t,n,a,s,r,i=null,o=null,l=null){const f=t?.[0]instanceof Name?t[0].name:null,c=await this.loadFont(f,n,e,s,i,o,l);c.font.isType3Font&&a.addDependencies(c.type3Dependencies);r.font=c.font;c.send(this.handler);return c.loadedName}handleText(e,t){const n=t.font,a=n.charsToGlyphs(e);if(n.data){(!!(t.textRenderingMode&x)||"Pattern"===t.fillColorSpace.name||"Pattern"===t.strokeColorSpace.name||n.disableFontFace)&&PartialEvaluator.buildFontPaths(n,a,this.handler,this.options)}return a}ensureStateFont(e){if(e.font)return;const t=new FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;warn(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:n,cacheKey:a,task:s,stateManager:r,localGStateCache:i,localColorSpaceCache:o,seenRefs:l}){const f=t.objId;let c=!0;const h=[];let u=Promise.resolve();for(const[a,i]of t)switch(a){case"Type":break;case"LW":if("number"!=typeof i){warn(`Invalid LW (line width): ${i}`);break}h.push([a,Math.abs(i)]);break;case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":h.push([a,i]);break;case"Font":c=!1;u=u.then(()=>this.handleSetFont(e,null,i[0],n,s,r.state,null,null,l).then(function(e){n.addDependency(e);h.push([a,[e,i[1]]])}));break;case"BM":h.push([a,normalizeBlendMode(i)]);break;case"SMask":if(isName(i,"None")){h.push([a,!1]);break}if(i instanceof Dict){c=!1;u=u.then(()=>this.handleSMask(i,e,n,s,r,o,l));h.push([a,!0])}else warn("Unsupported SMask type");break;case"TR":if(t.has("TR2"))break;case"TR2":{const e=this.handleTransferFunction(i);h.push(["TR",e]);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":info("graphic state operator "+a);break;default:info("Unknown graphic state operator "+a)}await u;h.length>0&&n.addOp(ke,[h]);c&&i.set(a,f,h)}loadFont(e,t,n,a,s=null,r=null,i=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Font "${e}" is not available.`),dict:t});let o;if(t)t instanceof Ref&&(o=t);else{const t=n.get("Font");t&&(o=t.getRaw(e))}if(o){if(this.type3FontRefs?.has(o))return errorFont();if(this.fontCache.has(o))return this.fontCache.get(o);try{t=this.xref.fetchIfRef(o)}catch(e){warn(`loadFont - lookup failed: "${e}".`)}}if(!(t instanceof Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){warn(`Font "${e}" is not available.`);return errorFont()}warn(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=s||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const{promise:l,resolve:f}=Promise.withResolvers();let c;try{c=this.preEvaluateFont(t);c.cssFontInfo=r}catch(e){warn(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:h,hash:u}=c,m=o instanceof Ref;let p;if(u&&h instanceof Dict){const e=h.fontAliases||=Object.create(null);if(e[u]){const t=e[u].aliasRef;if(m&&t&&this.fontCache.has(t)){this.fontCache.putAlias(o,t);return this.fontCache.get(o)}}else e[u]={fontID:this.idFactory.createFontId()};m&&(e[u].aliasRef=o);p=e[u].fontID}else p=this.idFactory.createFontId();assert(p?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(m)this.fontCache.put(o,l);else{t.cacheKey=`cacheKey_${p}`;this.fontCache.put(t.cacheKey,l)}t.loadedName=`${this.idFactory.getDocId()}_${p}`;this.translateFont(c).then(async e=>{const s=new TranslatedFont({loadedName:t.loadedName,font:e,dict:t});if(e.isType3Font)try{await s.loadType3Data(this,n,a,i)}catch(e){throw new Error(`Type3 font load error: ${e}`)}f(s)}).catch(e=>{warn(`loadFont - translateFont failed: "${e}".`);f(new TranslatedFont({loadedName:t.loadedName,font:new ErrorFont(e?.message),dict:t}))});return l}buildPath(e,t,n){const{pathMinMax:a,pathBuffer:s}=n;switch(0|e){case Te:{const e=n.currentPointX=t[0],r=n.currentPointY=t[1],i=t[2],o=t[3],l=e+i,f=r+o;0===i||0===o?s.push($t,e,r,Yt,l,f,Zt):s.push($t,e,r,Yt,l,r,Yt,l,f,Yt,e,f,Zt);Util.rectBoundingBox(e,r,l,f,a);break}case Se:{const e=n.currentPointX=t[0],r=n.currentPointY=t[1];s.push($t,e,r);Util.pointBoundingBox(e,r,a);break}case Ae:{const e=n.currentPointX=t[0],r=n.currentPointY=t[1];s.push(Yt,e,r);Util.pointBoundingBox(e,r,a);break}case xe:{const e=n.currentPointX,r=n.currentPointY,[i,o,l,f,c,h]=t;n.currentPointX=c;n.currentPointY=h;s.push(Jt,i,o,l,f,c,h);Util.bezierBoundingBox(e,r,i,o,l,f,c,h,a);break}case Ce:{const e=n.currentPointX,r=n.currentPointY,[i,o,l,f]=t;n.currentPointX=l;n.currentPointY=f;s.push(Jt,e,r,i,o,l,f);Util.bezierBoundingBox(e,r,e,r,i,o,l,f,a);break}case Ie:{const e=n.currentPointX,r=n.currentPointY,[i,o,l,f]=t;n.currentPointX=l;n.currentPointY=f;s.push(Jt,i,o,l,f,l,f);Util.bezierBoundingBox(e,r,i,o,l,f,l,f,a);break}case Fe:s.push(Zt)}}_getColorSpace(e,t,n){return ColorSpaceUtils.parse({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:n,asyncIfNotCached:!0})}async _handleColorSpace(e){try{return await e}catch(e){if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`_handleColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}}parseShading({shading:e,resources:t,localColorSpaceCache:n,localShadingPatternCache:a}){let s,r=a.get(e);if(r)return r;try{s=Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,this.globalColorSpaceCache,n).getIR()}catch(t){if(t instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseShading - ignoring shading: "${t}".`);a.set(e,null);return null}throw t}r=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(r=`${this.idFactory.getDocId()}_type3_${r}`);a.set(e,r);if(this.parsingType3Font){const e=function compilePatternInfo(e){let t,n=null,a=[],s=[],r=[],i=null,o=null;switch(e[0]){case"RadialAxial":t="axial"===e[1]?1:2;n=e[2];r=e[3];1===t?a.push(...e[4],...e[5]):a.push(e[4][0],e[4][1],e[6],e[5][0],e[5][1],e[7]);break;case"Mesh":t=3;i=e[1];a=e[2];s=e[3];n=e[6];o=e[7];break;default:throw new Error(`Unsupported pattern type: ${e[0]}`)}const l=Math.floor(a.length/2),f=Math.floor(s.length/4),c=r.length,h=new ArrayBuffer(20+8*l+4*f+8*c+(n?16:0)+(o?3:0)),u=new DataView(h),m=new Uint8Array(h);u.setUint8(PATTERN_INFO.KIND,t);u.setUint8(PATTERN_INFO.HAS_BBOX,n?1:0);u.setUint8(PATTERN_INFO.HAS_BACKGROUND,o?1:0);u.setUint8(PATTERN_INFO.SHADING_TYPE,i);u.setUint32(PATTERN_INFO.N_COORD,l,!0);u.setUint32(PATTERN_INFO.N_COLOR,f,!0);u.setUint32(PATTERN_INFO.N_STOP,c,!0);u.setUint32(PATTERN_INFO.N_FIGURES,0,!0);let p=20;new Float32Array(h,p,2*l).set(a);p+=8*l;m.set(s,p);p+=4*f;for(const[e,t]of r){u.setFloat32(p,e,!0);p+=4;u.setUint32(p,parseInt(t.slice(1),16),!0);p+=4}if(n)for(const e of n){u.setFloat32(p,e,!0);p+=4}o&&m.set(o,p);return h}(s);this.handler.send("commonobj",[r,"Pattern",e],[e])}else this.handler.send("obj",[r,this.pageIndex,"Pattern",s]);return r}handleColorN(e,t,n,a,s,r,i,o,l,f,c){const h=n.pop();if(h instanceof Name){const u=s.getRaw(h.name),m=u instanceof Ref&&l.getByRef(u);if(m)try{const s=a.base?a.base.getRgbHex(n,0):null,r=getTilingPatternIR(m.operatorListIR,m.dict,s,m.needsIsolation);e.addOp(t,r);return}catch{}const p=this.xref.fetchIfRef(u);if(p){const s=p instanceof BaseStream?p.dict:p,h=s.get("PatternType");if(h===_i){const o=a.base?a.base.getRgbHex(n,0):null;return this.handleTilingType(t,o,r,p,s,e,i,l,c)}if(h===zi){const n=s.get("Shading"),a=this.parseShading({shading:n,resources:r,localColorSpaceCache:o,localShadingPatternCache:f});if(a){const n=lookupMatrix(s.getArray("Matrix"),null);e.addOp(t,["Shading",a,n])}return}throw new FormatError(`Unknown PatternType: ${h}`)}}throw new FormatError(`Unknown PatternName: ${h}`)}async parseMarkedContentProps(e,t){return parseMarkedContentProps(this.xref,e,t)}async getOperatorList({stream:e,task:n,resources:a,operatorList:s,initialState:r=null,fallbackFontDict:i=null,prevRefs:o=null}){if(e.isAsync){const t=await e.asyncGetBytes();t&&(e=new Stream(t,0,t.length,e.dict))}const l=e.dict?.objId,f=new RefSet(o);if(l){if(o?.has(l))throw new Error(`getOperatorList - ignoring circular reference: ${l}`);f.put(l)}a||=Dict.empty;r||=new EvalState;if(!s)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,h=this.xref,u=new LocalImageCache,m=new LocalColorSpaceCache,p=new LocalGStateCache,d=new LocalTilingPatternCache,g=new Map,b=a.get("XObject")||Dict.empty,w=a.get("Pattern")||Dict.empty,j=new StateManager(r),k=new EvaluatorPreprocessor(e,h,j),y=new TimeSlotManager;let q=0;function closePendingRestoreOPS(e){for(let e=0,t=k.savedStatesDepth;e0;q--)s.addOp(It,[])}return new Promise(function promiseBody(e,r){const next=function(t){Promise.all([t,s.ready]).then(function(){try{promiseBody(e,r)}catch(e){r(e)}},r)};n.ensureNotTerminated();y.reset();const o={};let l,v,S,x;for(;!(l=y.check());){o.args=null;if(!k.read(o))break;let e=o.args,r=o.fn;switch(0|r){case vt:x=e[0]instanceof Name;S=e[0].name;if(x){const t=u.getByName(S);if(t){addCachedImageOps(s,t);e=null;continue}}next(new Promise(function(e,t){if(!x)throw new FormatError("XObject must be referred to by name.");let r=b.getRaw(S);if(r instanceof Ref){const t=u.getByRef(r)||c._regionalImageCache.getByRef(r)||c.globalImageCache.getData(r,c.pageIndex);if(t){addCachedImageOps(s,t);e();return}r=h.fetch(r)}if(!(r instanceof BaseStream))throw new FormatError("XObject should be a stream");const i=r.dict.get("Subtype");if(!(i instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==i.name)if("Image"!==i.name){if("PS"!==i.name)throw new FormatError(`Unhandled XObject subtype ${i.name}`);info("Ignored XObject subtype PS");e()}else c.buildPaintImageXObject({resources:a,image:r,operatorList:s,cacheKey:S,localImageCache:u,localColorSpaceCache:m}).then(e,t);else{j.save();c.buildFormXObject(a,r,null,s,n,j.state.clone({newPath:!0}),m,f).then(function(){j.restore();e()},t)}}).catch(function(e){if(!(e instanceof AbortException)){if(!c.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring XObject: "${e}".`)}}));return;case Ve:const o=e[1];next(c.handleSetFont(a,e,null,s,n,j.state,i,null,f).then(function(e){s.addDependency(e);s.addOp(Ve,[e,o])}));return;case qt:const l=e[0].cacheKey;if(l){const t=u.getByName(l);if(t){addCachedImageOps(s,t);e=null;continue}}next(c.buildPaintImageXObject({resources:a,image:e[0],isInline:!0,operatorList:s,cacheKey:l,localImageCache:u,localColorSpaceCache:m}));return;case tt:if(!j.state.font){c.ensureStateFont(j.state);continue}e[0]=c.handleText(e[0],j.state);break;case nt:if(!j.state.font){c.ensureStateFont(j.state);continue}const k=[],y=j.state;for(const t of e[0])"string"==typeof t?k.push(...c.handleText(t,y)):"number"==typeof t&&k.push(t);e[0]=k;r=tt;break;case at:if(!j.state.font){c.ensureStateFont(j.state);continue}s.addOp(et);e[0]=c.handleText(e[0],j.state);r=tt;break;case st:if(!j.state.font){c.ensureStateFont(j.state);continue}s.addOp(et);s.addOp(Xe,[e.shift()]);s.addOp(We,[e.shift()]);e[0]=c.handleText(e[0],j.state);r=tt;break;case $e:j.state.textRenderingMode=e[0];break;case lt:{const t=c._getColorSpace(e[0],a,m);if(t instanceof ColorSpace){j.state.fillColorSpace=t;continue}next(c._handleColorSpace(t).then(e=>{j.state.fillColorSpace=e||ColorSpaceUtils.gray}));return}case ot:{const t=c._getColorSpace(e[0],a,m);if(t instanceof ColorSpace){j.state.strokeColorSpace=t;continue}next(c._handleColorSpace(t).then(e=>{j.state.strokeColorSpace=e||ColorSpaceUtils.gray}));return}case ht:if(!isNumberArray(e,null))continue;v=j.state.fillColorSpace;e=[v.getRgbHex(e,0)];r=gt;break;case ft:if(!isNumberArray(e,null))continue;v=j.state.strokeColorSpace;e=[v.getRgbHex(e,0)];r=dt;break;case pt:if(!isNumberArray(e,null))continue;j.state.fillColorSpace=ColorSpaceUtils.gray;e=[ColorSpaceUtils.gray.getRgbHex(e,0)];r=gt;break;case mt:if(!isNumberArray(e,null))continue;j.state.strokeColorSpace=ColorSpaceUtils.gray;e=[ColorSpaceUtils.gray.getRgbHex(e,0)];r=dt;break;case wt:if(!isNumberArray(e,null))continue;j.state.fillColorSpace=ColorSpaceUtils.cmyk;e=[ColorSpaceUtils.cmyk.getRgbHex(e,0)];r=gt;break;case bt:if(!isNumberArray(e,null))continue;j.state.strokeColorSpace=ColorSpaceUtils.cmyk;e=[ColorSpaceUtils.cmyk.getRgbHex(e,0)];r=dt;break;case gt:if(!isNumberArray(e,null))continue;j.state.fillColorSpace=ColorSpaceUtils.rgb;e=[ColorSpaceUtils.rgb.getRgbHex(e,0)];break;case dt:if(!isNumberArray(e,null))continue;j.state.strokeColorSpace=ColorSpaceUtils.rgb;e=[ColorSpaceUtils.rgb.getRgbHex(e,0)];break;case ut:v=j.state.patternFillColorSpace;if(!v){if(isNumberArray(e,null)){e=[ColorSpaceUtils.gray.getRgbHex(e,0)];r=gt;break}e=[];r=Gt;break}if("Pattern"===v.name){if(!Array.isArray(e))continue;next(c.handleColorN(s,ut,e,v,w,a,n,m,d,g,f));return}if(!isNumberArray(e,null))continue;e=[v.getRgbHex(e,0)];r=gt;break;case ct:v=j.state.patternStrokeColorSpace;if(!v){if(isNumberArray(e,null)){e=[ColorSpaceUtils.gray.getRgbHex(e,0)];r=dt;break}e=[];r=Kt;break}if("Pattern"===v.name){if(!Array.isArray(e))continue;next(c.handleColorN(s,ct,e,v,w,a,n,m,d,g,f));return}if(!isNumberArray(e,null))continue;e=[v.getRgbHex(e,0)];r=dt;break;case jt:let C;try{const t=a.get("Shading");if(!t)throw new FormatError("No shading resource found");C=t.get(e[0].name);if(!C)throw new FormatError("No shading object found")}catch(e){if(e instanceof AbortException)continue;if(c.options.ignoreErrors){warn(`getOperatorList - ignoring Shading: "${e}".`);continue}throw e}const F=c.parseShading({shading:C,resources:a,localColorSpaceCache:m,localShadingPatternCache:g});if(!F)continue;e=[F];r=jt;break;case ke:x=e[0]instanceof Name;S=e[0].name;if(x){const t=p.getByName(S);if(t){t.length>0&&s.addOp(ke,[t]);e=null;continue}}next(new Promise(function(e,t){if(!x)throw new FormatError("GState must be referred to by name.");const r=a.get("ExtGState");if(!(r instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const i=r.get(S);if(!(i instanceof Dict))throw new FormatError("GState should be a dictionary.");c.setGState({resources:a,gState:i,operatorList:s,cacheKey:S,task:n,stateManager:j,localGStateCache:p,localColorSpaceCache:m,seenRefs:f}).then(e,t)}).catch(function(e){if(!(e instanceof AbortException)){if(!c.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring ExtGState: "${e}".`)}}));return;case me:{const[t]=e;if("number"!=typeof t){warn(`Invalid setLineWidth: ${t}`);continue}e[0]=Math.abs(t);break}case be:{const t=e[1];if("number"!=typeof t){warn(`Invalid setDash: ${t}`);continue}const n=e[0];if(!Array.isArray(n)){warn(`Invalid setDash: ${n}`);continue}n.some(e=>"number"!=typeof e)&&(e[0]=n.filter(e=>"number"==typeof e));break}case Se:case Ae:case xe:case Ce:case Ie:case Fe:case Te:c.buildPath(r,e,j.state);continue;case Re:case Oe:case He:case Be:case De:case Me:case Ne:case Pe:case Ee:{const{state:{pathBuffer:e,pathMinMax:n}}=j;r!==Oe&&r!==Ne&&r!==Pe||e.push(Zt);if(0===e.length)s.addOp(Xt,[r,[null],null]);else{s.addOp(Xt,[r,[new Float32Array(e)],n.slice()]);e.length=0;n.set(t,0)}continue}case Ze:s.addOp(r,[new Float32Array(e)]);continue;case St:case At:case Ft:case Tt:continue;case Ct:q++;if(!(e[0]instanceof Name)){warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`);s.addOp(Ct,["OC",null]);continue}if("OC"===e[0].name){next(c.parseMarkedContentProps(e[1],a).then(e=>{s.addOp(Ct,["OC",e])}).catch(e=>{if(!(e instanceof AbortException)){if(!c.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`);s.addOp(Ct,["OC",null])}}));return}e=[e[0].name,e[1]instanceof Dict?e[1].get("MCID"):null];break;case xt:if(e?.some(e=>e instanceof Dict)){warn(`getOperatorList - ignoring operator: ${r}`);continue}q++;break;case It:if(e?.some(e=>e instanceof Dict)){warn(`getOperatorList - ignoring operator: ${r}`);continue}if(0===q)continue;q--;break;default:if(e?.some(e=>e instanceof Dict)){warn(`getOperatorList - ignoring operator: ${r}`);continue}}s.addOp(r,e)}if(l)next(Wi);else{closePendingMarkedContentOPS();closePendingRestoreOPS();e()}}).catch(e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring errors during "${n.name}" task: "${e}".`);closePendingMarkedContentOPS();closePendingRestoreOPS()}})}async getTextContent({stream:e,task:t,resources:n,stateManager:s=null,includeMarkedContent:r=!1,sink:i,seenStyles:o=new Set,viewBox:l,lang:f=null,disableNormalization:c=!1,keepWhiteSpace:h=!1,prevRefs:u=null,intersector:m=null}){if(e.isAsync){const t=await e.asyncGetBytes();t&&(e=new Stream(t,0,t.length,e.dict))}i??=textSinkWrapper(null);const p=e.dict?.objId,d=new RefSet(u);if(p){if(u?.has(p))throw new Error(`getTextContent - ignoring circular reference: ${p}`);d.put(p)}n||=Dict.empty;s||=new StateManager(new TextState);let g=0,b=null;const w={items:[],styles:Object.create(null),lang:f},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 saveLastChar(e){const t=(y+1)%2,n=" "!==k[y]&&" "===k[t];k[y]=e;y=t;return!h&&n}function shouldAddWhitepsace(){return!h&&" "!==k[y]&&" "===k[(y+1)%2]}function resetLastChars(){k[0]=k[1]=" ";y=0}const q=this,v=this.xref,S=[];let x=null;const C=new LocalImageCache,F=new LocalGStateCache,T=new EvaluatorPreprocessor(e,v,s);let R,O;function pushWhitespace({width:e=0,height:t=0,transform:n=j.prevTransform,fontName:a=j.fontName}){m?.addExtraChar(" ");w.items.push({str:" ",dir:"ltr",width:e,height:t,transform:n,fontName:a,hasEOL:!1})}function getCurrentTextTransform(){const e=R.font,t=[R.fontSize*R.textHScale,0,0,R.fontSize,0,R.textRise];if(e.isType3Font&&(R.fontSize<=1||e.isCharBBox)&&!isArrayEqual(R.fontMatrix,a)){const n=e.bbox[3]-e.bbox[1];n>0&&(t[3]*=n*R.fontMatrix[3])}return Util.transform(R.ctm,Util.transform(R.textMatrix,t))}function ensureTextContentItem(){if(j.initialized)return j;const{font:e,loadedName:t}=R;if(!o.has(t)){o.add(t);w.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical};if(q.options.fontExtraProperties&&e.systemFontInfo){const n=w.styles[t];n.fontSubstitution=e.systemFontInfo.css;n.fontSubstitutionLoadedName=e.systemFontInfo.loadedName}}j.fontName=t;const n=j.transform=getCurrentTextTransform();if(e.vertical){j.width=j.totalWidth=Math.hypot(n[0],n[1]);j.height=j.totalHeight=0;j.vertical=!0}else{j.width=j.totalWidth=0;j.height=j.totalHeight=Math.hypot(n[2],n[3]);j.vertical=!1}const a=Math.hypot(R.textLineMatrix[0],R.textLineMatrix[1]),s=Math.hypot(R.ctm[0],R.ctm[1]);j.textAdvanceScale=s*a;const{fontSize:r}=R;j.trackingSpaceMin=.102*r;j.notASpace=.03*r;j.negativeSpaceMax=-.2*r;j.spaceInFlowMin=.102*r;j.spaceInFlowMax=.6*r;j.hasEOL=!1;j.initialized=!0;return j}function updateAdvanceScale(){if(!j.initialized)return;const e=Math.hypot(R.textLineMatrix[0],R.textLineMatrix[1]),t=Math.hypot(R.ctm[0],R.ctm[1])*e;if(t!==j.textAdvanceScale){if(j.vertical){j.totalHeight+=j.height*j.textAdvanceScale;j.height=0}else{j.totalWidth+=j.width*j.textAdvanceScale;j.width=0}j.textAdvanceScale=t}}function runBidiTransform(e){let t=e.str.join("");c||(t=function normalizeUnicode(e){if(!sn){sn=/([\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;rn=new Map([["ſt","ſt"]])}return e.replaceAll(sn,(e,t,n)=>t?t.normalize("NFKC"):rn.get(n))}(t));const n=bidi(t,-1,e.vertical);return{str:n.str,dir:n.dir,width:Math.abs(e.totalWidth),height:Math.abs(e.totalHeight),transform:e.transform,fontName:e.fontName,hasEOL:e.hasEOL}}async function handleSetFont(e,s){const r=await q.loadFont(e,s,n,t,null,null,d);R.loadedName=r.loadedName;R.font=r.font;R.fontMatrix=r.font.fontMatrix||a}function applyInverseRotation(e,t,n){const a=Math.hypot(n[0],n[1]);return[(n[0]*e+n[1]*t)/a,(n[2]*e+n[3]*t)/a]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let n=t[4],a=t[5];if(R.font?.vertical){if(nl[2]||a+el[3])return!1}else if(n+el[2]||al[3])return!1;if(!R.font||!j.prevTransform)return!0;let s=j.prevTransform[4],r=j.prevTransform[5];if(s===n&&r===a)return!0;let i=-1;t[0]&&0===t[1]&&0===t[2]?i=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(i=t[1]>0?90:270);switch(i){case 0:break;case 90:[n,a]=[a,n];[s,r]=[r,s];break;case 180:[n,a,s,r]=[-n,-a,-s,-r];break;case 270:[n,a]=[-a,-n];[s,r]=[-r,-s];break;default:[n,a]=applyInverseRotation(n,a,t);[s,r]=applyInverseRotation(s,r,j.prevTransform)}if(R.font.vertical){const e=(r-a)/j.textAdvanceScale,t=n-s,i=Math.sign(j.height||j.totalHeight);if(e.5*j.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>j.width){appendEOL();return!0}e<=i*j.notASpace&&resetLastChars();if(e<=i*j.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else j.height+=e;else if(!addFakeSpaces(e,j.prevTransform,i))if(0===j.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else j.height+=e;Math.abs(t)>.25*j.width&&flushTextContentItem();return!0}const o=(n-s)/j.textAdvanceScale,f=a-r,c=Math.sign(j.width||j.totalWidth);if(o.5*j.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}const h=R.textRise-j.prevTextRise,u=0===h?f:f-t[3]/R.fontSize*h;if(Math.abs(u)>j.height){appendEOL();return!0}o<=c*j.notASpace&&resetLastChars();if(o<=c*j.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else j.width+=o;else if(!addFakeSpaces(o,j.prevTransform,c))if(0===j.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else j.width+=o;Math.abs(f)>.25*j.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){if(O!==R&&(O.fontSize!==R.fontSize||O.fontName!==R.fontName&&(O.font.name!==R.font.name||O.font.vertical!==R.font.vertical))){flushTextContentItem();O=R.clone()}const n=R.font,a=n.vertical?-R.charSpacing:R.charSpacing;if(!e){const e=a+t;e&&(n.vertical?R.translateTextMatrix(0,-e):R.translateTextMatrix(e*R.textHScale,0));h&&compareWithLastPosition(0);return}const s=n.charsToGlyphs(e),r=R.fontMatrix[0]*R.fontSize;for(let e=0,i=s.length;ee;g--)w.items.push({type:"endMarkedContent"})}}function enqueueChunk(e=!1){const t=w.items.length;if(0!==t&&!(e&&t<10)){i.enqueue(w,t);w.items=[];w.styles=Object.create(null)}}const H=new TimeSlotManager;return new Promise(function promiseBody(e,a){const next=function(t){enqueueChunk(!0);Promise.all([t,i.ready]).then(function(){try{promiseBody(e,a)}catch(e){a(e)}},a)};t.ensureNotTerminated();H.reset();const u={};let m,p,j,k=[];for(;!(m=H.check());){k.length=0;u.args=k;if(!T.read(u))break;R=s.state;O||=R.clone();const e=u.fn;k=u.args;switch(0|e){case Ve:const e=k[0].name,a=k[1];if(R.font&&e===R.fontName&&a===R.fontSize)break;R.fontName=e;R.fontSize=a;next(handleSetFont(e,null));return;case Ye:R.textRise=k[0];break;case Ke:R.textHScale=k[0]/100;break;case Ge:R.leading=k[0];break;case Je:R.translateTextLineMatrix(k[0],k[1]);R.textMatrix=R.textLineMatrix.slice();break;case Qe:R.leading=-k[1];R.translateTextLineMatrix(k[0],k[1]);R.textMatrix=R.textLineMatrix.slice();break;case et:R.carriageReturn();break;case Ze:R.setTextMatrix(k[0],k[1],k[2],k[3],k[4],k[5]);R.setTextLineMatrix(k[0],k[1],k[2],k[3],k[4],k[5]);updateAdvanceScale();break;case We:R.charSpacing=k[0];break;case Xe:R.wordSpacing=k[0];break;case Le:R.textMatrix=bn.slice();R.textLineMatrix=bn.slice();b=g;break;case Ue:if(null!==b){closePendingMarkedContentItems(b);b=null}break;case nt:if(!s.state.font){q.ensureStateFont(s.state);continue}const u=(R.font.vertical?1:-1)*R.fontSize/1e3;for(const e of k[0])if("string"==typeof e)S.push(e);else if("number"==typeof e&&0!==e){const t=S.join("");S.length=0;buildTextContentItem({chars:t,extraSpacing:e*u})}if(S.length>0){const e=S.join("");S.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case tt:if(!s.state.font){q.ensureStateFont(s.state);continue}buildTextContentItem({chars:k[0],extraSpacing:0});break;case at:if(!s.state.font){q.ensureStateFont(s.state);continue}R.carriageReturn();buildTextContentItem({chars:k[0],extraSpacing:0});break;case st:if(!s.state.font){q.ensureStateFont(s.state);continue}R.wordSpacing=k[0];R.charSpacing=k[1];R.carriageReturn();buildTextContentItem({chars:k[2],extraSpacing:0});break;case vt:flushTextContentItem();x??=n.get("XObject")||Dict.empty;j=k[0]instanceof Name;p=k[0].name;if(j&&C.getByName(p))break;next(new Promise(function(e,a){if(!j)throw new FormatError("XObject must be referred to by name.");let u=x.getRaw(p);if(u instanceof Ref){if(C.getByRef(u)){e();return}if(q.globalImageCache.getData(u,q.pageIndex)){e();return}u=v.fetch(u)}if(!(u instanceof BaseStream))throw new FormatError("XObject should be a stream");const{dict:m}=u,g=m.get("Subtype");if(!(g instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==g.name){C.set(p,m.objId,!0);e();return}const b=s.state.clone(),w=new StateManager(b),k=lookupMatrix(m.getArray("Matrix"),null);k&&w.transform(k);const y=m.get("Resources");enqueueChunk();const S=textSinkWrapper(i);q.getTextContent({stream:u,task:t,resources:y instanceof Dict?y:n,stateManager:w,includeMarkedContent:r,sink:S,seenStyles:o,viewBox:l,lang:f,disableNormalization:c,keepWhiteSpace:h,prevRefs:d}).then(function(){S.enqueueInvoked||C.set(p,m.objId,!0);e()},a)}).catch(function(e){if(!(e instanceof AbortException)){if(!q.options.ignoreErrors)throw e;warn(`getTextContent - ignoring XObject: "${e}".`)}}));return;case ke:j=k[0]instanceof Name;p=k[0].name;if(j&&F.getByName(p))break;next(new Promise(function(e,t){if(!j)throw new FormatError("GState must be referred to by name.");const a=n.get("ExtGState");if(!(a instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const s=a.get(p);if(!(s instanceof Dict))throw new FormatError("GState should be a dictionary.");const r=s.get("Font");if(r){flushTextContentItem();R.fontName=null;R.fontSize=r[1];handleSetFont(null,r[0]).then(e,t)}else{F.set(p,s.objId,!0);e()}}).catch(function(e){if(!(e instanceof AbortException)){if(!q.options.ignoreErrors)throw e;warn(`getTextContent - ignoring ExtGState: "${e}".`)}}));return;case xt:flushTextContentItem();if(r){g++;w.items.push({type:"beginMarkedContent",tag:k[0]instanceof Name?k[0].name:null})}break;case Ct:flushTextContentItem();if(r){g++;const e=k[1]instanceof Dict?k[1].get("MCID"):null;w.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${q.idFactory.getPageObjId()}_mc${e}`:null,tag:k[0]instanceof Name?k[0].name:null})}break;case It:flushTextContentItem();if(r){if(0===g)break;g--;w.items.push({type:"endMarkedContent"})}}if(w.items.length>=i.desiredSize){m=!0;break}}if(m)next(Wi);else{flushTextContentItem();closePendingMarkedContentItems();enqueueChunk();e()}}).catch(e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();closePendingMarkedContentItems();enqueueChunk()}})}async extractDataStructures(e,t){const n=this.xref;let a;const s=this.readToUnicode(t.toUnicode);if(t.composite){const n=e.get("CIDSystemInfo");n instanceof Dict&&!t.cidSystemInfo&&(t.cidSystemInfo={registry:stringToPDFString(n.get("Registry")),ordering:stringToPDFString(n.get("Ordering")),supplement:n.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof BaseStream&&(a=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const r=[];let i,o=null;if(e.has("Encoding")){i=e.get("Encoding");if(i instanceof Dict){o=i.get("BaseEncoding");o=o instanceof Name?o.name:null;if(i.has("Differences")){const e=i.get("Differences");let t=0;for(const a of e){const e=n.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof Name))throw new FormatError(`Invalid entry in 'Differences' array: ${e}`);r[t++]=e.name}}}}else if(i instanceof Name)o=i.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new FormatError(e);warn(e)}"MacRomanEncoding"!==o&&"MacExpertEncoding"!==o&&"WinAnsiEncoding"!==o&&(o=null)}const l=!t.file||t.isInternalFont,f=Xa()[t.name];o&&l&&f&&(o=null);if("WinAnsiEncoding"===o&&l&&t.name?.charCodeAt(0)>=183){const e=t.name;if(["ËÎÌå","ºÚÌå","¿¬Ìå","·ÂËÎ","¿¬Ìå_GB2312","·ÂËÎ_GB2312","Á¥Êé","ÐÂËÎ","·ÂËÎÌå","С±êËÎ"].includes(e)){o=null;t.defaultEncoding="Adobe-GB1-UCS2";t.composite=!0;t.cidEncoding=Name.get("GBK-EUC-H");const e=await CMapFactory.create({encoding:t.cidEncoding,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});t.cMap=e;t.vertical=t.cMap.vertical;t.cidSystemInfo={registry:"Adobe",ordering:"GB1",supplement:0}}}if(o)t.defaultEncoding=getEncoding(o);else{let e=!!(t.flags&xa);const n=!!(t.flags&Ca);if("TrueType"===t.type&&e&&n&&0!==r.length){t.flags&=~xa;e=!1}i=pa;"TrueType"!==t.type||n||(i=da);if(e||f){i=ma;l&&(/Symbol/i.test(t.name)?i=ga:/Dingbats/i.test(t.name)?i=ba:/Wingdings/i.test(t.name)&&(i=da))}t.defaultEncoding=i}t.differences=r;t.baseEncodingName=o;t.hasEncoding=!!o||r.length>0;t.dict=e;t.toUnicode=await s;const c=await this.buildToUnicode(t);t.toUnicode=c;a&&(t.cidToGidMap=this.readCidToGidMap(a,c));return t}_simpleFontToUnicode(e,t=!1){assert(!e.composite,"Must be a simple font.");const n=[],a=e.defaultEncoding.slice(),s=e.baseEncodingName,r=e.differences;for(const e in r){const t=r[e];".notdef"!==t&&(a[e]=t)}const i=wa();for(const r in a){let o=a[r];if(""===o)continue;let l=i[o];if(void 0!==l){n[r]=String.fromCharCode(l);continue}let f=0;switch(o[0]){case"G":3===o.length&&(f=parseInt(o.substring(1),16));break;case"g":5===o.length&&(f=parseInt(o.substring(1),16));break;case"C":case"c":if(o.length>=3&&o.length<=4){const n=o.substring(1);if(t){f=parseInt(n,16);break}f=+n;if(Number.isNaN(f)&&Number.isInteger(parseInt(n,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":l=getUnicodeForGlyph(o,i);-1!==l&&(f=l);break;default:switch(o){case"f_h":case"f_t":case"T_h":n[r]=o.replaceAll("_","");continue}}if(f>0&&f<=1114111&&Number.isInteger(f)){if(s&&f===+r){const e=getEncoding(s);if(e&&(o=e[r])){n[r]=String.fromCharCode(i[o]);continue}}n[r]=String.fromCodePoint(f)}}return n}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof IdentityCMap)||"Adobe"===e.cidSystemInfo?.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:n}=e.cidSystemInfo,a=Name.get(`${t}-${n}-UCS2`),s=await CMapFactory.create({encoding:a,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),r=[],i=[];e.cMap.forEach(function(e,t){if(t>65535)throw new FormatError("Max size of CID is 65,535");const n=s.lookup(t);if(n){i.length=0;for(let e=0,t=n.length;e>1;(0!==s||t.has(r))&&(n[r]=s)}return n}extractWidths(e,t,n){const a=this.xref;let s=[],r=0;const i=[];let o;if(n.composite){const t=e.get("DW");r="number"==typeof t?Math.ceil(t):1e3;const l=e.get("W");if(Array.isArray(l))for(let e=0,t=l.length;e=10){this._bbox??=t.slice();Util.rectBoundingBox(...a,this._bbox)}let o=0,l=e.length;for(;o=Se&&r<=Ee;if(s.variableArgs)o>i&&info(`Command ${a}: expected [0, ${i}] args, but received ${o} args.`);else{if(o!==i){const e=this.nonProcessedArgs;for(;o>i;){e.push(t.shift());o--}for(;oEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new FormatError(`Invalid ${e}`);warn(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(r,t);e.fn=r;e.args=t;return!0}if(n===ln)return!1;if(null!==n){null===t&&(t=[]);t.push(n);if(t.length>33)throw new FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case ye:this.stateManager.save();break;case qe:this.stateManager.restore();break;case ve:this.stateManager.transform(t)}}}class DefaultAppearanceEvaluator extends EvaluatorPreprocessor{constructor(e){super(new StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:n,args:a}=e;switch(0|n){case Ve:const[e,n]=a;e instanceof Name&&(t.fontName=e.name);"number"==typeof n&&n>0&&(t.fontSize=n);break;case gt:ColorSpaceUtils.rgb.getRgbItem(a,0,t.fontColor,0);break;case pt:ColorSpaceUtils.gray.getRgbItem(a,0,t.fontColor,0);break;case wt:ColorSpaceUtils.cmyk.getRgbItem(a,0,t.fontColor,0)}}}catch(e){warn(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()}class AppearanceStreamEvaluator extends EvaluatorPreprocessor{constructor(e,t,n){super(e);this.stream=e;this.xref=t;this.globalColorSpaceCache=n;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ColorSpaceUtils.gray},n=!1;const a=[];try{for(;;){e.args.length=0;if(n||!this.read(e))break;const{fn:s,args:r}=e;switch(0|s){case ye:a.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case qe:t=a.pop()||t;break;case Ze:const e=Util.transform(this.stateManager.state.ctm,r);t.scaleFactor*=Math.hypot(e[0],e[1]);break;case Ve:const[s,i]=r;s instanceof Name&&(t.fontName=s.name);"number"==typeof i&&i>0&&(t.fontSize=i);break;case lt:t.fillColorSpace=ColorSpaceUtils.parse({cs:r[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:this._localColorSpaceCache});break;case ht:t.fillColorSpace.getRgbItem(r,0,t.fontColor,0);break;case gt:ColorSpaceUtils.rgb.getRgbItem(r,0,t.fontColor,0);break;case pt:ColorSpaceUtils.gray.getRgbItem(r,0,t.fontColor,0);break;case wt:ColorSpaceUtils.cmyk.getRgbItem(r,0,t.fontColor,0);break;case tt:case nt:case at:case st:t.fontSize*=t.scaleFactor;n=!0}}}catch(e){warn(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return shadow(this,"_localColorSpaceCache",new LocalColorSpaceCache)}get _pdfFunctionFactory(){return shadow(this,"_pdfFunctionFactory",new PDFFunctionFactory({xref:this.xref}))}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){return`${numberToString(e[0]/255)} ${t?"g":"G"}`}return Array.from(e,e=>numberToString(e/255)).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{static#st=1;constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const n=new OffscreenCanvas(1,1);this.ctxMeasure=n.getContext("2d",{willReadFrequently:!0});this.fontName=Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont.#st++}`)}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new Dict(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);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new Dict(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 t=[],n=[...this.widths].sort();let a=null,s=null;for(const[e,r]of n)if(a)if(e===a+s.length)s.push(r);else{t.push(a,s);a=e;s=[r]}else{a=e;s=[r]}a&&t.push(a,s);e.set("W",t);const r=new Dict(this.xref);r.set("Ordering","Identity");r.set("Registry","Adobe");r.set("Supplement",0);e.set("CIDSystemInfo",r);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new Dict(this.xref);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");return this.xref.getNewPersistentRef(e)}get resources(){const e=new Dict(this.xref),t=new Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const n of e.split(/\r\n?|\n/))for(const e of n.split("")){const n=e.charCodeAt(0);if(this.widths.has(n))continue;const a=t.measureText(e),s=Math.ceil(a.width);this.widths.set(n,s);this.firstChar=Math.min(n,this.firstChar);this.lastChar=Math.max(n,this.lastChar)}return this.resources}static getFirstPositionInfo(e,t,n){const[a,s,r,i]=e;let o=r-a,l=i-s;t%180!=0&&([o,l]=[l,o]);const f=1.35*n;return{coords:[0,l+.35*n-f],bbox:[0,0,o,l],matrix:0!==t?getRotationMatrix(t,l,f):void 0}}createAppearance(e,t,n,a,s,r){const i=this._createContext(),o=[];let l=-1/0;for(const t of e.split(/\r\n?|\n/)){o.push(t);const e=i.measureText(t).width;l=Math.max(l,e);for(const e of codePointIter(t)){const t=String.fromCodePoint(e);let n=this.widths.get(e);if(void 0===n){const a=i.measureText(t);n=Math.ceil(a.width);this.widths.set(e,n);this.firstChar=Math.min(e,this.firstChar);this.lastChar=Math.max(e,this.lastChar)}}}l*=a/1e3;const[f,c,h,u]=t;let m=h-f,p=u-c;n%180!=0&&([m,p]=[p,m]);const d=l>m?m/l:1;let g=1;const b=1.35*a,w=.35*a,j=b*o.length;j>p&&(g=p/j);const k=a*Math.min(d,g),y=["q",`0 0 ${numberToString(m)} ${numberToString(p)} re W n`,"BT",`1 0 0 1 0 ${numberToString(p+w)} Tm 0 Tc ${getPdfColor(s,!0)}`,`/${this.fontName.name} ${numberToString(k)} Tf`],{resources:q}=this;if(1!==(r="number"==typeof r&&r>=0&&r<=1?r:1)){y.push("/R0 gs");const e=new Dict(this.xref),t=new Dict(this.xref);t.set("ca",r);t.set("CA",r);t.setIfName("Type","ExtGState");e.set("R0",t);q.set("ExtGState",e)}const v=numberToString(b);for(const e of o)y.push(`0 -${v} Td <${stringToUTF16HexString(e)}> Tj`);y.push("ET","Q");const S=y.join("\n"),x=new Dict(this.xref);x.setIfName("Subtype","Form");x.setIfName("Type","XObject");x.set("BBox",[0,0,m,p]);x.set("Length",S.length);x.set("Resources",q);if(n){const e=getRotationMatrix(n,m,p);x.set("Matrix",e)}return new StringStream(S,x)}}const Xi=["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"],Ki=["HH:MM","h:MM tt","HH:MM:ss","h:MM:ss tt"];class NameOrNumberTree{constructor(e,t,n){this.root=e;this.xref=t;this._type=n}getAll(e=!1){const t=new Map;if(!this.root)return t;const n=this.xref,a=new RefSet;this.root instanceof Ref&&a.put(this.root);const s=[this.root];for(const r of s){const i=n.fetchIfRef(r);if(!(i instanceof Dict))continue;if(i.has("Kids")){const e=i.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(t instanceof Ref){if(a.has(t))throw new FormatError(`Duplicate entry in "${this._type}" tree.`);a.put(t)}s.push(t)}continue}const o=i.get(this._type);if(Array.isArray(o))for(let a=0,s=o.length;a10){warn(`Search depth limit reached for "${this._type}" tree.`);return null}const s=n.get("Kids");if(!Array.isArray(s))return null;let r=0,i=s.length-1;for(;r<=i;){const a=r+i>>1,o=t.fetchIfRef(s[a]),l=o.get("Limits");if(et.fetchIfRef(l[1]))){n=o;break}r=a+1}}if(r>i)return null}const s=n.get(this._type);if(Array.isArray(s)){let n=0,a=s.length-2;for(;n<=a;){const r=n+a>>1,i=r+(1&r),o=t.fetchIfRef(s[i]);if(eo))return s[i+1];n=i+2}}}return null}get(e){return this.xref.fetchIfRef(this.getRaw(e))}}class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}}class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}function clearGlobalCaches(){!function clearPatternCaches(){Qn?.clear()}();!function clearPrimitiveCaches(){fn=Object.create(null);cn=Object.create(null);hn=Object.create(null)}();!function clearUnicodeCaches(){va.clear()}();WasmImage.cleanup()}class FileSpec{constructor(e){if(e instanceof Dict){this.root=e;e.has("RF")&&warn("Related file specifications are not supported")}}get filename(){const e=FileSpec.pickPlatformItem(this.root);return e&&"string"==typeof e?stringToPDFString(e,!0).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"):""}get description(){const e=this.root?.get("Desc");return e&&"string"==typeof e?stringToPDFString(e):""}get serializable(){const{filename:e,description:t}=this;return{rawFilename:e,filename:(n=e,n.substring(n.lastIndexOf("/")+1))||"unnamed",description:t};var n}static pickPlatformItem(e,t=!1){if(e instanceof Dict)for(const n of["UF","F","Unix","Mac","DOS"])if(e.has(n))return t?e.getRaw(n):e.get(n);return null}static hasEmbeddedFile(e){return this.pickPlatformItem(e.get("EF"))instanceof BaseStream}static readContent(e){if(!(e instanceof Dict))return null;const t=this.pickPlatformItem(e.get("EF"));if(!(t instanceof BaseStream)){warn("Embedded file specification points to non-existing/invalid content");return null}return this.readStreamContent(t)}static readStreamContent(e){const t=e.dict?.xref?.encrypt;if(null===t?.encryptionKey)throw new PasswordException("No password given",en);return e.getBytes()}}const Gi=0,Vi=-2,$i=-3,Yi=-4,Ji=-5,Qi=-6,Zi=-9;function isWhitespace(e,t){const n=e[t];return" "===n||"\n"===n||"\r"===n||"\t"===n}class XMLParserBase{static get _entityRegex(){return shadow(this,"_entityRegex",/&(?:#x([^;&]+)|#([^;&]+)|([^;&]+));/g)}_resolveEntities(e){return e.replaceAll(XMLParserBase._entityRegex,(e,t,n,a)=>{if(t||n){const a=t?parseInt(t,16):parseInt(n,10);return a>=0&&a<=1114111?String.fromCodePoint(a):e}switch(a){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(a)})}_parseContent(e,t){const n=[];let a=t;function skipWs(){for(;a"!==e[a]&&"/"!==e[a];)++a;const s=e.substring(t,a);skipWs();for(;a"!==e[a]&&"/"!==e[a]&&"?"!==e[a];){skipWs();let t="",s="";for(;a"!==e[n]&&"?"!==e[n]&&"/"!==e[n];)++n;const a=e.substring(t,n);!function skipWs(){for(;n"!==e[n+1]);)++n;return{name:a,value:e.substring(s,n),parsed:n-t}}parseXml(e){let t=0;for(;t",n);if(t<0){this.onError(Zi);return}this.onEndElement(e.substring(n,t));n=t+1;break;case"?":++n;const a=this._parseProcessingInstruction(e,n);if("?>"!==e.substring(n+a.parsed,n+a.parsed+2)){this.onError($i);return}this.onPi(a.name,a.value);n+=a.parsed+2;break;case"!":if("--"===e.substring(n+1,n+3)){t=e.indexOf("--\x3e",n+3);if(t<0){this.onError(Ji);return}this.onComment(e.substring(n+3,t));n=t+3}else if("[CDATA["===e.substring(n+1,n+8)){t=e.indexOf("]]>",n+8);if(t<0){this.onError(Vi);return}this.onCdata(e.substring(n+8,t));n=t+3}else{if("DOCTYPE"!==e.substring(n+1,n+8)){this.onError(Qi);return}{const a=e.indexOf("[",n+8);let s=!1;t=e.indexOf(">",n+8);if(t<0){this.onError(Yi);return}if(a>0&&t>a){t=e.indexOf("]>",n+8);if(t<0){this.onError(Yi);return}s=!0}const r=e.substring(n+8,t+(s?1:0));this.onDoctype(r);n=t+(s?2:1)}}break;default:const s=this._parseContent(e,n);if(null===s){this.onError(Qi);return}let r=!1;if("/>"===e.substring(n+s.parsed,n+s.parsed+2))r=!0;else if(">"!==e.substring(n+s.parsed,n+s.parsed+1)){this.onError(Zi);return}this.onBeginElement(s.name,s.attributes,r);n+=s.parsed+(r?2:1)}}else{for(;ne.textContent).join(""):this.nodeValue||""}get children(){return this.childNodes||[]}hasChildNodes(){return this.childNodes?.length>0}searchNode(e,t){if(t>=e.length)return this;const n=e[t];if(n.name.startsWith("#")&&t0){a.push([s,0]);s=s.childNodes[0]}else{if(0===a.length)return null;for(;0!==a.length;){const[e,t]=a.pop(),n=t+1;if(n");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${encodeToXmlString(this.nodeValue)}`):e.push("/>")}else e.push(encodeToXmlString(this.nodeValue))}}class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=Gi;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=Gi;this.parseXml(e);if(this._errorCode!==Gi)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,n=e.length;t\\376\\377([^<]+)/g,function(e,t){const n=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,function(e,t,n,a){return String.fromCharCode(64*t+8*n+1*a)}).replaceAll(/&(amp|apos|gt|lt|quot);/g,function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)}),a=[">"];for(let e=0,t=n.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?a.push(String.fromCharCode(t)):a.push("&#x"+(65536+t).toString(16).substring(1)+";")}return a.join("")})}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter(e=>"rdf:li"===e.nodeName)}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,n=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,n.map(e=>e.textContent.trim()))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}function getSoundFormat(e){if(!e||e.has("CO"))return null;const t=e.get("R");if(!Number.isInteger(t)||t<=0)return null;const n=e.get("C")??1;if(!Number.isInteger(n)||n<1||n>2)return null;const a=e.get("B")??8;if(8!==a&&16!==a)return null;const s=e.get("E");let r="Raw";void 0!==s&&(r=s instanceof Name?s.name:null);return"Raw"!==r&&"Signed"!==r?null:{channels:n,sampleRate:t,bitsPerSample:a,encoding:r}}const eo=[["RowSpan","rowSpan"],["ColSpan","colSpan"]],to=1,no=2,ao=3,so=4,ro=5;class StructTreeRoot{kidRefToPosition=void 0;parentTree=null;roleMap=new Map;structParentIds=null;constructor(e,t,n){this.xref=e;this.dict=t;this.ref=n instanceof Ref?n:null;const a=t.get("RoleMap");if(a instanceof Dict)for(const[e,t]of a)t instanceof Name&&this.roleMap.set(e,t.name);const s=t.getRaw("ParentTree");s&&(this.parentTree=new NumberTree(s,e))}getKidPosition(e){if(void 0===this.kidRefToPosition){const e=this.dict.get("K");if(Array.isArray(e)){const t=this.kidRefToPosition=new Map;for(let n=0,a=e.length;n=0||(e.parentTreeId=n++);i=!1}}if(i){for(const e of t.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,changes:n}){const{ref:a,xref:s}=this,r=this.dict.clone(),i=new RefMap;i.put(a,r);let o,l=r.getRaw("ParentTree");if(l instanceof Ref)o=s.fetch(l);else{o=l;l=s.getNewTemporaryRef();r.set("ParentTree",l)}o=o.clone();i.put(l,o);let f=o.getRaw("Nums"),c=null;if(f instanceof Ref){c=f;f=s.fetch(c)}f=f.slice();c||o.set("Nums",f);const h=await StructTreeRoot.#it({newAnnotationsByPage:e,structTreeRootRef:a,structTreeRoot:this,kids:null,nums:f,xref:s,pdfManager:t,changes:n,cache:i});if(-1!==h){r.set("ParentTreeNextKey",h);c&&i.put(c,f);for(const[e,t]of i.items())n.put(e,{data:t})}}static async#it({newAnnotationsByPage:e,structTreeRootRef:t,structTreeRoot:n,kids:a,nums:s,xref:r,pdfManager:i,changes:o,cache:l}){const f=Name.get("OBJR");let c,h=-1;for(const[u,m]of e){const e=await i.getPage(u),{ref:p}=e,d=p instanceof Ref;for(const{accessibilityData:i,ref:g,parentTreeId:b,structTreeParent:w}of m){if(!i?.type)continue;const{structParent:m}=i;if(n&&Number.isInteger(m)&&m>=0){let t=(c||=new Map).get(u);if(void 0===t){t=new StructTreePage(n,e.pageDict).collectObjects(p);c.set(u,t)}const a=t?.get(m);if(a){const e=r.fetch(a).clone();StructTreeRoot.#lt(e,i);o.put(a,{data:e});continue}}h=Math.max(h,b);const j=r.getNewTemporaryRef(),k=new Dict(r);StructTreeRoot.#lt(k,i);await this.#ft({structTreeParent:w,tagDict:k,newTagRef:j,structTreeRootRef:t,fallbackKids:a,xref:r,cache:l});const y=new Dict(r);k.set("K",y);y.set("Type",f);d&&y.set("Pg",p);y.set("Obj",g);l.put(j,k);s.push(b,j)}}return h+1}static#lt(e,{type:t,title:n,lang:a,alt:s,expanded:r,actualText:i}){e.set("S",Name.get(t));n&&e.set("T",stringToAsciiOrUTF16BE(n));a&&e.set("Lang",stringToAsciiOrUTF16BE(a));s&&e.set("Alt",stringToAsciiOrUTF16BE(s));r&&e.set("E",stringToAsciiOrUTF16BE(r));i&&e.set("ActualText",stringToAsciiOrUTF16BE(i))}static#ot({elements:e,xref:t,pageDict:n,numberTree:a}){const s=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);s.getOrInsertComputed(e,makeArr).push(t)}const r=n.get("StructParents");if(!Number.isInteger(r))return;const i=a.get(r),updateElement=(e,n,a)=>{const r=s.get(e);if(r){const e=n.getRaw("P"),s=t.fetchIfRef(e);if(e instanceof Ref&&s instanceof Dict){const e={ref:a,dict:n};for(const t of r)t.structTreeParent=e}return!0}return!1};for(const e of i){if(!(e instanceof Ref))continue;const n=t.fetch(e),a=n.get("K");if(Number.isInteger(a))updateElement(a,n,e);else if(Array.isArray(a))for(let s of a){s=t.fetchIfRef(s);if(Number.isInteger(s)&&updateElement(s,n,e))break;if(!(s instanceof Dict))continue;if(!isName(s.get("Type"),"MCR"))break;const a=s.get("MCID");if(Number.isInteger(a)&&updateElement(a,n,e))break}}}static async#ft({structTreeParent:e,tagDict:t,newTagRef:n,structTreeRootRef:a,fallbackKids:s,xref:r,cache:i}){let o,l=null;if(e){({ref:l}=e);o=e.dict.getRaw("P")||a}else o=a;t.set("P",o);const f=r.fetchIfRef(o);if(!f){s.push(n);return}const c=i.getOrPutComputed(o,()=>f.clone()),h=c.getRaw("K");let u=h instanceof Ref?i.get(h):null;if(!u){u=r.fetchIfRef(h);u=Array.isArray(u)?u.slice():[h];const e=r.getNewTemporaryRef();c.set("K",e);i.put(e,u)}const m=u.indexOf(l);u.splice(m>=0?m+1:u.length,0,n)}}class StructElementNode{constructor(e,t){this.tree=e;this.xref=e.xref;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof Name?e.name:"",{root:n}=this.tree;return n.roleMap.get(t)??t}get mathML(){let e=this.dict.get("AF")||[];Array.isArray(e)||(e=[e]);for(let t of e){t=this.xref.fetchIfRef(t);if(!isDict(t,"Filespec")||!isName(t.get("AFRelationship"),"Supplement"))continue;const e=FileSpec.pickPlatformItem(t.get("EF"));if(e instanceof BaseStream&&isDict(e.dict,"EmbeddedFile")&&isName(e.dict.get("Subtype"),"application/mathml+xml"))return stringToUTF8String(e.getString())}for(const e of this.attributes)if(isName(e.get("O"),"MSFT_Office")){const t=e.get("MSFT_MathML");return t?stringToPDFString(t):null}return null}#ct(e,t){const n=[e],a=new RefSet;for(;n.length>0;){if((e=n.pop())instanceof Ref){if(a.has(e))continue;a.put(e);e=this.xref.fetch(e)}e instanceof BaseStream&&(e=e.dict);if(e instanceof Dict)t.push(e);else if(Array.isArray(e))for(let t=e.length-1;t>=0;t--)Number.isInteger(e[t])||n.push(e[t])}}get attributes(){const e=[],t=this.dict.getArray("C");if(void 0!==t){const n=this.tree.rootDict?.get("ClassMap");if(n instanceof Dict)for(const a of Array.isArray(t)?t:[t])a instanceof Name&&this.#ct(n.getRaw(a.name),e)}this.#ct(this.dict.getRaw("A"),e);return shadow(this,"attributes",e)}get tableAttributes(){const{role:e}=this;if("Table"!==e&&"TH"!==e&&"TD"!==e)return null;const t=new Map;for(const n of this.attributes)if(isName(n.get("O"),"Table"))if("Table"!==e){for(const[e,a]of eo){if(!n.has(e))continue;const s=n.get(e);Number.isInteger(s)&&s>1?t.set(a,s):t.delete(a)}if(n.has("Headers")){t.delete("headers");const e=n.getArray("Headers");if(Array.isArray(e)){const n=e.filter(e=>"string"==typeof e).map(stringToPDFString);n.length>0&&t.set("headers",n)}}if("TH"===e&&n.has("Scope")){t.delete("scope");const e=n.get("Scope");e instanceof Name&&["Row","Column","Both"].includes(e.name)&&t.set("scope",e.name)}if("TH"===e&&n.has("Short")){t.delete("short");const e=n.get("Short");"string"==typeof e&&e&&t.set("short",stringToPDFString(e))}}else if(n.has("Summary")){const e=n.get("Summary");"string"==typeof e&&e?t.set("summary",stringToPDFString(e)):t.delete("summary")}return t.size?t:null}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof Ref&&(e=t.toString());const n=this.dict.get("K");if(Array.isArray(n))for(const t of n){const n=this.parseKid(e,this.xref.fetchIfRef(t));n&&this.kids.push(n)}else{const t=this.parseKid(e,n);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:to,mcid:t,pageObjId:e});if(!(t instanceof Dict))return null;const n=t.getRaw("Pg");n instanceof Ref&&(e=n.toString());const a=t.get("Type")instanceof Name?t.get("Type").name:null;if("MCR"===a){if(this.tree.pageDict.objId!==e)return null;const n=t.getRaw("Stm");return new StructElement({type:no,refObjId:n instanceof Ref?n.toString():null,pageObjId:e,mcid:t.get("MCID")})}if("OBJR"===a){if(this.tree.pageDict.objId!==e)return null;const n=t.getRaw("Obj");return new StructElement({type:ao,refObjId:n instanceof Ref?n.toString():null,pageObjId:e})}return new StructElement({type:ro,dict:t})}}class StructElement{constructor({type:e,dict:t=null,mcid:n=null,pageObjId:a=null,refObjId:s=null}){this.type=e;this.dict=t;this.mcid=n;this.pageObjId=a;this.refObjId=s;this.parentNode=null}}class StructTreePage{constructor(e,t){this.root=e;this.xref=e?.xref??null;this.rootDict=e?.dict??null;this.pageDict=t;this.nodes=[]}collectObjects(e){if(!(this.root&&this.rootDict&&e instanceof Ref))return null;const t=this.rootDict.get("ParentTree");if(!t)return null;const n=this.root.structParentIds?.get(e);if(!n)return null;const a=new Map,s=new NumberTree(t,this.xref);for(const[e]of n){const t=s.getRaw(e);t instanceof Ref&&a.set(e,t)}return a}parse(e){if(!(this.root&&this.rootDict&&e instanceof Ref))return;const{parentTree:t}=this.root;if(!t)return;const n=this.pageDict.get("StructParents"),a=this.root.structParentIds?.get(e);if(!Number.isInteger(n)&&!a)return;const s=new Map;if(Number.isInteger(n)){const e=t.get(n);if(Array.isArray(e))for(const t of e)t instanceof Ref&&this.addNode(this.xref.fetch(t),s)}if(a)for(const[e,n,r]of a){const a=t.get(e);if(!a)continue;const i=this.addNode(this.xref.fetchIfRef(a),s);if(i&&r)for(const e of i.kids)e.type===ao&&e.refObjId===r&&(e.type=n)}}addNode(e,t,n=0){if(n>40){warn("StructTree MAX_DEPTH reached.");return null}if(!(e instanceof Dict))return null;if(t.has(e))return t.get(e);const a=new StructElementNode(this,e);t.set(e,a);switch(a.role){case"L":case"LBody":case"LI":case"Table":case"THead":case"TBody":case"TFoot":case"TR":for(const e of a.kids)e.type===ro&&this.addNode(e.dict,t,n-1)}const s=e.get("P");if(!(s instanceof Dict)||isName(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,a)||t.delete(e);return a}const r=this.addNode(s,t,n+1);if(!r)return a;let i=!1;for(const t of r.kids)if(t.type===ro&&t.dict===e){t.parentNode=a;i=!0}i||t.delete(e);return a}addTopLevelNode(e,t){const n=this.root.getKidPosition(e.objId);if(isNaN(n))return!1;-1!==n&&(this.nodes[n]=t);return!0}get serializable(){function nodeToSerializable(e,t,n=0){if(n>40){warn("StructTree too deep to be fully serialized.");return}const a=Object.create(null);a.role=e.role;a.children=[];t.children.push(a);let s=e.dict.get("Alt");"string"!=typeof s&&(s=e.dict.get("ActualText"));"string"==typeof s&&(a.alt=stringToPDFString(s));const r=e.dict.get("ID");"TH"===a.role&&"string"==typeof r&&r&&(a.structId=stringToPDFString(r));e.tableAttributes?.forEach((e,t)=>{a[t]=e});if("Formula"===a.role)try{const{mathML:t}=e;t&&(a.mathML=t)}catch(e){if(e instanceof MissingDataException)throw e;warn(`Ignoring mathML: "${e}".`)}let i=null,o=null;for(const t of e.attributes){i=lookupNormalRect(t.getArray("BBox"),i);const e=t.get("Width"),n=t.get("Height");"number"==typeof e&&e>0&&"number"==typeof n&&n>0&&(o=[0,0,e,n])}(i||o)&&(a.bbox=i??o);const l=e.dict.get("Lang");"string"==typeof l&&(a.lang=stringToPDFString(l));for(const t of e.kids){const e=t.type===ro?t.parentNode:null;e?nodeToSerializable(e,a,n+1):t.type===to||t.type===no?a.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===ao?a.children.push({type:"object",id:t.refObjId}):t.type===so&&a.children.push({type:"annotation",id:`pdfjs_internal_id_${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}const io=function _isValidExplicitDest(e,t,n){if(!Array.isArray(n)||n.length<2)return!1;const[a,s,...r]=n;if(!e(a)&&!Number.isInteger(a))return!1;if(!t(s))return!1;const i=r.length;let o=!0;switch(s.name){case"XYZ":if(i<2||i>3)return!1;break;case"Fit":case"FitB":return 0===i;case"FitH":case"FitBH":case"FitV":case"FitBV":if(i>1)return!1;break;case"FitR":if(4!==i)return!1;o=!1;break;default:return!1}for(const e of r)if(!("number"==typeof e||o&&null===e))return!1;return!0}.bind(null,e=>e instanceof Ref,isName);function fetchDest(e){e instanceof Dict&&(e=e.get("D"));return io(e)?e:null}function fetchRemoteDest(e){let t=e.get("D");if(t){t instanceof Name&&(t=t.name);if("string"==typeof t)return stringToPDFString(t,!0);if(io(t))return JSON.stringify(t)}return null}class Catalog{#ht=null;#ut=new RefMap;#mt=new Map;#pt=new Set;#dt=null;builtInCMapCache=new Map;fontCache=new RefMap;globalColorSpaceCache=new GlobalColorSpaceCache;globalImageCache=new GlobalImageCache;nonBlendModesSet=new RefSet;pageDictCache=new RefMap;pageIndexCache=new RefMap;pageKidsCountCache=new RefMap;standardFontDataCache=new Map;systemFontCache=new Map;constructor(e,t){this.pdfManager=e;this.xref=t;this.#dt=t.getCatalogObj();if(!(this.#dt instanceof Dict))throw new FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict}cloneDict(){return this.#dt.clone()}getAttachmentIdForAnnotation(e,t=!1){let n=this.#ut.get(e);if(!n){const t=`attachmentRef:${e.toString()}`;n=t;let a=1;for(;this.#mt.has(n)||this.attachments?.has(n);)n=`${t}-${a++}`;this.#ut.put(e,n);this.#mt.set(n,e)}t&&this.#pt.add(n);return n}get version(){const e=this.#dt.get("Version");if(e instanceof Name){if(dn.test(e.name))return shadow(this,"version",e.name);warn(`Invalid PDF catalog version: ${e.name}`)}return shadow(this,"version",null)}get lang(){const e=this.#dt.get("Lang");return shadow(this,"lang",e&&"string"==typeof e?stringToPDFString(e):null)}get needsRendering(){const e=this.#dt.get("NeedsRendering");return shadow(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this.#dt.get("Collection");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch Collection entry; assuming no collection is present.")}return shadow(this,"collection",e)}get acroForm(){let e=null;try{const t=this.#dt.get("AcroForm");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch AcroForm entry; assuming no forms are present.")}return shadow(this,"acroForm",e)}get acroFormRef(){const e=this.#dt.getRaw("AcroForm");return shadow(this,"acroFormRef",e instanceof Ref?e:null)}get metadata(){const e=this.#dt.getRaw("Metadata");if(!(e instanceof Ref))return shadow(this,"metadata",null);let t=null;try{const n=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(n instanceof BaseStream&&isDict(n.dict,"Metadata")&&isName(n.dict.get("Subtype"),"XML")){const e=stringToUTF8String(n.getString());e&&(t=new MetadataParser(e).serializable)}}catch(e){if(e instanceof MissingDataException)throw e;info(`Skipping invalid Metadata: "${e}".`)}return shadow(this,"metadata",t)}get markInfo(){let e=null;try{e=this.#gt()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read mark info.")}return shadow(this,"markInfo",e)}#gt(){const e=this.#dt.get("MarkInfo");if(!(e instanceof Dict))return null;const t=new Map;for(const n of["Marked","UserProperties","Suspects"]){const a=e.get(n);t.set(n,"boolean"==typeof a&&a)}return t}get hasStructTree(){return this.#dt.has("StructTreeRoot")}get structTreeRoot(){let e=null;try{e=this.#bt()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable read to structTreeRoot info.")}return shadow(this,"structTreeRoot",e)}#bt(){const e=this.#dt.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);return t instanceof Dict?new StructTreeRoot(this.xref,t,e):null}get toplevelPagesDict(){const e=this.#dt.get("Pages");if(!(e instanceof Dict))throw new FormatError("Invalid top-level pages dictionary.");return shadow(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this.#wt()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutline",e)}#wt(e={}){let t=this.#dt.get("Outlines");if(!(t instanceof Dict))return null;t=t.getRaw("First");if(!(t instanceof Ref))return null;const n={items:[]},a=[{obj:t,parent:n}],s=new RefSet;s.put(t);const r=this.xref,i=new Uint8ClampedArray(3);for(;a.length>0;){const n=a.shift(),o=r.fetchIfRef(n.obj);if(null===o)continue;o.has("Title")||warn("Invalid outline item encountered.");const l={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:o,resultObj:l,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const f=o.get("Title"),c=o.get("F")||0,h=o.getArray("C"),u=o.get("Count");let m=i;!isNumberArray(h,3)||0===h[0]&&0===h[1]&&0===h[2]||(m=ColorSpaceUtils.rgb.getRgb(h,0));const p={action:l.action,attachmentId:l.attachmentId,attachment:l.attachment,dest:l.dest,url:l.url,unsafeUrl:l.unsafeUrl,newWindow:l.newWindow,setOCGState:l.setOCGState,title:"string"==typeof f?stringToPDFString(f):"",color:m,count:Number.isInteger(u)?u:void 0,bold:!!(2&c),italic:!!(1&c),items:[]};e.keepRawDict&&(p.rawDict=o);n.parent.items.push(p);t=o.getRaw("First");if(t instanceof Ref&&!s.has(t)){a.push({obj:t,parent:p});s.put(t)}t=o.getRaw("Next");if(t instanceof Ref&&!s.has(t)){a.push({obj:t,parent:n.parent});s.put(t)}}return n.items.length>0?n.items:null}get documentOutlineForEditor(){let e=null;try{e=this.#wt({keepRawDict:!0})}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutlineForEditor",e)}get permissions(){let e=null;try{e=this.#jt()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read permissions.")}return shadow(this,"permissions",e)}#jt(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const n=new Set;for(const e of Object.values(k))t&e&&n.add(e);return n}get optionalContentConfig(){let e=null;try{const t=this.#dt.get("OCProperties");if(!t)return shadow(this,"optionalContentConfig",null);const n=t.get("D");if(!n)return shadow(this,"optionalContentConfig",null);const a=t.get("OCGs");if(!Array.isArray(a))return shadow(this,"optionalContentConfig",null);const s=new RefMap;for(const e of a)e instanceof Ref&&!s.has(e)&&s.put(e,this.#kt(e));e=this.#yt(n,s)}catch(e){if(e instanceof MissingDataException)throw e;warn(`Unable to read optional content config: ${e}`)}return shadow(this,"optionalContentConfig",e)}#kt(e){const t=this.xref.fetch(e),n={id:e.toString(),name:null,intent:null,usage:{print:null,view:null},rbGroups:[]},a=t.get("Name");"string"==typeof a&&(n.name=stringToPDFString(a));let s=t.getArray("Intent");Array.isArray(s)||(s=[s]);s.every(e=>e instanceof Name)&&(n.intent=s.map(e=>e.name));const r=t.get("Usage");if(!(r instanceof Dict))return n;const i=n.usage,o=r.get("Print");if(o instanceof Dict){const e=o.get("PrintState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":i.print={printState:e.name}}}const l=r.get("View");if(l instanceof Dict){const e=l.get("ViewState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":i.view={viewState:e.name}}}return n}#yt(e,t){function parseOnOff(e){const n=[];if(Array.isArray(e))for(const a of e)a instanceof Ref&&t.has(a)&&n.push(a.toString());return n}function parseOrder(e,n=0){if(!Array.isArray(e))return null;const s=[];for(const r of e){if(r instanceof Ref&&t.has(r)){a.put(r);s.push(r.toString());continue}const e=parseNestedOrder(r,n);e&&s.push(e)}if(n>0)return s;const r=[];for(const[e]of t.items())a.has(e)||r.push(e.toString());r.length&&s.push({name:null,order:r});return s}function parseNestedOrder(e,t){if(++t>s){warn("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const a=n.fetchIfRef(e);if(!Array.isArray(a))return null;const r=n.fetchIfRef(a[0]);if("string"!=typeof r)return null;const i=parseOrder(a.slice(1),t);return i?.length?{name:stringToPDFString(r),order:i}:null}const n=this.xref,a=new RefSet,s=10;!function parseRBGroups(e){if(Array.isArray(e))for(const a of e){const e=n.fetchIfRef(a);if(!Array.isArray(e)||!e.length)continue;const s=new Set;for(const n of e)if(n instanceof Ref&&t.has(n)&&!s.has(n.toString())){s.add(n.toString());t.get(n).rbGroups.push(s)}}}(e.get("RBGroups"));return{name:"string"==typeof e.get("Name")?stringToPDFString(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?stringToPDFString(e.get("Creator")):null,baseState:e.get("BaseState")instanceof Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:[...t]}}setActualNumPages(e=null){this.#ht=e}get hasActualNumPages(){return null!==this.#ht}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new FormatError("Page count in top-level pages dictionary is not an integer.");return shadow(this,"_pagesCount",e)}get numPages(){return this.#ht??this._pagesCount}get destinations(){const e=new Map;for(const t of this.#qt())if(t instanceof NameTree)for(const[n,a]of t.getAll()){const t=fetchDest(a);t&&e.set(stringToPDFString(n,!0),t)}else if(t instanceof Dict)for(const[n,a]of t){const t=fetchDest(a);t&&e.getOrInsert(stringToPDFString(n,!0),t)}return shadow(this,"destinations",e)}getDestination(e){if(Object.hasOwn(this,"destinations"))return this.destinations.get(e)??null;for(const t of this.#qt())if(t instanceof NameTree||t instanceof Dict){const n=fetchDest(t.get(e));if(n)return n}return this.destinations.get(e)??null}#qt(){const e=this.#dt.get("Names"),t=[];e?.has("Dests")&&t.push(new NameTree(e.getRaw("Dests"),this.xref));this.#dt.has("Dests")&&t.push(this.#dt.get("Dests"));return t}get rawPageLabels(){const e=this.#dt.getRaw("PageLabels");if(!e)return null;return new NumberTree(e,this.xref).getAll()}get pageLabels(){let e=null;try{e=this.#vt()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read page labels.")}return shadow(this,"pageLabels",e)}#vt(){const e=this.rawPageLabels;if(!e)return null;const t=new Array(this.numPages);let n=null,a="",s="",r=1;for(let i=0,o=this.numPages;i=1))throw new FormatError("Invalid start in PageLabel dictionary.");r=e}else r=1}switch(n){case"D":s=r;break;case"R":case"r":s=toRomanNumerals(r,"r"===n);break;case"A":case"a":const e=26,t=r-1;s=String.fromCharCode(n.charCodeAt(0)+t%e).repeat(Math.floor(t/e)+1);break;default:if(n)throw new FormatError(`Invalid style "${n}" in PageLabel dictionary.`);s=""}t[i]=a+s;r++}return t}get pageLayout(){const e=this.#dt.get("PageLayout");let t="";if(e instanceof Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return shadow(this,"pageLayout",t)}get pageMode(){const e=this.#dt.get("PageMode");let t="UseNone";if(e instanceof Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return shadow(this,"pageMode",t)}get viewerPreferences(){const e=this.#dt.get("ViewerPreferences");if(!(e instanceof Dict))return shadow(this,"viewerPreferences",null);let t=null;for(const[n,a]of e){let e;switch(n){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof a&&(e=a);break;case"NonFullScreenPageMode":if(a instanceof Name)switch(a.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":e=a.name;break;default:e="UseNone"}break;case"Direction":if(a instanceof Name)switch(a.name){case"L2R":case"R2L":e=a.name;break;default:e="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(a instanceof Name)switch(a.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":e=a.name;break;default:e="CropBox"}break;case"PrintScaling":if(a instanceof Name)switch(a.name){case"None":case"AppDefault":e=a.name;break;default:e="AppDefault"}break;case"Duplex":if(a instanceof Name)switch(a.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":e=a.name;break;default:e="None"}break;case"PrintPageRange":Array.isArray(a)&&a.length%2==0&&a.every((e,t,n)=>Number.isInteger(e)&&e>0&&(0===t||e>=n[t-1])&&e<=this.numPages)&&(e=a);break;case"NumCopies":Number.isInteger(a)&&a>0&&(e=a);break;default:warn(`Ignoring non-standard key in ViewerPreferences: ${n}.`);continue}void 0!==e?(t??=new Map).set(n,e):warn(`Bad value, for key "${n}", in ViewerPreferences: ${a}.`)}return shadow(this,"viewerPreferences",t)}get openAction(){const e=this.#dt.get("OpenAction"),t=new Map;if(e instanceof Dict){const n=new Dict(this.xref);n.set("A",e);const a={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:n,resultObj:a});Array.isArray(a.dest)?t.set("dest",a.dest):a.action&&t.set("action",a.action)}else io(e)&&t.set("dest",e);return shadow(this,"openAction",t.size?t:null)}get attachments(){const e=this.#dt.get("Names");let t=null;if(e instanceof Dict&&e.has("EmbeddedFiles")){const n=new NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,a]of n.getAll())(t??=new Map).set(stringToPDFString(e,!0),new FileSpec(a).serializable)}return shadow(this,"attachments",t)}#St(e){const t=this.#dt.get("Names");if(t instanceof Dict&&t.has("EmbeddedFiles")){const n=new NameTree(t.getRaw("EmbeddedFiles"),this.xref);for(const[t,a]of n.getAll())if(stringToPDFString(t,!0)===e)return FileSpec.readContent(a)}}attachmentContent(e){const t=this.#St(e);if(void 0!==t)return t;const n=this.#mt.get(e);if(n){const t=this.xref.fetch(n);if(t instanceof BaseStream){const n=FileSpec.readStreamContent(t);return this.#pt.has(e)?function soundStreamToWav(e,t){const n=getSoundFormat(e.dict);if(!n)return null;const{channels:a,sampleRate:s,bitsPerSample:r,encoding:i}=n,o=a*(r>>3),l=t.length-t.length%o;if(0===l)return null;const f=new Uint8Array(44+l),c=new DataView(f.buffer);f.set(stringToBytes("RIFF"),0);c.setUint32(4,36+l,!0);f.set(stringToBytes("WAVE"),8);f.set(stringToBytes("fmt "),12);c.setUint32(16,16,!0);c.setUint16(20,1,!0);c.setUint16(22,a,!0);c.setUint32(24,s,!0);c.setUint32(28,s*o,!0);c.setUint16(32,o,!0);c.setUint16(34,r,!0);f.set(stringToBytes("data"),36);c.setUint32(40,l,!0);if(16===r){const e="Signed"===i;for(let n=0;n=32768&&(a-=65536):a-=32768;c.setInt16(44+n,a,!0)}}else if("Signed"===i)for(let e=0;e=0&&l+f<=e){l+=f;continue}if(n.has(a))throw new FormatError("Pages tree contains circular reference.");n.put(a);const c=await(o.get(a)||s.fetchAsync(a));if(c instanceof Dict){let t=c.getRaw("Type");t instanceof Ref&&(t=await s.fetchAsync(t));if(isName(t,"Page")||!c.has("Kids")){r.has(a)||r.put(a,1);i.has(a)||i.put(a,l);if(l===e)return[c,a];l++;continue}}t.push(c);continue}if(!(a instanceof Dict))throw new FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:f}=a;let c=a.getRaw("Count");c instanceof Ref&&(c=await s.fetchAsync(c));if(Number.isInteger(c)&&c>=0){f&&!r.has(f)&&r.put(f,c);if(l+c<=e){l+=c;continue}}let h=a.getRaw("Kids");h instanceof Ref&&(h=await s.fetchAsync(h));if(!Array.isArray(h)){let t=a.getRaw("Type");t instanceof Ref&&(t=await s.fetchAsync(t));if(isName(t,"Page")||!a.has("Kids")){if(l===e)return[a,null];l++;continue}throw new FormatError("Page dictionary kids object is not an array.")}for(let e=h.length-1;e>=0;e--){const n=h[e];t.push(n);a===this.toplevelPagesDict&&n instanceof Ref&&!o.has(n)&&o.put(n,s.fetchAsync(n))}}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,n=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new RefSet,s=this.#dt.getRaw("Pages");s instanceof Ref&&a.put(s);const r=new Map,i=this.xref,o=this.pageIndexCache;let l=0;function addPageDict(e,t){t&&!o.has(t)&&o.put(t,l);r.set(l++,[e,t])}function addPageError(n){if(n instanceof XRefEntryException&&!e)throw n;if(e&&t&&0===l){warn(`getAllPageDicts - Skipping invalid first page: "${n}".`);n=Dict.empty}r.set(l++,[n,null])}for(;n.length>0;){const e=n.at(-1),{currentNode:t,posInKids:s}=e;let r=t.getRaw("Kids");if(r instanceof Ref)try{r=await i.fetchAsync(r)}catch(e){addPageError(e);break}if(!Array.isArray(r)){let e=t.getRaw("Type");if(e instanceof Ref)try{e=await i.fetchAsync(e)}catch(e){addPageError(e);break}if(isName(e,"Page")||!t.has("Kids")){addPageDict(t,null);break}addPageError(new FormatError("Page dictionary kids object is not an array."));break}if(s>=r.length){n.pop();continue}const o=r[s];let l;if(o instanceof Ref){if(a.has(o)){addPageError(new FormatError("Pages tree contains circular reference."));break}a.put(o);try{l=await i.fetchAsync(o)}catch(e){addPageError(e);break}}else l=o;if(!(l instanceof Dict)){addPageError(new FormatError("Page dictionary kid reference points to wrong type of object."));break}let f=l.getRaw("Type");if(f instanceof Ref)try{f=await i.fetchAsync(f)}catch(e){addPageError(e);break}isName(f,"Page")||!l.has("Kids")?addPageDict(l,o instanceof Ref?o:null):n.push({currentNode:l,posInKids:0});e.posInKids++}return r}async getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return t;const n=this.xref;let a=0,s=e;const r=new RefSet;r.put(e);for(;;){const t=await n.fetchAsync(s);if(isRefsEqual(s,e)&&!isDict(t,"Page")&&!(t instanceof Dict&&!t.has("Type")&&t.has("Contents")))throw new FormatError("The reference does not point to a /Page dictionary.");if(!t)break;if(!(t instanceof Dict))throw new FormatError("Node must be a dictionary.");const i=t.getRaw("Parent");if(i instanceof Ref){if(r.has(i))throw new FormatError("Pages tree contains circular reference.");r.put(i)}const o=await t.getAsync("Parent");if(!o)break;if(!(o instanceof Dict))throw new FormatError("Parent must be a dictionary.");const l=await o.getAsync("Kids");if(!l)break;if(!Array.isArray(l))throw new FormatError("Kids must be an array.");const f=[];let c=!1;for(const e of l){if(!(e instanceof Ref))throw new FormatError("Kid must be a reference.");if(isRefsEqual(e,s)){c=!0;break}f.push(n.fetchAsync(e).then(e=>{if(!(e instanceof Dict))throw new FormatError("Kid node must be a dictionary.");if(e.has("Count")){const t=e.get("Count");if(Number.isInteger(t)&&t>=0){a+=t;return}throw new FormatError("Count must be a (positive) integer.")}a++}))}if(!c)throw new FormatError("Kid reference not found in parent's kids.");await Promise.all(f);s=i}this.pageIndexCache.put(e,a);return a}get baseUrl(){const e=this.#dt.get("URI");if(e instanceof Dict){const t=e.get("Base");if("string"==typeof t){const e=createValidAbsoluteUrl(t,null,{tryConvertEncoding:!0});if(e)return shadow(this,"baseUrl",e.href)}}return shadow(this,"baseUrl",this.pdfManager.docBaseUrl)}static#xt(e,t){const n=e.fetchIfRef(t);if(!(n instanceof Dict))return null;let a=null;const s=n.getRaw("Pg");s instanceof Ref&&(a=s);if(!a){const s=[n],r=new RefSet;r.put(t);for(;s.length>0&&!a;){let t,n=s.shift().getRaw("K");if(n instanceof Ref){if(r.has(n))continue;r.put(n);n=e.fetch(n)}if(Array.isArray(n))t=n;else{if(!n)continue;t=[n]}for(const n of t){if(n instanceof Ref){if(r.has(n))continue;r.put(n)}const t=e.fetchIfRef(n);if(!(t instanceof Dict))continue;const i=t.getRaw("Pg");if(i instanceof Ref){a=i;break}s.push(t)}}}if(!a){const t=40;let s=n;for(let n=0;n=a?e[s-a]:0,h=t>0?e[o+r]:0,u=t>0&&r>=a?e[o+r-a]:0;i[0][r]=f;i[1][r]=f-c&255;i[2][r]=f-h&255;i[3][r]=f-(c+h>>1)&255;i[4][r]=f-paethPredictor(c,h,u)&255;for(let e=0;e<5;e++){const t=i[e][r];l[e]+=t<128?t:256-t}}let f=0;for(let e=1;e<5;e++)l[e]{try{await n.ready;await n.write(e);await n.ready;await n.close()}catch(e){await n.abort(e).catch(()=>{});throw e}})(),[s]=await Promise.all([new Response(t.readable).bytes(),a.then(()=>null)]);return s}(a)}catch{}if(!r)return createRawImage(e,a);a.setIfName("Filter","FlateDecode");const i=new Dict(a.xref);i.set("Predictor",15);i.set("Columns",t);i.set("Colors",s);i.set("BitsPerComponent",8);a.set("DecodeParms",i);return createRawImage(r,a)}async function createImage(e,t,{closeBitmap:n=!1}={}){const{width:a,height:s}=e;if(!Number.isInteger(a)||!Number.isInteger(s)||a<=0||s<=0){n&&e.close?.();throw new Error(`createImage: invalid bitmap dimensions ${a}x${s}`)}const r=new OffscreenCanvas(a,s),i=r.getContext("2d",{alpha:!0,willReadFrequently:!0});let o;try{i.drawImage(e,0,0);o=i.getImageData(0,0,a,s).data}finally{n&&e.close?.()}const l=new Uint32Array(o.buffer,o.byteOffset,o.byteLength>>2),f=FeatureTest.isLittleEndian,c=f?16777215:4294967040,h=new Set;let u=!1,m=!0;for(const e of l){if(255!=(f?e>>>24:255&e)){u=!0;break}if(m){h.add((e&c)>>>0);if(h.size>16384){m=!1;h.clear()}}}u&&(m=!0);const p=createImageDict(t,a,s,"DeviceRGB");let d,g=null;if(m){const e=new Uint8Array(a*s*3);for(let t=0,n=0,a=o.length;te.bytes()).then(e=>createRawImage(e,p))}let b=Promise.resolve(null),w=null;if(u){const e=new Uint8Array(l.length);if(f)for(let t=0,n=l.length;t>>24;else for(let t=0,n=l.length;te.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}},Al={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},xl=/([+-]?\d+\.?\d*)(.*)/;function stripQuotes(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e}function getInteger({data:e,defaultValue:t,validate:n}){if(!e)return t;e=e.trim();const a=parseInt(e,10);return!isNaN(a)&&n(a)?a:t}function getFloat({data:e,defaultValue:t,validate:n}){if(!e)return t;e=e.trim();const a=parseFloat(e);return!isNaN(a)&&n(a)?a:t}function getKeyword({data:e,defaultValue:t,validate:n}){return e&&n(e=e.trim())?e:t}function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const n=e.trim().match(xl);if(!n)return getMeasurement(t);const[,a,s]=n,r=parseFloat(a);if(isNaN(r))return getMeasurement(t);if(0===r)return 0;const i=Al[s];return i?i(r):r}function getRatio(e){if(!e)return{num:1,den:1};const t=e.split(":",2).map(e=>parseFloat(e.trim())).filter(e=>!isNaN(e));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[n,a]=t;return{num:n,den:a}}function getRelevant(e){return e?e.trim().split(/\s+/).map(e=>({excluded:"-"===e[0],viewname:e.substring(1)})):[]}class HTMLResult{static get FAILURE(){return shadow(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return shadow(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,n,a){this.success=e;this.html=t;this.bbox=n;this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||=e.italic||e.bold||e.bolditalic;if(!t||0===t.size)return;const n=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,n)}addPdfFont(e){const t=e.cssFontInfo,n=t.fontFamily,a=this.fonts.getOrInsertComputed(n,makeObj);this.defaultFont??=a;let s="";const r=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?s=r>=700?"bolditalic":"italic":r>=700&&(s="bold");if(!s){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(s="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(s+="italic")}s||="regular";a[s]=e}getDefault(){return this.defaultFont}find(e,t=!0){let n=this.fonts.get(e)||this.cache.get(e);if(n)return n;const a=/[,\-_ ]|bolditalic|bold|italic|regular|it/gi;let s=e.replaceAll(a,"");n=this.fonts.get(s);if(n){this.cache.set(e,n);return n}s=s.toLowerCase();const r=[];for(const[e,t]of this.fonts)e.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(t);if(0===r.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(e);if(0===r.length){s=s.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts)e.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(t)}if(0===r.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(e);if(r.length>=1){1!==r.length&&t&&warn(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,r[0]);return r[0]}if(t&&!this.warned.has(e)){this.warned.add(e);warn(`XFA - Cannot find the font: ${e}`)}return null}}function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}class FontInfo{constructor(e,t,n,a){this.lineHeight=n;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!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 s=a.find(e.typeface);if(s){this.pdfFont=selectFont(e,s);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))}else[this.pdfFont,this.xfaFont]=this.defaultFont(a)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,n,a){this.fontFinder=a;this.stack=[new FontInfo(e,t,n,a)]}pushData(e,t,n){const a=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||=a.xfaFont[t];for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=a.paraMargin[e]);const s=new FontInfo(e,t,n||a.lineHeight,this.fontFinder);s.pdfFont||=a.pdfFont;this.stack.push(s)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class TextMeasure{constructor(e,t,n,a){this.glyphs=[];this.fontSelector=new FontSelector(e,t,n,a);this.extraHeight=0}pushData(e,t,n){this.fontSelector.pushData(e,t,n)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),n=t.xfaFont.size;if(t.pdfFont){const a=t.xfaFont.letterSpacing,s=t.pdfFont,r=s.lineHeight||1.2,i=t.lineHeight||Math.max(1.2,r)*n,o=r-(void 0===s.lineGap?.2:s.lineGap),l=Math.max(1,o)*n,f=n/1e3,c=s.defaultWidth||s.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=s.encodeString(t).join(""),n=s.charsToGlyphs(e);for(const e of n){const t=e.width||c;this.glyphs.push([t*f+a,i,l,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop();return}for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([n,1.2*n,n,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}compute(e){let t=-1,n=0,a=0,s=0,r=0,i=0,o=!1,l=!0;for(let f=0,c=this.glyphs.length;fe){a=Math.max(a,r);r=0;s+=i;i=g;t=-1;n=0;o=!0;l=!1}else{i=Math.max(g,i);n=r;r+=c;t=f}else if(r+c>e){s+=i;i=g;if(-1!==t){f=t;a=Math.max(a,n);r=0;t=-1;n=0}else{a=Math.max(a,r);r=c}o=!0;l=!1}else{r+=c;i=Math.max(g,i)}}a=Math.max(a,r);s+=i+this.extraHeight;return{width:1.02*a,height:s,isBroken:o}}}const Cl=/^[^.[]+/,Il=/^[^\]]+/,Fl=0,Tl=1,Rl=2,Hl=3,Bl=4,Dl=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[Ho]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),Ml=new WeakMap;function parseIndex(e){return"*"===(e=e.trim())?1/0:parseInt(e,10)||0}function parseExpression(e,t,n=!0){let a=e.match(Cl);if(!a)return null;let[s]=a;const r=[{name:s,cacheName:"."+s,index:0,js:null,formCalc:null,operator:Fl}];let i=s.length;for(;i0&&c.push(e)}if(0===c.length&&!o&&0===l){const n=t[No]();if(!(t=n))return null;l=-1;e=[t];continue}e=isFinite(f)?c.filter(e=>fe[f]):c.flat()}return 0===e.length?null:e}function createDataNode(e,t,n){const a=parseExpression(n);if(!a)return null;if(a.some(e=>e.operator===Tl))return null;const s=Dl.get(a[0].name);let r=0;if(s){e=s(e,t);r=1}else e=t||e;for(let t=a.length;re[bl]()).join("")}get[El](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return shadow(this,El,e._attributes)}[Go](e){let t=this;for(;t;){if(t===e)return!0;t=t[No]()}return!1}[No](){return this[Jl]}[Mo](){return this[No]()}[jo](){const e=Object.create(null);this[bo]&&(e.$content=this[bo]);for(const t of Object.getOwnPropertyNames(this)){const n=this[t];null!==n&&(n instanceof XFAObject?e[t]=n[jo]():n instanceof XFAObjectArray?n.isEmpty()||(e[t]=n.dump()):e[t]=n)}return e}[yl](){return null}[jl](){return HTMLResult.EMPTY}*[Bo](){for(const e of this[Ho]())yield e}*[Xl](e,t){for(const n of this[Bo]())if(!e||t===e.has(n[tl])){const e=this[Ao](),t=n[jl](e);t.success||(this[ko].failingNode=n);yield t}}[qo](){return null}[lo](e,t){this[ko].children.push(e)}[Ao](){}[co]({filter:e=null,include:t=!0}){if(this[ko].generator){const e=this[Ao](),t=this[ko].failingNode[jl](e);if(!t.success)return t;t.html&&this[lo](t.html,t.bbox);delete this[ko].failingNode}else this[ko].generator=this[Xl](e,t);for(;;){const e=this[ko].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[lo](t.html,t.bbox)}this[ko].generator=null;return HTMLResult.EMPTY}[pl](e){this[Zl]=new Set(Object.keys(e))}[Gl](e){const t=this[El],n=this[Zl];return e.keys().filter(e=>t.has(e)&&!n.has(e)).toArray()}[hl](e,t=new Set){for(const n of this[_l])n[Ql](e,t)}[Ql](e,t){const n=this[Kl](e,t);n?this[Nl](n,e,t):this[hl](e,t)}[Kl](e,t){const{use:n,usehref:a}=this;if(!n&&!a)return null;let s=null,r=null,i=null,o=n;if(a){o=a;a.startsWith("#som(")&&a.endsWith(")")?r=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?r=a.slice(6,-1):a.startsWith("#")?i=a.slice(1):a.startsWith(".#")&&(i=a.slice(2))}else n.startsWith("#")?i=n.slice(1):r=n;this.use=this.usehref="";if(i)s=e.get(i);else{s=searchNode(e.get(cl),this,r,!0,!1);s&&=s[0]}if(!s){warn(`XFA - Invalid prototype reference: ${o}.`);return null}if(s[tl]!==this[tl]){warn(`XFA - Incompatible prototype: ${s[tl]} !== ${this[tl]}.`);return null}if(t.has(s)){warn("XFA - Cycle detected in prototypes use.");return null}t.add(s);const l=s[Kl](e,t);l&&s[Nl](l,e,t);s[hl](e,t);t.delete(s);return s}[Nl](e,t,n){if(n.has(e)){warn("XFA - Cycle detected in prototypes use.");return}!this[bo]&&e[bo]&&(this[bo]=e[bo]);new Set(n).add(e);for(const t of this[Gl](e[Zl])){this[t]=e[t];this[Zl]&&this[Zl].add(t)}for(const a of Object.getOwnPropertyNames(this)){if(this[El].has(a))continue;const s=this[a],r=e[a];if(s instanceof XFAObjectArray){for(const e of s[_l])e[Ql](t,n);for(let a=s[_l].length,i=r[_l].length;aXFAObject[zl](e)):"object"==typeof e&&null!==e?Object.assign({},e):e}[po](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{shadow(e,t,this[t])}e[ql]=`${e[tl]}${tf++}`;e[_l]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[El].has(t)){e[t]=XFAObject[zl](this[t]);continue}const n=this[t];e[t]=n instanceof XFAObjectArray?new XFAObjectArray(n[$l]):null}for(const t of this[_l]){const n=t[tl],a=t[po]();e[_l].push(a);a[Jl]=e;null===e[n]?e[n]=a:e[n][_l].push(a)}return e}[Ho](e=null){return e?this[_l].filter(t=>t[tl]===e):this[_l]}[xo](e){return this[e]}[Co](e,t,n=!0){return Array.from(this[Io](e,t,n))}*[Io](e,t,n=!0){if("parent"!==e){for(const n of this[_l]){n[tl]===e&&(yield n);n.name===e&&(yield n);(t||n[Jo]())&&(yield*n[Io](e,t,!1))}n&&this[El].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[Jl]}}class XFAObjectArray{constructor(e=1/0){this[$l]=e;this[_l]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[_l].length<=this[$l]){this[_l].push(e);return!0}warn(`XFA - node "${e[tl]}" accepts no more than ${this[$l]} children`);return!1}isEmpty(){return 0===this[_l].length}dump(){return 1===this[_l].length?this[_l][0][jo]():this[_l].map(e=>e[jo]())}[po](){const e=new XFAObjectArray(this[$l]);e[_l]=this[_l].map(e=>e[po]());return e}get children(){return this[_l]}clear(){this[_l].length=0}}class XFAAttribute{constructor(e,t,n){this[Jl]=e;this[tl]=t;this[bo]=n;this[go]=!1;this[ql]="attribute"+tf++}[No](){return this[Jl]}[Ko](){return!0}[Fo](){return this[bo].trim()}[dl](e){e=e.value||"";this[bo]=e.toString()}[bl](){return this[bo]}[Go](e){return this[Jl]===e||this[Jl][Go](e)}}class XmlObject extends XFAObject{constructor(e,t,n={}){super(e,t);this[bo]="";this[Ll]=null;if("#text"!==t){const e=new Map;this[Pl]=e;for(const[t,a]of Object.entries(n))e.set(t,new XFAAttribute(this,t,a));if(Object.hasOwn(n,nl)){const e=n[nl].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[Ll]=!1:"dataValue"===e&&(this[Ll]=!0))}}this[go]=!1}[kl](e){const t=this[tl];if("#text"===t){e.push(encodeToXmlString(this[bo]));return}const n=utf8StringToString(t),a=this[el]===nf?"xfa:":"";e.push(`<${a}${n}`);for(const[t,n]of this[Pl]){const a=utf8StringToString(t);e.push(` ${a}="${encodeToXmlString(n[bo])}"`)}null!==this[Ll]&&(this[Ll]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[bo]||0!==this[_l].length){e.push(">");if(this[bo])"string"==typeof this[bo]?e.push(encodeToXmlString(this[bo])):this[bo][kl](e);else for(const t of this[_l])t[kl](e);e.push(``)}else e.push("/>")}[al](e){if(this[bo]){const e=new XmlObject(this[el],"#text");this[fo](e);e[bo]=this[bo];this[bo]=""}this[fo](e);return!0}[rl](e){this[bo]+=e}[yo](){if(this[bo]&&this[_l].length>0){const e=new XmlObject(this[el],"#text");this[fo](e);e[bo]=this[bo];delete this[bo]}}[jl](){return"#text"===this[tl]?HTMLResult.success({name:"#text",value:this[bo]}):HTMLResult.EMPTY}[So](){return this[Pl]}[xo](e){const t=this[Pl].get(e);return void 0!==t?t:this[Ho](e)}*[Io](e,t){const n=this[Pl].get(e);n&&(yield n);for(const n of this[_l]){n[tl]===e&&(yield n);t&&(yield*n[Io](e,t))}}*[vo](e,t){const n=this[Pl].get(e);!n||t&&n[go]||(yield n);for(const n of this[_l])yield*n[vo](e,t)}*[Oo](e,t,n){for(const a of this[_l]){a[tl]!==e||n&&a[go]||(yield a);t&&(yield*a[Oo](e,t,n))}}[Ko](){return null===this[Ll]?0===this[_l].length||this[_l][0][el]===Sl.xhtml.id:this[Ll]}[Fo](){return null===this[Ll]?0===this[_l].length?this[bo].trim():this[_l][0][el]===Sl.xhtml.id?this[_l][0][bl]().trim():null:this[bo].trim()}[dl](e){e=e.value||"";this[bo]=e.toString()}[jo](e=!1){const t=Object.create(null);e&&(t.$ns=this[el]);this[bo]&&(t.$content=this[bo]);t.$name=this[tl];t.children=[];for(const n of this[_l])t.children.push(n[jo](e));t.attributes=Object.create(null);for(const[e,n]of this[Pl])t.attributes[e]=n[bo];return t}}class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[bo]=""}[rl](e){this[bo]+=e}[yo](){}}class OptionObject extends ContentObject{constructor(e,t,n){super(e,t);this[Yl]=n}[yo](){this[bo]=getKeyword({data:this[bo],defaultValue:this[Yl][0],validate:e=>this[Yl].includes(e)})}[ho](e){super[ho](e);delete this[Yl]}}class StringObject extends ContentObject{[yo](){this[bo]=this[bo].trim()}}class IntegerObject extends ContentObject{constructor(e,t,n,a){super(e,t);this[Wl]=n;this[ef]=a}[yo](){this[bo]=getInteger({data:this[bo],defaultValue:this[Wl],validate:this[ef]})}[ho](e){super[ho](e);delete this[Wl];delete this[ef]}}class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,e=>1===e)}}class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,e=>0===e)}}function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const af={anchorType(e,t){const n=e[Mo]();if(n&&(!n.layout||"position"===n.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const n=e[Mo]();let a=e.w;const s=e.h;if(n.layout?.includes("row")){const t=n[ko],s=e.colSpan;let r;if(-1===s){r=Math.sumPrecise(t.columnWidths.slice(t.currentColumn));t.currentColumn=0}else{r=Math.sumPrecise(t.columnWidths.slice(t.currentColumn,t.currentColumn+s));t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(r)||(a=e.w=r)}t.width=""!==a?measureToString(a):"auto";t.height=""!==s?measureToString(s):"auto"},position(e,t){const n=e[Mo]();if(!n?.layout||"position"===n.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[tl])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[yl]().margin)}};function setMinMaxDimensions(e,t){if("position"===e[Mo]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}}function layoutText(e,t,n,a,s,r){const i=new TextMeasure(t,n,a,s);"string"==typeof e?i.addString(e):e[il](i);return i.compute(r)}function layoutNode(e,t){let n=null,a=null,s=!1;if((!e.w||!e.h)&&e.value){let r=0,i=0;if(e.margin){r=e.margin.leftInset+e.margin.rightInset;i=e.margin.topInset+e.margin.bottomInset}let o=null,l=null;if(e.para){l=Object.create(null);o=""===e.para.lineHeight?null:e.para.lineHeight;l.top=""===e.para.spaceAbove?0:e.para.spaceAbove;l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;l.left=""===e.para.marginLeft?0:e.para.marginLeft;l.right=""===e.para.marginRight?0:e.para.marginRight}let f=e.font;if(!f){const t=e[Po]();let n=e[No]();for(;n&&n!==t;){if(n.font){f=n.font;break}n=n[No]()}}const c=(e.w||t.width)-r,h=e[Eo].fontFinder;if(e.value.exData&&e.value.exData[bo]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[bo],f,l,o,h,c);a=t.width;n=t.height;s=t.isBroken}else{const t=e.value[bl]();if(t){const e=layoutText(t,f,l,o,h,c);a=e.width;n=e.height;s=e.isBroken}}null===a||e.w||(a+=r);null===n||e.h||(n+=i)}return{w:a,h:n,isBroken:s}}function computeBbox(e,t,n){let a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!n)return null;let s=e.w;if(""===s){if(0===e.maxW){const t=e[Mo]();s="position"===t.layout&&""!==t.w?0:e.minW}else s=Math.min(e.maxW,n.width);t.attributes.style.width=measureToString(s)}let r=e.h;if(""===r){if(0===e.maxH){const t=e[Mo]();r="position"===t.layout&&""!==t.h?0:e.minH}else r=Math.min(e.maxH,n.height);t.attributes.style.height=measureToString(r)}a=[e.x,e.y,s,r]}return a}function fixDimensions(e){const t=e[Mo]();if(t.layout?.includes("row")){const n=t[ko],a=e.colSpan;let s;s=-1===a?Math.sumPrecise(n.columnWidths.slice(n.currentColumn)):Math.sumPrecise(n.columnWidths.slice(n.currentColumn,n.currentColumn+a));isNaN(s)||(e.w=s)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=Math.sumPrecise(e.columnWidths))}function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}}function toStyle(e,...t){const n=Object.create(null);for(const a of t){const t=e[a];if(null!==t)if(Object.hasOwn(af,a))af[a](e,n);else if(t instanceof XFAObject){const e=t[yl]();e?Object.assign(n,e):warn(`(DEBUG) - XFA - style for ${a} not implemented yet`)}}return n}function createWrapper(e,t){const{attributes:n}=t,{style:a}=n,s={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};n.class.push("xfaWrapped");if(e.border){const{widths:n,insets:r}=e.border[ko];let i,o,l=r[0],f=r[3];const c=r[0]+r[2],h=r[1]+r[3];switch(e.border.hand){case"even":l-=n[0]/2;f-=n[3]/2;i=`calc(100% + ${(n[1]+n[3])/2-h}px)`;o=`calc(100% + ${(n[0]+n[2])/2-c}px)`;break;case"left":l-=n[0];f-=n[3];i=`calc(100% + ${n[1]+n[3]-h}px)`;o=`calc(100% + ${n[0]+n[2]-c}px)`;break;case"right":i=h?`calc(100% - ${h}px)`:"100%";o=c?`calc(100% - ${c}px)`:"100%"}const u=["xfaBorder"];isPrintOnly(e.border)&&u.push("xfaPrintOnly");const m={name:"div",attributes:{class:u,style:{top:`${l}px`,left:`${f}px`,width:i,height:o}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==a[e]){m.attributes.style[e]=a[e];delete a[e]}s.children.push(m,t)}else s.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==a[e]){s.attributes.style[e]=a[e];delete a[e]}s.attributes.style.position="absolute"===a.position?"absolute":"relative";delete a.position;if(a.alignSelf){s.attributes.style.alignSelf=a.alignSelf;delete a.alignSelf}return s}function fixTextIndent(e){const t=getMeasurement(e.textIndent,"0px");if(t>=0)return;const n="padding"+("left"===("right"===e.textAlign?"right":"left")?"Left":"Right"),a=getMeasurement(e[n],"0px");e[n]=a-t+"px"}function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[Po]()[ko].paraStack;return t.length?t.at(-1):null}function setPara(e,t,n){if(n.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const a=getCurrentPara(e);if(a){const e=n.attributes.style;e.display="flex";e.flexDirection="column";switch(a.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=a[yl]();for(const[n,a]of Object.entries(t))n in e||(e[n]=a)}}}function setFontFamily(e,t,n,a){if(!n){delete a.fontFamily;return}const s=stripQuotes(e.typeface);a.fontFamily=serializeFontFamily(s);const r=n.find(s);if(r){const{fontFamily:n}=r.regular.cssFontInfo;n!==s&&(a.fontFamily=serializeFontFamily(n));const i=getCurrentPara(t);if(i&&""!==i.lineHeight)return;if(a.lineHeight)return;const o=selectFont(e,r);o&&(a.lineHeight=Math.max(1.2,o.lineHeight))}}function fixURL(e){const t=createValidAbsoluteUrl(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null}function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}function flushHTML(e){if(!e[ko])return null;const t={name:"div",attributes:e[ko].attributes,children:e[ko].children};if(e[ko].failingNode){const n=e[ko].failingNode[qo]();n&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[n])):t.children.push(n))}return 0===t.children.length?null:t}function addHTML(e,t,n){const a=e[ko],s=a.availableSpace,[r,i,o,l]=n;switch(e.layout){case"position":a.width=Math.max(a.width,r+o);a.height=Math.max(a.height,i+l);a.children.push(t);break;case"lr-tb":case"rl-tb":if(!a.line||1===a.attempt){a.line=createLine(e,[]);a.children.push(a.line);a.numberInLine=0}a.numberInLine+=1;a.line.children.push(t);if(0===a.attempt){a.currentWidth+=o;a.height=Math.max(a.height,a.prevHeight+l)}else{a.currentWidth=o;a.prevHeight=a.height;a.height+=l;a.attempt=0}a.width=Math.max(a.width,a.currentWidth);break;case"rl-row":case"row":{a.children.push(t);a.width+=o;a.height=Math.max(a.height,l);const e=measureToString(a.height);for(const t of a.children)t.attributes.style.height=e;break}case"table":case"tb":a.width=MathClamp(o,a.width,s.width);a.height+=l;a.children.push(t)}}function getAvailableSpace(e){const t=e[ko].availableSpace,n=e.margin?e.margin.topInset+e.margin.bottomInset:0,a=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[ko].attempt?{width:t.width-a-e[ko].currentWidth,height:t.height-n-e[ko].prevHeight}:{width:t.width-a,height:t.height-n-e[ko].height};case"rl-row":case"row":return{width:Math.sumPrecise(e[ko].columnWidths.slice(e[ko].currentColumn)),height:t.height-a};case"table":case"tb":return{width:t.width-a,height:t.height-n-e[ko].height};default:return t}}function checkDimensions(e,t){if(null===e[Po]()[ko].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const n=e[Mo](),a=n[ko]?.attempt||0,[,s,r,i]=function getTransformedBBox(e){let t,n,a=""===e.w?NaN:e.w,s=""===e.h?NaN:e.h,[r,i]=[0,0];switch(e.anchorType||""){case"bottomCenter":[r,i]=[a/2,s];break;case"bottomLeft":[r,i]=[0,s];break;case"bottomRight":[r,i]=[a,s];break;case"middleCenter":[r,i]=[a/2,s/2];break;case"middleLeft":[r,i]=[0,s/2];break;case"middleRight":[r,i]=[a,s/2];break;case"topCenter":[r,i]=[a/2,0];break;case"topRight":[r,i]=[a,0]}switch(e.rotate||0){case 0:[t,n]=[-r,-i];break;case 90:[t,n]=[-i,r];[a,s]=[s,-a];break;case 180:[t,n]=[r,i];[a,s]=[-a,-s];break;case 270:[t,n]=[i,-r];[a,s]=[-s,a]}return[e.x+t+Math.min(0,a),e.y+n+Math.min(0,s),Math.abs(a),Math.abs(s)]}(e);switch(n.layout){case"lr-tb":case"rl-tb":return 0===a?e[Po]()[ko].noLayoutFailure?""!==e.w?Math.round(r-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(i-t.height)>2)&&(""!==e.w?Math.round(r-t.width)<=2||0===n[ko].numberInLine&&t.height>2:t.width>2):!!e[Po]()[ko].noLayoutFailure||!(""!==e.h&&Math.round(i-t.height)>2)&&((""===e.w||Math.round(r-t.width)<=2||!n[Yo]())&&t.height>2);case"table":case"tb":return!!e[Po]()[ko].noLayoutFailure||(""===e.h||e[$o]()?(""===e.w||Math.round(r-t.width)<=2||!n[Yo]())&&t.height>2:Math.round(i-t.height)<=2);case"position":if(e[Po]()[ko].noLayoutFailure)return!0;if(""===e.h||Math.round(i+s-t.height)<=2)return!0;return i+s>e[Po]()[ko].currentContentArea.h;case"rl-row":case"row":return!!e[Po]()[ko].noLayoutFailure||(""===e.h||Math.round(i-t.height)<=2);default:return!0}}const sf=Sl.template.id,rf=/^H(\d+)$/,of=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"]),lf=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[Ro]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[fo](t);e.value=t}e.value[dl](t)}function*getContainedChildren(e){for(const t of e[Ho]())t instanceof SubformSet?yield*t[Bo]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[gl]=e[No]()[gl];return}if(e[gl])return;let t=null;for(const n of e.traversal[Ho]())if("next"===n.operation){t=n;break}if(!t||!t.ref){e[gl]=e[No]()[gl];return}const n=e[Po]();e[gl]=++n[gl];const a=n[ul](t.ref,e);if(!a)return;e=a[0]}}function applyAssist(e,t){const n=e.assist;if(n){const e=n[jl]();e&&(t.title=e);const a=n.role.match(rf);if(a){const e="heading",n=a[1];t.role=e;t["aria-level"]=n}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const n=e[No]();"row"===n.layout&&(t.role="TH"===n.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[bo]?t.speak[bo]:t.toolTip?t.toolTip[bo]:null}function valueToHtml(e){return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[Po]();if(null===t[ko].firstUnsplittable){t[ko].firstUnsplittable=e;t[ko].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[Po]();t[ko].firstUnsplittable===e&&(t[ko].noLayoutFailure=!1)}function handleBreak(e){if(e[ko])return!1;e[ko]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[Po]();let n=null;if(e.target){n=t[ul](e.target,e[No]());if(!n)return!1;n=n[0]}const{currentPageArea:a,currentContentArea:s}=t[ko];if("pageArea"===e.targetType){n instanceof PageArea||(n=null);if(e.startNew){e[ko].target=n||a;return!0}if(n&&n!==a){e[ko].target=n;return!0}return!1}n instanceof ContentArea||(n=null);const r=n&&n[No]();let i,o=r;if(e.startNew)if(n){const e=r.contentArea.children,t=e.indexOf(s),a=e.indexOf(n);-1!==t&&te;a[ko].noLayoutFailure=!0;const i=t[jl](n);e[lo](i.html,i.bbox);a[ko].noLayoutFailure=s;t[Mo]=r}class AppearanceFilter extends StringObject{constructor(e){super(sf,"appearanceFilter");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends XFAObject{constructor(e){super(sf,"arc",!0);this.circular=getInteger({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=getFloat({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=getFloat({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[jl](){const e=this.edge||new Edge({}),t=e[yl](),n=Object.create(null);"visible"===this.fill?.presence?Object.assign(n,this.fill[yl]()):n.fill="transparent";n.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);n.stroke=t.color;let a;const s={xmlns:r,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)a={name:"ellipse",attributes:{xmlns:r,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:n}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,i=this.sweepAngle>180?1:0,[o,l,f,c]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];a={name:"path",attributes:{xmlns:r,d:`M ${o} ${l} A 50 50 0 ${i} 0 ${f} ${c}`,vectorEffect:"non-scaling-stroke",style:n}};Object.assign(s,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const i={name:"svg",children:[a],attributes:s};if(hasMargin(this[No]()[No]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return HTMLResult.success(i)}}class Area extends XFAObject{constructor(e){super(sf,"area",!0);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null;this.area=new XFAObjectArray;this.draw=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[Bo](){yield*getContainedChildren(this)}[Jo](){return!0}[Xo](){return!0}[lo](e,t){const[n,a,s,r]=t;this[ko].width=Math.max(this[ko].width,n+s);this[ko].height=Math.max(this[ko].height,a+r);this[ko].children.push(e)}[Ao](){return this[ko].availableSpace}[jl](e){const t=toStyle(this,"position"),n={style:t,id:this[ql],class:["xfaArea"]};isPrintOnly(this)&&n.class.push("xfaPrintOnly");this.name&&(n.xfaName=this.name);const a=[];this[ko]={children:a,width:0,height:0,availableSpace:e};const s=this[co]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!s.success){if(s.isBreak())return s;delete this[ko];return HTMLResult.FAILURE}t.width=measureToString(this[ko].width);t.height=measureToString(this[ko].height);const r={name:"div",attributes:n,children:a},i=[this.x,this.y,this[ko].width,this[ko].height];delete this[ko];return HTMLResult.success(r,i)}}class Assist extends XFAObject{constructor(e){super(sf,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[jl](){return this.toolTip?.[bo]||null}}class Barcode extends XFAObject{constructor(e){super(sf,"barcode",!0);this.charEncoding=getKeyword({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=getStringOption(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=getInteger({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=getInteger({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=getStringOption(e.dataPrep,["none","flateCompress"]);this.dataRowCount=getInteger({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=getInteger({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=getMeasurement(e.moduleHeight,"5mm");this.moduleWidth=getMeasurement(e.moduleWidth,"0.25mm");this.printCheckDigit=getInteger({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=getRatio(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=getStringOption(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=getInteger({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=getStringOption(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=getStringOption(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=getRatio(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends XFAObject{constructor(e){super(sf,"bind",!0);this.match=getStringOption(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends XFAObject{constructor(e){super(sf,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}class Bookend extends XFAObject{constructor(e){super(sf,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends Option01{constructor(e){super(sf,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[jl](e){return valueToHtml(1===this[bo]?"1":"0")}}class Border extends XFAObject{constructor(e){super(sf,"border",!0);this.break=getStringOption(e.break,["close","open"]);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[Ro](){if(!this[ko]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let n=e.length;n<4;n++)e.push(t)}const t=e.map(e=>e.thickness),n=[0,0,0,0];if(this.margin){n[0]=this.margin.topInset;n[1]=this.margin.rightInset;n[2]=this.margin.bottomInset;n[3]=this.margin.leftInset}this[ko]={widths:t,insets:n,edges:e}}return this[ko]}[yl](){const{edges:e}=this[Ro](),t=e.map(e=>{const t=e[yl]();t.color||="#000000";return t}),n=Object.create(null);this.margin&&Object.assign(n,this.margin[yl]());"visible"===this.fill?.presence&&Object.assign(n,this.fill[yl]());if(this.corner.children.some(e=>0!==e.radius)){const e=this.corner.children.map(e=>e[yl]());if(2===e.length||3===e.length){const t=e.at(-1);for(let n=e.length;n<4;n++)e.push(t)}n.borderRadius=e.map(e=>e.radius).join(" ")}switch(this.presence){case"invisible":case"hidden":n.borderStyle="";break;case"inactive":n.borderStyle="none";break;default:n.borderStyle=t.map(e=>e.style).join(" ")}n.borderWidth=t.map(e=>e.width).join(" ");n.borderColor=t.map(e=>e.color).join(" ");return n}}class Break extends XFAObject{constructor(e){super(sf,"break",!0);this.after=getStringOption(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=getStringOption(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends XFAObject{constructor(e){super(sf,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends XFAObject{constructor(e){super(sf,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[jl](e){this[ko]={};return HTMLResult.FAILURE}}class Button extends XFAObject{constructor(e){super(sf,"button",!0);this.highlight=getStringOption(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[jl](e){const t=this[No]()[No](),n={name:"button",attributes:{id:this[ql],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=recoverJsURL(e.script[bo]);if(!t)continue;const a=fixURL(t.url);a&&n.children.push({name:"a",attributes:{id:"link"+this[ql],href:a,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return HTMLResult.success(n)}}class Calculate extends XFAObject{constructor(e){super(sf,"calculate",!0);this.id=e.id||"";this.override=getStringOption(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends XFAObject{constructor(e){super(sf,"caption",!0);this.id=e.id||"";this.placement=getStringOption(e.placement,["left","bottom","inline","right","top"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil(getMeasurement(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[dl](e){_setValue(this,e)}[Ro](e){if(!this[ko]){let{width:t,height:n}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":n=this.reserve<=0?n:this.reserve}this[ko]=layoutNode(this,{width:t,height:n})}return this[ko]}[jl](e){if(!this.value)return HTMLResult.EMPTY;this[ll]();const t=this.value[jl](e).html;if(!t){this[ol]();return HTMLResult.EMPTY}const n=this.reserve;if(this.reserve<=0){const{w:t,h:n}=this[Ro](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=n}}const a=[];"string"==typeof t?a.push({name:"#text",value:t}):a.push(t);const s=toStyle(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(s.width=measureToString(this.reserve));break;case"top":case"bottom":this.reserve>0&&(s.height=measureToString(this.reserve))}setPara(this,null,t);this[ol]();this.reserve=n;return HTMLResult.success({name:"div",attributes:{style:s,class:["xfaCaption"]},children:a})}}class Certificate extends StringObject{constructor(e){super(sf,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends XFAObject{constructor(e){super(sf,"certificates",!0);this.credentialServerPolicy=getStringOption(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends XFAObject{constructor(e){super(sf,"checkButton",!0);this.id=e.id||"";this.mark=getStringOption(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=getStringOption(e.shape,["square","round"]);this.size=getMeasurement(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jl](e){const t=toStyle(this,"margin"),n=measureToString(this.size);t.width=t.height=n;let a,s,r;const i=this[No]()[No](),o=i.items.children.length&&i.items.children[0][jl]().html||[],l={on:(void 0!==o[0]?o[0]:"on").toString(),off:(void 0!==o[1]?o[1]:"off").toString()},f=(i.value?.[bl]()||"off")===l.on||void 0,c=i[Mo](),h=i[ql];let u;if(c instanceof ExclGroup){r=c[ql];a="radio";s="xfaRadio";u=c[wo]?.[ql]||c[ql]}else{a="checkbox";s="xfaCheckbox";u=i[wo]?.[ql]||i[ql]}const m={name:"input",attributes:{class:[s],style:t,fieldId:h,dataId:u,type:a,checked:f,xfaOn:l.on,xfaOff:l.off,"aria-label":ariaLabel(i),"aria-required":!1}};r&&(m.attributes.name=r);if(isRequired(i)){m.attributes["aria-required"]=!0;m.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class ChoiceList extends XFAObject{constructor(e){super(sf,"choiceList",!0);this.commitOn=getStringOption(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=getStringOption(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=getInteger({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jl](e){const t=toStyle(this,"border","margin"),n=this[No]()[No](),a={fontSize:`calc(${n.font?.size||10}px * var(--total-scale-factor))`},s=[];if(n.items.children.length>0){const e=n.items;let t=0,r=0;if(2===e.children.length){t=e.children[0].save;r=1-t}const i=e.children[t][jl]().html,o=e.children[r][jl]().html;let l=!1;const f=n.value?.[bl]()||"";for(let e=0,t=i.length;e{e=parseInt(e.trim(),10);return isNaN(e)?0:MathClamp(e,0,255)});if(r.length<3)return{r:n,g:a,b:s};[n,a,s]=r;return{r:n,g:a,b:s}}(e.value):"";this.extras=null}[_o](){return!1}[yl](){return this.value?Util.makeHexColor(this.value.r,this.value.g,this.value.b):null}}class Comb extends XFAObject{constructor(e){super(sf,"comb");this.id=e.id||"";this.numberOfCells=getInteger({data:e.numberOfCells,defaultValue:0,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends XFAObject{constructor(e){super(sf,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=getStringOption(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends XFAObject{constructor(e){super(sf,"contentArea",!0);this.h=getMeasurement(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=getMeasurement(e.w);this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null}[jl](e){const t={left:measureToString(this.x),top:measureToString(this.y),width:measureToString(this.w),height:measureToString(this.h)},n=["xfaContentarea"];isPrintOnly(this)&&n.push("xfaPrintOnly");return HTMLResult.success({name:"div",children:[],attributes:{style:t,class:n,id:this[ql]}})}}class Corner extends XFAObject{constructor(e){super(sf,"corner",!0);this.id=e.id||"";this.inverted=getInteger({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=getStringOption(e.join,["square","round"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.radius=getMeasurement(e.radius);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](){const e=toStyle(this,"visibility");e.radius=measureToString("square"===this.join?0:this.radius);return e}}class DateElement extends ContentObject{constructor(e){super(sf,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=this[bo].trim();this[bo]=e?new Date(e):null}[jl](e){return valueToHtml(this[bo]?this[bo].toString():"")}}class DateTime extends ContentObject{constructor(e){super(sf,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=this[bo].trim();this[bo]=e?new Date(e):null}[jl](e){return valueToHtml(this[bo]?this[bo].toString():"")}}class DateTimeEdit extends XFAObject{constructor(e){super(sf,"dateTimeEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=getStringOption(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[jl](e){const t=toStyle(this,"border","font","margin"),n=this[No]()[No](),a={name:"input",attributes:{type:"text",fieldId:n[ql],dataId:n[wo]?.[ql]||n[ql],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}};if(isRequired(n)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Decimal extends ContentObject{constructor(e){super(sf,"decimal");this.fracDigits=getInteger({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=getInteger({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=parseFloat(this[bo].trim());this[bo]=isNaN(e)?null:e}[jl](e){return valueToHtml(null!==this[bo]?this[bo].toString():"")}}class DefaultUi extends XFAObject{constructor(e){super(sf,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends XFAObject{constructor(e){super(sf,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class DigestMethod extends OptionObject{constructor(e){super(sf,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends XFAObject{constructor(e){super(sf,"digestMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new XFAObjectArray}}class Draw extends XFAObject{constructor(e){super(sf,"draw",!0);this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new XFAObjectArray}[dl](e){_setValue(this,e)}[jl](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;fixDimensions(this);this[ll]();const t=this.w,n=this.h,{w:a,h:s,isBroken:r}=layoutNode(this,e);if(a&&""===this.w){if(r&&this[Mo]()[Yo]()){this[ol]();return HTMLResult.FAILURE}this.w=a}s&&""===this.h&&(this.h=s);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=t;this.h=n;this[ol]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const i=toStyle(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");setMinMaxDimensions(this,i);if(i.margin){i.padding=i.margin;delete i.margin}const o=["xfaDraw"];this.font&&o.push("xfaFont");isPrintOnly(this)&&o.push("xfaPrintOnly");const l={style:i,id:this[ql],class:o};this.name&&(l.xfaName=this.name);const f={name:"div",attributes:l,children:[]};applyAssist(this,l);const c=computeBbox(this,f,e),h=this.value?this.value[jl](e).html:null;if(null===h){this.w=t;this.h=n;this[ol]();return HTMLResult.success(createWrapper(this,f),c)}f.children.push(h);setPara(this,i,h);this.w=t;this.h=n;this[ol]();return HTMLResult.success(createWrapper(this,f),c)}}class Edge extends XFAObject{constructor(e){super(sf,"edge",!0);this.cap=getStringOption(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](){const e=toStyle(this,"visibility");Object.assign(e,{linecap:this.cap,width:measureToString(this.thickness),color:this.color?this.color[yl]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends OptionObject{constructor(e){super(sf,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends XFAObject{constructor(e){super(sf,"encodings",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new XFAObjectArray}}class Encrypt extends XFAObject{constructor(e){super(sf,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends XFAObject{constructor(e){super(sf,"encryptData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends XFAObject{constructor(e){super(sf,"encryption",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class EncryptionMethod extends OptionObject{constructor(e){super(sf,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends XFAObject{constructor(e){super(sf,"encryptionMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new XFAObjectArray}}class Event extends XFAObject{constructor(e){super(sf,"event",!0);this.activity=getStringOption(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=getStringOption(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends ContentObject{constructor(e){super(sf,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=getInteger({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=getStringOption(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[Wo](){return"text/html"===this.contentType}[al](e){if("text/html"===this.contentType&&e[el]===Sl.xhtml.id){this[bo]=e;return!0}if("text/xml"===this.contentType){this[bo]=e;return!0}return!1}[jl](e){return"text/html"===this.contentType&&this[bo]?this[bo][jl](e):HTMLResult.EMPTY}}class ExObject extends XFAObject{constructor(e){super(sf,"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 XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class ExclGroup extends XFAObject{constructor(e){super(sf,"exclGroup",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.field=new XFAObjectArray;this.setProperty=new XFAObjectArray}[Xo](){return!0}[_o](){return!0}[dl](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[fo](e);t.value=e}t.value[dl](e)}}[Yo](){return this.layout.endsWith("-tb")&&0===this[ko].attempt&&this[ko].numberInLine>0||this[No]()[Yo]()}[$o](){const e=this[Mo]();if(!e[$o]())return!1;if(void 0!==this[ko]._isSplittable)return this[ko]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[ko]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[ko].numberInLine)return!1;this[ko]._isSplittable=!0;return!0}[qo](){return flushHTML(this)}[lo](e,t){addHTML(this,e,t)}[Ao](){return getAvailableSpace(this)}[jl](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;fixDimensions(this);const t=[],n={id:this[ql],class:[]};setAccess(this,n.class);this[ko]||=Object.create(null);Object.assign(this[ko],{children:t,attributes:n,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[$o]();a||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const s=new Set(["field"]);if(this.layout.includes("row")){const e=this[Mo]().columnWidths;if(Array.isArray(e)&&e.length>0){this[ko].columnWidths=e;this[ko].currentColumn=0}}const r=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),i=["xfaExclgroup"],o=layoutClass(this);o&&i.push(o);isPrintOnly(this)&&i.push("xfaPrintOnly");n.style=r;n.class=i;this.name&&(n.xfaName=this.name);this[ll]();const l="lr-tb"===this.layout||"rl-tb"===this.layout,f=l?2:1;for(;this[ko].attempte>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new XFAObjectArray;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.setProperty=new XFAObjectArray}[Xo](){return!0}[dl](e){_setValue(this,e)}[jl](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[Eo]=this[Eo];this[fo](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[fo](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;this.caption&&delete this.caption[ko];this[ll]();const t=this.caption?this.caption[jl](e).html:null,n=this.w,a=this.h;let s=0,r=0;if(this.margin){s=this.margin.leftInset+this.margin.rightInset;r=this.margin.topInset+this.margin.bottomInset}let i=null;if(""===this.w||""===this.h){let t=null,n=null,a=0,o=0;if(this.ui.checkButton)a=o=this.ui.checkButton.size;else{const{w:t,h:n}=layoutNode(this,e);if(null!==t){a=t;o=n}else o=function fonts_getMetrics(e,t=!1){let n=null;if(e){const t=stripQuotes(e.typeface),a=e[Eo].fontFinder.find(t);n=selectFont(e,a)}if(!n)return{lineHeight:12,lineGap:2,lineNoGap:10};const a=e.size||10,s=n.lineHeight?Math.max(t?0:1.2,n.lineHeight):1.2,r=void 0===n.lineGap?.2:n.lineGap;return{lineHeight:s*a,lineGap:r*a,lineNoGap:Math.max(1,s-r)*a}}(this.font,!0).lineNoGap}i=getBorderDims(this.ui[Ro]());a+=i.w;o+=i.h;if(this.caption){const{w:s,h:r,isBroken:i}=this.caption[Ro](e);if(i&&this[Mo]()[Yo]()){this[ol]();return HTMLResult.FAILURE}t=s;n=r;switch(this.caption.placement){case"left":case"right":case"inline":t+=a;break;case"top":case"bottom":n+=o}}else{t=a;n=o}if(t&&""===this.w){t+=s;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends ContentObject{constructor(e){super(sf,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=parseFloat(this[bo].trim());this[bo]=isNaN(e)?null:e}[jl](e){return valueToHtml(null!==this[bo]?this[bo].toString():"")}}class template_Font extends XFAObject{constructor(e){super(sf,"font",!0);this.baselineShift=getMeasurement(e.baselineShift);this.fontHorizontalScale=getFloat({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=getFloat({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=getStringOption(e.kerningMode,["none","pair"]);this.letterSpacing=getMeasurement(e.letterSpacing,"0");this.lineThrough=getInteger({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=getStringOption(e.lineThroughPeriod,["all","word"]);this.overline=getInteger({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=getStringOption(e.overlinePeriod,["all","word"]);this.posture=getStringOption(e.posture,["normal","italic"]);this.size=getMeasurement(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=getInteger({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=getStringOption(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=getStringOption(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[ho](e){super[ho](e);this[Eo].usedTypefaces.add(this.typeface)}[yl](){const e=toStyle(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=measureToString(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=measureToString(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=measureToString(.99*this.size);setFontFamily(this,this,this[Eo].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends XFAObject{constructor(e){super(sf,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends StringObject{constructor(e){super(sf,"handler");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends XFAObject{constructor(e){super(sf,"hyphenation");this.excludeAllCaps=getInteger({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=getInteger({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=getInteger({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=getInteger({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=getInteger({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=getInteger({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends StringObject{constructor(e){super(sf,"image");this.aspect=getStringOption(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=getStringOption(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[jl](){if(this.contentType&&!of.has(this.contentType.toLowerCase()))return HTMLResult.EMPTY;let e=this[Eo].images?.get(this.href);if(!e&&(this.href||!this[bo]))return HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=Uint8Array.fromBase64(this[bo]));if(!e)return HTMLResult.EMPTY;if(!this.contentType){for(const[t,n]of lf)if(e.length>t.length&&t.every((t,n)=>t===e[n])){this.contentType=n;break}if(!this.contentType)return HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let n;switch(this.aspect){case"fit":case"actual":break;case"height":n={height:"100%",objectFit:"fill"};break;case"none":n={width:"100%",height:"100%",objectFit:"fill"};break;case"width":n={width:"100%",objectFit:"fill"}}const a=this[No]();return HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:n,src:URL.createObjectURL(t),alt:a?ariaLabel(a[No]()):null}})}}class ImageEdit extends XFAObject{constructor(e){super(sf,"imageEdit",!0);this.data=getStringOption(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jl](e){return"embed"===this.data?HTMLResult.success({name:"div",children:[],attributes:{}}):HTMLResult.EMPTY}}class Integer extends ContentObject{constructor(e){super(sf,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=parseInt(this[bo].trim(),10);this[bo]=isNaN(e)?null:e}[jl](e){return valueToHtml(null!==this[bo]?this[bo].toString():"")}}class Issuers extends XFAObject{constructor(e){super(sf,"issuers",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Items extends XFAObject{constructor(e){super(sf,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=getInteger({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[jl](){const e=[];for(const t of this[Ho]())e.push(t[bl]());return HTMLResult.success(e)}}class Keep extends XFAObject{constructor(e){super(sf,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=getStringOption(e.intact,t);this.next=getStringOption(e.next,t);this.previous=getStringOption(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends XFAObject{constructor(e){super(sf,"keyUsage");const t=["","yes","no"];this.crlSign=getStringOption(e.crlSign,t);this.dataEncipherment=getStringOption(e.dataEncipherment,t);this.decipherOnly=getStringOption(e.decipherOnly,t);this.digitalSignature=getStringOption(e.digitalSignature,t);this.encipherOnly=getStringOption(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=getStringOption(e.keyAgreement,t);this.keyCertSign=getStringOption(e.keyCertSign,t);this.keyEncipherment=getStringOption(e.keyEncipherment,t);this.nonRepudiation=getStringOption(e.nonRepudiation,t);this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends XFAObject{constructor(e){super(sf,"line",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=getStringOption(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[jl](){const e=this[No]()[No](),t=this.edge||new Edge({}),n=t[yl](),a=Object.create(null),s="visible"===t.presence?t.thickness:0;a.strokeWidth=measureToString(s);a.stroke=n.color;let i,o,l,f,c="100%",h="100%";if(e.w<=s){[i,o,l,f]=["50%",0,"50%","100%"];c=a.strokeWidth}else if(e.h<=s){[i,o,l,f]=[0,"50%","100%","50%"];h=a.strokeWidth}else"\\"===this.slope?[i,o,l,f]=[0,0,"100%","100%"]:[i,o,l,f]=[0,"100%","100%",0];const u={name:"svg",children:[{name:"line",attributes:{xmlns:r,x1:i,y1:o,x2:l,y2:f,style:a}}],attributes:{xmlns:r,width:c,height:h,style:{overflow:"visible"}}};if(hasMargin(e))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[u]});u.attributes.style.position="absolute";return HTMLResult.success(u)}}class Linear extends XFAObject{constructor(e){super(sf,"linear",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](e){e=e?e[yl]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[yl]():"#000000"})`}}class LockDocument extends ContentObject{constructor(e){super(sf,"lockDocument");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[yo](){this[bo]=getStringOption(this[bo],["auto","0","1"])}}class Manifest extends XFAObject{constructor(e){super(sf,"manifest",!0);this.action=getStringOption(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new XFAObjectArray}}class Margin extends XFAObject{constructor(e){super(sf,"margin",!0);this.bottomInset=getMeasurement(e.bottomInset,"0");this.id=e.id||"";this.leftInset=getMeasurement(e.leftInset,"0");this.rightInset=getMeasurement(e.rightInset,"0");this.topInset=getMeasurement(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[yl](){return{margin:measureToString(this.topInset)+" "+measureToString(this.rightInset)+" "+measureToString(this.bottomInset)+" "+measureToString(this.leftInset)}}}class Mdp extends XFAObject{constructor(e){super(sf,"mdp");this.id=e.id||"";this.permissions=getInteger({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=getStringOption(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends XFAObject{constructor(e){super(sf,"medium");this.id=e.id||"";this.imagingBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const n=e.split(",",4).map(e=>getMeasurement(e.trim(),"-1"));if(n.length<4||n[2]<0||n[3]<0)return{x:t,y:t,width:t,height:t};const[a,s,r,i]=n;return{x:a,y:s,width:r,height:i}}(e.imagingBBox);this.long=getMeasurement(e.long);this.orientation=getStringOption(e.orientation,["portrait","landscape"]);this.short=getMeasurement(e.short);this.stock=e.stock||"";this.trayIn=getStringOption(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=getStringOption(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends XFAObject{constructor(e){super(sf,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new XFAObjectArray}}class NumericEdit extends XFAObject{constructor(e){super(sf,"numericEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[jl](e){const t=toStyle(this,"border","font","margin"),n=this[No]()[No](),a={name:"input",attributes:{type:"text",fieldId:n[ql],dataId:n[wo]?.[ql]||n[ql],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}};if(isRequired(n)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Occur extends XFAObject{constructor(e){super(sf,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?getInteger({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?getInteger({data:e.max,defaultValue:-1,validate:e=>!0}):"";this.min=""!==e.min?getInteger({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[ho](){const e=this[No](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=getInteger({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=getStringOption(e.oddOrEven,["any","even","odd"]);this.pagePosition=getStringOption(e.pagePosition,["any","first","last","only","rest"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.draw=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray}[Qo](){if(!this[ko]){this[ko]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[ko].numberOfUsee.oddOrEven===t&&e.pagePosition===n);if(a)return a;a=this.pageArea.children.find(e=>"any"===e.oddOrEven&&e.pagePosition===n);if(a)return a;a=this.pageArea.children.find(e=>"any"===e.oddOrEven&&"any"===e.pagePosition);return a||this.pageArea.children[0]}}class Para extends XFAObject{constructor(e){super(sf,"para",!0);this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?getMeasurement(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?getMeasurement(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?getMeasurement(e.marginRight,"0pt"):"";this.orphans=getInteger({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?getMeasurement(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?getMeasurement(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?getMeasurement(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?getMeasurement(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map((e,t)=>t%2==1?getMeasurement(e):e);this.textIndent=e.textIndent?getMeasurement(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=getStringOption(e.vAlign,["top","bottom","middle"]);this.widows=getInteger({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[yl](){const e=toStyle(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=measureToString(this.marginLeft));""!==this.marginRight&&(e.paddingRight=measureToString(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=measureToString(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=measureToString(this.spaceBelow));if(""!==this.textIndent){e.textIndent=measureToString(this.textIndent);fixTextIndent(e)}this.lineHeight>0&&(e.lineHeight=measureToString(this.lineHeight));""!==this.tabDefault&&(e.tabSize=measureToString(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[yl]());return e}}class PasswordEdit extends XFAObject{constructor(e){super(sf,"passwordEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class template_Pattern extends XFAObject{constructor(e){super(sf,"pattern",!0);this.id=e.id||"";this.type=getStringOption(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](e){e=e?e[yl]():"#FFFFFF";const t=this.color?this.color[yl]():"#000000",n="repeating-linear-gradient",a=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${n}(to top,${a}) ${n}(to right,${a})`;case"crossDiagonal":return`${n}(45deg,${a}) ${n}(-45deg,${a})`;case"diagonalLeft":return`${n}(45deg,${a})`;case"diagonalRight":return`${n}(-45deg,${a})`;case"horizontal":return`${n}(to top,${a})`;case"vertical":return`${n}(to right,${a})`}return""}}class Picture extends StringObject{constructor(e){super(sf,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends XFAObject{constructor(e){super(sf,"proto",!0);this.appearanceFilter=new XFAObjectArray;this.arc=new XFAObjectArray;this.area=new XFAObjectArray;this.assist=new XFAObjectArray;this.barcode=new XFAObjectArray;this.bindItems=new XFAObjectArray;this.bookend=new XFAObjectArray;this.boolean=new XFAObjectArray;this.border=new XFAObjectArray;this.break=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.button=new XFAObjectArray;this.calculate=new XFAObjectArray;this.caption=new XFAObjectArray;this.certificate=new XFAObjectArray;this.certificates=new XFAObjectArray;this.checkButton=new XFAObjectArray;this.choiceList=new XFAObjectArray;this.color=new XFAObjectArray;this.comb=new XFAObjectArray;this.connect=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.corner=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.dateTimeEdit=new XFAObjectArray;this.decimal=new XFAObjectArray;this.defaultUi=new XFAObjectArray;this.desc=new XFAObjectArray;this.digestMethod=new XFAObjectArray;this.digestMethods=new XFAObjectArray;this.draw=new XFAObjectArray;this.edge=new XFAObjectArray;this.encoding=new XFAObjectArray;this.encodings=new XFAObjectArray;this.encrypt=new XFAObjectArray;this.encryptData=new XFAObjectArray;this.encryption=new XFAObjectArray;this.encryptionMethod=new XFAObjectArray;this.encryptionMethods=new XFAObjectArray;this.event=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.execute=new XFAObjectArray;this.extras=new XFAObjectArray;this.field=new XFAObjectArray;this.fill=new XFAObjectArray;this.filter=new XFAObjectArray;this.float=new XFAObjectArray;this.font=new XFAObjectArray;this.format=new XFAObjectArray;this.handler=new XFAObjectArray;this.hyphenation=new XFAObjectArray;this.image=new XFAObjectArray;this.imageEdit=new XFAObjectArray;this.integer=new XFAObjectArray;this.issuers=new XFAObjectArray;this.items=new XFAObjectArray;this.keep=new XFAObjectArray;this.keyUsage=new XFAObjectArray;this.line=new XFAObjectArray;this.linear=new XFAObjectArray;this.lockDocument=new XFAObjectArray;this.manifest=new XFAObjectArray;this.margin=new XFAObjectArray;this.mdp=new XFAObjectArray;this.medium=new XFAObjectArray;this.message=new XFAObjectArray;this.numericEdit=new XFAObjectArray;this.occur=new XFAObjectArray;this.oid=new XFAObjectArray;this.oids=new XFAObjectArray;this.overflow=new XFAObjectArray;this.pageArea=new XFAObjectArray;this.pageSet=new XFAObjectArray;this.para=new XFAObjectArray;this.passwordEdit=new XFAObjectArray;this.pattern=new XFAObjectArray;this.picture=new XFAObjectArray;this.radial=new XFAObjectArray;this.reason=new XFAObjectArray;this.reasons=new XFAObjectArray;this.rectangle=new XFAObjectArray;this.ref=new XFAObjectArray;this.script=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.signData=new XFAObjectArray;this.signature=new XFAObjectArray;this.signing=new XFAObjectArray;this.solid=new XFAObjectArray;this.speak=new XFAObjectArray;this.stipple=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray;this.subjectDN=new XFAObjectArray;this.subjectDNs=new XFAObjectArray;this.submit=new XFAObjectArray;this.text=new XFAObjectArray;this.textEdit=new XFAObjectArray;this.time=new XFAObjectArray;this.timeStamp=new XFAObjectArray;this.toolTip=new XFAObjectArray;this.traversal=new XFAObjectArray;this.traverse=new XFAObjectArray;this.ui=new XFAObjectArray;this.validate=new XFAObjectArray;this.value=new XFAObjectArray;this.variables=new XFAObjectArray}}class Radial extends XFAObject{constructor(e){super(sf,"radial",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](e){e=e?e[yl]():"#FFFFFF";const t=this.color?this.color[yl]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends StringObject{constructor(e){super(sf,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends XFAObject{constructor(e){super(sf,"reasons",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new XFAObjectArray}}class Rectangle extends XFAObject{constructor(e){super(sf,"rectangle",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.fill=null}[jl](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[yl](),n=Object.create(null);"visible"===this.fill?.presence?Object.assign(n,this.fill[yl]()):n.fill="transparent";n.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);n.stroke=t.color;const a=(this.corner.children.length?this.corner.children[0]:new Corner({}))[yl](),s={name:"svg",children:[{name:"rect",attributes:{xmlns:r,width:"100%",height:"100%",x:0,y:0,rx:a.radius,ry:a.radius,style:n}}],attributes:{xmlns:r,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[No]()[No]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[s]});s.attributes.style.position="absolute";return HTMLResult.success(s)}}class RefElement extends StringObject{constructor(e){super(sf,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends StringObject{constructor(e){super(sf,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=getStringOption(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends XFAObject{constructor(e){super(sf,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}class SignData extends XFAObject{constructor(e){super(sf,"signData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends XFAObject{constructor(e){super(sf,"signature",!0);this.id=e.id||"";this.type=getStringOption(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends XFAObject{constructor(e){super(sf,"signing",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Solid extends XFAObject{constructor(e){super(sf,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[yl](e){return e?e[yl]():"#FFFFFF"}}class Speak extends StringObject{constructor(e){super(sf,"speak");this.disable=getInteger({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=getStringOption(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends XFAObject{constructor(e){super(sf,"stipple",!0);this.id=e.id||"";this.rate=getInteger({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[yl](e){const t=this.rate/100;return Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends XFAObject{constructor(e){super(sf,"subform",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=getInteger({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map(e=>"-1"===e?-1:getMeasurement(e));this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.mergeMode=getStringOption(e.mergeMode,["consumeData","matchTemplate"]);this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.restoreState=getStringOption(e.restoreState,["manual","auto"]);this.scope=getStringOption(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.connect=new XFAObjectArray;this.draw=new XFAObjectArray;this.event=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.proto=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}[Mo](){const e=this[No]();return e instanceof SubformSet?e[Mo]():e}[Xo](){return!0}[Yo](){return this.layout.endsWith("-tb")&&0===this[ko].attempt&&this[ko].numberInLine>0||this[No]()[Yo]()}*[Bo](){yield*getContainedChildren(this)}[qo](){return flushHTML(this)}[lo](e,t){addHTML(this,e,t)}[Ao](){return getAvailableSpace(this)}[$o](){const e=this[Mo]();if(!e[$o]())return!1;if(void 0!==this[ko]._isSplittable)return this[ko]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[ko]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[ko]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[ko].numberInLine)return!1;this[ko]._isSplittable=!0;return!0}[jl](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[Eo]=this[Eo];this[fo](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[Eo]=this[Eo];this[fo](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[Eo]=this[Eo];this[fo](e);this.overflow.push(e)}this[fl](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&warn("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return HTMLResult.breakNode(e)}if(this[ko]?.afterBreakAfter)return HTMLResult.EMPTY;fixDimensions(this);const t=[],n={id:this[ql],class:[]};setAccess(this,n.class);this[ko]||=Object.create(null);Object.assign(this[ko],{children:t,line:null,attributes:n,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[Po](),s=a[ko].noLayoutFailure,r=this[$o]();r||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const i=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[Mo]().columnWidths;if(Array.isArray(e)&&e.length>0){this[ko].columnWidths=e;this[ko].currentColumn=0}}const o=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),l=["xfaSubform"],f=layoutClass(this);f&&l.push(f);n.style=o;n.class=l;this.name&&(n.xfaName=this.name);if(this.overflow){const t=this.overflow[Ro]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[ll]();const c="lr-tb"===this.layout||"rl-tb"===this.layout,h=c?2:1;for(;this[ko].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[ko].afterBreakAfter=w;return HTMLResult.breakNode(e)}}delete this[ko];return w}}class SubformSet extends XFAObject{constructor(e){super(sf,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=getStringOption(e.relation,["ordered","choice","unordered"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[Bo](){yield*getContainedChildren(this)}[Mo](){let e=this[No]();for(;!(e instanceof Subform);)e=e[No]();return e}[Xo](){return!0}}class SubjectDN extends ContentObject{constructor(e){super(sf,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){this[bo]=new Map(this[bo].split(this.delimiter).map(e=>{(e=e.split("=",2))[0]=e[0].trim();return e}))}}class SubjectDNs extends XFAObject{constructor(e){super(sf,"subjectDNs",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new XFAObjectArray}}class Submit extends XFAObject{constructor(e){super(sf,"submit",!0);this.embedPDF=getInteger({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=getStringOption(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=getKeyword({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new XFAObjectArray;this.signData=new XFAObjectArray}}class Template extends XFAObject{constructor(e){super(sf,"template",!0);this.baseProfile=getStringOption(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new XFAObjectArray}[yo](){0===this.subform.children.length&&warn("XFA - No subforms in template node.");this.subform.children.length>=2&&warn("XFA - Several subforms in template node: please file a bug.");this[gl]=5e3}[$o](){return!0}[ul](e,t){return e.startsWith("#")?[this[zo].get(e.slice(1))]:searchNode(this,t,e,!0,!0)}*[wl](){if(!this.subform.children.length)return HTMLResult.success({name:"div",children:[]});this[ko]={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[uo]();const t=e.pageSet.pageArea.children,n={name:"div",children:[]};let a=null,s=null,r=null;if(e.breakBefore.children.length>=1){s=e.breakBefore.children[0];r=s.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){s=e.subform.children[0].breakBefore.children[0];r=s.target}else if(e.break?.beforeTarget){s=e.break;r=s.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){s=e.subform.children[0].break;r=s.beforeTarget}if(s){const e=this[ul](r,s[No]());if(e instanceof PageArea){a=e;s[ko]={}}}a||=t[0];a[ko]={numberOfUse:1};const i=a[No]();i[ko]={numberOfUse:1,pageIndex:i.pageArea.children.indexOf(a),pageSetIndex:0};let o,l=null,f=null,c=!0,h=0,u=0;for(;;){if(c)h=0;else{n.children.pop();if(3===++h){warn("XFA - Something goes wrong: please file a bug.");return n}}o=null;this[ko].currentPageArea=a;const t=a[jl]().html;n.children.push(t);if(l){this[ko].noLayoutFailure=!0;t.children.push(l[jl](a[ko].space).html);l=null}if(f){this[ko].noLayoutFailure=!0;t.children.push(f[jl](a[ko].space).html);f=null}const s=a.contentArea.children,r=t.children.filter(e=>e.attributes.class.includes("xfaContentarea"));c=!1;this[ko].firstUnsplittable=null;this[ko].noLayoutFailure=!1;const flush=t=>{const n=e[qo]();if(n){c||=n.children?.length>0;r[t].children.push(n)}};for(let t=u,a=s.length;t0;r[t].children.push(h.html)}else!c&&n.children.length>1&&n.children.pop();return n}if(h.isBreak()){const e=h.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){l=this[ul](e.leader,e[No]());l=l?l[0]:null}if(e.trailer){f=this[ul](e.trailer,e[No]());f=f?f[0]:null}if("pageArea"===e.targetType){o=e[ko].target;t=1/0}else if(e[ko].target){o=e[ko].target;u=e[ko].index+1;t=1/0}else t=e[ko].index;continue}if(this[ko].overflowNode){const e=this[ko].overflowNode;this[ko].overflowNode=null;const n=e[Ro](),a=n.target;n.addLeader=null!==n.leader;n.addTrailer=null!==n.trailer;flush(t);const r=t;t=1/0;if(a instanceof PageArea)o=a;else if(a instanceof ContentArea){const e=s.indexOf(a);if(-1!==e)e>r?t=e-1:u=e;else{o=a[No]();u=o.contentArea.children.indexOf(a)}}continue}flush(t)}this[ko].pageNumber+=1;o&&(o[Qo]()?o[ko].numberOfUse+=1:o=null);a=o||a[Do]();yield null}}}class Text extends ContentObject{constructor(e){super(sf,"text");this.id=e.id||"";this.maxChars=getInteger({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[oo](){return!0}[al](e){if(e[el]===Sl.xhtml.id){this[bo]=e;return!0}warn(`XFA - Invalid content in Text: ${e[tl]}.`);return!1}[rl](e){this[bo]instanceof XFAObject||super[rl](e)}[yo](){"string"==typeof this[bo]&&(this[bo]=this[bo].replaceAll("\r\n","\n"))}[Ro](){return"string"==typeof this[bo]?this[bo].split(/[\u2029\u2028\n]/).filter(Boolean).join("\n"):this[bo][bl]()}[jl](e){if("string"==typeof this[bo]){const e=valueToHtml(this[bo]).html;if(this[bo].includes("\u2029")){e.name="div";e.children=[];this[bo].split("\u2029").map(e=>e.split(/[\u2028\n]/).flatMap(e=>[{name:"span",value:e},{name:"br"}])).forEach(t=>{e.children.push({name:"p",children:t})})}else if(/[\u2028\n]/.test(this[bo])){e.name="div";e.children=[];this[bo].split(/[\u2028\n]/).forEach(t=>{e.children.push({name:"span",value:t},{name:"br"})})}return HTMLResult.success(e)}return this[bo][jl](e)}}class TextEdit extends XFAObject{constructor(e){super(sf,"textEdit",!0);this.allowRichText=getInteger({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=getInteger({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=getStringOption(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[jl](e){const t=toStyle(this,"border","font","margin");let n;const a=this[No]()[No]();""===this.multiLine&&(this.multiLine=a instanceof Draw?1:0);n=1===this.multiLine?{name:"textarea",attributes:{dataId:a[wo]?.[ql]||a[ql],fieldId:a[ql],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:a[wo]?.[ql]||a[ql],fieldId:a[ql],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){n.attributes["aria-required"]=!0;n.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Time extends StringObject{constructor(e){super(sf,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[yo](){const e=this[bo].trim();this[bo]=e?new Date(e):null}[jl](e){return valueToHtml(this[bo]?this[bo].toString():"")}}class TimeStamp extends XFAObject{constructor(e){super(sf,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends StringObject{constructor(e){super(sf,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends XFAObject{constructor(e){super(sf,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new XFAObjectArray}}class Traverse extends XFAObject{constructor(e){super(sf,"traverse",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[Jo](){return!1}}class Ui extends XFAObject{constructor(e){super(sf,"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}[Ro](){if(void 0===this[ko]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof XFAObject){this[ko]=t;return t}}this[ko]=null}return this[ko]}[jl](e){const t=this[Ro]();return t?t[jl](e):HTMLResult.EMPTY}}class Validate extends XFAObject{constructor(e){super(sf,"validate",!0);this.formatTest=getStringOption(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=getStringOption(e.nullTest,["disabled","error","warning"]);this.scriptTest=getStringOption(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends XFAObject{constructor(e){super(sf,"value",!0);this.id=e.id||"";this.override=getInteger({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[dl](e){const t=this[No]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[fo](this.image)}this.image[bo]=e[bo];return}const n=e[tl];if(null===this[n]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof XFAObject){this[e]=null;this[fl](t)}}this[e[tl]]=e;this[fo](e)}else this[n][bo]=e[bo]}[bl](){if(this.exData)return"string"==typeof this.exData[bo]?this.exData[bo].trim():this.exData[bo][bl]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof XFAObject)return(t[bo]||"").toString().trim()}return null}[jl](e){for(const t of Object.getOwnPropertyNames(this)){const n=this[t];if(n instanceof XFAObject)return n[jl](e)}return HTMLResult.EMPTY}}class Variables extends XFAObject{constructor(e){super(sf,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.manifest=new XFAObjectArray;this.script=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[Jo](){return!0}}class TemplateNamespace{static[vl](e,t){if(Object.hasOwn(TemplateNamespace,e)){const n=TemplateNamespace[e](t);n[pl](t);return n}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new template_Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new template_Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}const ff=Sl.datasets.id;function createText(e){const t=new Text({});t[bo]=e;return t}class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new XmlObject(ff,"data");this.emptyMerge=0===this.data[Ho]().length;this.root.form=this.form=e.template[po]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,n){e[wo]=t;if(e[_o]())if(t[Ko]()){const n=t[Fo]();e[dl](createText(n))}else if(e instanceof Field&&"multiSelect"===e.ui?.choiceList?.open){const n=t[Ho]().map(e=>e[bo].trim()).join("\n");e[dl](createText(n))}else this._isConsumeData()&&warn("XFA - Nodes haven't the same type.");else!t[Ko]()||this._isMatchTemplate()?this._bindElement(e,t):warn("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,n,a){if(!e)return null;let s,r;for(let a=0;a<3;a++){s=n[Oo](e,!1,!0);for(;;){r=s.next().value;if(!r)break;if(t===r[Ko]())return r}if(n[el]===ff&&"data"===n[tl])break;n=n[No]()}if(!a)return null;s=this.data[Oo](e,!0,!1);r=s.next().value;if(r)return r;s=this.data[vo](e,!0);r=s.next().value;return r?.[Ko]()?r:null}_setProperties(e,t){if(Object.hasOwn(e,"setProperty"))for(const{ref:n,target:a,connection:s}of e.setProperty.children){if(s)continue;if(!n)continue;const r=searchNode(this.root,t,n,!1,!1);if(!r){warn(`XFA - Invalid reference: ${n}.`);continue}const[i]=r;if(!i[Go](this.data)){warn("XFA - Invalid node: must be a data node.");continue}const o=searchNode(this.root,e,a,!1,!1);if(!o){warn(`XFA - Invalid target: ${a}.`);continue}const[l]=o;if(!l[Go](e)){warn("XFA - Invalid target: must be a property or subproperty.");continue}const f=l[No]();if(l instanceof SetProperty||f instanceof SetProperty){warn("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(l instanceof BindItems||f instanceof BindItems){warn("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const c=i[bl](),h=l[tl];if(l instanceof XFAAttribute){const e=Object.create(null);e[h]=c;const t=Reflect.construct(Object.getPrototypeOf(f).constructor,[e]);f[h]=t[h];continue}if(Object.hasOwn(l,bo)){l[wo]=i;l[bo]=c;l[yo]()}else warn("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!Object.hasOwn(e,"items")||!Object.hasOwn(e,"bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[fl](t);e.items.clear();const n=new Items({}),a=new Items({});e[fo](n);e.items.push(n);e[fo](a);e.items.push(a);for(const{ref:s,labelRef:r,valueRef:i,connection:o}of e.bindItems.children){if(o)continue;if(!s)continue;const e=searchNode(this.root,t,s,!1,!1);if(e)for(const t of e){if(!t[Go](this.datasets)){warn(`XFA - Invalid ref (${s}): must be a datasets child.`);continue}const e=searchNode(this.root,t,r,!0,!1);if(!e){warn(`XFA - Invalid label: ${r}.`);continue}const[o]=e;if(!o[Go](this.datasets)){warn("XFA - Invalid label: must be a datasets child.");continue}const l=searchNode(this.root,t,i,!0,!1);if(!l){warn(`XFA - Invalid value: ${i}.`);continue}const[f]=l;if(!f[Go](this.datasets)){warn("XFA - Invalid value: must be a datasets child.");continue}const c=createText(o[bl]()),h=createText(f[bl]());n[fo](c);n.text.push(c);a[fo](h);a.text.push(h)}else warn(`XFA - Invalid reference: ${s}.`)}}_bindOccurrences(e,t,n){let a;if(t.length>1){a=e[po]();a[fl](a.occur);a.occur=null}this._bindValue(e,t[0],n);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const s=e[No](),r=e[tl],i=s[Lo](e);for(let e=1,o=t.length;et.name===e.name).length:n[a].children.length;const r=n[Lo](e)+1,i=t.initial-s;if(i){const t=e[po]();t[fl](t.occur);t.occur=null;n[a].push(t);n[Uo](r,t);for(let e=1;e0)this._bindOccurrences(a,[e[0]],null);else if(this.emptyMerge){const e=t[el]===ff?-1:t[el],n=a[wo]=new XmlObject(e,a.name||"root");t[fo](n);this._bindElement(a,n)}continue}if(!a[Xo]())continue;let e=!1,s=null,r=null,i=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,t);continue;case"global":e=!0;break;case"dataRef":if(!a.bind.ref){warn(`XFA - ref is empty in node ${a[tl]}.`);this._setAndBind(a,t);continue}r=a.bind.ref}a.bind.picture&&(s=a.bind.picture[bo])}const[o,l]=this._getOccurInfo(a);if(r){i=searchNode(this.root,t,r,!0,!1);if(null===i){i=createDataNode(this.data,t,r);if(!i)continue;this._isConsumeData()&&(i[go]=!0);this._setAndBind(a,i);continue}this._isConsumeData()&&(i=i.filter(e=>!e[go]));i.length>l?i=i.slice(0,l):0===i.length&&(i=null);i&&this._isConsumeData()&&i.forEach(e=>{e[go]=!0})}else{if(!a.name){this._setAndBind(a,t);continue}if(this._isConsumeData()){const n=[];for(;n.length0?n:null}else{i=t[Oo](a.name,!1,this.emptyMerge).next().value;if(!i){if(0===o){n.push(a);continue}const e=t[el]===ff?-1:t[el];i=a[wo]=new XmlObject(e,a.name);this.emptyMerge&&(i[go]=!0);t[fo](i);this._setAndBind(a,i);continue}this.emptyMerge&&(i[go]=!0);i=[i]}}i?this._bindOccurrences(a,i,s):o>0?this._setAndBind(a,t):n.push(a)}n.forEach(e=>e[No]()[fl](e))}}class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[Ho]()]];for(;t.length>0;){const n=t.at(-1),[a,s]=n;if(a+1===s.length){t.pop();continue}const r=s[++n[0]],i=e.get(r[ql]);if(i)r[dl](i);else{const t=r[So]();for(const n of t.values()){const t=e.get(n[ql]);if(t){n[dl](t);break}}}const o=r[Ho]();o.length>0&&t.push([-1,o])}const n=[''];if(this.dataset)for(const e of this.dataset[Ho]())"data"!==e[tl]&&e[kl](n);this.data[kl](n);n.push("");return n.join("")}}const cf=Sl.config.id;class Acrobat extends XFAObject{constructor(e){super(cf,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new XFAObjectArray}}class Acrobat7 extends XFAObject{constructor(e){super(cf,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends OptionObject{constructor(e){super(cf,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends OptionObject{constructor(e){super(cf,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends Option01{constructor(e){super(cf,"addSilentPrint")}}class AddViewerPreferences extends Option01{constructor(e){super(cf,"addViewerPreferences")}}class AdjustData extends Option10{constructor(e){super(cf,"adjustData")}}class AdobeExtensionLevel extends IntegerObject{constructor(e){super(cf,"adobeExtensionLevel",0,e=>e>=1&&e<=8)}}class Agent extends XFAObject{constructor(e){super(cf,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new XFAObjectArray}}class AlwaysEmbed extends ContentObject{constructor(e){super(cf,"alwaysEmbed")}}class Amd extends StringObject{constructor(e){super(cf,"amd")}}class config_Area extends XFAObject{constructor(e){super(cf,"area");this.level=getInteger({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=getStringOption(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends OptionObject{constructor(e){super(cf,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends OptionObject{constructor(e){super(cf,"autoSave",["disabled","enabled"])}}class Base extends StringObject{constructor(e){super(cf,"base")}}class BatchOutput extends XFAObject{constructor(e){super(cf,"batchOutput");this.format=getStringOption(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends ContentObject{constructor(e){super(cf,"behaviorOverride")}[yo](){this[bo]=new Map(this[bo].trim().split(/\s+/).filter(e=>e.includes(":")).map(e=>e.split(":",2)))}}class Cache extends XFAObject{constructor(e){super(cf,"cache",!0);this.templateCache=null}}class Change extends Option01{constructor(e){super(cf,"change")}}class Common extends XFAObject{constructor(e){super(cf,"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 XFAObjectArray}}class Compress extends XFAObject{constructor(e){super(cf,"compress");this.scope=getStringOption(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends Option01{constructor(e){super(cf,"compressLogicalStructure")}}class CompressObjectStream extends Option10{constructor(e){super(cf,"compressObjectStream")}}class Compression extends XFAObject{constructor(e){super(cf,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends XFAObject{constructor(e){super(cf,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new XFAObjectArray}}class Conformance extends OptionObject{constructor(e){super(cf,"conformance",["A","B"])}}class ContentCopy extends Option01{constructor(e){super(cf,"contentCopy")}}class Copies extends IntegerObject{constructor(e){super(cf,"copies",1,e=>e>=1)}}class Creator extends StringObject{constructor(e){super(cf,"creator")}}class CurrentPage extends IntegerObject{constructor(e){super(cf,"currentPage",0,e=>e>=0)}}class Data extends XFAObject{constructor(e){super(cf,"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 XFAObjectArray;this.transform=new XFAObjectArray}}class Debug extends XFAObject{constructor(e){super(cf,"debug",!0);this.uri=null}}class DefaultTypeface extends ContentObject{constructor(e){super(cf,"defaultTypeface");this.writingScript=getStringOption(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends OptionObject{constructor(e){super(cf,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends Option01{constructor(e){super(cf,"documentAssembly")}}class Driver extends XFAObject{constructor(e){super(cf,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends OptionObject{constructor(e){super(cf,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends OptionObject{constructor(e){super(cf,"dynamicRender",["forbidden","required"])}}class Embed extends Option01{constructor(e){super(cf,"embed")}}class config_Encrypt extends Option01{constructor(e){super(cf,"encrypt")}}class config_Encryption extends XFAObject{constructor(e){super(cf,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends OptionObject{constructor(e){super(cf,"encryptionLevel",["40bit","128bit"])}}class Enforce extends StringObject{constructor(e){super(cf,"enforce")}}class Equate extends XFAObject{constructor(e){super(cf,"equate");this.force=getInteger({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends XFAObject{constructor(e){super(cf,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,n=this._unicodeRange;for(let a of n.split(",").map(e=>e.trim()).filter(Boolean)){a=a.split("-",2).map(e=>{const n=e.match(t);return n?parseInt(n[1],16):0});1===a.length&&a.push(a[0]);e.push(a)}return shadow(this,"unicodeRange",e)}}class Exclude extends ContentObject{constructor(e){super(cf,"exclude")}[yo](){this[bo]=this[bo].trim().split(/\s+/).filter(e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e))}}class ExcludeNS extends StringObject{constructor(e){super(cf,"excludeNS")}}class FlipLabel extends OptionObject{constructor(e){super(cf,"flipLabel",["usePrinterSetting","on","off"])}}class config_FontInfo extends XFAObject{constructor(e){super(cf,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new XFAObjectArray;this.defaultTypeface=new XFAObjectArray;this.neverEmbed=new XFAObjectArray}}class FormFieldFilling extends Option01{constructor(e){super(cf,"formFieldFilling")}}class GroupParent extends StringObject{constructor(e){super(cf,"groupParent")}}class IfEmpty extends OptionObject{constructor(e){super(cf,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends StringObject{constructor(e){super(cf,"includeXDPContent")}}class IncrementalLoad extends OptionObject{constructor(e){super(cf,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends Option01{constructor(e){super(cf,"incrementalMerge")}}class Interactive extends Option01{constructor(e){super(cf,"interactive")}}class Jog extends OptionObject{constructor(e){super(cf,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends XFAObject{constructor(e){super(cf,"labelPrinter",!0);this.name=getStringOption(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends OptionObject{constructor(e){super(cf,"layout",["paginate","panel"])}}class Level extends IntegerObject{constructor(e){super(cf,"level",0,e=>e>0)}}class Linearized extends Option01{constructor(e){super(cf,"linearized")}}class Locale extends StringObject{constructor(e){super(cf,"locale")}}class LocaleSet extends StringObject{constructor(e){super(cf,"localeSet")}}class Log extends XFAObject{constructor(e){super(cf,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends XFAObject{constructor(e){super(cf,"map",!0);this.equate=new XFAObjectArray;this.equateRange=new XFAObjectArray}}class MediumInfo extends XFAObject{constructor(e){super(cf,"mediumInfo",!0);this.map=null}}class config_Message extends XFAObject{constructor(e){super(cf,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends XFAObject{constructor(e){super(cf,"messaging",!0);this.message=new XFAObjectArray}}class Mode extends OptionObject{constructor(e){super(cf,"mode",["append","overwrite"])}}class ModifyAnnots extends Option01{constructor(e){super(cf,"modifyAnnots")}}class MsgId extends IntegerObject{constructor(e){super(cf,"msgId",1,e=>e>=1)}}class NameAttr extends StringObject{constructor(e){super(cf,"nameAttr")}}class NeverEmbed extends ContentObject{constructor(e){super(cf,"neverEmbed")}}class NumberOfCopies extends IntegerObject{constructor(e){super(cf,"numberOfCopies",null,e=>e>=2&&e<=5)}}class OpenAction extends XFAObject{constructor(e){super(cf,"openAction",!0);this.destination=null}}class Output extends XFAObject{constructor(e){super(cf,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends StringObject{constructor(e){super(cf,"outputBin")}}class OutputXSL extends XFAObject{constructor(e){super(cf,"outputXSL",!0);this.uri=null}}class Overprint extends OptionObject{constructor(e){super(cf,"overprint",["none","both","draw","field"])}}class Packets extends StringObject{constructor(e){super(cf,"packets")}[yo](){"*"!==this[bo]&&(this[bo]=this[bo].trim().split(/\s+/).filter(e=>["config","datasets","template","xfdf","xslt"].includes(e)))}}class PageOffset extends XFAObject{constructor(e){super(cf,"pageOffset");this.x=getInteger({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=getInteger({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends StringObject{constructor(e){super(cf,"pageRange")}[yo](){const e=this[bo].trim().split(/\s+/).map(e=>parseInt(e,10)),t=[];for(let n=0,a=e.length;n!1)}}class Pcl extends XFAObject{constructor(e){super(cf,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends XFAObject{constructor(e){super(cf,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends XFAObject{constructor(e){super(cf,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends XFAObject{constructor(e){super(cf,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends Option01{constructor(e){super(cf,"pickTrayByPDFSize")}}class config_Picture extends StringObject{constructor(e){super(cf,"picture")}}class PlaintextMetadata extends Option01{constructor(e){super(cf,"plaintextMetadata")}}class Presence extends OptionObject{constructor(e){super(cf,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends XFAObject{constructor(e){super(cf,"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 XFAObjectArray;this.labelPrinter=new XFAObjectArray;this.pcl=new XFAObjectArray;this.pdf=new XFAObjectArray;this.ps=new XFAObjectArray;this.submitUrl=new XFAObjectArray;this.webClient=new XFAObjectArray;this.zpl=new XFAObjectArray}}class Print extends Option01{constructor(e){super(cf,"print")}}class PrintHighQuality extends Option01{constructor(e){super(cf,"printHighQuality")}}class PrintScaling extends OptionObject{constructor(e){super(cf,"printScaling",["appdefault","noScaling"])}}class PrinterName extends StringObject{constructor(e){super(cf,"printerName")}}class Producer extends StringObject{constructor(e){super(cf,"producer")}}class Ps extends XFAObject{constructor(e){super(cf,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends ContentObject{constructor(e){super(cf,"range")}[yo](){this[bo]=this[bo].split(",",2).map(e=>e.split("-").map(e=>parseInt(e.trim(),10))).filter(e=>e.every(e=>!isNaN(e))).map(e=>{1===e.length&&e.push(e[0]);return e})}}class Record extends ContentObject{constructor(e){super(cf,"record")}[yo](){this[bo]=this[bo].trim();const e=parseInt(this[bo],10);!isNaN(e)&&e>=0&&(this[bo]=e)}}class Relevant extends ContentObject{constructor(e){super(cf,"relevant")}[yo](){this[bo]=this[bo].trim().split(/\s+/)}}class Rename extends ContentObject{constructor(e){super(cf,"rename")}[yo](){this[bo]=this[bo].trim();(this[bo].toLowerCase().startsWith("xml")||/[\p{L}_][\p{L}\d._\p{M}-]*/u.test(this[bo]))&&warn("XFA - Rename: invalid XFA name")}}class RenderPolicy extends OptionObject{constructor(e){super(cf,"renderPolicy",["server","client"])}}class RunScripts extends OptionObject{constructor(e){super(cf,"runScripts",["both","client","none","server"])}}class config_Script extends XFAObject{constructor(e){super(cf,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends OptionObject{constructor(e){super(cf,"scriptModel",["XFA","none"])}}class Severity extends OptionObject{constructor(e){super(cf,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends XFAObject{constructor(e){super(cf,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends XFAObject{constructor(e){super(cf,"staple");this.mode=getStringOption(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends StringObject{constructor(e){super(cf,"startNode")}}class StartPage extends IntegerObject{constructor(e){super(cf,"startPage",0,e=>!0)}}class SubmitFormat extends OptionObject{constructor(e){super(cf,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends StringObject{constructor(e){super(cf,"submitUrl")}}class SubsetBelow extends IntegerObject{constructor(e){super(cf,"subsetBelow",100,e=>e>=0&&e<=100)}}class SuppressBanner extends Option01{constructor(e){super(cf,"suppressBanner")}}class Tagged extends Option01{constructor(e){super(cf,"tagged")}}class config_Template extends XFAObject{constructor(e){super(cf,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends OptionObject{constructor(e){super(cf,"threshold",["trace","error","information","warning"])}}class To extends OptionObject{constructor(e){super(cf,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends XFAObject{constructor(e){super(cf,"templateCache");this.maxEntries=getInteger({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends XFAObject{constructor(e){super(cf,"trace",!0);this.area=new XFAObjectArray}}class Transform extends XFAObject{constructor(e){super(cf,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends OptionObject{constructor(e){super(cf,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends StringObject{constructor(e){super(cf,"uri")}}class config_Validate extends OptionObject{constructor(e){super(cf,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends ContentObject{constructor(e){super(cf,"validateApprovalSignatures")}[yo](){this[bo]=this[bo].trim().split(/\s+/).filter(e=>["docReady","postSign"].includes(e))}}class ValidationMessaging extends OptionObject{constructor(e){super(cf,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends OptionObject{constructor(e){super(cf,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends XFAObject{constructor(e){super(cf,"VersionControl");this.outputBelow=getStringOption(e.outputBelow,["warn","error","update"]);this.sourceAbove=getStringOption(e.sourceAbove,["warn","error"]);this.sourceBelow=getStringOption(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends XFAObject{constructor(e){super(cf,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends XFAObject{constructor(e){super(cf,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends OptionObject{constructor(e){super(cf,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends ContentObject{constructor(e){super(cf,"window")}[yo](){const e=this[bo].split(",",2).map(e=>parseInt(e.trim(),10));if(e.some(e=>isNaN(e)))this[bo]=[0,0];else{1===e.length&&e.push(e[0]);this[bo]=e}}}class Xdc extends XFAObject{constructor(e){super(cf,"xdc",!0);this.uri=new XFAObjectArray;this.xsl=new XFAObjectArray}}class Xdp extends XFAObject{constructor(e){super(cf,"xdp",!0);this.packets=null}}class Xsl extends XFAObject{constructor(e){super(cf,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends XFAObject{constructor(e){super(cf,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[vl](e,t){if(Object.hasOwn(ConfigNamespace,e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new config_Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new config_Encrypt(e)}static encryption(e){return new config_Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new config_FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new config_Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new config_Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new config_Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new config_Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new config_Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}const hf=Sl.connectionSet.id;class ConnectionSet extends XFAObject{constructor(e){super(hf,"connectionSet",!0);this.wsdlConnection=new XFAObjectArray;this.xmlConnection=new XFAObjectArray;this.xsdConnection=new XFAObjectArray}}class EffectiveInputPolicy extends XFAObject{constructor(e){super(hf,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends XFAObject{constructor(e){super(hf,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends StringObject{constructor(e){super(hf,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends StringObject{constructor(e){super(hf,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends StringObject{constructor(e){super(hf,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends StringObject{constructor(e){super(hf,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class connection_set_Uri extends StringObject{constructor(e){super(hf,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends StringObject{constructor(e){super(hf,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends XFAObject{constructor(e){super(hf,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends XFAObject{constructor(e){super(hf,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends XFAObject{constructor(e){super(hf,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[vl](e,t){if(Object.hasOwn(ConnectionSetNamespace,e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new connection_set_Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}const uf=Sl.datasets.id;class datasets_Data extends XmlObject{constructor(e){super(uf,"data",e)}[Vo](){return!0}}class Datasets extends XFAObject{constructor(e){super(uf,"datasets",!0);this.data=null;this.Signature=null}[al](e){const t=e[tl];("data"===t&&e[el]===uf||"Signature"===t&&e[el]===Sl.signature.id)&&(this[t]=e);this[fo](e)}}class DatasetsNamespace{static[vl](e,t){if(Object.hasOwn(DatasetsNamespace,e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new datasets_Data(e)}}const mf=Sl.localeSet.id;class CalendarSymbols extends XFAObject{constructor(e){super(mf,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new XFAObjectArray(2)}}class CurrencySymbol extends StringObject{constructor(e){super(mf,"currencySymbol");this.name=getStringOption(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends XFAObject{constructor(e){super(mf,"currencySymbols",!0);this.currencySymbol=new XFAObjectArray(3)}}class DatePattern extends StringObject{constructor(e){super(mf,"datePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class DatePatterns extends XFAObject{constructor(e){super(mf,"datePatterns",!0);this.datePattern=new XFAObjectArray(4)}}class DateTimeSymbols extends ContentObject{constructor(e){super(mf,"dateTimeSymbols")}}class Day extends StringObject{constructor(e){super(mf,"day")}}class DayNames extends XFAObject{constructor(e){super(mf,"dayNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new XFAObjectArray(7)}}class Era extends StringObject{constructor(e){super(mf,"era")}}class EraNames extends XFAObject{constructor(e){super(mf,"eraNames",!0);this.era=new XFAObjectArray(2)}}class locale_set_Locale extends XFAObject{constructor(e){super(mf,"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 locale_set_LocaleSet extends XFAObject{constructor(e){super(mf,"localeSet",!0);this.locale=new XFAObjectArray}}class Meridiem extends StringObject{constructor(e){super(mf,"meridiem")}}class MeridiemNames extends XFAObject{constructor(e){super(mf,"meridiemNames",!0);this.meridiem=new XFAObjectArray(2)}}class Month extends StringObject{constructor(e){super(mf,"month")}}class MonthNames extends XFAObject{constructor(e){super(mf,"monthNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new XFAObjectArray(12)}}class NumberPattern extends StringObject{constructor(e){super(mf,"numberPattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class NumberPatterns extends XFAObject{constructor(e){super(mf,"numberPatterns",!0);this.numberPattern=new XFAObjectArray(4)}}class NumberSymbol extends StringObject{constructor(e){super(mf,"numberSymbol");this.name=getStringOption(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends XFAObject{constructor(e){super(mf,"numberSymbols",!0);this.numberSymbol=new XFAObjectArray(5)}}class TimePattern extends StringObject{constructor(e){super(mf,"timePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class TimePatterns extends XFAObject{constructor(e){super(mf,"timePatterns",!0);this.timePattern=new XFAObjectArray(4)}}class TypeFace extends XFAObject{constructor(e){super(mf,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends XFAObject{constructor(e){super(mf,"typeFaces",!0);this.typeFace=new XFAObjectArray}}class LocaleSetNamespace{static[vl](e,t){if(Object.hasOwn(LocaleSetNamespace,e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new locale_set_Locale(e)}static localeSet(e){return new locale_set_LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}const pf=Sl.signature.id;class signature_Signature extends XFAObject{constructor(e){super(pf,"signature",!0)}}class SignatureNamespace{static[vl](e,t){if(Object.hasOwn(SignatureNamespace,e))return SignatureNamespace[e](t)}static signature(e){return new signature_Signature(e)}}const df=Sl.stylesheet.id;class Stylesheet extends XFAObject{constructor(e){super(df,"stylesheet",!0)}}class StylesheetNamespace{static[vl](e,t){if(Object.hasOwn(StylesheetNamespace,e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}const gf=Sl.xdp.id;class xdp_Xdp extends XFAObject{constructor(e){super(gf,"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 XFAObjectArray;this.template=null}[sl](e){const t=Sl[e[tl]];return t&&e[el]===t.id}}class XdpNamespace{static[vl](e,t){if(Object.hasOwn(XdpNamespace,e))return XdpNamespace[e](t)}static xdp(e){return new xdp_Xdp(e)}}const bf=Sl.xhtml.id,wf=Symbol(),jf=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"]),kf=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,parseInt(e,10)/100).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,parseInt(e,10)/100).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>measureToString(.99*(e=t.fontSize=Math.abs(getMeasurement(e))))],["letter-spacing",e=>measureToString(getMeasurement(e))],["line-height",e=>measureToString(getMeasurement(e))],["margin",e=>measureToString(getMeasurement(e))],["margin-bottom",e=>measureToString(getMeasurement(e))],["margin-left",e=>measureToString(getMeasurement(e))],["margin-right",e=>measureToString(getMeasurement(e))],["margin-top",e=>measureToString(getMeasurement(e))],["text-indent",e=>measureToString(getMeasurement(e))],["font-family",e=>e],["vertical-align",e=>measureToString(getMeasurement(e))]]),yf=/\s+/g,qf=/[\r\n]+/g,vf=/\r\n?/g;function mapStyle(e,t,n){const a=Object.create(null);if(!e)return a;const s=Object.create(null);for(const[t,n]of e.split(";").map(e=>e.split(":",2))){const e=kf.get(t);if(""===e)continue;let r=n;e&&(r="string"==typeof e?e:e(n,s));t.endsWith("scale")?a.transform=a.transform?`${a[t]} ${r}`:r:a[t.replaceAll(/-([a-z])/gi,(e,t)=>t.toUpperCase())]=r}a.fontFamily&&setFontFamily({typeface:a.fontFamily,weight:a.fontWeight||"normal",posture:a.fontStyle||"normal",size:s.fontSize||0},t,t[Eo].fontFinder,a);if(n&&a.verticalAlign&&"0px"!==a.verticalAlign&&a.fontSize){const e=.583,t=.333,n=getMeasurement(a.fontSize);a.fontSize=measureToString(n*e);a.verticalAlign=measureToString(Math.sign(getMeasurement(a.verticalAlign))*n*t)}n&&a.fontSize&&(a.fontSize=`calc(${a.fontSize} * var(--total-scale-factor))`);fixTextIndent(a);return a}const Sf=new Set(["body","html"]);class XhtmlObject extends XmlObject{constructor(e,t){super(bf,t);this[wf]=!1;this.style=e.style||""}[ho](e){super[ho](e);this.style=function checkStyle(e){return e.style?e.style.split(";").filter(e=>!!e.trim()).map(e=>e.split(":",2).map(e=>e.trim())).filter(([t,n])=>{"font-family"===t&&e[Eo].usedTypefaces.add(n);return jf.has(t)}).map(e=>e.join(":")).join(";"):""}(this)}[oo](){return!Sf.has(this[tl])}[rl](e,t=!1){if(t)this[wf]=!0;else{e=e.replaceAll(qf,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(yf," "))}e&&(this[bo]+=e)}[il](e,t=!0){const n=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let s=null;for(const[e,t]of this.style.split(";").map(e=>e.split(":",2)))switch(e){case"font-family":n.typeface=stripQuotes(t);break;case"font-size":n.size=getMeasurement(t);break;case"font-weight":n.weight=t;break;case"font-style":n.posture=t;break;case"letter-spacing":n.letterSpacing=getMeasurement(t);break;case"margin":const e=t.split(/ \t/).map(getMeasurement);switch(e.length){case 1:a.top=a.bottom=a.left=a.right=e[0];break;case 2:a.top=a.bottom=e[0];a.left=a.right=e[1];break;case 3:a.top=e[0];a.bottom=e[2];a.left=a.right=e[1];break;case 4:a.top=e[0];a.left=e[1];a.bottom=e[2];a.right=e[3]}break;case"margin-top":a.top=getMeasurement(t);break;case"margin-bottom":a.bottom=getMeasurement(t);break;case"margin-left":a.left=getMeasurement(t);break;case"margin-right":a.right=getMeasurement(t);break;case"line-height":s=getMeasurement(t)}e.pushData(n,a,s);if(this[bo])e.addString(this[bo]);else for(const t of this[Ho]())"#text"!==t[tl]?t[il](e):e.addString(t[bo]);t&&e.popFont()}[jl](e){const t=[];this[ko]={children:t};this[co]({});if(0===t.length&&!this[bo])return HTMLResult.EMPTY;let n;n=this[wf]?this[bo]?this[bo].replaceAll(vf,"\n"):void 0:this[bo]||void 0;return HTMLResult.success({name:this[tl],attributes:{href:this.href,style:mapStyle(this.style,this,this[wf])},children:t,value:n})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=fixURL(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[il](e){e.pushFont({weight:"bold"});super[il](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[jl](e){const t=super[jl](e),{html:n}=t;if(!n)return HTMLResult.EMPTY;n.name="div";n.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[bl](){return"\n"}[il](e){e.addString("\n")}[jl](e){return HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[jl](e){const t=[];this[ko]={children:t};this[co]({});if(0===t.length)return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[bo]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return HTMLResult.success(e)}return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[il](e){e.pushFont({posture:"italic"});super[il](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[il](e){super[il](e,!1);e.addString("\n");e.addPara();e.popFont()}[bl](){return this[No]()[Ho]().at(-1)===this?super[bl]():super[bl]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[vl](e,t){if(Object.hasOwn(XhtmlNamespace,e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}const Af={config:ConfigNamespace,connection:ConnectionSetNamespace,datasets:DatasetsNamespace,localeSet:LocaleSetNamespace,signature:SignatureNamespace,stylesheet:StylesheetNamespace,template:TemplateNamespace,xdp:XdpNamespace,xhtml:XhtmlNamespace};class UnknownNamespace{constructor(e){this.namespaceId=e}[vl](e,t){return new XmlObject(this.namespaceId,e,t)}}class Root extends XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[zo]=e}[al](e){this.element=e;return!0}[yo](){super[yo]();if(this.element.template instanceof Template){this[zo].set(cl,this.element);this.element.template[hl](this[zo]);this.element.template[zo]=this[zo]}}}class Empty extends XFAObject{constructor(){super(-1,"",Object.create(null))}[al](e){return!1}}class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(Sl).map(({id:e})=>e));this._currentNamespace=e||new UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:n,namespace:a,prefixes:s}){const r=null!==a;if(r){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(a)}s&&this._addNamespacePrefix(s);if(Object.hasOwn(n,nl)){const e=Af.datasets,t=n[nl];let a=null;for(const[n,s]of Object.entries(t)){if(this._getNamespaceToUse(n)===e){a={xfa:s};break}}a?n[nl]=a:delete n[nl]}const i=this._getNamespaceToUse(e),o=i?.[vl](t,n)||new Empty;o[Vo]()&&this._nsAgnosticLevel++;(r||s||o[Vo]())&&(o[mo]={hasNamespace:r,prefixes:s,nsAgnostic:o[Vo]()});return o}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[n,{check:a}]of Object.entries(Sl))if(a(e)){t=Af[n];if(t){this._namespaces.set(e,t);return t}break}t=new UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:n}of e){const e=this._searchNamespace(n);this._namespacePrefixes.getOrInsertComputed(t,makeArr).push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);warn(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:n,nsAgnostic:a}=e;t&&(this._currentNamespace=this._namespaceStack.pop());n?.forEach(({prefix:e})=>{this._namespacePrefixes.get(e).pop()});a&&this._nsAgnosticLevel--}}class XFAParser extends XMLParserBase{constructor(e=null,t=!1){super();this._builder=new Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=Gi;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===Gi){this._current[yo]();return this._current.element}}onText(e){e=e.replace(this._nbsps,e=>e.slice(1)+" ");this._richText||this._current[oo]()?this._current[rl](e,this._richText):this._whiteRegex.test(e)||this._current[rl](e.trim())}onCdata(e){this._current[rl](e)}_mkAttributes(e,t){let n=null,a=null;const s=Object.create({});for(const{name:r,value:i}of e)if("xmlns"===r)n?warn(`XFA - multiple namespace definition in <${t}>`):n=i;else if(r.startsWith("xmlns:")){const e=r.substring(6);a??=[];a.push({prefix:e,value:i})}else{const e=r.indexOf(":");if(-1===e)s[r]=i;else{const t=s[nl]??=Object.create(null),[n,a]=[r.slice(0,e),r.slice(e+1)];(t[n]||=Object.create(null))[a]=i}}return[n,a,s]}_getNameAndPrefix(e,t){const n=e.indexOf(":");return-1===n?[e,null]:[e.substring(n+1),t?"":e.substring(0,n)]}onBeginElement(e,t,n){const[a,s,r]=this._mkAttributes(t,e),[i,o]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:o,name:i,attributes:r,namespace:a,prefixes:s});l[Eo]=this._globalData;if(n){l[yo]();this._current[al](l)&&l[ml](this._ids);l[ho](this._builder)}else{this._stack.push(this._current);this._current=l}}onEndElement(e){const t=this._current;if(t[Wo]()&&"string"==typeof t[bo]){const e=new XFAParser;e._globalData=this._globalData;const n=e.parse(t[bo]);t[bo]=null;t[al](n)}t[yo]();this._current=this._stack.pop();this._current[al](t)&&t[ml](this._ids);t[ho](this._builder)}onError(e){this._errorCode=e}}class XFAFactory{constructor(e){try{this.root=(new XFAParser).parse(XFAFactory._createDocument(e));const t=new Binder(this.root);this.form=t.bind();this.dataHandler=new DataHandler(this.root,t.getData());this.form[Eo].template=this.form}catch(e){warn(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return!(!this.root||!this.form)}_createPagesHelper(){const e=this.form[wl]();return new Promise((t,n)=>{const nextIteration=()=>{try{const n=e.next();n.done?t(n.value):setTimeout(nextIteration,0)}catch(e){n(e)}};setTimeout(nextIteration,0)})}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map(e=>{const{width:t,height:n}=e.attributes.style;return[0,0,parseInt(t,10),parseInt(n,10)]})}catch(e){warn(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[Eo].images=e}setFonts(e){this.form[Eo].fontFinder=new FontFinder(e);const t=[];for(let e of this.form[Eo].usedTypefaces){e=stripQuotes(e);this.form[Eo].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[Eo].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e.get("/xdp:xdp")?e.values().join(""):e.get("xdp:xdp")}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new XFAParser(XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[tl])){const e=XhtmlNamespace.body({});e[fo](t);t=e}const n=t[jl]();if(!n.success)return null;const{html:a}=n,{attributes:s}=a;if(s){s.class&&=s.class.filter(e=>!e.startsWith("xfa"));s.dir="auto"}return{html:a,str:t[bl]()}}catch(e){warn(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}class AnnotationFactory{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(([t,n,a,s,r,i])=>({pdfManager:e,catalog:e.pdfDocument.catalog,acroForm:t instanceof Dict?t:Dict.empty,xfaDatasets:n,structTreeRoot:a,baseUrl:s,attachments:r,globalColorSpaceCache:i}),e=>{warn(`createGlobals: "${e}".`);return null})}static async create(e,t,n,a,s,r,i,o){const l=s?await this._getPageIndex(e,t,n.pdfManager):null;return n.pdfManager.ensure(this,"_create",[e,t,n,a,s,r,i,l,o])}static _create(e,t,n,a,s=!1,r=null,i=null,o=null,l=null){const f=e.fetchIfRef(t);if(!(f instanceof Dict))return;let c=f.get("Subtype");c=c instanceof Name?c.name:null;if(i&&!i.has(R[c?.toUpperCase()]))return null;const{acroForm:h,pdfManager:u}=n,m=t instanceof Ref?t.toString():`annot_${a.createObjId()}`,p={xref:e,ref:t,dict:f,subtype:c,id:m,annotationGlobals:n,collectFields:s,orphanFields:r,needAppearances:!s&&!0===h.get("NeedAppearances"),pageIndex:o,evaluatorOptions:u.evaluatorOptions,pageRef:l};switch(c){case"Link":return new LinkAnnotation(p);case"Text":return new TextAnnotation(p);case"Widget":let e=getInheritableProperty({dict:f,key:"FT"});e=e instanceof Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(p);case"Btn":return new ButtonWidgetAnnotation(p);case"Ch":return new ChoiceWidgetAnnotation(p);case"Sig":return new SignatureWidgetAnnotation(p)}warn(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(p);case"Popup":return new PopupAnnotation(p);case"FreeText":return new FreeTextAnnotation(p);case"Line":return new LineAnnotation(p);case"Square":return new SquareAnnotation(p);case"Circle":return new CircleAnnotation(p);case"PolyLine":return new PolylineAnnotation(p);case"Polygon":return new PolygonAnnotation(p);case"Caret":return new CaretAnnotation(p);case"Ink":return new InkAnnotation(p);case"Highlight":return new HighlightAnnotation(p);case"Underline":return new UnderlineAnnotation(p);case"Squiggly":return new SquigglyAnnotation(p);case"StrikeOut":return new StrikeOutAnnotation(p);case"Stamp":return new StampAnnotation(p);case"FileAttachment":return new FileAttachmentAnnotation(p);case"RichMedia":return new RichMediaAnnotation(p);case"Screen":return new ScreenAnnotation(p);case"Sound":return new SoundAnnotation(p);default:s||warn(c?`Unimplemented annotation type "${c}", falling back to base annotation.`:"Annotation is missing the required /Subtype.");return new Annotation(p)}}static async _getPageIndex(e,t,n){try{const a=await e.fetchIfRefAsync(t);if(!(a instanceof Dict))return-1;const s=a.getRaw("P");if(s instanceof Ref)try{return await n.ensureCatalog("getPageIndex",[s])}catch(e){info(`_getPageIndex -- not a valid page reference: "${e}".`)}if(a.has("Kids"))return-1;const r=await n.ensureDoc("numPages");for(let e=0;ee/255)||t}function getQuadPoints(e,t){const n=e.getArray("QuadPoints");if(!isNumberArray(n,null)||0===n.length||n.length%8>0)return null;const a=new Float32Array(n.length);for(let e=0,s=n.length;et[2]||pt[3]))return null;a.set([u,d,m,d,u,p,m,p],e)}return a}function getTransformMatrix(e,t,a){const s=n.slice();Util.axialAlignedBoundingBox(t,a,s);const[r,i,o,l]=s;if(r===o||i===l)return[1,0,0,1,e[0],e[1]];const f=(e[2]-e[0])/(o-r),c=(e[3]-e[1])/(l-i);return[f,0,0,c,e[0]-r*f,e[1]-i*c]}function writeLineToCurveToAppearance(e,t,n=!1){t.push(`${numberToString(e[4])} ${numberToString(e[5])} m`);for(let n=6,a=e.length;n=0?a:-1;t.structTreeRoot.addAnnotationIdToPage(e.pageRef,a,this.ref)}if(e.collectFields){const t=n.get("Kids");if(Array.isArray(t)){const e=[];for(const n of t)n instanceof Ref&&e.push(n.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=collectActions(i,n,oe);this.data.fieldName=this._constructFieldName(n);this.data.pageIndex=e.pageIndex}const h=n.get("IT");h instanceof Name&&(this.data.it=h.name);this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_getOperatorListNoAppearance(){return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}_hasFlag(e,t){return!!(e&t)}_buildFlags(e,t){let{flags:n}=this;if(void 0===e){if(void 0===t)return;return t?n&~_:n&~E|_}if(e){n|=_;return t?n&~L|E:n&~E|L}n&=~(E|L);return t?n&~_:n|_}_isViewable(e){return!this._hasFlag(e,N)&&!this._hasFlag(e,L)}_isPrintable(e){return this._hasFlag(e,_)&&!this._hasFlag(e,E)&&!this._hasFlag(e,N)}mustBeViewed(e,t){const n=e?.get(this.data.id)?.noView;return void 0!==n?!n:this.viewable&&!this._hasFlag(this.flags,E)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}mustBeViewedWhenEditing(e,t=null){return e?!this.data.isEditable:!t?.has(this.data.id)}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?stringToPDFString(e):"";return{str:t,dir:t&&"rtl"===bidi(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:n}=e,a=getInheritableProperty({dict:t,key:"DA"})||n.acroForm.get("DA");this._defaultAppearance="string"==typeof a?a:"";this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0;this.flags&N&&"Annotation"!==this.constructor.name&&(this.flags^=N)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=lookupNormalRect(e,[0,0,0,0])}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const n=e[t];if(n instanceof Name)switch(n.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=n.name;continue}warn(`Ignoring invalid lineEnding: ${n}`)}}setRotation(e,t){this.rotation=0;let n=e instanceof Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(n)&&0!==n){n%=360;n<0&&(n+=360);n%90==0&&(this.rotation=n)}}setBorderAndBackgroundColors(e){if(e instanceof Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof Dict)if(e.has("BS")){const t=e.get("BS");if(t instanceof Dict){const e=t.get("Type");if(!e||isName(e,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t))if(t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}else 0===t.length&&this.borderStyle.setWidth(0)}else this.borderStyle.setWidth(0)}setAppearance(e){const t=e.get("AP");if(!(t instanceof Dict))return;const n=t.get("N");if(n instanceof BaseStream){this.appearance=n;return}if(!(n instanceof Dict))return;const a=e.get("AS");if(!(a instanceof Name))return;const s=n.get(a.name);s instanceof BaseStream&&(this.appearance=s)}#It(e,t){if(t.has("OC"))try{this._oc=parseMarkedContentProps(e,t.get("OC"),null)}catch(e){if(e instanceof MissingDataException)throw e;warn(`#setOptionalContent: ${e}`)}}async loadResources(e,t){const n=await t.dict.getAsync("Resources");n&&await ObjectLoader.load(n,e,n.xref);return n}get _ownCanvasRequiresForms(){return!1}async getOperatorList(e,t,n,a){const{hasOwnCanvas:s,id:r,rect:i}=this.data;let l=this.appearance;const f=!!(s&&n&o&&(!this._ownCanvasRequiresForms||n&c));if(f&&(0===this.width||0===this.height)){this.data.hasOwnCanvas=!1;return this._getOperatorListNoAppearance()}if(!l){if(!f)return this._getOperatorListNoAppearance();l=new StringStream("",new Dict)}const h=l.dict,u=await this.loadResources(wn,l),m=lookupRect(h.getArray("BBox"),[0,0,this.width,this.height]),p=lookupMatrix(h.getArray("Matrix"),bn),d=getTransformMatrix(i,m,p),g=new OperatorList,b=this._oc;void 0!==b&&g.addOp(Ct,["OC",b]);g.addOp(Dt,[r,i,d,p,f]);await e.getOperatorList({stream:l,task:t,resources:u,operatorList:g,fallbackFontDict:this._fallbackFontDict});g.addOp(Mt,[]);void 0!==b&&g.addOp(It,[]);this.reset();return{opList:g,separateForm:!1,separateCanvas:f}}async save(e,t,n,a){return null}get overlaysTextContent(){return!1}get hasTextContent(){return!1}async extractTextContent(e,t,n){if(!this.appearance)return;const a=await this.loadResources(jn,this.appearance),s=[],r=[];let i=1/0,o=1/0,l=null;const f={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){i=Math.min(i,t.transform[4]);o=Math.min(o,t.transform[5]);r.push(t.str);if(t.hasEOL){s.push(r.join("").trimEnd());r.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:a,includeMarkedContent:!0,keepWhiteSpace:!0,sink:f,viewBox:n});this.reset();i!==1/0&&(l=[i,o]);r.length&&s.push(r.join("").trimEnd());if(s.length>1||s[0]){const e=this.appearance.dict,t=lookupRect(e.getArray("BBox"),null),n=lookupMatrix(e.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(l,t,n);this.data.textContent=s}}_transformPoint(e,t,n){const{rect:a}=this.data;t||=[0,0,1,1];n||=[1,0,0,1,0,0];const s=getTransformMatrix(a,t,n);s[4]-=a[0];s[5]-=a[1];const r=e.slice();Util.applyTransform(r,s);Util.applyTransform(r,n);return 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")){warn("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return stringToPDFString(e.get("T"));const t=[];e.has("T")&&t.unshift(stringToPDFString(e.get("T")));let n=e;const a=new RefSet;e.objId&&a.put(e.objId);for(;n.has("Parent");){n=n.get("Parent");if(!(n instanceof Dict)||n.objId&&a.has(n.objId))break;n.objId&&a.put(n.objId);n.has("T")&&t.unshift(stringToPDFString(n.get("T")))}return t.join(".")}_getAttachmentId(e,t,n,a=!1){if(e instanceof Dict){t instanceof Ref||(t=FileSpec.pickPlatformItem(e.get("EF"),!0));return t instanceof Ref?n.catalog.getAttachmentIdForAnnotation(t,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 AnnotationBorderStyle{width=1;rawWidth=1;style=ne;dashArray=[3];horizontalCornerRadius=0;verticalCornerRadius=0;setWidth(e,t=[0,0,0,0]){if(e instanceof Name)this.width=0;else if("number"==typeof e){if(e>0){this.rawWidth=e;const n=(t[2]-t[0])/2,a=(t[3]-t[1])/2;if(n>0&&a>0&&(e>n||e>a)){warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof Name)switch(e.name){case"S":this.style=ne;break;case"D":this.style=ae;break;case"B":this.style=se;break;case"I":this.style=re;break;case"U":this.style=ie}}setDashArray(e,t=!1){if(Array.isArray(e)){let n=!0,a=!0;for(const t of e){if(!(+t>=0)){n=!1;break}t>0&&(a=!1)}if(0===e.length||n&&!a){this.dashArray=e;t&&this.setStyle(Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof Ref?e.toString():null;const n=t.get("RT");this.data.replyType=n instanceof Name?n.name:H}let n=null;if(this.data.replyType===O){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;n=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;n=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=n instanceof Ref?n.toString():null;t.has("RC")&&(this.data.richText=XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:n,strokeColor:a,fillColor:s,blendMode:r,strokeAlpha:i,fillAlpha:o,pointsCallback:l}){const f=this.data.rect=t.slice(),c=["q"];n&&c.push(n);a&&c.push(`${a[0]} ${a[1]} ${a[2]} RG`);s&&c.push(`${s[0]} ${s[1]} ${s[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 e=0,t=h.length;ethis._decodeFormValue(e)).filter(e=>null!==e);return t.length>0?t:null}return e instanceof Name?e.name:"string"==typeof e?stringToPDFString(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,L)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);return 0===t?bn:getRotationMatrix(t,this.width,this.height)}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const n=0===t||180===t?`0 0 ${this.width} ${this.height} re`:`0 0 ${this.height} ${this.width} re`;let a="";this.backgroundColor&&(a=`${getPdfColor(this.backgroundColor,!0)} ${n} f `);if(this.borderColor){a+=`${this.borderStyle.width||1} w ${getPdfColor(this.borderColor,!1)} ${n} S `}return a}async getOperatorList(e,t,n,a){if(n&c&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas){const e=this._getOperatorListNoAppearance();e.separateForm=!0;return e}if(!this._hasText)return super.getOperatorList(e,t,n,a);const s=await this._getAppearance(e,t,n,a);if(this.appearance&&null===s)return super.getOperatorList(e,t,n,a);const r=new OperatorList;if(!this._defaultAppearance||null===s)return{opList:r,separateForm:!1,separateCanvas:!1};const i=!!(this.data.hasOwnCanvas&&n&o),l=[0,0,this.width,this.height],f=getTransformMatrix(this.data.rect,l,[1,0,0,1,0,0]),h=this._oc;void 0!==h&&r.addOp(Ct,["OC",h]);r.addOp(Dt,[this.data.id,this.data.rect,f,this.getRotationMatrix(a),i]);const u=new StringStream(s);await e.getOperatorList({stream:u,task:t,resources:this._fieldResources.mergedResources,operatorList:r});r.addOp(Mt,[]);void 0!==h&&r.addOp(It,[]);return{opList:r,separateForm:!1,separateCanvas:i}}_getMKDict(e){const t=new Dict(null);e&&t.set("R",e);t.setIfArray("BC",getPdfColorArray(this.borderColor));t.setIfArray("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}setValue(e,t,n,a){const{dict:s,ref:r}=function getParentToUpdate(e,t,n){const a=new RefSet,s=e,r={dict:null,ref:null};for(;e instanceof Dict&&!a.has(t);){a.put(t);if(e.has("T"))break;if(!((t=e.getRaw("Parent"))instanceof Ref))return r;e=n.fetch(t)}if(e instanceof Dict&&e!==s){r.dict=e;r.ref=t}return r}(e,this.ref,n);if(s){if(!a.has(r)){const e=s.clone();e.set("V",t);a.put(r,{data:e});return e}}else e.set("V",t);return null}async save(e,t,n,a){const s=n?.get(this.data.id),r=this._buildFlags(s?.noView,s?.noPrint);let i=s?.value,o=s?.rotation;if(i===this.data.fieldValue||void 0===i){if(!this._hasValueFromXFA&&void 0===o&&void 0===r)return;i||=this.data.fieldValue}if(void 0===o&&!this._hasValueFromXFA&&Array.isArray(i)&&Array.isArray(this.data.fieldValue)&&isArrayEqual(i,this.data.fieldValue)&&void 0===r)return;void 0===o&&(o=this.rotation);let l=null;if(!this._needAppearances){l=await this._getAppearance(e,t,f,n);if(null===l&&void 0===r)return}let c=!1;if(l?.needAppearances){c=!0;l=null}const{xref:h}=e,u=h.fetchIfRef(this.ref);if(!(u instanceof Dict))return;const m=new Dict(h);for(const[e,t]of u.getRawEntries())"AP"!==e&&m.set(e,t);if(void 0!==r){m.set("F",r);if(null===l&&!c){const e=u.getRaw("AP");e&&m.set("AP",e)}}const p={path:this.data.fieldName,value:i},d=this.setValue(m,Array.isArray(i)?i.map(stringToAsciiOrUTF16BE):stringToAsciiOrUTF16BE(i),h,a);this.amendSavedDict(n,d||m);const g=this._getMKDict(o);g&&m.set("MK",g);a.put(this.ref,{data:m,xfa:p,needAppearances:c});if(null!==l){const e=h.getNewTemporaryRef(),t=new Dict(h);m.set("AP",t);t.set("N",e);const s=this._getSaveFieldResources(h),r=new Dict(h);r.setIfName("Subtype","Form");r.set("Resources",s);const i=o%180==0?[0,0,this.width,this.height]:[0,0,this.height,this.width];r.set("BBox",i);const f=new StringStream(l,r),c=this.getRotationMatrix(n);c!==bn&&r.set("Matrix",c);a.put(e,{data:f,xfa:null,needAppearances:!1})}m.set("M",`D:${getModificationDate()}`)}async _getAppearance(e,t,n,a){if(this.data.password)return null;const r=a?.get(this.data.id);let i,o;if(r){i=r.formattedValue||r.value;o=r.rotation}if(void 0===o&&void 0===i&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const l=this.getBorderAndBackgroundAppearances(a);if(void 0===i){i=this.data.fieldValue;if(!i)return`/Tx BMC q ${l}Q EMC`}Array.isArray(i)&&1===i.length&&(i=i[0]);assert("string"==typeof i,"Expected `value` to be a string.");i=i.trimEnd();if(this.data.combo){const e=this.data.options.find(({exportValue:e})=>i===e);i=e?.displayValue||i}if(""===i)return`/Tx BMC q ${l}Q EMC`;void 0===o&&(o=this.rotation);let c,h=-1;if(this.data.multiLine){c=i.split(/\r\n?|\n/).map(e=>e.normalize("NFC"));h=c.length}else c=[i.replace(/\r\n?|\n/,"").normalize("NFC")];let{width:u,height:m}=this;90!==o&&270!==o||([u,m]=[m,u]);this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let p,d,g,b=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const w=[];let j=!1;for(const e of c){const t=b.encodeString(e);t.length>1&&(j=!0);w.push(t.join(""))}if(j&&n&f)return{needAppearances:!0};if(j&&this._isOffscreenCanvasSupported){const n=this.data.comb?"monospace":"sans-serif",a=new FakeUnicodeFont(e.xref,n),s=a.createFontResources(c.join("")),r=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const[t,n]of r.getRawEntries())e.set(t,n)}else this._fieldResources.mergedResources.set("Font",r);const o=a.fontName.name;b=await WidgetAnnotation._getFontData(e,t,{fontName:o,fontSize:0},s);for(let e=0,t=w.length;e2)return`/Tx BMC q ${l}BT `+p+` 1 0 0 1 ${numberToString(2)} ${numberToString(C)} Tm (${escapeString(w[0])}) Tj ET Q EMC`;return`/Tx BMC q ${l}BT `+p+` 1 0 0 1 0 0 Tm ${this._renderText(w[0],b,d,u,q,{shift:0},2,C)} ET Q EMC`}static async _getFontData(e,t,n,a){const s=new OperatorList,r={font:null,clone(){return this}},{fontName:i,fontSize:o}=n;await e.handleSetFont(a,[i&&Name.get(i),o],null,s,t,r,null);return r.font}_getTextWidth(e,t){return Math.sumPrecise(t.charsToGlyphs(e).map(e=>e.width))/1e3}_computeFontSize(e,t,n,a,s){let{fontSize:r}=this.data.defaultAppearanceData,i=1.35*(r||12),o=Math.round(e/i);if(!r){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===s){const s=this._getTextWidth(n,a);r=roundWithTwoDigits(Math.min(e/1.35,t/s));o=1}else{const l=n.split(/\r\n?|\n/),f=[];for(const e of l){const t=a.encodeString(e).join(""),n=a.charsToGlyphs(t),s=a.getCharPositions(t);f.push({line:t,glyphs:n,positions:s})}const isTooBig=n=>{let s=0;for(const r of f){s+=this._splitLine(null,a,n,t,r).length*n;if(s>e)return!0}return!1};o=Math.max(o,s);for(;;){i=e/o;r=roundWithTwoDigits(i/1.35);if(!isTooBig(r))break;o++}}const{fontName:l,fontColor:f}=this.data.defaultAppearanceData;this._defaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:n}){return`/${escapePDFName(t)} ${e} Tf ${getPdfColor(n,!0)}`}({fontSize:r,fontName:l,fontColor:f})}return[this._defaultAppearance,r,e/o]}_renderText(e,t,n,a,s,r,i,o){let l;if(1===s){l=(a-this._getTextWidth(e,t)*n)/2}else if(2===s){l=a-this._getTextWidth(e,t)*n-i}else l=i;const f=numberToString(l-r.shift);r.shift=l;return`${f} ${o=numberToString(o)} Td (${escapeString(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:n,acroFormResources:a}=this._fieldResources,s=this.data.defaultAppearanceData?.fontName;if(!s)return t||Dict.empty;for(const e of[t,n])if(e instanceof Dict){const t=e.get("Font");if(t instanceof Dict&&t.has(s))return e}if(a instanceof Dict){const n=a.get("Font");if(n instanceof Dict&&n.has(s)){const a=new Dict(e);a.set(s,n.getRaw(s));const r=new Dict(e);r.set("Font",a);return Dict.merge({xref:e,dictArray:[r,t],mergeSubDicts:!0})}}return t||Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t}=e;if(t.has("PMD")){this.flags|=E;this.data.hidden=!0;warn("Barcodes are not supported")}this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let n=getInheritableProperty({dict:t,key:"Q"});(!Number.isInteger(n)||n<0||n>2)&&(n=null);this.data.textAlignment=n;let a=getInheritableProperty({dict:t,key:"MaxLen"});(!Number.isInteger(a)||a<0)&&(a=0);this.data.maxLen=a;this.data.multiLine=this.hasFieldFlag(G);this.data.comb=this.hasFieldFlag(te)&&!this.data.multiLine&&!this.data.password&&!this.hasFieldFlag(Q)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(ee);const{actions:s}=this.data;if(!s)return;const r=/^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/;let i=!1;const o=s.get("Format"),l=s.get("Keystroke");(1===o?.length&&1===l?.length&&r.test(o[0])&&r.test(l[0])||0===o?.length&&1===l?.length&&r.test(l[0])||0===l?.length&&1===o?.length&&r.test(o[0]))&&(i=!0);const f=[];o&&f.push(...o);l&&f.push(...l);if(i){s.delete("Keystroke");s.set("Format",f)}for(const e of f){const t=e.match(r);if(!t)continue;const n="Date"===t[1];let a=t[2];const s=parseInt(a,10);isNaN(s)||Math.floor(Math.log10(s))+1!==t[2].length||(a=(n?Xi:Ki)[s]??a);this.data.datetimeFormat=a;if(!i)break;if(n){if(/HH|MM|ss|h/.test(a)){this.data.datetimeType="datetime-local";this.data.timeStep=/ss/.test(a)?1:60}else this.data.datetimeType="date";break}this.data.datetimeType="time";this.data.timeStep=/ss/.test(a)?1:60;break}}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,n,a,s,r,i,o,l){const f=s/this.data.maxLen,c=this.getBorderAndBackgroundAppearances(l),h=t.getCharPositions(n).map(([e,s])=>{const r=n.substring(e,s);return{glyph:r,width:this._getTextWidth(r,t)*a}});o&&h.reverse();const u=f*h.length;let m=0;1===i?m+=Math.floor((s-u)/(2*f))*f:2===i&&(m+=s-u);const p=[];let d=0;for(let e=0,t=h.length;ea){l.push(e.substring(u,n));u=n;m=d;f=-1;h=-1}else{m+=d;f=n;c=s;h=t}else if(m+d>a)if(-1!==f){l.push(e.substring(u,c));u=c;t=h+1;f=-1;m=0}else{l.push(e.substring(u,n));u=n;m=d}else m+=d}ut?`\\${t}`:"\\s+");new RegExp(`^\\s*${r}\\s*$`).test(this.data.fieldValue)&&(this.data.textContent=this.data.fieldValue.split("\n"))}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 ButtonWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.checkedAppearance=null;this.uncheckedAppearance=null;const t=this.hasFieldFlag($),n=this.hasFieldFlag(Y);this.data.checkBox=!t&&!n;this.data.radioButton=t&&!n;this.data.pushButton=n;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):warn("Invalid field flags for button widget annotation")}get _ownCanvasRequiresForms(){return this.data.checkBox||this.data.radioButton}#Ft(e,t,n,a,s,r){if(!r)return this._getOperatorListNoAppearance();const i=this.appearance,o=lookupMatrix(r.dict.getArray("Matrix"),bn);s&&r.dict.set("Matrix",this.getRotationMatrix(a));this.appearance=r;const l=super.getOperatorList(e,t,n,a);this.appearance=i;r.dict.set("Matrix",o);return l}async getOperatorList(e,t,n,a){if(this.data.pushButton)return super.getOperatorList(e,t,n,!1,a);if(n&o&&n&c&&(this.data.checkBox||this.data.radioButton)){const setCanvasName=(e,t)=>{const n=e.fnArray.indexOf(Dt);-1!==n&&e.argsArray[n].push(t)},s=await this.#Ft(e,t,n,a,null,this.checkedAppearance);setCanvasName(s.opList,"checked");const r=await this.#Ft(e,t,n,a,null,this.uncheckedAppearance);setCanvasName(r.opList,"unchecked");s.opList.addOpList(r.opList);s.separateForm||=r.separateForm;s.separateCanvas||=r.separateCanvas;return s}let s=null,r=null;if(a){const e=a.get(this.data.id);s=e?e.value:null;r=e?e.rotation:null}if(null===s&&this.appearance)return super.getOperatorList(e,t,n,a);s??=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue;return this.#Ft(e,t,n,a,r,s?this.checkedAppearance:this.uncheckedAppearance)}async save(e,t,n,a){this.data.checkBox?this._saveCheckbox(e,t,n,a):this.data.radioButton&&this._saveRadioButton(e,t,n,a)}async _saveCheckbox(e,t,n,a){if(!n)return;const s=n.get(this.data.id),r=this._buildFlags(s?.noView,s?.noPrint);let i=s?.rotation,o=s?.value;if(void 0===i&&void 0===r){if(void 0===o)return;if(this.data.fieldValue===this.data.exportValue===o)return}let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof Dict))return;l=l.clone();void 0===i&&(i=this.rotation);void 0===o&&(o=this.data.fieldValue===this.data.exportValue);const f={path:this.data.fieldName,value:o?this.data.exportValue:""},c=Name.get(o?this._onStateName:"Off");this.setValue(l,c,e.xref,a);l.set("AS",c);l.set("M",`D:${getModificationDate()}`);void 0!==r&&l.set("F",r);const h=this._getMKDict(i);h&&l.set("MK",h);a.put(this.ref,{data:l,xfa:f,needAppearances:!1})}async _saveRadioButton(e,t,n,a){if(!n)return;const s=n.get(this.data.id),r=this._buildFlags(s?.noView,s?.noPrint);let i=s?.rotation,o=s?.value;if(void 0===i&&void 0===r){if(void 0===o)return;if(this.data.fieldValue===this.data.buttonValue===o)return}let l=e.xref.fetchIfRef(this.ref);if(!(l instanceof Dict))return;l=l.clone();void 0===o&&(o=this.data.fieldValue===this.data.buttonValue);void 0===i&&(i=this.rotation);const f={path:this.data.fieldName,value:o?this.data.buttonValue:""},c=Name.get(o?this._onStateName:"Off");o&&this.setValue(l,c,e.xref,a);l.set("AS",c);l.set("M",`D:${getModificationDate()}`);void 0!==r&&l.set("F",r);const h=this._getMKDict(i);h&&l.set("MK",h);a.put(this.ref,{data:l,xfa:f,needAppearances:!1})}_getDefaultCheckedAppearance(e,t){const{width:n,height:a}=this,s=[0,0,n,a],r=.8*Math.min(n,a);let i,o;if("check"===t){i={width:.755*r,height:.705*r};o="3"}else if("disc"===t){i={width:.791*r,height:.705*r};o="l"}else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`);const l=`q BT /PdfJsZaDb ${r} Tf 0 g ${numberToString((n-i.width)/2)} ${numberToString((a-i.height)/2)} Td (${o}) Tj ET Q`,f=new Dict(e.xref);f.set("FormType",1);f.setIfName("Subtype","Form");f.setIfName("Type","XObject");f.set("BBox",s);f.set("Matrix",[1,0,0,1,0,0]);f.set("Length",l.length);const c=new Dict(e.xref),h=new Dict(e.xref);h.set("PdfJsZaDb",this.fallbackFontDict);c.set("Font",h);f.set("Resources",c);this.checkedAppearance=new StringStream(l,f);this._streams.push(this.checkedAppearance)}_getOnStateName(e){const t=e.get("AP");if(!(t instanceof Dict))return null;const n=t.get("N");if(!(n instanceof Dict))return null;for(const e of n.getKeys())if("Off"!==e)return e;return null}_getExportValueForOptIndex(e,t,n){if(Number.isInteger(e)&&e>=0&&e"Off"!==e);r.length=0;r.push("Off",e)}const i=r[1];this._onStateName=i;const o=getInheritableProperty({dict:e.dict,key:"Opt"}),l=this._getOptInfo(e.dict,i,o,e.xref);this.data.exportValue=this._getExportValue(i,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 f=n?.get(i);this.checkedAppearance=f instanceof BaseStream?f:null;const c=n?.get("Off");this.uncheckedAppearance=c instanceof BaseStream?c:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof Dict){this.parent=e.dict.getRaw("Parent");const n=t.get("V");n instanceof Name&&(this.data.fieldValue=this._decodeFormValue(n))}const n=e.dict.get("AP");if(!(n instanceof Dict))return;const a=n.get("N");if(!(a instanceof Dict))return;let s=null;for(const e of a.getKeys())if("Off"!==e){s=e;break}this._onStateName=s;const r=getInheritableProperty({dict:e.dict,key:"Opt"}),i=this._getOptInfo(e.dict,s,r,e.xref);this.data.buttonValue=this._getExportValue(s,i,e.xref);this.data.fieldValue=this._getExportValue(this.data.fieldValue,i,e.xref);this.data.defaultFieldValue=this._getExportValue(this.data.defaultFieldValue,i,e.xref);const o=a.get(s);this.checkedAppearance=o instanceof BaseStream?o:null;const l=a.get("Off");this.uncheckedAppearance=l instanceof BaseStream?l:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:n}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:n.baseUrl,docAttachments:n.attachments})}else warn("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new Dict;e.setIfName("BaseFont","ZapfDingbats");e.setIfName("Type","FallbackType");e.setIfName("Subtype","FallbackType");e.setIfName("Encoding","ZapfDingbatsEncoding");return shadow(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:n}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const a=getInheritableProperty({dict:t,key:"Opt"});if(Array.isArray(a))for(let e=0,t=a.length;e=0&&t0&&(this.data.options=this.data.fieldValue.map(e=>({exportValue:e,displayValue:e})));this.data.combo=this.hasFieldFlag(J);this.data.multiSelect=this.hasFieldFlag(Z);this._hasText=!0}getFieldObject(){const e=this.data.combo?"combobox":"listbox",t=this.data.fieldValue.length>0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let n=e?.get(this.data.id)?.value;Array.isArray(n)||(n=[n]);const a=[],{options:s}=this.data;for(let e=0,t=0,r=s.length;en){n=a;t=e}}[u,m]=this._computeFontSize(e,o-4,t,h,-1)}const p=1.35*m,d=(p-m)/2,g=Math.floor(l/p);let b=0;if(c.length>0){const e=Math.min(...c);b=MathClamp(Math.max(...c)-g+1,0,e)}const w=Math.min(b+g+1,f),j=["/Tx BMC q",`1 1 ${o} ${l} re W n`];if(c.length){j.push("0.600006 0.756866 0.854904 rg");for(const e of c)b<=e&&ee.trimEnd());const{coords:e,bbox:t,matrix:n}=FakeUnicodeFont.getFirstPositionInfo(this.rectangle,this.rotation,a);this.data.textPosition=this._transformPoint(e,t,n)}if(this._isOffscreenCanvasSupported){const s=e.dict.get("CA"),r=new FakeUnicodeFont(n,"sans-serif");this.appearance=r.createAppearance(this._contents.str,this.rectangle,this.rotation,a,t,s);this._streams.push(this.appearance)}else warn("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.")}}get hasTextContent(){return this._hasAppearance}static createNewDict(e,t,{apRef:n,ap:a}){const{color:s,date:r,fontSize:i,oldAnnotation:o,rect:l,rotation:f,user:c,value:h}=e,u=o||new Dict(t);u.setIfNotExists("Type",Name.get("Annot"));u.setIfNotExists("Subtype",Name.get("FreeText"));u.set(o?"M":"CreationDate",`D:${getModificationDate(r)}`);o&&u.delete("RC");u.setIfArray("Rect",l);const m=`/Helv ${i} Tf ${getPdfColor(s,!0)}`;u.set("DA",m);u.setIfDefined("Contents",stringToAsciiOrUTF16BE(h));u.setIfNotExists("F",4);u.setIfNotExists("Border",[0,0,0]);u.setIfNumber("Rotate",f);u.setIfDefined("T",stringToAsciiOrUTF16BE(c));if(n||a){const e=new Dict(t);u.set("AP",e);e.set("N",n||a)}return u}static async createNewAppearanceStream(e,t,n){const{baseFontRef:a,evaluator:s,task:r}=n,{color:i,fontSize:o,rect:l,rotation:f,value:c}=e;if(!i)return null;const h=new Dict(t),u=new Dict(t);if(a)u.set("Helv",a);else{const e=new Dict(t);e.setIfName("BaseFont","Helvetica");e.setIfName("Type","Font");e.setIfName("Subtype","Type1");e.setIfName("Encoding","WinAnsiEncoding");u.set("Helv",e)}h.set("Font",u);const m=await WidgetAnnotation._getFontData(s,r,{fontName:"Helv",fontSize:o},h),[p,d,g,b]=l;let w=g-p,j=b-d;f%180!=0&&([w,j]=[j,w]);const k=c.split("\n"),y=o/1e3;let q=-1/0;const v=[];for(let e of k){const t=m.encodeString(e);if(t.length>1)return null;e=t.join("");v.push(e);let n=0;const a=m.charsToGlyphs(e);for(const e of a)n+=e.width*y;q=Math.max(q,n)}const S=q>w?w/q:1;let x=1;const C=1.35*o,F=1*o,T=C*k.length;T>j&&(x=j/T);const R=o*Math.min(S,x);let O,H,D;switch(f){case 0:D=[1,0,0,1];H=[l[0],l[1],w,j];O=[l[0],l[3]-F];break;case 90:D=[0,1,-1,0];H=[l[1],-l[2],w,j];O=[l[1],-l[0]-F];break;case 180:D=[-1,0,0,-1];H=[-l[2],-l[3],w,j];O=[-l[2],-l[1]-F];break;case 270:D=[0,-1,1,0];H=[-l[3],l[0],w,j];O=[-l[3],l[2]-F]}const M=["q",`${D.join(" ")} 0 0 cm`,`${H.join(" ")} re W n`,"BT",`${getPdfColor(i,!0)}`,`0 Tc /Helv ${numberToString(R)} Tf`];M.push(`${O.join(" ")} Td (${escapeString(v[0])}) Tj`);const N=numberToString(C);for(let e=1,t=v.length;e{e.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S");return[t[0]-o,t[7]-o,t[2]+o,t[3]+o]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:n}=e;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),a=t.get("CA"),s=getPdfColorArray(getRgbColor(t.getArray("IC"),null)),r=s?a:null;if(0===this.borderStyle.width&&!s)return;this._setDefaultAppearance({xref:n,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:s,strokeAlpha:a,fillAlpha:r,pointsCallback:(e,t)=>{const n=t[4]+this.borderStyle.width/2,a=t[5]+this.borderStyle.width/2,r=t[6]-t[4]-this.borderStyle.width,i=t[3]-t[7]-this.borderStyle.width;e.push(`${n} ${a} ${r} ${i} re`);s?e.push("B"):e.push("S");return[t[0],t[7],t[2],t[3]]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:n}=e;if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),a=t.get("CA"),s=getPdfColorArray(getRgbColor(t.getArray("IC"),null)),r=s?a:null;if(0===this.borderStyle.width&&!s)return;const i=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:n,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:s,strokeAlpha:a,fillAlpha:r,pointsCallback:(e,t)=>{const n=t[0]+this.borderStyle.width/2,a=t[1]-this.borderStyle.width/2,r=t[6]-this.borderStyle.width/2,o=t[7]+this.borderStyle.width/2,l=n+(r-n)/2,f=a+(o-a)/2,c=(r-n)/2*i,h=(o-a)/2*i;e.push(`${l} ${o} m`,`${l+c} ${o} ${r} ${f+h} ${r} ${f} c`,`${r} ${f-h} ${l+c} ${a} ${l} ${a} c`,`${l-c} ${a} ${n} ${f-h} ${n} ${f} c`,`${n} ${f+h} ${l-c} ${o} ${l} ${o} c`,"h");s?e.push("B"):e.push("S");return[t[0],t[7],t[2],t[3]]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:n,xref:a}=e;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.vertices=null;if(!(this instanceof PolygonAnnotation)){this.setLineEndings(n.getArray("LE"));this.data.lineEndings=this.lineEndings}const s=n.getArray("Vertices");if(!isNumberArray(s,null))return;const r=this.data.vertices=Float32Array.from(s);if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),s=n.get("CA");let i,o=getRgbColor(n.getArray("IC"),null);o&&=getPdfColorArray(o);i=o?this.color?o.every((t,n)=>t===e[n])?"f":"B":"f":"S";const l=this.borderStyle.width||1,f=2*l,c=t.slice();for(let e=0,t=r.length;e{for(let t=0,n=r.length;t{for(const t of this.data.inkLists){for(let n=0,a=t.length;n0){const e=new Dict(t);p.set("BS",e);e.set("W",u)}p.setIfArray("C",getPdfColorArray(r));p.setIfNumber("CA",o);if(a||n){const e=new Dict(t);p.set("AP",e);e.set("N",n||a)}return p}static async createNewAppearanceStream(e,t,n){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,t,n);const{color:a,rect:s,paths:r,thickness:i,opacity:o}=e;if(!a)return null;const l=[`${i} w 1 J 1 j`,`${getPdfColor(a,!1)}`];1!==o&&l.push("/R0 gs");for(const e of r.lines)writeLineToCurveToAppearance(e,l,!0);l.push("S");const f=l.join("\n"),c=new Dict(t);c.set("FormType",1);c.setIfName("Subtype","Form");c.setIfName("Type","XObject");c.set("BBox",s);c.set("Length",f.length);if(1!==o){const e=new Dict(t),n=new Dict(t),a=new Dict(t);a.set("CA",o);a.setIfName("Type","ExtGState");n.set("R0",a);e.set("ExtGState",n);c.set("Resources",e)}return new StringStream(f,c)}static async createNewAppearanceStreamForHighlight(e,t,n){const{color:a,rect:s,outlines:{outline:r},opacity:i}=e;if(!a)return null;const o=[`${getPdfColor(a,!0)}`,"/R0 gs"];writeLineToCurveToAppearance(r,o);o.push("h f");const l=o.join("\n"),f=new Dict(t);f.set("FormType",1);f.setIfName("Subtype","Form");f.setIfName("Type","XObject");f.set("BBox",s);f.set("Length",l.length);const c=new Dict(t),h=new Dict(t);c.set("ExtGState",h);f.set("Resources",c);const u=new Dict(t);h.set("R0",u);u.setIfName("BM","Multiply");if(1!==i){u.set("ca",i);u.setIfName("Type","ExtGState")}return new StringStream(l,f)}}class HighlightAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:n}=e;this.data.isEditable=!this.data.noHTML;this.data.noHTML=!1;this.data.opacity=t.get("CA")||1;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=getPdfColorArray(this.color,[1,1,0]),a=t.get("CA");this._setDefaultAppearance({xref:n,fillColor:e,blendMode:"Multiply",fillAlpha:a,pointsCallback:(e,t)=>{e.push(`${t[0]} ${t[1]} m`,`${t[2]} ${t[3]} l`,`${t[6]} ${t[7]} l`,`${t[4]} ${t[5]} l`,"f");return[t[0],t[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}static createNewDict(e,t,{apRef:n,ap:a}){const{color:s,date:r,oldAnnotation:i,opacity:o,rect:l,rotation:f,user:c,quadPoints:h}=e,u=i||new Dict(t);u.setIfNotExists("Type",Name.get("Annot"));u.setIfNotExists("Subtype",Name.get("Highlight"));u.set(i?"M":"CreationDate",`D:${getModificationDate(r)}`);u.setIfArray("Rect",l);u.setIfNotExists("F",4);u.setIfNotExists("Border",[0,0,0]);u.setIfNumber("Rotate",f);u.setIfArray("QuadPoints",h);u.setIfArray("C",getPdfColorArray(s));u.setIfNumber("CA",o);u.setIfDefined("T",stringToAsciiOrUTF16BE(c));if(n||a){const e=new Dict(t);u.set("AP",e);e.set("N",n||a)}return u}static async createNewAppearanceStream(e,t,n){const{color:a,rect:s,outlines:r,opacity:i}=e;if(!a)return null;const o=[`${getPdfColor(a,!0)}`,"/R0 gs"],l=[];for(const e of r){l.length=0;l.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,n=e.length;t{e.push(`${t[4]} ${t[5]+1.3} m`,`${t[6]} ${t[7]+1.3} l`,"S");return[t[0],t[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:n}=e;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),a=t.get("CA");this._setDefaultAppearance({xref:n,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{const n=(t[1]-t[5])/6;let a=n,s=t[4];const r=t[5],i=t[6];e.push(`${s} ${r+a} m`);do{s+=2;a=0===a?n:0;e.push(`${s} ${r+a} l`)}while(s{e.push((t[0]+t[4])/2+" "+(t[1]+t[5])/2+" m",(t[2]+t[6])/2+" "+(t[3]+t[7])/2+" l","S");return[t[0],t[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class StampAnnotation extends MarkupAnnotation{#Tt=null;constructor(e){super(e);this.data.hasOwnCanvas=this.data.noRotate;this.data.isEditable=!this.data.noHTML;this.data.noHTML=!1}mustBeViewedWhenEditing(e,t=null){if(e){if(!this.data.isEditable)return!0;this.#Tt??=this.data.hasOwnCanvas;this.data.hasOwnCanvas=!0;return!0}if(null!==this.#Tt){this.data.hasOwnCanvas=this.#Tt;this.#Tt=null}return!t?.has(this.data.id)}static createNewDict(e,t,{apRef:n,ap:a}){const{date:s,oldAnnotation:r,rect:i,rotation:o,user:l}=e,f=r||new Dict(t);f.setIfNotExists("Type",Name.get("Annot"));f.setIfNotExists("Subtype",Name.get("Stamp"));f.set(r?"M":"CreationDate",`D:${getModificationDate(s)}`);f.setIfArray("Rect",i);f.setIfNotExists("F",4);f.setIfNotExists("Border",[0,0,0]);f.setIfNumber("Rotate",o);f.setIfDefined("T",stringToAsciiOrUTF16BE(l));if(n||a){const e=new Dict(t);f.set("AP",e);e.set("N",n||a)}return f}static async#Rt(e,t){const{areContours:n,color:a,rect:s,lines:r,thickness:i}=e;if(!a)return null;const o=[`${i} w 1 J 1 j`,`${getPdfColor(a,n)}`];for(const e of r)writeLineToCurveToAppearance(e,o,!0);o.push(n?"F":"S");const l=o.join("\n"),f=new Dict(t);f.set("FormType",1);f.setIfName("Subtype","Form");f.setIfName("Type","XObject");f.set("BBox",s);f.set("Length",l.length);return new StringStream(l,f)}static async createNewAppearanceStream(e,t,n){if(e.oldAnnotation)return null;if(e.isSignature)return this.#Rt(e,t);const{rotation:a}=e,{imageRef:s,width:r,height:i}=n.image,o=new Dict(t),l=new Dict(t);o.set("XObject",l);l.set("Im0",s);const f=`q ${r} 0 0 ${i} 0 0 cm /Im0 Do Q`,c=new Dict(t);c.set("FormType",1);c.setIfName("Subtype","Form");c.setIfName("Type","XObject");c.set("BBox",[0,0,r,i]);c.set("Resources",o);if(a){const e=getRotationMatrix(a,r,i);c.set("Matrix",e)}return new StringStream(f,c)}}class FileAttachmentAnnotation extends MarkupAnnotation{constructor(e){super(e);const{annotationGlobals:t,dict:n}=e,a=n.get("FS");this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.fileId=this._getAttachmentId(a,n.getRaw("FS"),t);this.data.file=new FileSpec(a).serializable;const s=n.get("Name");this.data.name=s instanceof Name?stringToPDFString(s.name):"PushPin";const r=n.get("ca");this.data.fillAlpha="number"==typeof r&&r>=0&&r<=1?r:null}}class MediaAnnotation extends Annotation{static#Ot=/^(?:video|audio)\//;constructor(e){super(e);this.data.noHTML=!0}_setMediaData({assetRef:e,assetDict:t,filename:n,contentType:a,wrapSound:s=!1},r){this.data.noHTML=!1;this.data.richMedia={fileId:this._getAttachmentId(t,e,r,s),filename:n,contentType:a}}static _getContentType(e,t,n=null){if("string"==typeof n&&MediaAnnotation.#Ot.test(n))return n;const a=FileSpec.pickPlatformItem(e.get("EF")),s=a instanceof BaseStream?a.dict?.get("Subtype"):null;if(s instanceof Name&&MediaAnnotation.#Ot.test(s.name))return s.name;const r=t.split(".").at(-1)?.toLowerCase();switch(r){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 RichMediaAnnotation extends MediaAnnotation{constructor(e){super(e);const{dict:t,xref:n,annotationGlobals:a}=e,s=t.get("RichMediaContent");if(!(s instanceof Dict))return;const r=RichMediaAnnotation.#Ht(s,n);r?this._setMediaData(r,a):warn("RichMedia annotation has no playable asset.")}static#Ht(e,t){const n=e.get("Configurations");if(!Array.isArray(n))return null;for(const e of n){const n=t.fetchIfRef(e);if(!(n instanceof Dict))continue;const a=n.get("Instances");if(Array.isArray(a))for(const e of a){const n=t.fetchIfRef(e);if(!(n instanceof Dict))continue;if(isName(n.get("Subtype"),"Flash"))continue;const a=n.getRaw("Asset"),s=t.fetchIfRef(a);if(!(s instanceof Dict))continue;if(!FileSpec.hasEmbeddedFile(s))continue;const{filename:r}=new FileSpec(s).serializable,i=MediaAnnotation._getContentType(s,r);if(i)return{assetRef:a instanceof Ref?a:null,assetDict:s,filename:r,contentType:i}}}return null}}class ScreenAnnotation extends MediaAnnotation{constructor(e){super(e);const{dict:t,xref:n,annotationGlobals:a}=e,s=ScreenAnnotation.#Ht(t,n);s&&this._setMediaData(s,a)}static#Ht(e,t){for(const n of this.#Bt(e)){const e=this.#Dt(n.get("R"),t,new RefSet);if(e)return e}return null}static*#Bt(e){const t=e.get("A");t instanceof Dict&&isName(t.get("S"),"Rendition")&&this.#Mt(t)&&(yield t);const n=e.get("AA");if(n instanceof Dict)for(const[,e]of n)e instanceof Dict&&isName(e.get("S"),"Rendition")&&this.#Mt(e)&&(yield e)}static#Mt(e){const t=e.get("OP");return void 0===t||t===D||t===M}static#Dt(e,t,n){if(!(e instanceof Dict))return null;const a=e.get("S");if(isName(a,"MR"))return this.#Nt(e.get("C"),t);if(isName(a,"SR")){const a=e.get("R");if(Array.isArray(a))for(const e of a){if(e instanceof Ref){if(n.has(e))continue;n.put(e)}const a=this.#Dt(t.fetchIfRef(e),t,n);if(a)return a}}return null}static#Nt(e,t){if(!(e instanceof Dict&&isName(e.get("S"),"MCD")))return null;const n=e.getRaw("D"),a=t.fetchIfRef(n),s=e.get("CT");let r,i,o="string"==typeof s?s:null;if(a instanceof BaseStream){r=a.dict;const t=e.get("N");i="string"==typeof t?stringToPDFString(t):"";if(!o){const e=a.dict.get("Subtype");e instanceof Name&&(o=e.name)}}else{if(!(a instanceof Dict))return null;if(!FileSpec.hasEmbeddedFile(a))return null;r=a;({filename:i}=new FileSpec(a).serializable)}const l=MediaAnnotation._getContentType(r,i,o);return l?{assetRef:n instanceof Ref?n:null,assetDict:r,filename:i,contentType:l}:null}}class SoundAnnotation extends MediaAnnotation{constructor(e){super(e);const{dict:t,xref:n,annotationGlobals:a}=e,s=t.getRaw("Sound");if(!(s instanceof Ref))return;let r;try{r=n.fetch(s)}catch(e){if(e instanceof MissingDataException)throw e;warn(`SoundAnnotation: "${e}".`);return}r instanceof BaseStream&&getSoundFormat(r.dict)&&this._setMediaData({assetRef:s,assetDict:r.dict,filename:"sound.wav",contentType:"audio/wav",wrapSound:!0},a)}}const xf={get r(){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]))},get k(){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]))}};function calculateMD5(e,t,n){let a=1732584193,s=-271733879,r=-1732584194,i=271733878;const o=n+72&-64,l=new Uint8Array(o);let f,c;for(f=0;f>5&255;l[f++]=n>>13&255;l[f++]=n>>21&255;l[f++]=n>>>29&255;f+=3;const u=new Int32Array(16),{k:m,r:p}=xf;for(f=0;f>>32-r)|0;n=a}a=a+n|0;s=s+o|0;r=r+h|0;i=i+d|0}return new Uint8Array([255&a,a>>8&255,a>>16&255,a>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&r,r>>8&255,r>>16&255,r>>>24&255,255&i,i>>8&255,i>>16&255,i>>>24&255])}function decodeString(e){try{return stringToUTF8String(e)}catch(t){warn(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends SimpleXMLParser{node=null;onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}class DatasetReader{constructor(e){if(e.datasets)this.node=new SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode(parseXFAPath(e),0);if(!t)return"";const n=t.firstChild;return"value"===n?.nodeName?t.children.map(e=>decodeString(e.textContent)):decodeString(t.textContent)}}class SingleIntersector{#Pt;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;#Et=null;#_t=[];#zt=[];#Lt=-1;#Ut=!1;constructor(e){this.#Pt=e;const t=e.data.quadPoints;if(t){for(let e=0,n=t.length;e8&&(this.#Et=t)}else[this.minX,this.minY,this.maxX,this.maxY]=e.data.rect}#Wt(e,t){if(this.minX>=e||this.maxX<=e||this.minY>=t||this.maxY<=t)return!1;const n=this.#Et;if(!n)return!0;if(this.#Lt>=0){const a=this.#Lt;if(!(n[a]>=e||n[a+2]<=e||n[a+5]>=t||n[a+1]<=t))return!0;this.#Lt=-1}for(let a=0,s=n.length;a=e||n[a+2]<=e||n[a+5]>=t||n[a+1]<=t)){this.#Lt=a;return!0}return!1}addGlyph(e,t,n){if(!this.#Wt(e,t)){this.disableExtraChars();return!1}if(this.#zt.length>0){this.#_t.push(this.#zt.join(""));this.#zt.length=0}this.#_t.push(n);this.#Ut=!0;return!0}addExtraChar(e){this.#Ut&&this.#zt.push(e)}disableExtraChars(){if(this.#Ut){this.#Ut=!1;this.#zt.length=0}}setText(){this.#Pt.data.overlaidText=this.#_t.join("")}}const Cf=64;class Intersector{#Xt=[];#Kt=[];#Gt;#Vt;#$t;#Yt;#Jt;#Qt;constructor(e){let t=1/0,n=1/0,a=-1/0,s=-1/0;const r=this.#Xt;for(const i of e){if(!i.data.quadPoints&&!i.data.rect)continue;const e=new SingleIntersector(i);r.push(e);t=Math.min(t,e.minX);n=Math.min(n,e.minY);a=Math.max(a,e.maxX);s=Math.max(s,e.maxY)}this.#Gt=t;this.#$t=n;this.#Vt=a;this.#Yt=s;this.#Jt=63/(a-t);this.#Qt=63/(s-n);for(const e of r){const t=this.#Zt(e.minX,e.minY),n=this.#Zt(e.maxX,e.maxY),a=(n-t)%Cf,s=Math.floor((n-t)/Cf);for(let n=t;n<=t+s*Cf;n+=Cf)for(let t=0;t<=a;t++)(this.#Kt[n+t]??=[]).push(e)}}#Zt(e,t){return Math.floor((e-this.#Gt)*this.#Jt)+Math.floor((t-this.#$t)*this.#Qt)*Cf}addGlyph(e,t,n,a){const s=e[4]+t/2,r=e[5]+n/2;if(sthis.#Vt||r>this.#Yt)return;const i=this.#Kt[this.#Zt(s,r)];if(i)for(const e of i)e.addGlyph(s,r,a)}addExtraChar(e){for(const t of this.#Xt)t.addExtraChar(e)}setText(){for(const e of this.#Xt)e.setText()}}class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}shiftRight(e){this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}rotateRight(e){let t,n;if(32&e){n=this.low;t=this.high}else{t=this.low;n=this.high}e&=31;this.low=t>>>e|n<<32-e;this.high=n>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let n=(this.high>>>0)+(e.high>>>0);t>4294967295&&(n+=1);this.low=0|t;this.high=0|n}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const If={get k(){return shadow(this,"k",[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)])}};function ch(e,t,n,a,s){e.assign(t);e.and(n);s.assign(t);s.not();s.and(a);e.xor(s)}function maj(e,t,n,a,s){e.assign(t);e.and(n);s.assign(t);s.and(a);e.xor(s);s.assign(n);s.and(a);e.xor(s)}function sigma(e,t,n){e.assign(t);e.rotateRight(28);n.assign(t);n.rotateRight(34);e.xor(n);n.assign(t);n.rotateRight(39);e.xor(n)}function sigmaPrime(e,t,n){e.assign(t);e.rotateRight(14);n.assign(t);n.rotateRight(18);e.xor(n);n.assign(t);n.rotateRight(41);e.xor(n)}function littleSigma(e,t,n){e.assign(t);e.rotateRight(1);n.assign(t);n.rotateRight(8);e.xor(n);n.assign(t);n.shiftRight(7);e.xor(n)}function littleSigmaPrime(e,t,n){e.assign(t);e.rotateRight(19);n.assign(t);n.rotateRight(61);e.xor(n);n.assign(t);n.shiftRight(6);e.xor(n)}function calculateSHA512(e,t,n,a=!1){let s,r,i,o,l,f,c,h;if(a){s=new Word64(3418070365,3238371032);r=new Word64(1654270250,914150663);i=new Word64(2438529370,812702999);o=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);f=new Word64(2394180231,1750603025);c=new Word64(3675008525,1694076839);h=new Word64(1203062813,3204075428)}else{s=new Word64(1779033703,4089235720);r=new Word64(3144134277,2227873595);i=new Word64(1013904242,4271175723);o=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);f=new Word64(2600822924,725511199);c=new Word64(528734635,4215389547);h=new Word64(1541459225,327033209)}const u=128*Math.ceil((n+17)/128),m=new Uint8Array(u);let p,d;for(p=0;p>>29&255;m[p++]=n>>21&255;m[p++]=n>>13&255;m[p++]=n>>5&255;m[p++]=n<<3&255;const b=new Array(80);for(p=0;p<80;p++)b[p]=new Word64(0,0);const{k:w}=If;let j=new Word64(0,0),k=new Word64(0,0),y=new Word64(0,0),q=new Word64(0,0),v=new Word64(0,0),S=new Word64(0,0),x=new Word64(0,0),C=new Word64(0,0);const F=new Word64(0,0),T=new Word64(0,0),R=new Word64(0,0),O=new Word64(0,0);let H,D;for(p=0;p>>t|e<<32-t}function calculate_sha256_ch(e,t,n){return e&t^~e&n}function calculate_sha256_maj(e,t,n){return e&t^e&n^t&n}function calculate_sha256_sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function calculate_sha256_sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function calculate_sha256_littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}function calculate_sha256_littleSigmaPrime(e){return rotr(e,17)^rotr(e,19)^e>>>10}function calculateSHA256(e,t,n){let a=1779033703,s=3144134277,r=1013904242,i=2773480762,o=1359893119,l=2600822924,f=528734635,c=1541459225;const h=64*Math.ceil((n+9)/64),u=new Uint8Array(h);let m,p;for(m=0;m>>29&255;u[m++]=n>>21&255;u[m++]=n>>13&255;u[m++]=n>>5&255;u[m++]=n<<3&255;const g=new Uint32Array(64),{k:b}=Ff;for(m=0;m>24&255,a>>16&255,a>>8&255,255&a,s>>24&255,s>>16&255,s>>8&255,255&s,r>>24&255,r>>16&255,r>>8&255,255&r,i>>24&255,i>>16&255,i>>8&255,255&i,o>>24&255,o>>16&255,o>>8&255,255&o,l>>24&255,l>>16&255,l>>8&255,255&l,f>>24&255,f>>16&255,f>>8&255,255&f,c>>24&255,c>>16&255,c>>8&255,255&c])}class DecryptStream extends DecodeStream{#en=null;constructor(e,t,n){super(t);this.stream=e;this.dict=e.dict;this.decrypt=n}readBlock(){let e=this.#en??this.stream.getBytes(512);if(!e.length){this.eof=!0;return}this.#en=this.stream.getBytes(512);const t=this.#en.length>0;e=(0,this.decrypt)(e,!t);const n=this.bufferLength,a=n+e.length;this.ensureBuffer(a).set(e,n);this.bufferLength=a}getOriginalStream(){return this}}const Tf=new Set([160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8239,8287,12288]),Rf=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]);class ARCFourCipher{a=0;b=0;constructor(e){const t=new Uint8Array(256),n=e.length;for(let e=0;e<256;++e)t[e]=e;for(let a=0,s=0;a<256;++a){const r=t[a];s=s+r+e[a%n]&255;t[a]=t[s];t[s]=r}this.s=t}encryptBlock(e){let t=this.a,n=this.b;const a=this.s,s=e.length,r=new Uint8Array(s);for(let i=0;it<128?t<<1:t<<1^27);constructor(){this.buffer=new Uint8Array(16);this.bufferPosition=0}_expandKey(e){unreachable("Cannot call `_expandKey` on the base class")}_decrypt(e,t){let n,a,s;const r=new Uint8Array(16);r.set(e);for(let e=0,n=this._keySize;e<16;++e,++n)r[e]^=t[n];for(let e=this._cyclesOfRepetition-1;e>=1;--e){n=r[13];r[13]=r[9];r[9]=r[5];r[5]=r[1];r[1]=n;n=r[14];a=r[10];r[14]=r[6];r[10]=r[2];r[6]=n;r[2]=a;n=r[15];a=r[11];s=r[7];r[15]=r[3];r[11]=n;r[7]=a;r[3]=s;for(let e=0;e<16;++e)r[e]=this._inv_s[r[e]];for(let n=0,a=16*e;n<16;++n,++a)r[n]^=t[a];for(let e=0;e<16;e+=4){const t=this._mix[r[e]],a=this._mix[r[e+1]],s=this._mix[r[e+2]],i=this._mix[r[e+3]];n=t^a>>>8^a<<24^s>>>16^s<<16^i>>>24^i<<8;r[e]=n>>>24&255;r[e+1]=n>>16&255;r[e+2]=n>>8&255;r[e+3]=255&n}}n=r[13];r[13]=r[9];r[9]=r[5];r[5]=r[1];r[1]=n;n=r[14];a=r[10];r[14]=r[6];r[10]=r[2];r[6]=n;r[2]=a;n=r[15];a=r[11];s=r[7];r[15]=r[3];r[11]=n;r[7]=a;r[3]=s;for(let e=0;e<16;++e){r[e]=this._inv_s[r[e]];r[e]^=t[e]}return r}_encrypt(e,t){const n=this._s;let a,s,r;const i=new Uint8Array(16);i.set(e);for(let e=0;e<16;++e)i[e]^=t[e];for(let e=1;e=a;--n)if(e[n]!==t){t=0;break}o-=t;r[r.length-1]=e.subarray(0,16-t)}}const l=new Uint8Array(o);for(let e=0,t=0,n=r.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){n[e]=a^=n[e-32];e++;n[e]=s^=n[e-32];e++;n[e]=r^=n[e-32];e++;n[e]=i^=n[e-32];e++}}return n}}class PDFBase{_hash(e,t,n){unreachable("Abstract method `_hash` called")}checkOwnerPassword(e,t,n,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(n,e.length+t.length);return isArrayEqual(this._hash(e,s,n),a)}checkUserPassword(e,t,n){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);return isArrayEqual(this._hash(e,a,[]),n)}getOwnerKey(e,t,n,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(n,e.length+t.length);const r=this._hash(e,s,n);return new AES256Cipher(r).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,n){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const s=this._hash(e,a,[]);return new AES256Cipher(s).decryptBlock(n,!1,new Uint8Array(16))}}class PDF17 extends PDFBase{_hash(e,t,n){return calculateSHA256(t,0,t.length)}}class PDF20 extends PDFBase{_hash(e,t,n){let a=calculateSHA256(t,0,t.length).subarray(0,32),s=[0],r=0;for(;r<64||s.at(-1)>r-32;){const t=e.length+a.length+n.length,i=new Uint8Array(t);let o=0;i.set(e,o);o+=e.length;i.set(a,o);o+=a.length;i.set(n,o);const l=new Uint8Array(64*t);for(let e=0,n=0;e<64;e++,n+=t)l.set(i,n);s=new AES128Cipher(a.subarray(0,16)).encrypt(l,a.subarray(16,32));const f=Math.sumPrecise(s.slice(0,16))%3;0===f?a=calculateSHA256(s,0,s.length):1===f?a=calculateSHA384(s,0,s.length):2===f&&(a=calculateSHA512(s,0,s.length));r++}return a.subarray(0,32)}}class CipherTransform{#tn=new Map;embeddedFilterName=null;constructor(e,t=null,n=null){this.resolveCipher=e;this.streamFilterName=n;this.stringFilterName=t}#nn(e=null){const t=e instanceof Name?e.name:"__default__";return this.#tn.getOrInsertComputed(t,()=>this.resolveCipher(e))}createStream(e,t,n=null){const a=this.embeddedFilterName&&isDict(e.dict,"EmbeddedFile")?this.embeddedFilterName:this.streamFilterName,s=new(this.#nn(n||a));return new DecryptStream(e,t,function cipherTransformDecryptStream(e,t){return s.decryptBlock(e,t)})}decryptString(e){const t=new(this.#nn(this.stringFilterName));let n=stringToBytes(e);n=t.decryptBlock(n,!0);return bytesToString(n)}encryptString(e){const t=new(this.#nn(this.stringFilterName));if(t instanceof AESBaseCipher){const n=16-e.length%16;e+=String.fromCharCode(n).repeat(n);const a=new Uint8Array(16);crypto.getRandomValues(a);let s=stringToBytes(e);s=t.encrypt(s,a);const r=new Uint8Array(16+s.length);r.set(a);r.set(s,16);return bytesToString(r)}let n=stringToBytes(e);n=t.encrypt(n);return bytesToString(n)}}function utf8PasswordToBytes(e){try{e=utf8StringToString(e)}catch{warn("CipherTransformFactory: Unable to convert UTF8 encoded password.")}return stringToBytes(e)}class CipherTransformFactory{#an;static get _defaultPasswordBytes(){return shadow(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]))}#sn(e,t,n,a,s,r,i,o,l,f,c,h){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const u=6===e?new PDF20:new PDF17;return u.checkUserPassword(t,o,i)?u.getUserKey(t,l,c):t.length&&u.checkOwnerPassword(t,a,r,n)?u.getOwnerKey(t,s,r,f):null}#rn(e,t,n,a,s,r,i,o){const l=40+n.length+e.length,f=new Uint8Array(l);let c,h,u=0;if(t){h=Math.min(32,t.length);for(;u>8&255;f[u++]=s>>16&255;f[u++]=s>>>24&255;f.set(e,u);u+=e.length;if(r>=4&&!o){f.fill(255,u,u+4);u+=4}let m=calculateMD5(f,0,u);const p=i>>3;if(r>=3)for(c=0;c<50;++c)m=calculateMD5(m,0,p);const d=m.subarray(0,p);let g,b;if(r>=3){u=0;f.set(CipherTransformFactory._defaultPasswordBytes,u);u+=32;f.set(e,u);u+=e.length;g=new ARCFourCipher(d);b=g.encryptBlock(calculateMD5(f,0,u));h=d.length;const t=new Uint8Array(h);for(c=1;c<=19;++c){for(let e=0;ea[t]===e)?d:null}#in(e,t,n,a){const s=new Uint8Array(32);let r=0;const i=Math.min(32,e.length);for(;r>3;if(n>=3)for(o=0;o<50;++o)l=calculateMD5(l,0,l.length);let c,h;if(n>=3){h=t;const e=new Uint8Array(f);for(o=19;o>=0;o--){for(let t=0;t>8&255;r[i++]=e>>16&255;r[i++]=255&t;r[i++]=t>>8&255;if(a){r[i++]=115;r[i++]=65;r[i++]=108;r[i++]=84}return calculateMD5(r,0,i).subarray(0,Math.min(s+5,16))}constructor(e,t,n){const a=e.get("Filter");if(!isName(a,"Standard"))throw new FormatError("unknown encryption method");this.filterName=a.name;this.dict=e;this.#an=t;const s=e.get("V");if(!Number.isInteger(s)||1!==s&&2!==s&&4!==s&&5!==s)throw new FormatError("unsupported encryption algorithm");this.algorithm=s;let r=e.get("Length");if(!r)if(s<=3)r=40;else{const t=e.get("CF"),n=e.get("StmF");if(t instanceof Dict&&n instanceof Name){t.suppressEncryption=!0;const e=t.get(n.name);r=e?.get("Length")||128;r<40&&(r<<=3)}}if(!Number.isInteger(r)||r<40||r%8!=0)throw new FormatError("invalid key length");let i=null,o=Name.get("Identity"),l=Name.get("Identity"),f=o;if(s>=4){i=e.get("CF");i instanceof Dict&&(i.suppressEncryption=!0);o=e.get("StmF")||Name.get("Identity");l=e.get("StrF")||Name.get("Identity");f=e.get("EFF")||o}this.cf=i;this.stmf=o;this.strf=l;this.eff=f;const c=stringToBytes(e.get("O")),h=stringToBytes(e.get("U")),u=c.subarray(0,32),m=h.subarray(0,32),p=e.get("P"),d=e.get("R"),g=(4===s||5===s)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=g;const b=stringToBytes(t);let w,j,k;if(n)if(6===d){const e=function saslPrep(e){let t="";for(const n of e){const e=n.codePointAt(0);Tf.has(e)?t+=" ":Rf.has(e)||(t+=n)}return t.normalize("NFKC")}(n);w=utf8PasswordToBytes(e);e!==n&&(j=utf8PasswordToBytes(n))}else w=5===s?utf8PasswordToBytes(n):stringToBytes(n);if(5!==s)k=this.#rn(b,w,u,m,p,d,r,g);else{const t=c.subarray(32,40),n=c.subarray(40,48),a=h.subarray(0,48),s=h.subarray(32,40),r=h.subarray(40,48),i=stringToBytes(e.get("OE")),o=stringToBytes(e.get("UE")),l=stringToBytes(e.get("Perms"));for(const e of j?[w,j]:[w]){k=this.#sn(d,e,u,t,n,a,m,s,r,i,o,l);if(k)break}}if(!k){if(!n){if(this.algorithm>=4&&isName(this.stmf,"Identity")&&isName(this.strf,"Identity")){const e=this.cf?.get(this.eff.name),t=e?.get("AuthEvent");if(isName(t,"EFOpen")){this.encryptionKey=null;return}}throw new PasswordException("No password given",en)}const e=this.#in(w,u,d,r);k=this.#rn(b,e,u,m,p,d,r,g)}if(!k)throw new PasswordException("Incorrect Password",tn);if(4===s&&k.length<16){this.encryptionKey=new Uint8Array(16);this.encryptionKey.set(k)}else this.encryptionKey=k}setPassword(e){const t=new CipherTransformFactory(this.dict,this.#an,e);this.encryptionKey=t.encryptionKey}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm){const n=new CipherTransform(n=>{if(!(n instanceof Name))throw new FormatError("Invalid crypt filter name.");const a=this.cf.get(n.name),s=a?.get("CFM");if(!s||"None"===s.name)return NullCipher;if(!this.encryptionKey)throw new PasswordException("No password given",en);if(5===this.algorithm||"AESV3"===s.name)return AES256Cipher.bind(null,this.encryptionKey);if("V2"===s.name)return ARCFourCipher.bind(null,this.#on(e,t,this.encryptionKey,!1));if("AESV2"===s.name)return AES128Cipher.bind(null,this.#on(e,t,this.encryptionKey,!0));throw new FormatError("Unknown crypto method")},this.strf,this.stmf);n.embeddedFilterName=this.eff;return n}return new CipherTransform(()=>ARCFourCipher.bind(null,this.#on(e,t,this.encryptionKey,!1)))}}class XRef{#ln=new Map;#fn=[];#cn=null;#hn=null;#un=!1;#mn=new RefSet;#pn=null;#dn=new Set;#gn=!0;#bn=new Set;constructor(e,t){this.stream=e;this.pdfManager=t}getNewPersistentRef(e){null===this.#cn&&(this.#cn=this.#fn.length||1);const t=this.#cn++;this.#ln.set(t,e);return Ref.get(t,0)}getNewTemporaryRef(){if(null===this.#hn){this.#hn=this.#fn.length||1;if(this.#cn){this.#pn=new Map;for(let e=this.#hn;e0;){const[i,o]=r;if(!Number.isInteger(i)||!Number.isInteger(o))throw new FormatError(`Invalid XRef range fields: ${i}, ${o}`);if(!Number.isInteger(n)||!Number.isInteger(a)||!Number.isInteger(s))throw new FormatError(`Invalid XRef entry fields length: ${i}, ${o}`);for(let r=t.entryNum;r=e.length);){n+=String.fromCharCode(a);a=e[t]}return n}function skipUntil(e,t,n){const a=n.length,s=e.length;let r=0;for(;t=a)break;t++;r++}return r}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,n=/^(\d+)\s+(\d+)\s+obj\b/,a=new Uint8Array([116,114,97,105,108,101,114]),s=new Uint8Array([115,116,97,114,116,120,114,101,102]),r=new Uint8Array([47,88,82,101,102]);this.#fn.length=0;this.#ln.clear();const i=this.stream;i.pos=0;const o=i.getBytes(),l=bytesToString(o),f=o.length;let c=i.start;const h=[],u=[];for(;c=f)break;m=o[c]}while(10!==m&&13!==m);continue}const p=readToken(o,c);let d;if(p.startsWith("xref")&&(4===p.length||/\s/.test(p[4]))){c+=skipUntil(o,c,a);h.push(c);c+=skipUntil(o,c,s)}else if(d=n.exec(p)){const t=0|d[1],n=0|d[2],a=c+p.length;let s,h=!1;if(this.#fn[t]){if(this.#fn[t].gen===n)try{new Parser({lexer:new Lexer(i.makeSubStream(a))}).getObj();h=!0}catch(e){e instanceof ParserEOFException?warn(`indexObjects -- checking object (${p}): "${e}".`):h=!0}}else h=!0;h&&(this.#fn[t]={offset:c-i.start,gen:n,free:!1,uncompressed:!0});e.lastIndex=a;const m=e.exec(l);if(m){s=e.lastIndex+1-c;if("endobj"!==m[1]){warn(`indexObjects: Found "${m[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);s-=m[1].length+1}}else s=f-c;const g=o.subarray(c,c+s),b=skipUntil(g,0,r);if(b=t&&!this.#bn.has(e)&&n++;return n}getEntry(e){const t=this.#fn[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof Ref))throw new Error("ref object is not a reference");const n=e.num,a=this.#ln.get(n);if(void 0!==a){a instanceof Dict&&!a.objId&&(a.objId=e.toString());return a}let s=this.getEntry(n);if(null===s)return s;if(this.#mn.has(e)){this.#mn.remove(e);warn(`Ignoring circular reference: ${e}.`);return on}this.#mn.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t);this.#mn.remove(e)}catch(t){this.#mn.remove(e);throw t}s instanceof Dict?s.objId=e.toString():s instanceof BaseStream&&(s.dict.objId=e.toString());return s}fetchUncompressed(e,t,n=!1){const a=e.gen;let s=e.num;if(t.gen!==a){const r=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen0&&t[3]-t[1]>0)return t;warn(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return shadow(this,"mediaBox",this.getBoundingBox("MediaBox")||Of)}get cropBox(){return shadow(this,"cropBox",this.getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){const e=this.pageDict.get("UserUnit");return shadow(this,"userUnit","number"==typeof e&&e>0?e:1)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!isArrayEqual(e,t)){const n=Util.intersect(e,t);if(n&&n[2]-n[0]>0&&n[3]-n[1]>0)return shadow(this,"view",n);warn("Empty /CropBox and /MediaBox intersection.")}return shadow(this,"view",t)}get rotate(){let e=this.#jn("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return shadow(this,"rotate",e)}#kn(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}async getContentStream(){const e=await this.pdfManager.ensure(this,"content");if(e instanceof BaseStream&&!e.isImageStream){if(e.isAsync){const t=await e.asyncGetBytes();if(t)return new Stream(t,0,t.length,e.dict)}return e}if(Array.isArray(e)){const t=[];for(let n=0,a=e.length;n{t&&(e[n]=new Stream(t,0,t.length,a.dict))}))}t.length>0&&await Promise.all(t);return new StreamsSequenceStream(e,this.#kn.bind(this))}return new NullStream}get xfaData(){return shadow(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async#yn(e,t,n){const a=[];for(const s of e){if(!s.id)continue;const e=Ref.fromString(s.id);if(e)if(s.deleted){t.put(e);if(s.popupRef){const e=Ref.fromString(s.popupRef);e&&t.put(e)}}else{if(s.popup?.deleted){const e=Ref.fromString(s.popupRef);e&&t.put(e)}n?.put(e);s.ref=e;a.push(this.xref.fetchAsync(e).then(e=>{e instanceof Dict&&(s.oldAnnotation=e.clone())},()=>{warn(`Cannot fetch \`oldAnnotation\` for: ${e}.`)}));delete s.id}else warn(`A non-linked annotation cannot be modified: ${s.id}`)}await Promise.all(a)}async saveNewAnnotations(e,t,n,a,s){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const r=this._createPartialEvaluator(e),i=new RefSet,o=new RefSet;await this.#yn(n,i,o);const l=this.pageDict,f=this.annotations.filter(e=>!(e instanceof Ref&&i.has(e))),c=await AnnotationFactory.saveNewAnnotations(r,this.xref,t,n,a,s);for(const{ref:e}of c.annotations)e instanceof Ref&&!o.has(e)&&f.push(e);const h=l.clone();h.set("Annots",f);s.put(this.ref,{data:h});for(const e of i)s.put(e,{data:null})}async save(e,t,n,a){const s=this._createPartialEvaluator(e),r=await this._parsedAnnotations,i=[];for(const e of r)i.push(e.save(s,t,n,a).catch(function(e){warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null}));return Promise.all(i)}async loadResources(e){await(this.#wn??=this.pdfManager.ensure(this,"resources"));await ObjectLoader.load(this.resources,e,this.xref)}async#qn(e,t){const n=e?.get("Resources");if(!(n instanceof Dict&&n.size))return this.resources;await ObjectLoader.load(n,t,this.xref);return Dict.merge({xref:this.xref,dictArray:[n,this.resources],mergeSubDicts:!0})}async getOperatorList({handler:e,sink:t,task:n,intent:a,cacheKey:s,pageIndex:r=this.pageIndex,annotationStorage:f=null,modifiedIds:m=null}){const d=this.getContentStream(),g=this.loadResources(wn),b=this._createPartialEvaluator(e,r),w=this.xfaFactory?null:getNewAnnotationsMap(f),j=w?.get(this.pageIndex);let k=Promise.resolve(null),y=null;if(j){const e=this.pdfManager.ensureDoc("annotationGlobals");let t;const a=new Set;for(const{bitmapId:e,bitmap:t}of j)!e||t||a.has(e)||a.add(e);const{isOffscreenCanvasSupported:s}=this.evaluatorOptions;if(a.size>0){const e=j.slice();for(const[t,n]of f)t.startsWith(p)&&n.bitmap&&a.has(n.bitmapId)&&e.push(n);t=AnnotationFactory.generateImages(e,this.xref,s)}else t=AnnotationFactory.generateImages(j,this.xref,s);y=new RefSet;k=Promise.all([e,this.#yn(j,y,null)]).then(([e])=>e?AnnotationFactory.printNewAnnotations(e,b,n,j,t):null)}const q=Promise.all([d,g]).then(async([i])=>{const o=await this.#qn(i.dict,wn),l=new OperatorList(a,t);e.send("StartRenderPage",{transparency:b.hasBlendModes(o,this.nonBlendModesSet),pageIndex:r,cacheKey:s});await b.getOperatorList({stream:i,task:n,resources:o,operatorList:l});return l});let[v,S,x]=await Promise.all([q,this._parsedAnnotations,k]);if(x){S=S.filter(e=>!(e.ref&&y.has(e.ref)));for(let e=0,t=x.length;ee.ref&&isRefsEqual(e.ref,n.refToReplace));if(a>=0){S.splice(a,1,n);x.splice(e--,1);t--}}}S=S.concat(x)}if(0===S.length||a&h){v.flush(!0);return{length:v.totalLength}}const C=!!(a&c),F=!!(a&u),T=!!(a&i),R=!!(a&o),O=!!(a&l),H=[];for(const e of S)(T||R&&e.mustBeViewed(f,C)&&e.mustBeViewedWhenEditing(F,m)||O&&e.mustBePrinted(f))&&H.push(e.getOperatorList(b,n,a,f).catch(function(e){warn(`getOperatorList - ignoring annotation data during "${n.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}}));const D=await Promise.all(H);let M=!1,N=!1;for(const{opList:e,separateForm:t,separateCanvas:n}of D){v.addOpList(e);M||=t;N||=n}v.flush(!0,{form:M,canvas:N});return{length:v.totalLength}}async extractTextContent({handler:e,task:t,includeMarkedContent:n,disableNormalization:a,sink:s,intersector:r=null}){const i=this.getContentStream(),o=this.loadResources(jn),l=this.pdfManager.ensureCatalog("lang"),[f,,c]=await Promise.all([i,o,l]),h=await this.#qn(f.dict,jn);return this._createPartialEvaluator(e).getTextContent({stream:f,task:t,resources:h,includeMarkedContent:n,disableNormalization:a,sink:s,viewBox:this.view,lang:c,intersector:r})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;try{const t=await this.pdfManager.ensure(this,"_parseStructTree",[e]);return await this.pdfManager.ensure(t,"serializable")}catch(e){warn(`getStructTree: "${e}".`);return null}}_parseStructTree(e){const t=new StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,n){const a=await this._parsedAnnotations;if(0===a.length)return a;const s=[],r=[];let f;const c=!!(n&i),h=!!(n&o),u=!!(n&l),m=[];for(const n of a){const a=c||h&&n.viewable;(a||u&&n.printable)&&s.push(n.data);if(n.hasTextContent&&a){f??=this._createPartialEvaluator(e);r.push(n.extractTextContent(f,t,[-1/0,-1/0,1/0,1/0]).catch(function(e){warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)}))}else n.overlaysTextContent&&a&&m.push(n)}if(m.length>0){const n=new Intersector(m);r.push(this.extractTextContent({handler:e,task:t,includeMarkedContent:!1,disableNormalization:!1,sink:null,intersector:n}).then(()=>{n.setText()}))}await Promise.all(r);return s}get annotations(){const e=this.#jn("Annots");return shadow(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){return shadow(this,"_parsedAnnotations",this.pdfManager.ensure(this,"annotations").then(async e=>{if(0===e.length)return e;const[t,n]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureDoc("fieldObjects")]);if(!t)return[];const a=n?.orphanFields,s=[];for(const n of e)s.push(AnnotationFactory.create(this.xref,n,t,this._localIdFactory,!1,a,null,this.ref).catch(function(e){warn(`_parsedAnnotations: "${e}".`);return null}));const r=[];let i,o;for(const e of await Promise.all(s))e&&(e instanceof WidgetAnnotation?(o||=[]).push(e):e instanceof PopupAnnotation?(i||=[]).push(e):r.push(e));o&&r.push(...o);i&&r.push(...i);return r}))}get jsActions(){return shadow(this,"jsActions",collectActions(this.xref,this.pageDict,fe))}async collectAnnotationsByType(e,t,n,a,s){const{pageIndex:r}=this;if(Object.hasOwn(this,"_parsedAnnotations")){const e=await this._parsedAnnotations;for(const{data:t}of e)if(!n||n.has(t.annotationType)){t.pageIndex=r;a.push(Promise.resolve(t))}return}const i=await this.pdfManager.ensure(this,"annotations");let o;for(const l of i)a.push(AnnotationFactory.create(this.xref,l,s,this._localIdFactory,!1,null,n,this.ref).then(async n=>{if(!n)return null;n.data.pageIndex=r;if(n.hasTextContent&&n.viewable){o??=this._createPartialEvaluator(e);await n.extractTextContent(o,t,[-1/0,-1/0,1/0,1/0])}return n.data}).catch(function(e){warn(`collectAnnotationsByType: "${e}".`);return null}))}}const Hf=new Uint8Array([37,80,68,70,45]),Bf=new Uint8Array([115,116,97,114,116,120,114,101,102]),Df=new Uint8Array([101,110,100,111,98,106]);function find(e,t,n=1024,a=!1){const s=t.length,r=e.peekBytes(n),i=r.length-s;if(i<=0)return!1;if(a){const n=s-1;let a=r.length-1;for(;a>=n;){let i=0;for(;i=s){e.pos+=a-n;return!0}a--}}else{let n=0;for(;n<=i;){let a=0;for(;a=s){e.pos+=n;return!0}n++}}return!1}class PDFDocument{#vn=new Map;#Sn=null;#An=null;constructor(e,t){if(t.length<=0)throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new XRef(t,e);const n={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++n.font}static createObjId(){unreachable("Abstract method `createObjId` called.")}static getPageObjId(){unreachable("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=Linearization.create(this.stream)}catch(e){if(e instanceof MissingDataException)throw e;info(e)}return shadow(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();if(find(e,Df)){e.skip(6);let n=e.peekByte();for(;isWhiteSpace(n);){e.pos++;n=e.peekByte()}t=e.pos-e.start}}else{const n=1024,a=Bf.length;let s=!1,r=e.end;for(;!s&&r>0;){r-=n-a;r<0&&(r=0);e.pos=r;s=find(e,Bf,n,!0)}if(s){e.skip(9);let n;do{n=e.getByte()}while(isWhiteSpace(n));let a="";for(;n>=32&&n<=57;){a+=String.fromCharCode(n);n=e.getByte()}t=parseInt(a,10);isNaN(t)&&(t=0)}}return shadow(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,Hf))return;e.moveStart();e.skip(Hf.length);let t,n="";for(;(t=e.getByte())>32&&n.length<7;)n+=String.fromCharCode(t);dn.test(n)?this.#An=n:warn(`Invalid PDF header version: ${n}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return shadow(this,"numPages",e)}#xn(e,t=0){return!!Array.isArray(e)&&e.every(e=>{if(!((e=this.xref.fetchIfRef(e))instanceof Dict))return!1;if(e.has("Kids")){if(++t>10){warn("#hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this.#xn(e.get("Kids"),t)}const n=isName(getInheritableProperty({dict:e,key:"FT"}),"Sig"),a=e.get("Rect"),s=Array.isArray(a)&&a.every(e=>0===e);return n&&s})}get _xfaStreams(){const{acroForm:e}=this.catalog;if(!e)return null;const t=e.get("XFA"),n=new Map(["xdp:xdp","template","datasets","config","connectionSet","localeSet","stylesheet","/xdp:xdp"].map(e=>[e,null]));if(t instanceof BaseStream&&!t.isEmpty){n.set("xdp:xdp",t);return n}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,a=t.length;ef.handleSetFont(a,[Name.get(e),1],null,c,t,u,n,s).catch(e=>{warn(`loadXfaFonts: "${e}".`);return null}),m=[];for(const[e,t]of s){const n=t.get("FontDescriptor");if(!(n instanceof Dict))continue;const a={fontFamily:normalizeCSSFontFamily(n.get("FontFamily")),fontWeight:n.get("FontWeight"),italicAngle:-n.get("ItalicAngle")};validateCSSFont(a)&&m.push(parseFont(e,null,a))}await Promise.all(m);const p=this.xfaFactory.setFonts(h);if(!p)return;r.ignoreErrors=!0;m.length=0;h.length=0;const d=new Set;for(const e of p)getXfaFontName(`${e}-Regular`)||d.add(e);d.size&&p.push("PdfJS-Fallback");for(const e of p)if(!d.has(e))for(const t 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 n=`${e}-${t.name}`;m.push(parseFont(n,getXfaFontDict(n),{fontFamily:e,fontWeight:t.fontWeight,italicAngle:t.italicAngle}))}await Promise.all(m);this.xfaFactory.appendFonts(h,d)}loadXfaResources(e,t){return Promise.all([this.#In(e,t).catch(()=>{}),this.#Cn()])}serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this.#An}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},{acroForm:t}=this.catalog;if(!t)return shadow(this,"formInfo",e);try{const n=t.get("Fields"),a=Array.isArray(n)&&n.length>0;e.hasFields=a;const s=t.get("XFA");e.hasXfa=Array.isArray(s)&&s.length>0||s instanceof BaseStream&&!s.isEmpty;const r=!!(1&t.get("SigFlags")),i=r&&this.#xn(n);e.hasAcroForm=a&&!i;e.hasSignatures=r}catch(e){if(e instanceof MissingDataException)throw e;warn(`Cannot fetch form information: "${e}".`)}return shadow(this,"formInfo",e)}get documentInfo(){const{catalog:e,formInfo:t,xref:n}=this,a={PDFFormatVersion:this.version,Language:e.lang,EncryptFilterName:n.encrypt?.filterName??null,IsLinearized:!!this.linearization,IsAcroFormPresent:t.hasAcroForm,IsXFAPresent:t.hasXfa,IsCollectionPresent:!!e.collection,IsSignaturesPresent:t.hasSignatures};let s;try{s=n.trailer.get("Info")}catch(e){if(e instanceof MissingDataException)throw e;info("The document information dictionary is invalid.")}if(!(s instanceof Dict))return shadow(this,"documentInfo",a);for(const[e,t]of s){switch(e){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof t){a[e]=stringToPDFString(t);continue}break;case"Trapped":if(t instanceof Name){a[e]=t;continue}break;default:let n;switch(typeof t){case"string":n=stringToPDFString(t);break;case"number":case"boolean":n=t;break;default:if(t instanceof Name){n=t;break}warn(`Bad value, for custom key "${e}", in Info: ${t}.`);continue}(a.Custom??=new Map).set(e,n);continue}warn(`Bad value, for key "${e}", in Info: ${t}.`)}return shadow(this,"documentInfo",a)}get fingerprints(){const e="\0".repeat(16);function validate(t){return"string"==typeof t&&16===t.length&&t!==e}const t=this.xref.trailer.get("ID");let n,a;if(Array.isArray(t)&&validate(t[0])){n=stringToBytes(t[0]);t[1]!==t[0]&&validate(t[1])&&(a=stringToBytes(t[1]))}else n=calculateMD5(this.stream.getByteRange(0,1024),0,1024);return shadow(this,"fingerprints",[n.toHex(),a?.toHex()??null])}async#Fn(e){const{catalog:t,linearization:n,xref:a}=this,s=Ref.get(n.objectNumberFirst,0);try{const e=await a.fetchAsync(s);if(e instanceof Dict){let n=e.getRaw("Type");n instanceof Ref&&(n=await a.fetchAsync(n));if(isName(n,"Page")||!e.has("Type")&&!e.has("Kids")&&e.has("Contents")){t.pageKidsCountCache.has(s)||t.pageKidsCountCache.put(s,1);t.pageIndexCache.has(s)||t.pageIndexCache.put(s,0);return[e,s]}}throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(n){warn(`_getLinearizationPage: "${n.message}".`);return t.getPageDict(e)}}getPage(e){const t=this.#vn.get(e);if(t)return t;const{catalog:n,linearization:a,xfaFactory:s}=this;let r;r=s?Promise.resolve([Dict.empty,null]):a?.pageFirst===e?this.#Fn(e):n.getPageDict(e);r=r.then(([t,a])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:a,globalIdFactory:this._globalIdFactory,fontCache:n.fontCache,builtInCMapCache:n.builtInCMapCache,standardFontDataCache:n.standardFontDataCache,globalColorSpaceCache:n.globalColorSpaceCache,globalImageCache:n.globalImageCache,systemFontCache:n.systemFontCache,nonBlendModesSet:n.nonBlendModesSet,xfaFactory:s}));this.#vn.set(e,r);return r}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof XRefEntryException){this.#vn.delete(0);await this.cleanup();throw new XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:n}=this;t.setActualNumPages();let a;try{await Promise.all([n.ensureDoc("xfaFactory"),n.ensureDoc("linearization"),n.ensureCatalog("numPages")]);if(this.xfaFactory)return;a=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(a))throw new FormatError("Page count is not an integer.");if(a<=1)return;await this.getPage(a-1)}catch(s){this.#vn.delete(a-1);await this.cleanup();if(s instanceof XRefEntryException&&!e)throw new XRefParseException;warn(`checkLastPage - invalid /Pages tree /Count: ${a}.`);let r;try{r=await t.getAllPageDicts(e)}catch(n){if(n instanceof XRefEntryException&&!e)throw new XRefParseException;t.setActualNumPages(1);return}for(const[e,[a,s]]of r){let r;if(a instanceof Error){r=Promise.reject(a);r.catch(()=>{})}else r=Promise.resolve(new Page({pdfManager:n,xref:this.xref,pageIndex:e,pageDict:a,ref:s,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalColorSpaceCache:this.globalColorSpaceCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this.#vn.set(e,r)}t.setActualNumPages(r.size)}}async fontFallback(e,t){const{catalog:n,pdfManager:a}=this;for(const s of await Promise.all(n.fontCache))if(s.loadedName===e){s.fallback(t,a.evaluatorOptions);return}}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):clearGlobalCaches()}async#Tn(e,t,n,a,s,r,i){const{xref:o}=this;if(!(n instanceof Ref)||r.has(n))return;r.put(n);const l=await o.fetchAsync(n);if(!(l instanceof Dict))return;let f=await l.getAsync("Subtype");f=f instanceof Name?f.name:null;if("Link"===f)return;if(l.has("T")){const t=stringToPDFString(await l.getAsync("T"));e=""===e?t:`${e}.${t}`}else{let n=l;const a=new RefSet;for(;;){n=n.getRaw("Parent")||t;if(n instanceof Ref){if(r.has(n)||a.has(n))break;a.put(n);n=await o.fetchAsync(n)}if(!(n instanceof Dict))break;if(n.has("T")){const t=stringToPDFString(await n.getAsync("T"));e=""===e?t:`${e}.${t}`;break}}}t&&!l.has("Parent")&&isName(l.get("Subtype"),"Widget")&&i.put(n,t);a.getOrInsertComputed(e,makeArr).push(AnnotationFactory.create(o,n,s,null,!0,i,null,null).then(e=>e?.getFieldObject()).catch(function(e){warn(`#collectFieldObjects: "${e}".`);return null}));if(!l.has("Kids"))return;const c=await l.getAsync("Kids");if(Array.isArray(c))for(const t of c)await this.#Tn(e,n,t,a,s,r,i)}get fieldObjects(){return shadow(this,"fieldObjects",this.pdfManager.ensureDoc("formInfo").then(async e=>{if(!e.hasFields)return null;const t=await this.annotationGlobals;if(!t)return null;const{acroForm:n}=t,a=new RefSet,s=new Map,r=new Map,i=new RefMap;for(const e of n.get("Fields"))await this.#Tn("",null,e,r,t,a,i);const o=[];for(const[e,t]of r)o.push(Promise.all(t).then(t=>{(t=t.filter(Boolean)).length>0&&s.set(e,t)}));await Promise.all(o);return{allFields:s.size?s:null,orphanFields:i}}))}async#Rn(e,t,n){if(Array.isArray(e))for(const a of e){if(a instanceof Ref){if(n.has(a))continue;n.put(a)}const e=await this.xref.fetchIfRefAsync(a);if(e instanceof Dict){if(isName(await e.getAsync("FT"),"Sig")){const n=await e.getAsync("V");if(n instanceof Dict){const s=await this.#On(e,n,a);s&&t.push(s)}}e.has("Kids")&&await this.#Rn(await e.getAsync("Kids"),t,n)}}}async#Hn(e,t){try{return this.stream.getByteRange(e,t)}catch(n){if(!(n instanceof MissingDataException))throw n;await this.pdfManager.requestRange(e,t);return this.#Hn(e,t)}}async#Bn(e,t){if(t>0)return!1;const n=this.stream.end;for(let t=e;t!Number.isInteger(e)||e<0))return null;const[s,r,i,o]=a,l=this.stream.end||0;if(0!==s||r<=0||s+r>i||i+o>l||0===l)return null;const f=await t.getAsync("Contents");if("string"!=typeof f||0===f.length)return null;const[c,h,u,m,p,d,g,b]=await Promise.all([t.getAsync("Filter"),t.getAsync("SubFilter"),e.getAsync("T"),t.getAsync("Name"),t.getAsync("Reason"),t.getAsync("Location"),t.getAsync("ContactInfo"),t.getAsync("M")]),w=c instanceof Name?c.name:null,j=h instanceof Name?h.name:null;let k=null;"adbe.pkcs7.detached"===j?k=0:"adbe.pkcs7.sha1"===j&&(k=1);return{id:`${n instanceof Ref?n.toString():"inline"}:${s}-${r}-${i}-${o}`,fieldName:"string"==typeof u?stringToPDFString(u):"",signerName:"string"==typeof m?stringToPDFString(m):null,reason:"string"==typeof p?stringToPDFString(p):null,location:"string"==typeof d?stringToPDFString(d):null,contactInfo:"string"==typeof g?stringToPDFString(g):null,signingTime:"string"==typeof b?b:null,filter:w,subFilter:j,signatureType:k,byteRange:a,pkcs7:stringToBytes(f),revisionIndex:0,parentId:null}}get signatures(){return shadow(this,"signatures",this.pdfManager.ensureDoc("formInfo").then(async e=>{if(!e.hasSignatures||!e.hasFields)return null;const t=await this.annotationGlobals;if(!t)return null;const n=t.acroForm.get("Fields"),a=[];await this.#Rn(n,a,new RefSet);await Promise.all(a.map(async e=>{const t=e.byteRange[2]+e.byteRange[3];e.modificationsAfterSignature=this.xref.countUpdatesAfter(t);e.coversWholeDocument=await this.#Bn(t,e.modificationsAfterSignature)}));a.sort((e,t)=>t.byteRange[2]+t.byteRange[3]-(e.byteRange[2]+e.byteRange[3]));for(let e=0,t=a.length;e=0;n--){const e=a[n];if(e.byteRange[2]+e.byteRange[3]>t.byteRange[2]+t.byteRange[3]){t.parentId=e.id;break}}}const s=new Map,r=a.map(e=>{const{pkcs7:t,...n}=e;s.set(e.id,{byteRange:e.byteRange,pkcs7:t});return n});this.#Sn=s;return r.length?r:null}))}async getSignatureData(e){await this.signatures;const t=this.#Sn?.get(e);if(!t)return null;const{byteRange:n,pkcs7:a}=t,[s,r,i,o]=n;return{data:await Promise.all([this.#Hn(s,s+r),this.#Hn(i,i+o)]),pkcs7:a}}get hasJSActions(){return shadow(this,"hasJSActions",Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]).then(([e,t])=>!!e||!!t?.allFields&&t.allFields.values().some(e=>e.some(e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm?.get("CO");if(!Array.isArray(e)||0===e.length)return shadow(this,"calculationOrderIds",null);const t=[];for(const n of e)n instanceof Ref&&t.push(n.toString());return shadow(this,"calculationOrderIds",t.length?t:null)}get annotationGlobals(){return shadow(this,"annotationGlobals",AnnotationFactory.createGlobals(this.pdfManager))}async toJSObject(e,t=!0){throw new Error("Not implemented: toJSObject")}}class BasePdfManager{constructor({docBaseUrl:e,docId:t,enableXfa:n,evaluatorOptions:a,handler:s,password:r}){this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=createValidAbsoluteUrl(e);if(t)return t.href;warn(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e);this._docId=t;this._password=r;this.enableXfa=n;a.isOffscreenCanvasSupported&&=FeatureTest.isOffscreenCanvasSupported;a.isImageDecoderSupported&&=FeatureTest.isImageDecoderSupported;this.evaluatorOptions=Object.freeze(a);ImageResizer.setOptions(a);JpegStream.setOptions(a);OperatorList.setOptions(a);const i={...a,handler:s};IccColorSpace.setOptions(i);CmykICCBasedCS.setOptions(i);PDFFunctionFactory.setOptions(i);Pattern.setOptions(i);WasmImage.setOptions(i)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}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,t){return this.pdfDocument.fontFallback(e,t)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,n){unreachable("Abstract method `ensure` called")}requestRange(e,t){unreachable("Abstract method `requestRange` called")}requestLoadedStream(e=!1){unreachable("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){unreachable("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e;this.pdfDocument.xref.encrypt?.setPassword(e)}terminate(e){unreachable("Abstract method `terminate` called")}}class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new Stream(e.source);this.pdfDocument=new PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,n){const a=e[t];return"function"==typeof a?a.apply(e,n):a}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,n){try{const a=e[t];return"function"==typeof a?await a.apply(e,n):a}catch(a){if(!(a instanceof MissingDataException))throw a;await this.requestRange(a.begin,a.end);return this.ensure(e,t,n)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const Mf=1,Nf=2,Pf=1,Ef=2,_f=3,zf=4,Lf=5,Uf=6,Wf=7,Xf=8;function onFn(){}function wrapReason(e){if(e instanceof AbortException||e instanceof InvalidPDFException||e instanceof PasswordException||e instanceof ResponseException||e instanceof UnknownErrorException)return e;e instanceof Error||"object"==typeof e&&null!==e||unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new AbortException(e.message);case"InvalidPDFException":return new InvalidPDFException(e.message);case"PasswordException":return new PasswordException(e.message,e.code);case"ResponseException":return new ResponseException(e.message,e.status,e.missing);case"UnknownErrorException":return new UnknownErrorException(e.message,e.details)}return new UnknownErrorException(e.message,e.toString())}class MessageHandler{#Dn=new AbortController;constructor(e,t,n){this.sourceName=e;this.targetName=t;this.comObj=n;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);n.addEventListener("message",this.#Mn.bind(this),{signal:this.#Dn.signal})}#Mn({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#Nn(e);return}if(e.callback){const t=e.callbackId,n=this.callbackCapabilities[t];if(!n)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===Mf)n.resolve(e.data);else{if(e.callback!==Nf)throw new Error("Unexpected callback case");n.reject(wrapReason(e.reason))}return}const t=this.actionHandler[e.action];if(!t)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const n=this.sourceName,a=e.sourceName,s=this.comObj;Promise.try(t,e.data).then(function(t){s.postMessage({sourceName:n,targetName:a,callback:Mf,callbackId:e.callbackId,data:t})},function(t){s.postMessage({sourceName:n,targetName:a,callback:Nf,callbackId:e.callbackId,reason:wrapReason(t)})});return}e.streamId?this.#Pn(e):t(e.data)}on(e,t){const n=this.actionHandler;if(n[e])throw new Error(`There is already an actionName called "${e}"`);n[e]=t}send(e,t,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},n)}sendWithPromise(e,t,n){const a=this.callbackId++,s=Promise.withResolvers();this.callbackCapabilities[a]=s;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:t},n)}catch(e){s.reject(e)}return s.promise}sendWithStream(e,t,n,a){const s=this.streamId++,r=this.sourceName,i=this.targetName,o=this.comObj;return new ReadableStream({start:n=>{const l=Promise.withResolvers();this.streamControllers[s]={controller:n,startCall:l,pullCall:null,cancelCall:null,isClosed:!1};o.postMessage({sourceName:r,targetName:i,action:e,streamId:s,data:t,desiredSize:n.desiredSize},a);return l.promise},pull:e=>{const t=Promise.withResolvers();this.streamControllers[s].pullCall=t;o.postMessage({sourceName:r,targetName:i,stream:Uf,streamId:s,desiredSize:e.desiredSize});return t.promise},cancel:e=>{assert(e instanceof Error,"cancel must have a valid reason");const t=Promise.withResolvers();this.streamControllers[s].cancelCall=t;this.streamControllers[s].isClosed=!0;o.postMessage({sourceName:r,targetName:i,stream:Pf,streamId:s,reason:wrapReason(e)});return t.promise}},n)}#Pn(e){const t=e.streamId,n=this.sourceName,a=e.sourceName,s=this.comObj,r=this,i=this.actionHandler[e.action],o={enqueue(e,r=1,i){if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=r;if(o>0&&this.desiredSize<=0){this.sinkCapability=Promise.withResolvers();this.ready=this.sinkCapability.promise}s.postMessage({sourceName:n,targetName:a,stream:zf,streamId:t,chunk:e},i)},close(){if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:a,stream:_f,streamId:t});delete r.streamSinks[t]}},error(e){assert(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:a,stream:Lf,streamId:t,reason:wrapReason(e)})}},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve();o.ready=o.sinkCapability.promise;this.streamSinks[t]=o;Promise.try(i,e.data,o).then(function(){s.postMessage({sourceName:n,targetName:a,stream:Xf,streamId:t,success:!0})},function(e){s.postMessage({sourceName:n,targetName:a,stream:Xf,streamId:t,reason:wrapReason(e)})})}#Nn(e){const t=e.streamId,n=this.sourceName,a=e.sourceName,s=this.comObj,r=this.streamControllers[t],i=this.streamSinks[t];switch(e.stream){case Xf:e.success?r.startCall.resolve():r.startCall.reject(wrapReason(e.reason));break;case Wf:e.success?r.pullCall.resolve():r.pullCall.reject(wrapReason(e.reason));break;case Uf:if(!i){s.postMessage({sourceName:n,targetName:a,stream:Wf,streamId:t,success:!0});break}i.desiredSize<=0&&e.desiredSize>0&&i.sinkCapability.resolve();i.desiredSize=e.desiredSize;Promise.try(i.onPull||onFn).then(function(){s.postMessage({sourceName:n,targetName:a,stream:Wf,streamId:t,success:!0})},function(e){s.postMessage({sourceName:n,targetName:a,stream:Wf,streamId:t,reason:wrapReason(e)})});break;case zf:assert(r,"enqueue should have stream controller");if(r.isClosed)break;r.controller.enqueue(e.chunk);break;case _f:assert(r,"close should have stream controller");if(r.isClosed)break;r.isClosed=!0;r.controller.close();this.#En(r,t);break;case Lf:assert(r,"error should have stream controller");r.controller.error(wrapReason(e.reason));this.#En(r,t);break;case Ef:e.success?r.cancelCall.resolve():r.cancelCall.reject(wrapReason(e.reason));this.#En(r,t);break;case Pf:if(!i)break;const o=wrapReason(e.reason);Promise.try(i.onCancel||onFn,o).then(function(){s.postMessage({sourceName:n,targetName:a,stream:Ef,streamId:t,success:!0})},function(e){s.postMessage({sourceName:n,targetName:a,stream:Ef,streamId:t,reason:wrapReason(e)})});i.sinkCapability.reject(o);i.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#En(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.#Dn?.abort();this.#Dn=null}}async function writeObject(e,t,n,{encrypt:a=null,encryptRef:s=null}){const r=a&&s!==e?a.createCipherTransform(e.num,e.gen):null;n.push(`${e.num} ${e.gen} obj\n`);await writeValue(t,n,r);n.push("\nendobj\n")}async function writeDict(e,t,n){t.push("<<");for(const[a,s]of e.getRawEntries()){t.push(` /${escapePDFName(a)} `);await writeValue(s,t,n)}t.push(">>")}async function writeValue(e,t,n){if(e instanceof Name)t.push(`/${escapePDFName(e.name)}`);else if(e instanceof Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e)||ArrayBuffer.isView(e))await async function writeArray(e,t,n){t.push("[");for(let a=0,s=e.length;a=1e21)return BigInt(e).toString();const t=e.toFixed(10);let n=t.length;for(;"0"===t[n-1];)n--;"."===t[n-1]&&n--;return t.slice(0,n)}(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof Dict?await writeDict(e,t,n):e instanceof BaseStream?await async function writeStream(e,t,n){(e=e.getOriginalStream()).reset();let a=e.getBytes();const{dict:s}=e,[r,i]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),o=Array.isArray(r)?await s.xref.fetchIfRefAsync(r[0]):r,l=isName(o,"FlateDecode"),f=isName(o,"DCTDecode")||isName(o,"JPXDecode")||isName(o,"JBIG2Decode")||isName(o,"CCITTFaxDecode")||isName(o,"LZWDecode");if(!(l||f||isName(o,"BrotliDecode"))&&a.length>=256)try{const e=new CompressionStream("deflate"),t=e.writable.getWriter();await t.ready;t.write(a).then(async()=>{await t.ready;await t.close()}).catch(()=>{});a=await new Response(e.readable).bytes();let n,o;if(r){if(!l){n=Array.isArray(r)?[Name.get("FlateDecode"),...r]:[Name.get("FlateDecode"),r];i&&(o=Array.isArray(i)?[null,...i]:[null,i])}}else n=Name.get("FlateDecode");n&&s.set("Filter",n);o&&s.set("DecodeParms",o)}catch(e){info(`writeStream - cannot compress data: "${e}".`)}let c=bytesToString(a);n&&(c=n.encryptString(c));s.set("Length",c.length);await writeDict(s,t,n);t.push(" stream\n",c,"\nendstream")}(e,t,n):null===e?t.push("null"):warn(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,n,a){for(let s=t+n-1;s>n-1;s--){a[s]=255&e;e>>=8}return n+t}function writeString(e,t,n){const a=e.length;for(let s=0;s1&&(r=n.documentElement.searchNode([s.at(-1)],0));r?r.childNodes=Array.isArray(a)?a.map(e=>new SimpleDOMNode("value",e)):[new SimpleDOMNode("#text",a)]:warn(`Node not found for path: ${t}`)}const a=[];n.documentElement.dump(a);return a.join("")}(a.fetchIfRef(t).getString(),n)}const s=new StringStream(e,new Dict(a));s.dict.setIfName("Type","EmbeddedFile");n.put(t,{data:s})}function getIndexes(e){const t=[];for(const{ref:n}of e)n.num===t.at(-2)+t.at(-1)?t[t.length-1]+=1:t.push(n.num,1);return t}function computeIDs(e,t,n){if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const a=function computeMD5(e,t){const n=Math.floor(Date.now()/1e3),a=t.filename||"",s=[n.toString(),a,e.toString(),...t.infoMap.values()],r=Math.sumPrecise(s.map(e=>e.length)),i=new Uint8Array(r);let o=0;for(const e of s)o=writeString(e,o,i);return bytesToString(calculateMD5(i,0,i.length))}(e,t);n.set("ID",[t.fileIds[0]||a,a])}}async function incrementalUpdate({originalData:e,xrefInfo:t,changes:n,xref:a=null,hasXfa:s=!1,xfaDatasetsRef:r=null,hasXfaDatasetsEntry:i=!1,needAppearances:o,acroFormRef:l=null,acroForm:f=null,xfaData:c=null,useXrefStream:h=!1}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:n,hasXfa:a,hasXfaDatasetsEntry:s,xfaDatasetsRef:r,needAppearances:i,changes:o}){!a||s||r||warn("XFA - Cannot save it");if(!i&&(!a||!r||s))return;const l=t.clone();if(a&&!s){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,r);l.set("XFA",e)}i&&l.set("NeedAppearances",!0);o.put(n,{data:l})}({xref:a,acroForm:f,acroFormRef:l,hasXfa:s,hasXfaDatasetsEntry:i,xfaDatasetsRef:r,needAppearances:o,changes:n});s&&updateXFA({xfaData:c,xfaDatasetsRef:r,changes:n,xref:a});const u=function getTrailerDict(e,t,n){const a=new Dict(null);a.setIfDefined("Prev",e?.startXRef);const s=e.newRef;if(n){t.put(s,{data:""});a.set("Size",s.num+1);a.setIfName("Type","XRef")}else a.set("Size",s.num);a.setIfDefined("Root",e?.rootRef);a.setIfDefined("Info",e?.infoRef);a.setIfDefined("Encrypt",e?.encryptRef);return a}(t,n,h),m=[],p=await async function writeChanges(e,t,n=[]){const a=[];for(const[s,{data:r,objStreamRef:i,index:o}]of e.items())if(i)a.push({ref:s,data:r,objStreamRef:i,index:o});else if(null!==r&&"string"!=typeof r){await writeObject(s,r,n,t);a.push({ref:s,data:n.join("")});n.length=0}else a.push({ref:s,data:r});return a.sort((e,t)=>e.ref.num-t.ref.num)}(n,a,m);let d=e.length;const g=e.at(-1);if(10!==g&&13!==g){m.push("\n");d+=1}for(const{data:e}of p)null!==e&&m.push(e);await(h?async function getXRefStreamTable(e,t,n,a,s){const r=[];let i=0,o=0;for(const{ref:e,data:a,objStreamRef:s,index:l}of n){let n;i=Math.max(i,t);if(s){n=l;r.push([2,s.num,n])}else if(null!==a){n=Math.min(e.gen,65535);r.push([1,t,n]);t+=a.length}else{n=Math.min(e.gen+1,65535);r.push([0,0,n])}o=Math.max(o,n)}a.set("Index",getIndexes(n));const l=[1,getSizeInBytes(i),getSizeInBytes(o)];a.set("W",l);computeIDs(t,e,a);const f=Math.sumPrecise(l),c=new Uint8Array(f*r.length),h=new Stream(c);h.dict=a;let u=0;for(const[e,t,n]of r){u=writeInt(e,l[0],u,c);u=writeInt(t,l[1],u,c);u=writeInt(n,l[2],u,c)}await writeObject(e.newRef,h,s,{});s.push("startxref\n",t.toString(),"\n%%EOF\n")}(t,d,p,u,m):async function getXRefTable(e,t,n,a,s){s.push("xref\n");const r=getIndexes(n);let i=0;for(const{ref:e,data:a}of n){if(e.num===r[i]){s.push(`${r[i]} ${r[i+1]}\n`);i+=2}if(null!==a){s.push(`${t.toString().padStart(10,"0")} ${Math.min(e.gen,65535).toString().padStart(5,"0")} n\r\n`);t+=a.length}else s.push(`0000000000 ${Math.min(e.gen+1,65535).toString().padStart(5,"0")} f\r\n`)}computeIDs(t,e,a);s.push("trailer\n");await writeDict(a,s,null);s.push("\nstartxref\n",t.toString(),"\n%%EOF\n")}(t,d,p,u,m));const b=e.length+Math.sumPrecise(m.map(e=>e.length)),w=new Uint8Array(b);w.set(e);let j=e.length;for(const e of m)j=writeString(e,j,w);return w}class PageData{constructor(e,t){this.page=e;this.documentData=t;this.annotations=null;this.pointingNamedDestinations=null;this.copyLevel=0;t.pagesMap.put(e.ref,this)}}class DocumentData{constructor(e){this.document=e;this.destinations=null;this.pageLabels=null;this.pagesMap=new RefMap;this.oldRefMapping=new RefMap;this.dedupNamedDestinations=new Map;this.usedNamedDestinations=new Set;this.postponedRefCopies=new RefMap;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 RefMap;this.outline=null;this.embeddedFiles=null}}class XRefWrapper{constructor(e,t){this.entries=e;this._getNewRef=t}getNewTemporaryRef(){return this._getNewRef()}countUpdatesAfter(e){return null}fetchIfRef(e){return e instanceof Ref?this.fetch(e):e}fetch(e){if(!(e instanceof Ref))throw new Error("ref object is not a reference");return this.entries[e.num]}async fetchIfRefAsync(e){return e instanceof Ref?this.fetchAsync(e):e}async fetchAsync(e){return this.fetch(e)}}class PDFEditor{isSingleFile=!1;#_n=null;#zn=null;#Ln=new Map;currentDocument=null;oldPages=[];newPages=[];xref=[null];xrefWrapper=new XRefWrapper(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 Dict;roleMap=new Dict;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:t="",author:n=""}={}){[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=t;this.author=n}get newRef(){return Ref.get(this.newRefCount++,0)}get newDict(){const e=this.newRef;return[e,this.xref[e.num]=new Dict]}async#Un(e,t){const n=this.newRef;this.xref[n.num]=await this.#Wn(e,!0,t);return n}cloneDict(e){const t=e.clone();t.xref=this.xrefWrapper;return t}async#Wn(e,t,n,a=new RefSet){if(e instanceof Ref){const{currentDocument:{fieldToParent:t,oldRefMapping:s}}=this,r=s.get(e);if(r)return r;const i=e;e=await n.fetchAsync(i);const o=s.get(i);if(o)return o;if("number"==typeof e)return e;if(e instanceof BaseStream&&this.#Xn(e.dict))return this.#Kn(i,e,n,a);const l=this.newRef;s.put(i,l);let f=!0;if(t.has(i)&&e instanceof Dict){(e=this.cloneDict(e)).delete("Parent");f=!1}this.xref[l.num]=await this.#Wn(e,f,n,a);return l}const s=[],{currentDocument:{postponedRefCopies:r}}=this;if(Array.isArray(e)){t&&(e=e.slice());for(let t=0,i=e.length;te[t]=n):s.push(this.#Wn(e[t],!0,n,a).then(n=>e[t]=n))}await Promise.all(s);return e}let i;if(e instanceof BaseStream){({dict:i}=e=e.getOriginalStream().clone());i.xref=this.xrefWrapper}else if(e instanceof Dict){t&&((e=e.clone()).xref=this.xrefWrapper);i=e}if(i){for(const[e,t]of i.getRawEntries()){const o=t instanceof Ref&&r.get(t);o?o.push(t=>i.set(e,t)):s.push(this.#Wn(t,!0,n,a).then(t=>i.set(e,t)))}await Promise.all(s)}return e}#Xn(e){const t=e.get("Subtype");return isName(t,"Image")||e.has("Length1")||isName(t,"Type1C")||isName(t,"CIDFontType0C")||isName(t,"OpenType")}#Gn(e){const t=e.getOriginalStream();t.reset();return t.getBytes()}async#Vn(e){const t=[];await writeValue(e,t,null);return t.join("")}#$n(e,t){const n=256,{length:a}=t,s=new MurmurHash3_64;s.update(e);s.update(`#${a}`);if(a<=1024)s.update(t);else{const e=Math.floor((a-n)/3);for(let r=0;r<4;r++){const i=Math.min(r*e,a-n);s.update(t.subarray(i,i+n))}}return s.hexdigest()}async#Kn(e,t,n,a){const{currentDocument:{oldRefMapping:s,resourceStreamPromises:r}}=this;if(a.has(e))return s.getOrPutComputed(e,()=>this.newRef);const i=e.toString(),o=r.get(i);if(o)return o;const l=new RefSet(a);l.put(e);const f=Promise.resolve().then(async()=>{const a=await this.#Wn(t,!0,n,l),r=s.get(e);if(r){this.xref[r.num]=a;return r}const i=await this.#Yn(a);s.put(e,i);return i});r.set(i,f);try{return await f}finally{r.get(i)===f&&r.delete(i)}}async#Yn(e){const t=await this.#Vn(e.dict),n=this.#Gn(e),a=this.#$n(t,n),s=this.#Ln.getOrInsertComputed(a,makeArr);for(const e of s)if(e.dictStr===t&&isArrayEqual(this.#Gn(e.stream),n))return e.ref;const r=this.newRef;this.xref[r.num]=e;s.push({ref:r,dictStr:t,stream:e});return r}async#Jn(e,t){if(e instanceof Ref){const n=await t.fetchAsync(e);return Array.isArray(n)?n:[e]}return Array.isArray(e)?e:[e]}async#Qn(e,t,n,a,s,r,i,o=new RefSet){const{currentDocument:{pagesMap:l,oldRefMapping:f}}=this,c=t.getRaw("Pg");if(c instanceof Ref&&!l.has(c))return null;const h=t.getRaw("K");if(h instanceof Ref&&o.has(h))return null;const u=await this.#Jn(h,n),m=[],p=[];for(let t of u){const c=t instanceof Ref?t:null;if(c){if(o.has(c))continue;o.put(c);t=await n.fetchAsync(c)}if("number"==typeof t){m.push(t);continue}if(!(t instanceof Dict))continue;const h=t.getRaw("Pg");if(h instanceof Ref&&!l.has(h))continue;const u=t.get("Type");if(!u||isName(u,"StructElem")){let e=!1;if(c&&a.has(c)){if(!isName(t.get("S"),"Link"))continue;e=!0}const l=await this.#Qn(c,t,n,a,s,r,i,o);if(l){p.push(m.length);m.push(l);c&&f.put(c,l);e&&this.xref[l.num].setIfName("S","Span")}continue}if(isName(u,"OBJR")){if(!c)continue;const a=t.getRaw("Obj");if(a instanceof Ref&&!f.get(a))continue;const s=f.get(c)||await this.#Wn(c,!0,n),r=this.xref[s.num].getRaw("Obj");if(r instanceof Ref){const t=this.xref[r.num];if(t instanceof Dict&&!t.has("StructParent")&&e){const n=this.parentTree.size;this.parentTree.set(n,[f,e]);t.set("StructParent",n)}}m.push(s);continue}if(isName(u,"MCR")){const e=await this.#Wn(c||t,!0,n);m.push(e);continue}if(c){const e=await this.#Wn(c,!0,n);m.push(e)}}if(0!==u.length&&0===m.length)return null;const d=this.newRef,g=this.xref[d.num]=this.cloneDict(t);g.delete("ID");g.delete("C");g.delete("K");g.delete("P");g.delete("S");await this.#Wn(g,!1,n);const b=t.get("C");if(b instanceof Name){const e=r.get(b.name);g.set("C",e?Name.get(e):b)}else if(Array.isArray(b)){const e=[];for(const t of b)if(t instanceof Name){const n=r.get(t.name);e.push(n?Name.get(n):t)}g.set("C",e)}const w=t.get("S");if(w instanceof Name){const e=i.get(w.name);g.set("S",e?Name.get(e):w)}const j=t.get("ID");if("string"==typeof j){const e=stringToPDFString(j,!1),t=s.get(e);g.set("ID",t?stringToAsciiOrUTF16BE(t):j)}let k=g.get("A");if(k){Array.isArray(k)||(k=[k]);for(let e of k){e=this.xrefWrapper.fetchIfRef(e);if(e instanceof Dict&&(isName(e.get("O"),"Table")&&e.has("Headers"))){const t=this.xrefWrapper.fetchIfRef(e.getRaw("Headers"));if(Array.isArray(t))for(let e=0,n=t.length;e1&&g.set("K",m);return d}#Zn({document:e,includePages:t,excludePages:n}){if(!e)return[];const compile=e=>{if(!e?.length)return null;const t=new Set,n=[];for(const a of e)Array.isArray(a)?n.push(a):t.add(a);return{indices:t,ranges:n}},matches=(e,{indices:t,ranges:n})=>t.has(e)||n.some(([t,n])=>e>=t&&e<=n),a=compile(t),s=compile(n),r=[];for(let t=0,n=e.numPages;t!(!e.document&&!e.image);for(let n=0;ne.insertAfter-t.insertAfter||e.i-t.i);if(0===n.length&&e.some(e=>hasContent(e)&&e.pageIndices)){const t=e.slice();let n=-1;for(const t of e)if(hasContent(t)&&t.pageIndices)for(const e of t.pageIndices)e>n&&(n=e);let s=0;for(const{i:e,insertAfter:r,count:i}of a){const a=Math.min(Math.max(r,-1)+s,n);for(let e=0;ee<=a)&&(t[e]={...n,pageIndices:n.pageIndices.map(e=>e>a?e+i:e)})}const o=[];for(let e=0;e{if(!hasContent(e)||e.pageIndices)return e;const n={...e,pageIndices:r[t]||[]};delete n.insertAfter;return n})}async extractPages(e,t,n,a,s){this.#zn=n;e=this.#ea(e);const r=[];let i=0;const reservePageSlot=e=>{if(!Number.isInteger(e)||e<0)throw new Error("extractPages: invalid page index.");if(void 0!==this.oldPages[e])throw new Error("extractPages: overlapping pageIndices.");this.oldPages[e]=null},o=[];t&&(this.#_n={handler:a,task:s,newAnnotationsByPage:getNewAnnotationsMap(t),imagesPromises:AnnotationFactory.generateImages(t.values(),this.xrefWrapper,!0)});const l=[];for(const t of e){const{document:e,image:n,includePages:a,excludePages:s,pageIndices:f}=t;if(n){if(f){i=-1;if(f.length>1)throw new Error("extractPages: too many pageIndices.")}let e;if(f?.length)e=f[0];else if(-1!==i)e=i++;else for(e=0;void 0!==this.oldPages[e];e++);reservePageSlot(e);l.push({image:n,slot:e});continue}if(!e)continue;f&&(i=-1);const c=this.#Zn({document:e,includePages:a,excludePages:s});if(f&&f.length>c.length)throw new Error("extractPages: too many pageIndices.");const h=new DocumentData(e);o.push(h);r.push(this.#ta(h));let u=0;for(const t of c){let n;f&&(n=f[u++]);if(void 0===n)if(-1!==i)n=i++;else for(n=0;void 0!==this.oldPages[n];n++);reservePageSlot(n);r.push(e.getPage(t).then(e=>{this.oldPages[n]=new PageData(e,h)}))}}await Promise.all(r);if(0===this.oldPages.length)throw new Error("extractPages: nothing to extract.");const f=new Map,c=new Set;for(let e=0,t=this.oldPages.length;e0?this.#la():null;for(let e=0,t=this.oldPages.length;ee.destinations=t),t.ensureCatalog("rawPageLabels").then(t=>e.pageLabels=t),t.ensureCatalog("structTreeRoot").then(t=>e.structTreeRoot=t),t.ensureCatalog("acroForm").then(t=>e.acroForm=t),t.ensureCatalog("documentOutlineForEditor").then(t=>e.outline=t),t.ensureCatalog("rawEmbeddedFiles").then(t=>e.embeddedFiles=t)]);const a=e.structTreeRoot;if(a){const t=a.dict,s=t.get("ParentTree");if(s){const t=new NumberTree(s,n);e.parentTree=t.getAll(!0)}const r=t.get("IDTree");if(r){const t=new NameTree(r,n);e.idTree=t.getAll(!0)}e.roleMap=t.get("RoleMap")||null;e.classMap=t.get("ClassMap")||null;let i=t.get("Namespaces")||null;i&&!Array.isArray(i)&&(i=[i]);e.namespaces=i;e.structTreeAF=t.get("AF")||null;e.structTreePronunciationLexicon=t.get("PronunciationLexicon")||null}}async#ra(e){const{page:{xref:t,annotations:n},documentData:{pagesMap:a,destinations:s,usedNamedDestinations:r,fieldToParent:i}}=e;if(!n)return;const o=[];let l=[],f=0,{hasSignatureAnnotations:c}=e.documentData;for(const e of n){const n=f++;o.push(t.fetchIfRefAsync(e).then(async t=>{if(!isName(t.get("Subtype"),"Link")){if(isName(t.get("Subtype"),"Widget")){c||=isName(getInheritableProperty({dict:t,key:"FT"}),"Sig");const n=t.getRaw("Parent")||null;i.put(e,n)}l[n]=e;return}const o=t.get("A");if(o instanceof Dict&&!isName(o.get("S"),"GoTo")){l[n]=e;return}const f=o instanceof Dict?o.get("D"):t.get("Dest");if(f&&(!Array.isArray(f)||f[0]instanceof Ref&&!a.has(f[0]))){if(f instanceof Name||"string"==typeof f){const t=stringToPDFString(f instanceof Name?f.name:f,!0);if(s.has(t)){l[n]=e;r.add(t)}}}else l[n]=e}))}await Promise.all(o);l=l.filter(Boolean);e.annotations=l.length>0?l:null;e.documentData.hasSignatureAnnotations||=c}#oa(e){for(const{postponedRefCopies:t,pagesMap:n}of e)for(const e of n.keys())t.put(e,[])}#ha(e){for(const{postponedRefCopies:t,oldRefMapping:n}of e){for(const[e,a]of t.items()){const t=n.get(e);for(const e of a)e(t)}t.clear()}}#ga(e,t,n=new RefSet){if(e instanceof Ref){if(!n.has(e)){n.put(e);this.#ga(this.xref[e.num],t,n)}return}if(Array.isArray(e)){for(const a of e)this.#ga(a,t,n);return}let a;e instanceof BaseStream?({dict:a}=e):e instanceof Dict&&(a=e);if(a){t(a);for(const e of a.getRawValues())this.#ga(e,t,n)}}async#ua(e){let t=0;const{parentTree:n}=this;for(let e=0,a=this.newPages.length;e{const l=e.get("StructParent")??e.get("StructParents");if("number"!=typeof l)return;i.add(l);let f=a.get(l);const c=f instanceof Ref?f:null;if(c){const e=o.fetch(c);Array.isArray(e)&&(f=e)}Array.isArray(f)&&f.every(e=>null===e)&&(f=null);if(!f){e.has("StructParent")?e.delete("StructParent"):e.delete("StructParents");return}let h=r.get(l);if(void 0===h){h=t++;r.set(l,h);n.set(h,[s,f])}e.has("StructParent")?e.set("StructParent",h):e.set("StructParents",h)},c)}const{structTreeKids:a,idTree:s,classMap:r,roleMap:i,namespaces:o,structTreeAF:l,structTreePronunciationLexicon:f}=this;for(const t of e){const{document:{xref:e},oldRefMapping:n,parentTree:c,usedStructParents:h,structTreeRoot:u,idTree:m,classMap:p,roleMap:d,namespaces:g,structTreeAF:b,structTreePronunciationLexicon:w}=t;if(!u)continue;this.currentDocument=t;const j=new RefSet;for(const[e,t]of c||[])!h.has(e)&&t instanceof Ref&&j.put(t);const k=new Map;for(const[e,t]of m||[]){let n=e;if(s.has(e))for(let t=1;;t++){const a=`${e}_${t}`;if(!s.has(a)){k.set(e,a);n=a;break}}s.set(n,t)}const y=new Map;if(p?.size>0)for(let[t,n]of p){n=await this.#Wn(n,!0,e);if(r.has(t))for(let e=1;;e++){const n=`${t}_${e}`;if(!r.has(n)){y.set(t,n);t=n;break}}r.set(t,n)}const q=new Map;if(d?.size>0)for(const[e,t]of d){const n=i.get(e);if(n){if(n!==t)for(let n=1;;n++){const a=`${e}_${n}`;if(!i.has(a)){q.set(e,a);i.set(a,t);break}}}else i.set(e,t)}if(g?.length>0)for(const t of g){const n=await e.fetchIfRefAsync(t);let a=n.get("NS");if(!a||o.has(a))continue;a=stringToPDFString(a,!1);const s=await this.#Wn(n,!0,e);o.set(a,s)}if(b)for(const t of b)l.push(await this.#Wn(t,!0,e));if(w)for(const t of w)f.push(await this.#Wn(t,!0,e));const v=u.dict.getRaw("K");if(!v)continue;const S=await this.#Jn(v,e);for(let t of S){const s=t instanceof Ref?t:null;t=await e.fetchIfRefAsync(t);if(!(t instanceof Dict))continue;let r=!1;if(s&&j.has(s)){if(!isName(t.get("S"),"Link"))continue;r=!0}const i=await this.#Qn(s,t,e,j,k,y,q);if(i){a.push(i);s&&n.put(s,i);r&&this.xref[i.num].setIfName("S","Span")}}for(const[e,t]of m||[]){const a=t instanceof Ref&&n.get(t),r=k.get(e)||e;a?s.set(r,a):s.delete(r)}}for(const[e,[t,a]]of n){if(!a){n.delete(e);continue}if(!Array.isArray(a)){const s=t.get(a);void 0===s?n.delete(e):n.set(e,s);continue}const s=a.map(e=>e instanceof Ref&&t.get(e)||null);0===s.length||s.every(e=>null===e)?n.delete(e):n.set(e,s)}this.currentDocument=null}#na(e){for(const t of e){if(!t.destinations)continue;const{destinations:e,pagesMap:n}=t,a=t.destinations=new Map;for(const[t,s]of e){const e=s[0],r=e instanceof Ref&&n.get(e);if(r){(r.pointingNamedDestinations||=new Set).add(t);a.set(t,s)}}}}#ia(){const{namedDestinations:e}=this,getUniqueDestinationName=t=>{if(!e.has(t))return t;for(let n=1;;n++){const a=`${t}_${n}`;if(!e.has(a))return a}};for(let t=0,n=this.oldPages.length;t{"string"==typeof a&&e.set(n,t.get(stringToPDFString(a,!0))||a)};for(const t of e){const e=this.xref[t.num];if(!isName(e.get("Subtype"),"Link"))continue;const n=e.get("A");if(n instanceof Dict&&n.has("D")){const e=n.get("D");fixDestination(n,"D",e);continue}const a=e.get("Dest");fixDestination(e,"Dest",a)}}#aa(e){const collect=(e,t,n)=>{for(const a of e){"string"==typeof a.dest&&t?.has(a.dest)&&n.add(a.dest);a.items.length>0&&collect(a.items,t,n)}};for(const t of e){const{outline:e,destinations:n,usedNamedDestinations:a}=t;e?.length&&collect(e,n,a)}}#wa(e,t){const{dest:n,action:a,url:s,unsafeUrl:r,attachment:i,setOCGState:o}=e;if(a||s||r||i||o)return!0;if(!n)return!1;if("string"==typeof n){const e=t.dedupNamedDestinations.get(n)||n;return this.namedDestinations.has(e)}return!!(Array.isArray(n)&&n[0]instanceof Ref)&&!!t.oldRefMapping.get(n[0])}#ja(e,t){const n=[];for(const a of e){const e=this.#ja(a.items,t),s=this.#wa(a,t);(s||e.length>0)&&n.push({...a,dest:s?a.dest:null,rawDict:s?a.rawDict:null,items:e,_documentData:t})}return n}#pa(e){const t=[];for(const n of e){const{outline:e}=n;e?.length&&t.push(...this.#ja(e,n))}this.outlineItems=t.length>0?t:null}async#ka(e,t){const{dest:n,rawDict:a}=t,s=t._documentData;if(n){if("string"==typeof n){const t=s.dedupNamedDestinations.get(n)||n;e.set("Dest",stringToAsciiOrUTF16BE(t))}else if(Array.isArray(n)){const t=n.slice();t[0]instanceof Ref&&(t[0]=s.oldRefMapping.get(t[0])||t[0]);e.set("Dest",t)}return}const r=a?.get("A");if(r instanceof Dict){this.currentDocument=s;const t=await this.#Un(r,s.document.xref);this.currentDocument=null;e.set("A",t)}}async#ya(){const{outlineItems:e}=this;if(!e?.length)return;const[t,n]=this.newDict;n.setIfName("Type","Outlines");const assignRefs=e=>{for(const t of e){[t._ref]=this.newDict;t.items.length>0&&assignRefs(t.items)}};assignRefs(e);const fillItems=async(e,t)=>{let n=0;for(let a=0;a0&&r.set("Prev",e[a-1]._ref);a0){r.set("First",s.items[0]._ref);r.set("Last",s.items.at(-1)._ref);const e=await fillItems(s.items,s._ref);void 0!==s.count&&r.set("Count",s.count<0?-e:e);n+=void 0!==s.count&&s.count<0?1:e+1}else n+=1;await this.#ka(r,s);const i=(s.bold?2:0)|(s.italic?1:0);0!==i&&r.set("F",i);!s.color||0===s.color[0]&&0===s.color[1]&&0===s.color[2]||r.set("C",[s.color[0]/255,s.color[1]/255,s.color[2]/255])}return n},a=await fillItems(e,t);n.set("First",e[0]._ref);n.set("Last",e.at(-1)._ref);n.set("Count",a);this.rootDict.set("Outlines",t)}async#ma(e){this.#qa(e);this.#va(e);this.#Sa(e);await this.#Aa(e);const t=this.fields;for(const n of e){let e=n.acroForm?.get("Fields")||null;!e&&n.fieldToParent.size>0&&(e=this.#xa(n.fieldToParent,n.document.xref));if(Array.isArray(e)&&e.length>0){this.currentDocument=n;await this.#Ca(t,e);this.currentDocument=null}}this.#Ia(e)}#Sa(e){let t=0,n=null;for(const a of e){const e=a.acroForm?.get("Q");if("number"==typeof e&&0!==e)if(n?.acroFormQ>0)a.acroFormQ=e;else if(0!==t){if(e!==t){n.acroFormQ||=t;a.acroFormQ=e;t=0}}else{t=e;n=a}}t>0&&(this.acroFormQ=t)}#qa(e){let t=0,n=!1;for(const a of e){if(!a.acroForm)continue;const e=a.acroForm.get("SigFlags");"number"==typeof e&&a.hasSignatureAnnotations&&(t|=e);!0===a.acroForm.get("NeedAppearances")&&(n=!0)}this.acroFormSigFlags=t;this.acroFormNeedAppearances=n}#Ia(e){const t=[];for(const n of e){const e=n.acroForm?.get("CO")||null;if(!Array.isArray(e))continue;const{oldRefMapping:a}=n;for(const n of e){const e=n instanceof Ref&&a.get(n);e&&t.push(e)}}this.acroFormCalculationOrder=t.length>0?t:null}#va(e){let t=null,n=null;for(const a of e){const e=a.acroForm?.get("DA")||null;if(e&&"string"==typeof e)if(n?.acroFormDefaultAppearance)a.acroFormDefaultAppearance=e;else if(t){if(e!==t){n.acroFormDefaultAppearance||=t;a.acroFormDefaultAppearance=e;t=null}}else{t=e;n=a}}t&&(this.acroFormDefaultAppearance=t)}async#Aa(e){let t=null,n=null,a=null;for(const s of e){const e=s.acroForm?.get("DR")||null;if(e&&e instanceof Dict)if(a?.acroFormDefaultResources)s.acroFormDefaultResources=e;else if(t){if(!deepCompare(t,e)){a.acroFormDefaultResources||=t;s.acroFormDefaultResources=e;t=null;n=null}}else{t=e;n=s.acroForm.getRaw("DR");a=s}}if(t){this.currentDocument=a;this.acroFormDefaultResources=await this.#Wn(n,!0,a.document.xref);this.currentDocument=null}}#xa(e,t){const n=[],a=new RefSet;for(const[s,r]of e.items()){if(!r){n.push(s);continue}let e=r,i=r;const o=new RefSet;for(;;){if(e instanceof Ref){if(o.has(e))break;o.put(e)}const n=t.fetchIfRef(e);if(!(n instanceof Dict))break;e=n.getRaw("Parent")||null;if(!e)break;i=e}if(i instanceof Ref&&!a.has(i)){n.push(i);a.put(i)}}return n}async#Ca(e,t){const n=new RefSet,a=[{kids:t,newKids:e,pos:0,oldParentRef:null,parentRef:null,parent:null}],{document:{xref:s},oldRefMapping:r,fieldToParent:i,acroFormDefaultAppearance:o,acroFormDefaultResources:l,acroFormQ:f}=this.currentDocument,c=[],h=[];for(;a.length>0;){const e=a.at(-1),{kids:t,newKids:u,parent:m,pos:p}=e;if(p===t.length){a.pop();if(0===u.length||!m)continue;const t=this.xref[e.parentRef.num]=this.cloneDict(m);t.delete("Parent");t.delete("Kids");await this.#Wn(t,!1,s);t.set("Kids",u);if(a.length>0){const n=a.at(-1);if(!n.parentRef&&n.oldParentRef){const e=n.parentRef=this.newRef;t.set("Parent",e);r.put(n.oldParentRef,e)}n.newKids.push(e.parentRef)}continue}const d=t[e.pos++];if(!(d instanceof Ref)||n.has(d))continue;n.put(d);const g=s.fetchIfRef(d);if(!(g instanceof Dict))continue;if(g.has("Kids")){const e=g.get("Kids");if(!Array.isArray(e))continue;a.push({kids:e,newKids:[],pos:0,oldParentRef:d,parentRef:null,parent:g});continue}if(!i.has(d))continue;const b=r.get(d);if(!b)continue;u.push(b);if(!e.parentRef&&e.oldParentRef){e.parentRef=this.newRef;r.put(e.oldParentRef,e.parentRef)}const w=this.xref[b.num];e.parentRef&&w.set("Parent",e.parentRef);o&&!w.has("DA")&&c.push(w);l&&!w.has("Kids")&&w.get("AP")instanceof Dict&&h.push(w);f&&!w.has("Q")&&w.set("Q",f)}for(const e of c){if(!isName(getInheritableProperty({dict:e,key:"FT"}),"Tx"))continue;getInheritableProperty({dict:e,key:"DA"})||e.set("DA",o)}const u=new Map,fixAppearanceResources=async e=>{let t=e.dict.getRaw("Resources");t&&=this.xrefWrapper.fetchIfRef(t);if(!(t instanceof Dict)){const t=await u.getOrInsertComputed(l,()=>this.#Un(l,s));e.dict.set("Resources",t);return}for(const[e,n]of l.getRawEntries()){if(t.has(e))continue;let a=n;n instanceof Ref?a=await this.#Wn(n,!0,s):(n instanceof Dict||n instanceof BaseStream||Array.isArray(n))&&(a=await u.getOrInsertComputed(n,()=>this.#Un(n,s)));t.set(e,a)}};for(const e of h){const t=e.get("AP");for(const[,e]of t)if(e instanceof BaseStream)await fixAppearanceResources(e);else if(e instanceof Dict)for(const[,t]of e)t instanceof BaseStream&&await fixAppearanceResources(t)}}async#sa(){if(!this.isSingleFile)return;const e=this.oldPages.find(e=>!!e);if(!e)return;const{documentData:{document:t,pageLabels:n}}=e;if(!n)return;const a=t.numPages,s=new Map,r=new Set(this.oldPages.filter(Boolean).map(({page:{pageIndex:e}})=>e));let i=null,o=-1;for(let e=0;e{const t=new Dict;t.setIfName("S","D");t.set("St",e+1);return t};i=null;const l=this.pageLabels=[];for(let e=0,t=this.oldPages.length;ee!==c[t])&&p.set(e,n)}const g=t.userUnit;1!==g&&p.set("UserUnit",g);p.setIfDict("Resources",await this.#Wn(h,!0,l));let b=null;if(a){const e=await this.#Wn(a,!0,l);this.#ba(e,i);Array.isArray(e)&&e.length>0&&(b=e)}const w=n.document===this.#zn?this.#_n?.newAnnotationsByPage?.get(t.pageIndex)?.filter(({copyLevel:e})=>(e??0)===r):null;if(w?.length){const{handler:e,task:n,imagesPromises:a}=this.#_n,s=new RefMap,r=await AnnotationFactory.saveNewAnnotations(t._createPartialEvaluator(e),this.xrefWrapper,n,w,a,s);for(const[e,{data:t}]of s.items())this.xref[e.num]=t;b||=[];for(const{ref:e}of r.annotations)b.push(e)}p.setIfArray("Annots",b);if(this.useObjectStreams){const e=this.newRefCount,t=[];for(let n=d;nt.count||n.count===t.count&&n.width*n.height>t.width*t.height)&&(t=n);return{width:t.width,height:t.height}}async#fa(e,t){const{width:n,height:a}=t,s=.1*n,r=Math.max(1,n-2*s),i=Math.max(1,a-2*s),o=this.newRefCount,{imageStream:l,smaskStream:f,width:c,height:h}=await createImage(e,this.xrefWrapper,{closeBitmap:!0}),u=Math.min(r/c,i/h),m=c*u,p=h*u,d=(n-m)/2,g=(a-p)/2;if(f){const e=this.newRef;this.xref[e.num]=f;l.dict.set("SMask",e)}const b=this.newRef;this.xref[b.num]=l;const w=new Dict(this.xrefWrapper);w.set("Im0",b);const j=new Dict(this.xrefWrapper);j.set("XObject",w);j.set("ProcSet",[Name.get("PDF"),Name.get("ImageC")]);const k=`q ${numberToString(m)} 0 0 ${numberToString(p)} ${numberToString(d)} ${numberToString(g)} cm /Im0 Do Q`,y=new StringStream(k,new Dict(this.xrefWrapper)),q=this.newRef;this.xref[q.num]=y;const v=this.newRef,S=this.xref[v.num]=new Dict(this.xrefWrapper);S.setIfName("Type","Page");S.set("MediaBox",[0,0,n,a]);S.set("Resources",j);S.set("Contents",q);if(this.useObjectStreams){const e=this.newRefCount,t=[];for(let n=o;n0;){const{dict:e,kids:t,parentRef:n}=s.pop();if(t.length<=16){e.set("Kids",t);for(const e of t)this.xref[e.num].set("Parent",n);continue}const a=Math.max(16,Math.ceil(t.length/16)),r=[];for(let e=0;eet?1:0:([e],[t])=>e-t),[a,s]=this.newDict,r=[{dict:s,entries:n,isRoot:!0}],i=t?"Names":"Nums";for(;r.length>0;){const{dict:e,entries:t,isRoot:n}=r.pop();if(t.length<=64){n||e.set("Limits",[t[0][0],t.at(-1)[0]]);e.set(i,t.flat());continue}const a=[],s=Math.max(64,Math.ceil(t.length/64));for(let e=0;e[stringToAsciiOrUTF16BE(e),t]),!0))}}#Ba(){const{structTreeKids:e}=this;if(!e?.length)return;const{rootDict:t}=this,n=this.newRef,a=this.xref[n.num]=new Dict;a.setIfName("Type","StructTreeRoot");a.setIfArray("K",e);for(const t of e){const e=this.xref[t.num],a=e.get("Type");a&&!isName(a,"StructElem")||e.set("P",n)}if(this.parentTree.size>0){const e=this.#Ta(Array.from(this.parentTree.entries()),!1);this.xref[e.num].setIfName("Type","ParentTree");a.set("ParentTree",e);let t=0;for(const e of this.parentTree.keys())t=Math.max(t,e+1);a.set("ParentTreeNextKey",t)}if(this.idTree.size>0){const e=this.#Ta(Array.from(this.idTree.entries()),!0);this.xref[e.num].setIfName("Type","IDTree");a.set("IDTree",e)}if(this.classMap.size>0){const e=this.newRef;this.xref[e.num]=this.classMap;a.set("ClassMap",e)}if(this.roleMap.size>0){const e=this.newRef;this.xref[e.num]=this.roleMap;a.set("RoleMap",e)}if(this.namespaces.size>0){const e=this.newRef;this.xref[e.num]=Array.from(this.namespaces.values());a.set("Namespaces",e)}if(this.structTreeAF.length>0){const e=this.newRef;this.xref[e.num]=this.structTreeAF;a.set("AF",e)}if(this.structTreePronunciationLexicon.length>0){const e=this.newRef;this.xref[e.num]=this.structTreePronunciationLexicon;a.set("PronunciationLexicon",e)}t.set("StructTreeRoot",n)}#Da(){if(0===this.fields.length)return;const{rootDict:e}=this,t=this.newRef,n=this.xref[t.num]=new Dict;e.set("AcroForm",t);n.set("Fields",this.fields);this.acroFormNeedAppearances&&n.set("NeedAppearances",!0);this.acroFormSigFlags>0&&n.set("SigFlags",this.acroFormSigFlags);n.setIfArray("CO",this.acroFormCalculationOrder);n.setIfDefined("DR",this.acroFormDefaultResources);this.acroFormDefaultAppearance&&n.set("DA",this.acroFormDefaultAppearance);this.acroFormQ>0&&n.set("Q",this.acroFormQ)}async#Ma(){const{rootDict:e}=this;e.setIfName("Type","Catalog");e.setIfName("Version",this.version);this.#Da();this.#Fa();this.#Ra();this.#Oa();this.#Ha();this.#Ba();await this.#ya()}#Na(){const e=new Map;if(this.isSingleFile){const t=this.oldPages.find(e=>!!e),{xref:{trailer:n}}=t.documentData.document,a=n.get("Info");for(const[t,n]of a||[])"string"==typeof n&&e.set(t,stringToPDFString(n))}e.delete("ModDate");e.set("CreationDate",getModificationDate());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[t,n]of e)this.infoDict.set(t,stringToAsciiOrUTF16BE(n));return e}async#Pa(){if(!this.isSingleFile)return[null,null,null];const e=this.oldPages.find(e=>!!e),{documentData:t}=e,{document:{xref:{trailer:n,encrypt:a}}}=t;if(!n.has("Encrypt"))return[null,null,null];const s=n.get("Encrypt");if(!(s instanceof Dict))return[null,null,null];this.currentDocument=t;const r=[await this.#Un(s,n.xref),a,n.get("ID")];this.currentDocument=null;return r}async#Ea(){const e=new RefMap;e.put(Ref.get(0,65535),{data:null});for(let t=1,n=this.xref.length;t{this._contentLength=e.contentLength;this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._headersCapability.resolve()},this._headersCapability.reject)}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader extends BasePDFStreamRangeReader{_reader=null;constructor(e,t,n){super(e,t,n);const{msgHandler:a}=e._source,s=a.sendWithStream("GetRangeReader",{begin:t,end:n});this._reader=s.getReader()}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class WorkerTask{#Ua=Promise.withResolvers();terminated=!1;constructor(e){this.name=e}get finished(){return this.#Ua.promise}finish(){this.#Ua.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}class WorkerMessageHandler{static{"undefined"==typeof window&&!e&&"undefined"!=typeof self&&"function"==typeof self.postMessage&&"onmessage"in self&&this.initializeFromPort(self)}static setup(e,t){let n=!1;e.on("test",t=>{if(!n){n=!0;e.send("test",t instanceof Uint8Array)}});e.on("configure",e=>{!function setVerbosityLevel(e){Number.isInteger(e)&&(nn=e)}(e.verbosity)});e.on("GetDocRequest",e=>this.createDocumentHandler(e,t))}static createDocumentHandler(e,t){let n,a=!1,s=null;const r=new Set,i=getVerbosityLevel(),{docId:o,apiVersion:l}=e,f="6.3.289";if(l!==f)throw new Error(`The API version "${l}" does not match the Worker version "${f}".`);const buildMsg=(e,t)=>`The \`${e}.prototype\` contains unexpected enumerable property "${t}", thus breaking e.g. \`for...in\` iteration of ${e}s.`;for(const e in{})throw new Error(buildMsg("Object",e));for(const e in[])throw new Error(buildMsg("Array",e));const c=o+"_worker";let h=new MessageHandler(c,o,t);function ensureNotTerminated(){if(a)throw new Error("Worker was terminated")}function startWorkerTask(e){r.add(e)}function finishWorkerTask(e){e.finish();r.delete(e)}async function loadDocument(e){await n.initDocument(e);const t=await n.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaResources");startWorkerTask(e);await n.ensureDoc("loadXfaResources",[h,e]);finishWorkerTask(e)}const[a,s]=await Promise.all([n.ensureDoc("numPages"),n.ensureDoc("fingerprints")]);return{numPages:a,fingerprints:s,htmlForXfa:t?await n.ensureDoc("htmlForXfa"):null}}async function getPassword(e){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);try{return(await h.sendWithPromise("PasswordRequest",e)).password}finally{Promise.resolve().then(()=>{finishWorkerTask(t)})}}function setupDoc(e){function onSuccess(e){ensureNotTerminated();h.send("GetDoc",{pdfInfo:e})}function onFailure(e){a||(e instanceof PasswordException?getPassword(e).then(e=>{n.updatePassword(e);pdfManagerReady()}).catch(()=>{h.send("DocException",e)}):h.send("DocException",wrapReason(e)))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,function(e){ensureNotTerminated();e instanceof XRefParseException?n.requestLoadedStream().then(function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)},onFailure):onFailure(e)})}ensureNotTerminated();(async function getPdfManager({data:e,password:t,disableAutoFetch:n,rangeChunkSize:a,docBaseUrl:r,enableXfa:i,evaluatorOptions:l}){const f={source:null,disableAutoFetch:n,docBaseUrl:r,docId:o,enableXfa:i,evaluatorOptions:l,handler:h,length:0,password:t,rangeChunkSize:a};if(e){f.source=e;return new LocalPdfManager(f)}const c=new PDFWorkerStream({msgHandler:h}),u=c.getFullReader(),{promise:m,resolve:p,reject:d}=Promise.withResolvers();let g,b=[];s=e=>c.cancelAllRequests(e);u.headersReady.then(()=>{if(u.isRangeSupported){f.source=c;f.length=u.contentLength;f.disableAutoFetch||=u.isStreamingSupported;g=new NetworkPdfManager(f);for(const e of b)g.sendProgressiveData(e);b=null;p(g);s=null}}).catch(e=>{d(e);s=null});(async function readData(){let e=0;for(;;){const{value:t,done:n}=await u.read();ensureNotTerminated();if(n)break;e+=t.byteLength;u.isStreamingSupported||h.send("DocProgress",{loaded:e,total:u.contentLength});g?g.sendProgressiveData(t):b.push(t)}if(!g){f.source=arrayBuffersToBytes(b);b=null;g=new LocalPdfManager(f);p(g)}s=null})().catch(e=>{d(e);s=null});return m})(e).then(function(e){if(a){e.terminate(new AbortException("Worker was terminated."));throw new Error("Worker was terminated")}n=e;n.requestLoadedStream(!0).then(e=>{h.send("DataLoaded",{length:e.bytes.byteLength})},()=>{})}).then(pdfManagerReady,onFailure)}h.on("GetPage",async function({pageIndex:e}){const t=await n.getPage(e),[a,s,r,i]=await Promise.all([n.ensure(t,"rotate"),n.ensure(t,"ref"),n.ensure(t,"userUnit"),n.ensure(t,"view")]);return{rotate:a,ref:s,refStr:s?.toString()??null,userUnit:r,view:i}});h.on("GetPageIndex",function({num:e,gen:t}){return n.ensureCatalog("getPageIndex",[Ref.get(e,t)])});h.on("GetDestinations",function(){return n.ensureCatalog("destinations")});h.on("GetDestination",function({id:e}){return n.ensureCatalog("getDestination",[e])});h.on("GetPageLabels",function(){return n.ensureCatalog("pageLabels")});h.on("GetPageLayout",function(){return n.ensureCatalog("pageLayout")});h.on("GetPageMode",function(){return n.ensureCatalog("pageMode")});h.on("GetViewerPreferences",function(){return n.ensureCatalog("viewerPreferences")});h.on("GetOpenAction",function(){return n.ensureCatalog("openAction")});h.on("GetAttachments",function(){return n.ensureCatalog("attachments")});h.on("GetAttachmentContent",async function(e){let t;for(;;){const a=t?await getPassword(t):null;try{a&&n.updatePassword(a);return await n.ensureCatalog("attachmentContent",[e])}catch(e){if(e instanceof PasswordException){t=e;continue}throw e}}});h.on("GetDocJSActions",function(){return n.ensureCatalog("jsActions")});h.on("GetPageJSActions",async function({pageIndex:e}){const t=await n.getPage(e);return n.ensure(t,"jsActions")});h.on("GetAnnotationsByType",async function({types:e,pageIndexesToSkip:t}){const[a,s]=await Promise.all([n.ensureDoc("numPages"),n.ensureDoc("annotationGlobals")]);if(!s)return null;const r=[],i=[];let o=null;try{for(let l=0,f=a;lt.collectAnnotationsByType(h,o,e,i,s)))}await Promise.all(r);return(await Promise.all(i)).filter(Boolean)}finally{o&&finishWorkerTask(o)}});h.on("GetOutline",function(){return n.ensureCatalog("documentOutline")});h.on("GetOptionalContentConfig",function(){return n.ensureCatalog("optionalContentConfig")});h.on("GetPermissions",function(){return n.ensureCatalog("permissions")});h.on("GetMetadata",function(){return Promise.all([n.ensureDoc("documentInfo"),n.ensureCatalog("metadata"),n.ensureCatalog("hasStructTree")])});h.on("GetMarkInfo",function(){return n.ensureCatalog("markInfo")});h.on("GetData",async function(){return(await n.requestLoadedStream()).bytes});h.on("GetAnnotations",async function({pageIndex:e,intent:t}){const a=await n.getPage(e),s=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(s);try{return await a.getAnnotationsData(h,s,t)}finally{finishWorkerTask(s)}});h.on("GetFieldObjects",async function(){const e=await n.ensureDoc("fieldObjects");return e?.allFields||null});h.on("GetSignatures",function(){return n.ensureDoc("signatures")});h.on("GetSignatureData",function(e){return n.ensureDoc("getSignatureData",[e])});h.on("HasJSActions",function(){return n.ensureDoc("hasJSActions")});h.on("GetCalculationOrderIds",function(){return n.ensureDoc("calculationOrderIds")});h.on("ExtractPages",async function({pageInfos:e,annotationStorage:t}){if(!e){warn("extractPages: nothing to extract.");return null}Array.isArray(e)||(e=[e]);let a,s=0;for(const t of e)if(!t.image)if(null===t.document)t.document=n.pdfDocument;else if(ArrayBuffer.isView(t.document)){const e=new LocalPdfManager({source:t.document,docId:`${o}_extractPages_${s++}`,handler:h,password:t.password??null,evaluatorOptions:Object.assign({},n.evaluatorOptions)});let a=!1,r=!0;for(;;)try{await e.requestLoadedStream();await e.initDocument(a);break}catch(t){if(t instanceof XRefParseException){if(!1===a){a=!0;continue}r=!1;warn("extractPages: XRefParseException.")}else if(t instanceof PasswordException)try{const n=await getPassword(t);e.updatePassword(n)}catch{r=!1;warn("extractPages: invalid password.")}else{r=!1;warn("extractPages: invalid document.")}if(!r)break}r||(t.document=null);if(await e.ensureDoc("isPureXfa")){t.document=null;warn("extractPages does not support pure XFA documents.")}else t.document=e.pdfDocument}else warn("extractPages: invalid document.");try{const s=new PDFEditor;a=new WorkerTask(`ExtractPages: ${e.length} page(s)`);startWorkerTask(a);return await s.extractPages(e,t,n.pdfDocument,h,a)}catch(e){warn(`extractPages: "${e}".`);return null}finally{a&&finishWorkerTask(a)}});h.on("SaveDocument",async function({isPureXfa:e,numPages:t,annotationStorage:a,filename:s}){const r=[n.requestLoadedStream(),n.ensureCatalog("acroForm"),n.ensureCatalog("acroFormRef"),n.ensureDoc("startXRef"),n.ensureDoc("xref"),n.ensureCatalog("structTreeRoot")],i=new RefMap,o=[],l=e?null:getNewAnnotationsMap(a),[f,c,u,m,p,d]=await Promise.all(r),g=p.trailer.getRaw("Root")||null;let b;if(l){d?await d.canUpdateStructTree({pdfManager:n,newAnnotationsByPage:l})&&(b=d):await StructTreeRoot.canCreateStructureTree({catalogRef:g,pdfManager:n,newAnnotationsByPage:l})&&(b=null);const e=AnnotationFactory.generateImages(a.values(),p,n.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===b?o:[];for(const[a,s]of l)t.push(n.getPage(a).then(t=>{const n=new WorkerTask(`Save (editor): page ${a}`);startWorkerTask(n);return t.saveNewAnnotations(h,n,s,e,i).finally(()=>{finishWorkerTask(n)})}));null===b?o.push(Promise.all(t).then(async()=>{await StructTreeRoot.createStructureTree({newAnnotationsByPage:l,xref:p,catalogRef:g,pdfManager:n,changes:i})})):b&&o.push(Promise.all(t).then(async()=>{await b.updateStructureTree({newAnnotationsByPage:l,pdfManager:n,changes:i})}))}if(e)o.push(n.ensureDoc("serializeXfaData",[a]));else for(let e=0;e{finishWorkerTask(n)})}));const w=await Promise.all(o);let j=null;if(e){j=w[0];if(!j)return f.bytes}else if(0===i.size)return f.bytes;const k=u&&c instanceof Dict&&i.values().some(e=>e.needAppearances),y=c instanceof Dict&&c.get("XFA")||null;let q=null,v=!1;if(Array.isArray(y)){for(let e=0,t=y.length;e{p.resetNewTemporaryRef()})});h.on("GetOperatorList",function({pageId:e,pageIndex:t,intent:a,cacheKey:s,annotationStorage:r,modifiedIds:o},l){n.getPage(e).then(function(e){const n=new WorkerTask(`GetOperatorList: page ${t}`);startWorkerTask(n);const f=i>=he?Date.now():0;e.getOperatorList({handler:h,sink:l,task:n,intent:a,cacheKey:s,annotationStorage:r,modifiedIds:o,pageIndex:t}).then(e=>{f&&info(`${n.name}; time=${Date.now()-f}ms, len=${e.length}`);l.close()},e=>{n.terminated||l.error(e)}).finally(()=>{finishWorkerTask(n)})})});h.on("GetTextContent",function({pageId:e,pageIndex:t,includeMarkedContent:a,disableNormalization:s},r){n.getPage(e).then(function(e){const n=new WorkerTask("GetTextContent: page "+t);startWorkerTask(n);const o=i>=he?Date.now():0;e.extractTextContent({handler:h,task:n,sink:r,includeMarkedContent:a,disableNormalization:s}).then(()=>{o&&info(`${n.name}; time=${Date.now()-o}ms`);r.close()},e=>{n.terminated||r.error(e)}).finally(()=>{finishWorkerTask(n)})})});h.on("GetStructTree",async function({pageIndex:e}){const t=await n.getPage(e);return n.ensure(t,"getStructTree")});h.on("FontFallback",function({id:e}){return n.fontFallback(e,h)});h.on("Cleanup",function(){return n.cleanup(!0)});h.on("Terminate",async function(){a=!0;const e=[];if(n){n.terminate(new AbortException("Worker was terminated."));const t=n.cleanup();e.push(t);n=null}else clearGlobalCaches();s?.(new AbortException("Worker was terminated."));for(const t of r){e.push(t.finished);t.terminate()}await Promise.all(e);h.destroy();h=null});h.on("Ready",function(){setupDoc(e);e=null});return c}static initializeFromPort(e){const t=new MessageHandler("worker","main",e);this.setup(t,e);t.send("ready",null)}}globalThis.pdfjsWorker={WorkerMessageHandler};export{WorkerMessageHandler}; \ No newline at end of file diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb b/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb new file mode 100644 index 0000000000000000000000000000000000000000..30d52963e281dcd7e6dd70555340fc987d3568ef GIT binary patch literal 29513 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 DiyeX$ literal 0 HcmV?d00001 diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb b/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb new file mode 100644 index 0000000000000000000000000000000000000000..cf8e24aee5962ebcf7e4d58d932cc3321f3cdd38 GIT binary patch literal 18055 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 aP{6{BWwy2LU5CmZYCDT$C?nq``+oq(ZGoi# literal 0 HcmV?d00001 diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb b/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb new file mode 100644 index 0000000000000000000000000000000000000000..d2880017c25716417f837a1c26044a0342fa3f9a GIT binary patch literal 19151 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 M96+?GEz$me0Iy=aZvX%Q literal 0 HcmV?d00001 diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb b/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb new file mode 100644 index 0000000000000000000000000000000000000000..d71697d4b638737a5545dd0cb28cba8f613e4eec GIT binary patch literal 18746 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 literal 0 HcmV?d00001 diff --git a/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb b/bundled-addons/pdf-editor/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb new file mode 100644 index 0000000000000000000000000000000000000000..ff7c6ddecf6b689d93823c4c2a8c41e6e058de46 GIT binary patch literal 19395 zcma&OcYG5^7dE=Gyt`(Vh~PyAR@oIL^d5TXgx-5I27`@zFOqxja__zOBHJ|EnBGFK z36KB@EeT0TNFh1$JI?#vBg1>|@7}*|92;q8cV>3x%*;8@^UTO7b2CaNlkuNB`FOf- zIq2i;uwm=+iAy})>`j+P89$ZTFh>leP#C4?6ujSatrxK@%k^@|E%}^8NBadAK}Y zo+i(gm&gyvkIB!-FUfDozmh+azmfmfyr20%bG7+I^BLxg%~zPOGv90OX&z{vXr6Cg zV{R}%Y~E>p$^1+6XXd|||6%?&Eu$6m0D2HTlpasdq!-gG>2>rbdMmw`cA|ag5IT-d zrwi#)x{hw6yXZ6YCHfkDOZ6EylnZxHh}#xDWU4ri^B${S9gx?dfjIWJBkp8Co~9Lk zaAe3wAqRZMtHGT;R#JKn)R%q8@Jh)5HoaeM5ql%qb#6tQVR;Pg<$wtL+QMsP`70ky@;uMbc zeq4QhYpch8&SSr*n9gbDhzk3(=!!bCx=!JwbHe7Sz6lav1G zZAk$u!AA8H#Q#p>X{E|DBWwR1b!S^ubDc(UrUB^roMLO5UFtQ#XwTm2PClL@85Das z(CbEXifn;DF_+_$KjD<)xY(@N%xpnnHBMCe7SMhHPWv{hC;0#IG(n?Szjno0ectK9 z_7cTh?h{UNP=xSh92vP!R1^wzc^S7Q19{=Zo=T{)O^<>#gUiXa4^C)u*pst$jLb)Y_SoBv4wN z)W11;R6lyxF8%2J`}J>5N(wR%l7kE9i$r8+`z9`rkrdNJ8%G5hZcBK(5!j+fnUdt9 z`X;qPO*VUzkJsDiXTZWa8W_CxxbI3KENTq-fbjc({#_^8GYVLH4L*DUvV|9&i!~$| z*no<&!u4|vr-3_3*kvVBJEM?VNUAei9iOhx^RrNpeWCYYLmNzQRMZr83Fr4zty{2b z`@sOIEQT)3sWh~!yUV?uwr&q`i_$2za>m^{#VQeEbotz%b)2GwjK{2!8uYG$LT@ns zX;9=w({_i_9?VM5U=D-Pl3KU_XgJ|lU80?&J*f}=o3H6l%IKZU|Bsh?f(qFu*eS2bL+SVKhvI(F(E+e`Y9PKmLqW7-Vn5 z#ZoKdedY-0Xb*1%x@UK9Nyc zFSP>t=UY^=3dcJ4*4EmF)>f}NM@LUjEY`6$QuM;%xibI9Uo%S@z1C>1=&GrRnAb; z$nHsTQ>4X41cpULNMs+GO)CrmszXdsT6#&jI$v?I`}n1c)+aV?+HJj2F^N;cOu2$g zAydf*Ai-=&;m6hCn|SW$6#5pU#Z7FXr8=1cH2l*ds{#%`pc!aLe?ZgF!(z8aw2WbB zljT}?r3JGlMdCfO#To4yrx3+`y+IKxDJznaTCb^LQKf=pkV)E}e=$QQ#?5opR;_b{ zVw-;V`K&MW*X}94Odm6AO9D~PQIMNt?6ID}V=~jH(b}Fr@rjLMfp;c4@JdNxCT;b6t0C- zDMb}gR24-9QNtgKC)F*ZPE*uL zimIom6pFe)QD@DlixgEtQ8^TKjiN5gs2db@m7=awR60f7q^P?Tb;}IbT=#x0-9+R1d7|t(vWV88l*0?4YNE?FKgwK0Wx&5Vs*e4Ec{RQt%Vf zgm2Zu)Lv@i$1UPeu}nNGWl5!)A)0i}Ma}m^1BWIJJva3K44X1+(=hj8uZNEr{^{@? z!y|@w4u3gf@Ce%x`JX605kHyy$>L8!J}LX;>yZJYm{FFahL4&#%662~D9=$LqYR^Z zN6#3&W3$X6KW6;$@u?F&pHMd8 z$b_pCexBHW;@F8RC%R8epF~gEG^uJ*`=nEoewxfoo;~^eBFYanQlKlcKY=h)QmYZHqWq~;WZ;?M#YS_ z8DG!%YvuVOmL9hjx6XR^P~{UW!+qU=do%{k$kbL-9>E{Lx%U= zw2Ikd`ob|uYv?~2S2CU+!z8VypD~ZGtD5jR7|A%}Mdf^L&-XgZ$3LGq{}Y%Ef{F$e zc(E5<3;~;jNvp!W;w0jmue#?^7jY}WV$8YUSU%wQ;y+qplmN;JCkb^<0$28z;PT>054O%{XT^`&O8N=pL!dX_b&^OLyESKTy(0{COBoDvAxjmJHoxkw zaHYHKNVcSezeBsAuq)sc1YkV0-f&=m%Sy<;LG&_G0nh;qZL1*rgR=eelBt zzZ>r~TVCm#fIrdyejh&JLyVsHRD0Sl9k`-yYbj}O*YIJ*#WiP=lXZE6{lj&^KI%Pg zZD;pu&fd<=J@>M>wlKRh&7y@kIJ2i?3lbd!>wWuN?IkiETs>WT~bq}fqxOnZ@x96o=cB>EBPZ-iE%&8-O5JCo+?#30I zme-PDDlhh2HM$7{pi_9_3C<)021uUl>y0PZlWKunT(fQV7Hsu;?OSb?7W!*(jj#lp z-}n;{Yuu*tObCbzl_FfUvG#&fnU-?DFhli`?>pf_kCFyUg3yH^AMkFeJ}c$_`5RcNAh0Jo7_~ z!;6MA`^GizREN1mI5-tX*2HN_5-O6aQU;#)_4zwjFWdoyTN{44Mv+H0T%pG(9C zyw?zK;=$ltK&C}=htMZ_dW=k0<>_d2;@SC}jidXHwOzq=5`VkTfu6My9cY|3U?Et@ zI$)s+;=zK%n=%N?;_e<0d+8Ky&l;TphxVD60M$K)FNc7h-Sk{W8CKUbq)t`^pTfuR zsT@{=j|u|WZ}nh#v%7o~884AQc3v78`1y|DYcN70pMsf+*!)U9fq^je8O*_mBZer! zV)!WX(Fl?*DfKNq!*Lv~hcWW&R>luom@!ecH#No!K`copGTNKXZ)wRZP#@Co^U?Gw z*mZFSi3L6dLyQ*M?}3rQ8TeRUY-OCzbb=%8%&hQ?iX5gU!x*TCBK?DU0Va_ChIM4v zMlyP{PO4+RYrB$Bss6KQv?t-nhh#9BNfv9Ap(l627^C}ROLSxzz6~aVQT4zZ2J9z8 zgsD3`tlj-8t9&HhtJ>S6##Zg>?&q@huE!&Mn-9^m8hYRM-n@EENA02Nhr+ARkB%qY zf~jjgr1EgOs?hMoZS|MU`!-IQ<6|A7F-@MIfE;dVL4&Vd0VCw4@QDhNv4uv$Cs#qf z*0^jcGnFXGM`Z4&WVpqVL>1VwA{H1_+N?>q(HsqV!+h`Z@- zamMfLuJyv4RsPOy?&am~5+6|E=342bwheIg+2paI%%G7DxI8O+dkjAHRkHuh!g| zaZ2L9JXi9#;i+(8$4@v(PTx9n((G&N@9&o?0`aL^d#~Hh5xirje7f52#=S4g8yh+$ zWtJAoI^n;yvKp9xO)*v87^VUoPQzg-RNmrcmWgiFvk*a+&1g!-r6Srgs+ENGnaAM{KL* z1sLQE^Sxj!&P=`#tZHDM7p8xEN;=bgr2Cox)5xq`H!|COGB{in)~HUULmZZ4AOM8F zU>vOdhm0ZpH2indb`iyV+q4tKsnQL|rM6I=&NUO=r1sa|r=68JRlcme) z$4}-KTPW9vmf5iHU?Kl|w$*1CwGQQI{`Yr?l?DH5s#vB!3TGRj=&p5DouBf!m(S z^`?6r$RvzP_mK@Sh|Gpi82IJYZ@<(ilSHRZ<98jFuVE(Sz!JU_!{plxq~jo+jT6VD zDX=6*jPFQXFZ8;z4myvu5+vSG8Qs}rk!+iy;R9kgNm-^p0!Lb)q5~UfCd{k>rg~73 z)jTfve^6ft``f8LsILZo@HRnxJ55lZ-Fv9-Zior$t2RM>4F8c6i-1VtDpPsu+%h)n zMMu2>j<>)N?L{qo&>=GwF|iuhDme!Ky@)NO+C|?GAe05mq9t>3HP!Hg4>LD3WI6fh z9h#Vp(_!uQ5fxGumT=99Ii7F?@s{2I%svydHvuvbWq^%Zux(DzS+*f!avG-a{}`u0 zy6Sd(Q|KCDHftN~K8Ej?Vr|5M;*U9(zE+|U+h zl3ip8D9JKNeGUWaTDmpBvrnpGu4E#t_6w_oLAc(0a~#SIvcK__V#CF9EBM~PY|n5= zyDWeg#1b!dy+i!=Sjh=q8QATaPHA75;J)jfsmD?=k5^7?M?x326c!WmB*+s&+U1k0r`~9~D<={j=?oarr@U3Lr%ieCvzL186yfwYRdR!~| zg^LaE>fKjASkKm0!)oGwbXQF9)Z`&f@Y2BQl0#EMO2|c{`Cym_i@FcJ&9E?#qfRVP zNpUXQwh?z?KNwutXD!j^Oqu^+vVkLE*h#x^6vS`U;}ASzd~GW($rX(U*jtSSckr%1 zoY>AI!K*aA2iW!dGxq5@IEet2R#Qg4Esz zbS(p^#vkaE-T-EmN5TeE3qLimtFrw=9|^`a?6ann^QL;Fv;1wcr`L__F}l$t!-=^Y zR}#8I=(T1yg@w%5bN5rVhqT6{TIgr6{Hw$Gc?TcjBl0I^amr1itPgox$&r--90{H$ z!mzy@{vymtJS3$f_WgMSbal$!VBdcRi%iD++`uf)4v2m%U?ZBY9mBqwPga-A)sXv6 z%$c~xxC5q9G1Wc`7o#LNuYz2*A~`?5Mg64J6W#ca_Ii*HQ#9ByIA3he5)nVFNmLOH z(0@BUQ{OmSR@knIt(xdQxq2H|41w{7{s2o@BA~-M1BPPFcoIwoJ|xp%hPAXFULf$e z!a*b}u>K*4K88G(l=sWEJs)&987wihnh9%QA^#AU(_ax2W*gH}a?hzB9dQ{&takX5 zK}i~tN-*UI1B30F`UqdDmIXUc3csTj`OiK$+HCVh$ZXb)Fp1{oLwRcLMj#;+>Q=a-(#9AY5O_oBislRG6x|dGuv6#Yynhh2h(Pn6kp<398*_;Vc)iJQz=tO5SFt69i zWW#%mFZ0?estl=^>1rpoCDD*{KprQNUVs1pfzhTB; z(vMs;-O}G^k&v7#wAH1wnks!9Cyv;h$YN^?<$WC5MLi2mR+(yGoKm-?83Y7de z%X5Px1uxIU9SQFyCeM`MlA-@ef%zx>HTFQ(cmq;HA$&+x%1_GMJYT zpD)yx=`Wey^EWIlvDl~F4R({3!DJ3`Jh07L?~^#BuW)EY0~0|hcNSB=6<~=2cPl)| zgUlx7gO`ZPWKK4RQ)Y-a|B@rHse-U$bD7;q8Vcxvcf8v~4@3E$mW}PZ}jEr-U{|YK=?J z!akklJ;Wtu!Dv3@UYIJ6`Q|*$pV-@VD7;Y(a~=W>JPcZnk)dL_ovK6UbzkVsI1vZ`M|>x)ax#^d zueZl$_55{5VQ8}E@8pc%zg8F4M7iU@N)u7!sC9%F%FkT_9&g{AP@}%toSI=606 zPaLy^EFq(QocQhiy1MpOEGgj&RfNMvo4FXTUVL5f)7|qG>yxk>M5I~J6)~vzryw;{ zv^@$Xj7_pcR1PXgXZYXG2BX8c1moxNB0A*=vGX0bU?#%ocM)PY&Hs%p%<7b&!eatF zc-}D`lx%I>$?m+WgkUMeKiEs)U+IdSj~=e9HQZj*xSp&^B16VWoA+HH518$K3C{7@ zS_j}WGO-C{pm<&fZfBwzE$d#)gMOqR8mJ1?&foAsL*WBE)s{F%Z##hx9J=KzdqkfG zz~EZ^M^4zB-N_OkxQJ*{ypvmmhPJZO*Lr<+y>zd#`O0PC3-{8<90~Jya)u0I`0O)9 zc8(d2Y9g+hHTU!G-CucW5?R~u#rA839nB$~!KOPKLshVtIb9dxxRgkGyP!!)*DA7$ zYRWad-sU*3$1!Jv z?Oqqh{e7{}KA2&=50fo_#*ltAHvH|2#)T?_iC7Ke_D4J0C3qwkWo71M?##rHkW!J0G}b3rohBYRo?=}B~OZ5y!&0~XtCmWpEZvCDJO>Y?M8*QRHdTB&GtaO%VF|f77*S>8Z*;ubJ zev`uWhUFn_7$vUN-qV?k3#2XFKqY?@r^uKV#y%|usbJ*fvJRg-c22+3RU#p*pWe+n z;a!~$rbbmX^`##@dGxG)2gb!Atgqf}cOs@owXnOA^^FM3#j;>FuW{?9y`CHQN=+d? z=ccInQ?vGM@D0@@i1qO`2|EN*%kK7%bJ2^~rG0g|fmIz8EAm&-e~fKm_)EJm0KIZH zd8?;p1DB$2tP-@G#2=q&`z{y$(&5y~^_ou=+Lw27cRBYiFlf(p#r;g0dFYF*6{wTQGhb!p`4JH#xdh?@*I* zGsyr%ix$3I@}~YoZs!pVnau7DOxzl2n&$K^a2!T1)7EIe(pi3sc3E6+1*I*_`qc2u zlLG8!zwD?eEY1oH&X@QLVYvn2HR_WEM{24<&aTk#&8zoraMNlMzag7^nTGhPxLpEi zV|V$-yXr-f8`=`CgNha-7hYQ(rZO;PIT=~G>Xh`vgbWRTEV|SX+@^l@ z@Y2tZHn(oB)oiF=S9)4#tgdOjaKv_LxhZ@wz(`j%Iw3whP#qnSmL7&rWd!+WdaEZd z-#BgYd54Q0nk#PCwAO;Vuj4Kvk9b=fD;>o3=Vtg__)iDS*IAxH3-|!v?sxbCsn;xMteELhN@~9m~ONxJ6VuYl{#ddIGecB)4)xinkH11B{!$8 z6qWZgweV02i*z#MZBWZ0AXHVwAo_NmPG{bb^K>Nxla1=)j)IiZv>`1-?abCClqI?f z{yT}xYoV0L1b)3AJ}4K;D^hAwkev^6W~&l%_1W6=@QlbD=M`k(;9Vd%-zXPqs!|F} zclbE7HF4>wHLFdWhjC$xtib3Z$Ju^<3lo%VonBaGQCNQcd%d7PJG0zP$_{gl@lUdF z#__?1rA4Pkc}ZF!RG+hWf)rA^i8B^tbY}WR@zNg&|)TfKr25-ze*RUMfv5)iq-Lyn=-f=a-Qo zQaJlKwAyC5fEh0>_I@2GC9>lJgY1@?s<+I?{<9DqSUfC->9Ts`0r_=UtTGf;wRNc5 z8^c2CH397gZI}8=bH~vJjpH5K$q7GR25B2q4FRW>HI(53) zaP6{hwg2Bz)RE{jG54@1kX9d!c$^l7Hv+4Zoq=KKBK4PpKMYjq+9OU~5Sr5A<448S z;qFobOSbg3s176LHH3~UDo!j>H$T_^c1IIff&v*&uMKKfuly>1%@YWsLvxE`i_~dX z^w*Af)jO7Gy5VEm4nfiWbb5d;H9$?w$VYR?T*97Ta?cI1>P9!P9HE6lUGT|ubg^fnX z_(CUGSS2*)ws&^uox>%5e#ETAYM&PM>C%?=JpJ#8=1kl}xOoRN@kcXvHN(%Ler1Ym zsx~F>u}BMvNcC2aieK*a`SqxhyA4Omi!^p^D!wGbJ0{F_n>xrL`*1;4d*`9jppasW z7iWJ7*7s!(U%=ECatw5SP+jdlef?(ljUy`Tf?4u>33A3I!F zTBmt7?eytsFX-}`yu-(YW1;N?S%-O3xU>6zSshRO?$F3LC=m75! zJ6pjv|6sYNG;JEKL`X+*^3_S`YL&q{uzCu-{97yd&cLk6a7uY190K)8qQ1$d<z|H>MP&3~43%9WiofO|ln;kxUF@wt?9u7+51zm1JF#TFF^QwllHHufP+` zNaElzyWk@xS4(du>Rq6=XXiL1uGWja3sba48!go8WH?f8${(Wf-GJIv%)h(MZ-QYZ z&aV9{A*&iD>VB>S7oFwd``hpDL7s$q$|py_MWh8flV7D`6g-<$K7J{5)zuv7stApV ziHM4blp>=d!$Sn`dbj4n?!wcxj<*Rb@x2iXSMHj|^I=d{dl7uY{wbtzchm3w2%jKUggG8U$8tF@68C8w{Iv08X@+Op;@EO_+tDX8x9tr6Ie)89AbL~Ka)`-U7IA);BXR>2~M-xpEB?nzBf zYZKnKvG~YmXRgdhP(RLPP!Ttm?k;L-J1*SX-n>pC+X9*6iAnJX1(L<$V-CsjdlC>u zkH85A8Nzw3Y-_b{qfLnI9@D&PymC*LY`mg^Z|{+B(UA4VQLW(8D(gN1&PU|G8jq?j zbe_C$p>x;f&3jG1Cof0`tma-_`{>cttB)S7y*hX9+O=~fhI&a?a5xAnffumZZMYkm^{dxC&{`QZ?utl8L zvF&KqwsnQ8MU1eY8LPL8AU#9gt}L%kX!XttjPyP)>$^gzzOJw4l)IP zpej+Nq|mymrm!ycp~jMy8jXEdc@e6r7%i^ zv@RrPaq#qjhzsH_EqGvK+q@bC)2wXAZxDIgcA%3VUtUwUIY?7?jqYpLhLa6&UMKtK z7kL9<_!<8{HKrcbn1k4Zi6%9slH4&4D}&T>S;_0)ew71jJf!+DuerTF*Jbj8I8-Ub zc0ZKHS(|bfaGY3TAn@@Z7@5IEX2fUYl@(=VuH|5-mHWXN zLp_9uw1kY@l7g(9wVd+LY;Cjl`3+Du9MOVI3w1ine||BJd&P%G7`Ht46K9RsINO)w zPe+h5WR5e}``rRj`KSKTQdF}v9KL0`{oXIe@E3d-3=YTShYLjhlu=7As@_|R_j_wu zn9jU)v=`OzFRDn7sjE*+UB5(wS?>vWT0QH?9qNA65YQyhl=m6Ky8n9xY#@DzkJ`71au?U z_h`q84HZ#mTJm+o*OpkjMLqguVnt14L=|cV!y4*CD%AY#rKlv>D!S@&b9ESP z=ll5=IByimtbg^U%pT%AkF-6nNAjN^sKk8Fs60%%WDl`-(7$K;a^I&r-VLg58N_t! zp`X5cAPX@)w^bWX*jx-1rEaU{>YC=}8gCaDZyy&IpXz3bH2r&fs0e@S4Ne`9cR0KW z$~!HMOJO?SoMr_F49qShE}8{UfIkhJi7jIv>c1EvLgQ8T2-5$4OqlIbS2u~@vw!aa zlmTprDm7?Ktc_J%()OY;7R~U33*$)!>LW?N2n&c}OZB-=U}^fQsih_r_`gb5=5(SV z)=eNMdYfs!Ilw6<%Q40R^5HTnJ)xP-B+ZQSzG)CmJF4#rVQLkj7~q3V&0wGE?%^HDwV#zM@9CO)Rn+Cc^JM zTSjr)M9A;!@B#njRl`Ij>U^VoIP6?gmpA@*l<8WTz7bBfKvT=zLJ?`M31IaNSWRx_ zdraBz|G?y)5|g(2;B0Y*2)j+W&Jcg<*)m2%<#!Y+zcYHaj1`r8IDEVegaa`109f&F z%dFr}3^QL%7jZ<8Kb`R78jgRv&OUxyoRrp6vPeu4q2oAIw8-AGfO5!#Z%_(*oG{?X zAk*hOC5F?G#3`!(af6fIaf54f#E!J}8sa!*&krOV`N4p-ND}k`-;ckx{IkQjv}2Hu zIE#Z>JxaJXUK=W(PV(UT1WAH%>btkZg&=H`xlC@Y^=)4pby;CYxZh^Lhdb zFWU9Y)u6j-lUN&9HV3fW_IA!?&DX%vyO_0;=*I19i&m<0Q7m(E*ps!Io4={Fw~`(o z6;Qwo3t;HgBTn0DB~sRVPz8sLv+2?;nTys6(_={>S-51x_D&_{R-d9sKS-Jkr6!6<5NV^(aVVnu14MeXw>~@q3$2#Jv+yUj%nI< zEi5*K8lcwT1dGXhn3JZnM4F5sNQBL>h%7|*y|Nq%!CnRVEMH*zjs)W~H$G`~CyWLY zkqh%8A4>dYTarZZHl)`0%<^~a8YZ7-@n)Ep1PeN0q<}emXZs@wl=y=3Re8+gQvGej zW3z1ybaMpy8{q~IupFZ`_G^LcI?FrQGgcrDhf#cKsZ|Th z+q7jAWSkO=li0UUzCjjX>Zx(t=C0ZOX%L3eAUJ)og~)}O)|+-XNqlK|bZAUyl1JiT z50C89Kn=ejJU_aq97&SWx|Td2eQtA*$oa9)uDpkV5 zO73UG9s5rB)xG+_w)h=BNfN)e_ghw(xslr}qAPOz{5UQqD-O4S@SSr-Z)hFGVbTMW zsvFb4g;~bx;bQE+{bu3fI~ReUjT{7u`)6*Dp!iljLVoQV)|D& zobZO5myKP^#Jb8T(>S>wT2~WNqvmhoIJv)7^!Cj)jgy=C-ah%>8$}51jWlJGAC=RW z4c6rt?oWxs{VAB=HL&U{Zy}f6dkk-j$cyf~EfY)ALN{zZ+ii_umIYYoPnf6`=e{p< z_^&7sv(ernLPZTs?fq(&I9DW;aj>eXrlzT>#@p4^+w@!0gfmj;)wOqEYg-a*a&1C4 zaV!}OgE4rM5WxSCcaMPY@2h4VzZKV}{`O}3%d;A7A?>4c-m^qaO#O}W;gVXS)eip?wb8FclXl_iHOqH|)hG%=Ym8F>QV5>e5bSN|w+ zhlezmCCfI?@Ejp5Kj!%0*`*ULEs|57%FQD%DL}n9x})yVwYqbqh$pwHuIYceb-LK` zQ^^H==zXTO%vGM7Q?g}{SHiY!s*zE>p=i40`_LOWLV&Ys(gT?ZzEgb*2eDVLV_&y+BN)X?} z@C|)@ON?~in72%Z_Mq8t2hh zuj`;P@dr~t^%zuBuzCL+iHqfVW50>w0=GA#Vchr67hQV;6Gp$Wgo7}V@Nf9tE#R#( z>aX?c8NLQ=NU6$=Gdh{OamuCIuN&cOEqvJcKxbKrj0Cb0=!%Wz|3$=cgo-CgHTvoX z0e9*A^;Jt*z=2$e3?tFVp_6dcapvkn#lV*7?D`FqTeXl6{gL9Rt2%`2!8=$SsC@DI7EYch zu1e%m#&Fg~uTk9pJIR|HExMVu9fr*2$ONO;81aAU(S46j7D275d6*4X!8+?tPmEXVzn-Fk;4^!7zXiGj2qx`f0NM;T83TwDqG>HDn`6Rs|K- zxP7Dk=hT-c4H{h$?c(9#yjD$Q@u0k(qCpxPl!^9#lQHV`HlA89O;NB*^K3O4G6TWo zkC72TZfDqYLt}B7W)ZL|{?wX~(8s6~ru1m9F{P>7hH zEuL5Ny{M8o5z9q{re_3ea=e}Lb}z@SGiJ`<-Vs>FUCoxYZ$SEm4?ym!`aO4*UKSON zgS|7htU9(r{pzbrKWlK!4fFd$Xskru>XeDMs)mvN%sbL5GB_hcr%4agru(ZWuiQ9I zLnc8~#$>@=Yoe=sO>~tf!v{cr;|DW1bP4aFwV^AnS_?A+0Y$#=6&@_=iO!ZawH@Hv zOfKR$bP<<`{M*`|l8Iun$pMws8UK{e;UKTaVFnj3zK9mvYvMW2RB^wFXbJ8kTG&3K zrN%_G9Dh%=j2w*IQv$xRpfz@(KovBI$?Ji_LBc=&$|$M8f(h##M^8;S=;x~rkIc%{ zw>2rXWPURsy1y)NbZ?n(Ss`1k_Ku|}3?a-Sz%$^zB`lwCymJ!8;={Ca6>SfUgg zsM8AkYtNd1`ufVcCPc0ZL$8e^Q+>(S#o;J}Hc@uQu4pmQSZ&L_`v@Nxt2c9-7$P4- zmYQEQCHzudTp!eD0(AdG z?EFvT8^7w)4xF1>65;#i+fIN z((vhH3oowewo?+ngS=c(jeR(I~ljfnjWl%b+RyHwdxF_gd@1?WUA`yaNJh8>U$Zi zGB+k%?M+}%8TJ1Ae?qSOH>9uGK8)t>+*$!^O?XbvRFySXv+m2TLk*{|+7x+8{8J|c ze{LE-4CY?r_JI}H{$yG(_w1cwdj$tZ#1NL~ESpR@JnPHmAsobPc5wVlCk`sD@WU(2 z!}y_-2t z@kxg>sd!N{iZs?tN)t`$Jv49m`|#4C{P;gHP$PCW3$oC2O$0SEFwWYkFuGC^rYkXI?(4E$GyjAin)ixxwSU8Gl#}1!8EHwGoxw!ayy4oGy zmS!tCatY2_ch3Ne@9Ter1&3cAMj~>0lk6XuE6;{P)vpX0R|r#yIjGd2`0LE`iyB=H zZNF)4z$P_eCS3g|MgyHp!C{(w!6X$Y6&4Bw`uvna3BG0u@!|^xhUTAn{0Ed2FfO^aUu19p`??}XV5(}?SDZ~$zYcfzaw69!F<{G`NpwLnFV+> zK{Mf4GM*eI!{I1RG%ieiZKP{~hD5Tv;$o4?K&Iv3HCZzpL<-@WiCHnpefSR8)9_Ac z10SKok50J1_!rxd7N*sZPS!Wc!zSJZajb*M5oN7{(UOhZzA9#i8h00|67D|jC<=&@ z;-kWSg*_)?3MAf`emVJz@5pDFp~Nko%wClg#3`p>*f665_rD~epvUB+`y;Y>{lI%t7XX=Yhn?GG#Tg$FkRW2FL_F17x|` z2D5!;31)3(r_C;y-7ve4r+~aQBl3Q7C7uB?2G9RkAzv%sDYun-$^-BWkXU({yjk8Y z|5E;3{-gY@yvJN-Zeea|E|^Q^qs^z7&orNhCxBR+JD7W$2bhPOXP6h7H=7^A6F|)^HkHx<~y3q9MvSKs0nIYz5i1}|gbt&f&9sL>DMHJ-- zRkg`ADJw;VaZ~Rhy3UAuhclY)Wus^B>cl>d&GXwJkn@QwvbYOr;^@QV7bPq|uj#dC zS9!*4z@t0t1d_xqZCU-t&8{QW^^&5_%J>kSu~^!X*+Cq}CKKOOWB(p{a8YkLt0f2M zcBbT1$&>q)%{h8K%unyN{FffAfPDtWImJ4)T~HJqLyc@~pGH<;e8L`0D6GUJNDkfmfe^dFC*&S=Etv9rKG&t?o+WANrS^1RWwK}}!j@NW} zO`$pw{Mcu%VC@p*stqYB43Y|h0}8y=+Sq_lov`g?Qa1Ga=F9Io6@99@U7|@)Cv8CM z;kJs3b6JwL_$)q8@v`zqL$=12Q9PH(GArVMXHrD4WcF%W%Vt$nWag-=_1<_e4f+VT z(MNz~a`b#(A_%<{kMttHL$ zN+G~>)}^J+>%97p?;qn+Gsk>AYp(lV7lj1-U^bn`nzXXCLbgYgD2)YbV{czXK#d*Z1hb&;Z{>C}^VTc|%UZK1Bm zEz};i3RH1xCYoCA>?-2WGVMW{&?;A0)F$J?2n%opTtw82!lSiSk)E#; zU!bZ$0U;(a=i#k*B+ZIj3NmVXtfEh|d^RD>Bw1D~H1A}_JG2RoagrjM`$mVPo}y0| zx%Hfp)0SUQ7&pJ)m2?8na1n5vDcnQ-OxffxXYr^NvP1zce3|}9 zSGgj_w57{nT%m(41_jyd%$`U=jjTdv*#R>6zt##&BPElkR>;rHFPj5APUOeV8NkxC zL^LJv zc$l0h{QIMc7S?0CC+={!B+LW?a^a3cTf%|^C;k8aGdlF7(Xl7t!6z99pY(q8|IZ~N z2v3&yh?qby#3Eu7VM`n)juQSv0+CFdC!P~82@p_%PXwG`iD0E*haga(6r>7T1U-UZ z1%C?uWg<3VO=g&UYO>AbkcqR2pGlaB+9cB?-=x;$xJkdsHIut0k4%s$X(}?cG+ki& zndv&y&89m|_n7*bMw)6&6HL=ht4wQ6+e}ZJo;AH|`lIP@rhk}`W*?eanoTuZWVXy~ zrP+3~LuPWbAhU2YwVBo|#Vp^f#;n<_+w82_MYCIG_skxcJu~~+>@Tx-qzO5O98XRn z=a37?<>Ur(J84bsB@d8CNLSA$|IW^)rq39Ee@|BQ9a&vil0TghNzY8CM2-=q)w;}_ zEZus_(L2#8WgaDx!ohaoR0hJqTMDxvIg}As(=CC;$}nZ9B8U~iOtMfDQMrf_MN!Cf z1|!;xe`H1O2&87>o3Ez3_;N=Upt=>*mk@pexPkKBflK1NIluUb^+#o4apmQ$)!*f{aUwVl3#FN9WSoDj zw+p@ZYU7|)3|FxvdoO_Zo*2)vHNRBl_;{CKw%3x#>3$b*5P>69pR zEy{AHL-JiNeRJy4g8}^Hi9kvfu+SG~hWC2L*~i-@;r7S#($Ty&PVd!;zBo*aIy?QF zJUvDHfbcTx57v>$aw{@(MPp5t#>vtZXB8IzRAV*ZE~+G^|6Y0un2pTKI!ge_14`(Y!p zx_yK};V6|Akpsd{cT*xiX0LsSEO7}Xl6_b8tlhx53d7^$LcL`o?g@02Ua!*)WLdSN z>*gX^Vv5c%ixI8)oU2djf<5F&r(Aed6jXk+_jprNN2g!2hm-PX2rKev3^;bIsqxq` z|0WNQ0DliwBz0}t!iau?p_sJEp-YnesWy>M_sQ0lQzv~y(v1wr$8TiBsj(ayH{ukv zM;Y&uXeHuq!3QMx3Pqq&P+2LuvaXXQJ17xnhdjv10q%%JQ)MC#v;;}f8ngh9@k9up z!A5eg5XnRW@PoEgt=#42BK4hvN`5Pz$2Tz66v!cIZ9iGId3&1I>>bDR3g^ep4S(1s8W~rh6miECYD0u9L>-|>(78W(^GbvQ)Yo}&tB9vvDG}R_I^^bk z3At%y`(C2_2_mcit?VjmMg)sKeIfcCo;t;QYUjmRr7FqB6C&w#(2|weIn~Ey&(o(W zMGYxrjiIpfqztADQIAM^Zr??_Gy5$>gGyea5{ODp$-qw3iIPbXoM{(|cAQHudC+_R zTnigkNQz>1Yd_awk;!OG_ZH1s^qcYFQ2;s$=HRU2NtKAc@Y_In9#%S{u1Z8Fr6;B) zvdC)0L$rlyb#)P~X2j?T-=-9iC-YlUie>O=hKOrP8~`=xFN_lTQ>{&za!w4Q4fjOe zO%e6SYU_KtMJmg;@F9E*ABtY4!)!D~`F2Qzj&{PrcAmV0bs)nB2%?H0N(rKtAesmwh9C+FB7`7<2_lgo@(CiF zAi@cvoFGaFqJ|)%2%?=JS_DKVL9`J>2SKC}#4&<6MG(hLh|>hoWkM7aL@z-M5JaDV zI7<-y1kp$knFMi>AkLW(mk6SaAo2*}IzbExh%X7^8bRD32pvIuMG$ug;-(34k09=v z5Df(JEkQgYi2DNKF+n^ehzf$x6T}OGcxpm?M-bHn-WG`*g2*6K{Bg_dWqD(MO&?I3u3^%mNzRjJP2M>9*%a$3aZ@U%+E4YKS~~U7)PGM~GHvs;E7L!o zK56=a>ALCHrvEu(!HkF*cV{k}X*bhtX5h>lGyj@3Y1ZZ0M`oAIem2K^&S!HD&Pkrr zGUxW(*>e--X3RCrt($vi?qBn!&#RqxV;;<(HviE4iUpDdrxrY2@Yh1o!YvEE7T#Wz zwphGaws_j&HH)1W2P}?XT)p`ElEq6Bml&4xF1fPg&!y6(+m;S2eZ2I|GU2i*%dD5h zF6&!%{!_D0Z9g;pta$mt<)te`E38&{toUukzgAK!KV7+frDA2x%D1aNSVgazx9ZTU z*i}udzFRF@?XViHd9-F^?XtCAYopid);6zOwC>)z*Xv6*Y#Ui5#(z;=Fib-eU>e`4 zYE@Z&1+yfLcsG+v8?|>}<$YLK&}5~r%&9D+C50!08hvejR~$`bBayiVNmbJue+zIt>c(ahl`K9!jTnE;+HGo1UA4E`6<#9!l$sC%qh}Ul+(59YEKV^+#`hr z9rBSL6FxUyD$FV?rR$^WeBWOZS1Q5t+ODsG{(9Fn@Kjk!PKJ$t4xZ#(VZ}A_t?)W5 zAg3F@f~oK^K7C8L8hMg1ZuH>x=)n`AY8SakD7mo{Eg*j|9?TJbh8u0h1A3BZ+~@(A zLY)-fX6z5260cFdY3ARyUQ-Dk{sz-QU<#64scXKge#ezlFl9njV%CDf1NY@t-#`&L z>3;B&EA)>yFMw6PAuX+tExSSX3ssv=CEf6D46!#|m90x? zB$#50X0w4a$OA%{!4qRhRPC%XE5p6RpWn>ZVmq`W;HeP0Sv9CB!L>f7oJINgd;z_`+~e86oW;? z?JbXYE3b77cJQICmUUot4;x(Zqp&K;dJRu^OC>g%keV)!uVwi7<>`wj+qs}hQev|~ z5gVonmO1We?F`{w0+kk5Q-89zB&$|d* zzM;<_xwHU@cFaX4J~_TR1&c^)Bnd;)XgmN~1XIJidmiLoxW@)|NF~`CO{ia_i)@kC zlfl;)S}!+oxKRt5+_S0WkVQ89Eluc3uB)Mka)&OQEOYSn3_rBcffbL8`>$wC29YVO z#`5(Fi%@Q%uC$!4kF9lg5At?TVU@^-6emy(KbgWhv`t!FOe*@EVFpNPxP^a+zrD#u zRFJ3w?earDXdI2~-Yh)1hsC$RmY+9&T0tR|yaqp{xDE;ky@5g@XeSCnenMX@11oZJdVZw0;~cHK_;w{ zLW-~!EJ&1W>_iQ-1o1G-G=69eH8L(MlgW&b!t3F^aIj%gg0Gzxg?pQfeY zCS6pE#)AY_z%+;lHAr{yLQ{h9{O9l(Ay+a~a$6%}d{Y z^N@zIcDJUWvD>HE2C`MLWMxs;jc;YI(?1JecWC{dE!<(-^mMcn?X(c9PyC|dbM9Ee zG5Ba1NF{Gz9Q-c*{i5g01qT<~$(6OWDy}*_syb8_>6Wlxle+_7Uj!5W0hVuk&N;Vm zlGkqsO1n?dKd!pCW9qK0JKfkyHQ8QYf8x6AYPE+O`T$LLbJlW3BRl6;?1&4%7WeSs zm!=Q_bEK|lj?t2yf;r?(Vg0YInP#1->~Piwf?d7wNacTygDYbQZ5Vhi*ojFJ@O08hUve; znjfaXBs7g{`<8@UVFw6E)FBi{xA21FkgpO{gBdJ?k4+(ppD*qE?a6DHbuO`H0(#q9$lxO(x;HXN ziq%cSAGTU%{lfsJFM#xVE#YA&yp|q{MB|;X_3$mhG2nLi;O!F_`@QWoMI);-m;8CZ z`OB{FXb_+=E%wM{#mY_VPHt+Ivvna-3IFZl${-thm&cB6DrQ zVr*I9FF5GeZ21soAp*p2K_a<oY$Vucz0Ir6 zzrCfgwyi>2sLf*&42ii0T5__otF)oHF>1Sg(4jR8*xl>scJ%>*g3#X#H!Gz%#Z0~Y8ols~%N(0qecx04Fn1Ik4*v>uJYZpt)Jfz@05 za6A7(Gmr%*xjDG(5Te%kCDvBtX5?h#vNs?PJ3bl@vNk5J-a&?#o#@l`oTOq9ncfO% zywZE2B%c-AF@g=lvrIuczTMneSze*b)Me$aryRVsPV*?aIX{Mvm4-6NS}4|~x4`8l zsA{+5*TMYhKhJ}ik~bmap+g8WVbuUEe!HUKUi(96Kr_tpk(fNmg(gE?^^f_kj`#oP)8b$UH*xYV{fV?0oJUsFw~w7+ImqsW~Q- zyuMvwZ;w`>FXx_Z(E=Z3Gj>Z(#6la&Is0_U8gdCw%+F(SDEN8>k`f7cWEW~z{Krwzf zV;_@OTBtA4m8&T*YYE(?PK`;8nnQ_o*y#Sy0u?O+^?2wL>e|U8LHX5L>3Hkmu0uWv zCiQ;1jg6ysQRH&x*f2CjHUuGLiy^<@xD2+Zf41$v$WW79*q>ON9GOnxP<-5oA>PX` z)h)qFd?n%-)OWz$4nZX>GUb;;uk>_sbBYI@kQSF3$0o>K(8tLM7NIdNYG)aCeflx9 z<@F~V!p7FLZ}kkWF?j%jNIzj*QoJfqrq<|;OBN!}-zGyvXcC*j6`T$eUdyAt#C+FsT>x!3w-h5E|~!(wX`l>m!V@}GOsEgD9_x_ zTuQ18ONlggo0g34R87zvRm8a@T8Ov6dj5vW@(4(fg#SwN9OFk~X@5d(bVxdtz)l&N zPa=`;k)t89xTM^o!tCtaTrM|Pms?JE1k}mpfq^c&Z@WK+2?O81t!IJY=abm!xmcXi zYxJA@&5dt=c(F>L91o}3h3<;NHaxA29Q@)V^r=4z2CxL0O@h zF->SOJf48THrt+4g&7?>jDC5^&5tLSriRhM7-!t1HxB@{Xmm1Rhv+?C?a&zOH zL!+69or)B!V&c7wy*j_lke#1Z$bpm(#!HxXAuFCbn@}AU7R~$z4-|tcy*)??E-F3| z$6TEO{49?2Osfv_+@6}mx<#Bb2Ky(6iC_gK_m*23kOrnQ~hW(W@M!sVqnGstq}zywL9 z|71;xz1jlHecSLyZ31h`6btkm>5tF(`53FsnvAj9g(DL&R_oYi&wP!>jbgQ%pnMdo zmE9Tz1CO8>jMs_}V(q-w0v#;^-V0`!LKXZS$V}a5kEU|y4EkFNz3sxo;Wft#vI?_` zxN~4lVuR;a3oF5LQuAaEosbK$P^LtrQ%Njd7>7t}AD>Z`MDDMTz*g_JVR4(KH6?L; zKf~`vXP7Z{6isG~XmTqCI;WzW(xMQu`eK`|QZ~>YrS9S+XX08qv}a^6>CVfcZcbTF z9`v;f*)0q3%Q7gq10_y+?`#WCU06mot!r*9E@B}G>vIlxMg{+-2m z24!^`GV`zqorh4eQTR7{MuJnj&_NfG8Fpg@XePiXl|#?IrC~bSoNmLSM!66RSiFkH zesfxa5ie9k?NP-!V}YEEUzWH%Igydv$NqhjusT1xpjK8`oS?1d;_I6=7{*-mJrFSA z?!NPOJ>1TLZC&T-f`p&ng0LQ$>}BhdNlDKMID+BDV6`GGSr#3cn;XhW?(0Jp`T!ZS zS}}LV>LI5gH*U!7s^?BxrN&z$#+1nt*uVy4lH!90DM9~ucqYtjC+(CuO@^$3>|zdB zzJ?rpo``01^{E}Oj~wX}dZ6{S3FO;>J12jZp&27J;agpkoHC7e_5%M?o8T*8O@GB! z;;J^^*Z0U&)VP9r0ewYh%1Z31481-*SJqo74^B)=OiRK*aUVH3&;!SgQ)RP4x-Xq5 z=_}}7$B1>wO4zG9uHqfrE$DQ52ziF*a||UFo%vXS_Q}nAlgrYu&ZLhl z4x|q96UemubVDxP(2&`e%^sz$r0U}hb{1HTvy_mo;@7qdKoKEr6k-=T5^L_|kx2a7 zppn1Xa=p2*S!dOTY~^ z@Aa$5=(AoA%jve_>dQHJq)T%1vq?4D;zQ3+@dTS)$P|s)W*Ziskn9(4G5S`&9uN20 zg-0^|GEUN0Ai{^bm{Ow&r{j`i0u>gji_%v@Oh{E>H?WF)B}7|!0iJ*ujqMj~FgwJj;N2vaf$cbW z)A5By>Ti??jI6}0T6h>{)xt5WCO*iVN>qhX5;#vubHJRlpE`LtRl z!8l1L+`-h5otvkxlPthF@6nwr;QyVWC|Rvd)F#GpN%6^XYFctDf${2IgGs1qn0=a$ zOrN@Z`PabR>piSkefO}E-*gJk&{7E>OTtGVFTpPb(~i3b({pd1|L%AV8&*Ol=pXw@442cf@G;9S|6r(M7kzr6^IkHC!IZ2Om^@^u2`W~EV zWYP5Tw{L>xyUxNRi2>VC>pZvAe%<>=;U~8Wbl7KH|D&lb1Lo)HyW8|~+=T>pG7*_Q z^Zt~|dRU%Wu$J^oA5o z3f7baE;%7ttDyrbmGw0ZMaL`Rt}I2C+YyN-%Gr%rZk*d-mlBpXhpM2f+48`55Cwt_ z@PXv%1HClWd{@*LksImte<&Wo`nwNrJ=|Qswvt^`uP!K|^NXqrS;?=txoIi6T#8;#Gv>idpNYuiMw?J`m3Bl>0_F(JtLl#YwE>xAqum z1B`XsZ?h!MX+u~`=fKxpI_?f1zFCPvt)*&T zwgYwYszq1Bz{69r^6Y4BjAC=h=Uli=#BMn)>GY`z?0V93_xedTte8}#?6uCObosi< zOI6ponp-vZD(HuMOTrG>2BI0W+0=}`_yrrH_iEQA#50}@e*tJ~BQu-AWalkmn$mr_ zWehUGQO@U#QK5G$hf{&ZQR!T1Ur}N(H+5ts`B_->5ieO>Y_2XlOP8(VvU9R?3g{Ca z22DsX=F2M&KYw-aDy;2hLCEje5*?L_#2PCgVVAK_?VY1a-d+XO#%Bv14`N|I*dDLP z-V+j6)y#MxyLIYOcMTVoPby{)KEG4Xr+fg zmzoJ;-eFhlidgGJ;{y#J^kep6qB$WsJFlYTQce|zfv$>Jsx{M(b3{`{_Sw)e>HBX! z>b~_=H-;@OM!7YsuPr4mFgXyJ@PCpoIHgbp|DF+T>T}##($|^2YUg4_0s{Oj1?ha|+ zx6*d`s)KA=CTXZHYCBGUwL3j&$&Q&z?AVmdE3kWORB-C#cz>$+cvb)>aq)3N+#cj% z6aqZ4aH_+9!6JW7WfN}eheuR0K5?!`m9m5+T|rUB#mcK()t5D2x7kn9c8J(VLMQw4a(-cwf@PJe`ZTn<4b)jR%#<# zc^5{y)GEsi7%RE|2U;Wbgo;jcxqo_7B}n+?$6zLh1j3ko*xbHuNlNJ0DZ_SR3UWbX zebN#6=hr=#PB(CwsWwQZ_4m&@kYZH@=cM-@gV&P=y&`nq4y0e;ntrAhTOJ(O@UA#~ z&{8e0^ZM$(vKXv7`+I{dCr7Kz<>Cy5vE{PnhWgWA+NURPw?$*@U6xm z#;5Q-jMnT&U*LJy>6N@)YqH8Rs~+b6QrjqboJi&8B_|bdNyVj!HL~lkI{(od*yVSE z^Xzjy)kf=*&kSC!-FisR)~Aw^GZ9o&e2z}TUAfA>HQggEJ2ps7n2_oLAx%W zBX?zevHPSD?pbtX@xetFsY0++-&K9XI>jG}+Zm6?ZK+H5<`Od!w6s{S{7H3E#ea-f z@N<|VMN~zLXRqwbi_ebLampf6t_%wcmxV_cb!s_ZSVUG7b=_;1733x*>A9p_eNvIE zwWhAFCiIxk0dJovpL0bPm!i5jxCHY(uPIi zm9N`_6Ea>4B0{AN$I{b_Wwo^t;f-8a>+z65B^8^c%}(TU;&YSY=>)A-9T->N8p%es z1Rt}j)=+4!fGtiG=7 zP7iFGPmLG4&BHwB)(_ZuI#cdgt*#n2O1x z-Dov-wKJK{m!@!J_;cw^A&PkSj@%~10}H_7t^XgU$Py3yyrk_|`RyK9KcW0?{joRr z6`OA>Q5AO$;)z_QJJoI5^4Y8c5~d#a-^uOSjn=u*F7=TYquB-FK~53dkD&Dv(1*S& zqLG!+soV1G3uU$P_Oom(#bwdzU4fQ1OW!8UMZ%&p(tws8-yYeIr*HjQ#sv$#qGABON~#9*V0}s(UlFY)!jF2>JNIMqJKj$yAL#JSN9icI1e^EhphLP95$8*Qz^eidmPFMqbhvG4}=<;w&8%RVK`1HAH_ zWv;Gq;ep(zFAf}fxs(i7M7z7tE`=VIf$Y+yq&U46xc&$IaK2V>8V5GD!b78hO=DqK zPBjbjghl-%nkTG$K*AhhA^t8CVk#s?$Moo}YLR2G`IV~Zi1;K;f`-GaiG~b4w;%SE z(bWZo*VtOr8f-q8kd|BJejk-gKx2h5he((r3|mX0$)n#V3l;NXU4t@r;jn0A_d4Yp zB_?LtRQv&z<(DrdkN<+dumb&#t=T3a3V&CFeOk#set{p1>V##hS_MV*psR)OD$5QK zmfdc;Uw%gttHB9`A4)T`$rOEFT7m5Hr8D=gxt~x7)AU*}Xqs!=|Q?*=qmHBpD(C(A-&1IT(+Ym8;z7 z-8M0bFz39oe0{b-&l>awLp6QUGfx#5pmb*?XEl2+I=uYu{>A&3-A}7(+13A$rey8B zIY1w;t86(BX6O@J7w_=kfXISN`>~Qd;j3W0pa;f3gYl+4{CCow6i%kwNr|6hq~EOi zI~AO)cyn4%F?4X~)pLI0kZBXVkir3&3yZOK+QVG57#+l)xmXA6@n+TA$U+FxJH&K=)#2`2U$@?s<1oY1sADdE`-tT>n{0RJE+&X6Ckm*r$*i0Jc7 z>ZLOU*6~4%#!!&P7>^%!(1w((qzD(+C_hTP7oefZ%JGXuP-clzrHxeKY-U4 zujp93u1oM|EDj-8;LljZ;niJiTxVFpf(Y%B!m1MCVO>VXDf(@<`J$nr4XLu*LRDQr z+j988qOZ91L_d9FU!ygPc18)$B&DXg(kRpXXlB~sBo;8)BZajm%#SyP+wE7mI~apJ zzW=shfbW;WeJt=K`W9sKE>-1+62H9M`>u*cG*cBdUK zUFz+=bjk6Io!t>9J4}eBzdEjh&t9#$3M(-6p7?Uz4av`-gK^RuLdioMbt|qS1+3VC zA1Tlp0?lzcW2=c{sr~7pk)Y?>-A2|?_^i=nf^VLzvofTSDv1LgIyC$ z`27oxD|yoaOYnTQ`z79PP53bBjdpJvoFncX7oT0A^z{}LKgB^3xZSo^!dMjyt1N9mBzcToZ!@XZFEu)n_OJ3i@v!&ag;T7u1bdA^ z8egvnnI_TDqUZjAS4LxX5Un7Q*mdKAy|RG3?&=)wHQXR2kMR{`IwB&Sk!9RIciN>g zqUl6Kdw*B*U}--aS#3yYmkoY-=VUcr@dL`?$Hy#>gZsu;Fz=P*K7QGL(lbIx9DZ!X zO%mTdCh?K?u$ug}A-CjvnXZgP{X)rWs0O)qfSrNay?&> z#&zw(8=Df&ssv5^xD3iQD5p}-m7TraZv%BBE~a4M22tV zr&T~|g#gMQn*zf-OOLn1>N|ObiT+ORXoYoPdVK-As!6(Mz<2PEr~mx^(fWemY0IYJ z$R(J8U$!%O@fw3Rg-KC!$P8^zP}w-0_tdH49n}B5AWmZV2GwZz$&Y<0g{4A?PO+4H zfg$}bsF9Uu`B7$MXk<C_- zk(@-+-mP(BelrT$z#hu&y^y7k3fag?$j_jhqji;r%>3*kE`ZSo`BF)k%v6B}931+x zuy8vX#V>+@$+))>1#%b_LPx)&9%@Z?Zju*s8w+8TQ3!K2Zj8jB@urNeJ4fb@&cBFw z{{Ruh7uf$i+U$o-!Cx@TvI(bA@@?2B@z1Qr}x4HdUtrj+b$z3}J5>*0z z&9E0n+)Q8wPQ4GWTEw9Lc{jN9KNsQpu-6o3B<0=Dqi58InUTZ)l1^iA%CoiV8!h8> z&r*(M_jZA%aei{SqnB@&Q-aSfI z?rf2^>eA9L+~rMphY5uxnEawE{q+agR{n*#6WW85wqe}L+BN%=HOeG*2a0`@GFW)x z7puDDjX1$jSNM~v3w@MgwF@PZ*h|wU(t%|$4KVj+FO0d%)}`2@gXBm}i?CN;tSh;6 z8s<$v`-Dh{Gg0EzNt!r1s8W53^+gBFc~{J4{s`Zau|kxCz9q#vtfUaAY(L9)j8ehB z_dr!kVUsDuE|g+*%{CY^^s>gP;8;ayj9)-xPJSpC=0j>rY9a?@gFlvEyKu15Lld8t zn!q)mCgFoe_wM#_{#E3HP1}Rl8oA{3_gr#;kxRCo6Pu<<)xU=s6_H<^8|BDo#^%1j6(Xet)0q*McR%Bf{x`8~+N!Wtr$(nn z?xI{)MF*jo8CD)tUI>%An8AHOIF`L7|B~XH_D5qjItR1S+%HliIm6B7JF%b7pJimVqcVZ+B+{S;-pr7A$X8qrJY^5-B4}ING zhROSWBY9s4Pox-QE9k}>jBp54n8arsFo}QLNa7b`62DYMB%+p4eUegmGAC=OBQE5m&P6Xn`K zOh}FySvWz`=!Q6r{!pw192-7lOEp%UfIP)MW+}t3<@4v@ zpE#>3e+Gq1U3{ifIDatTf%?bGIcmm(xst(P!tn7b1~h!LEmezqtK}sB(A3n%HR9fa zjrJigDA3rO2h)SqzaHmMFS(Rr0{@0OXi1W1xC=wWWmT3v@JL^rzG6SW-gcZ32(y~Qd?7>)GQmV zlc~hqtI7VawzXqHh!Yf-L!;Z`WBU!n%zz}K!Nvs2J=TD)O!-@prWv)D6=HDlsgOCeW>&G>WH{x zwI-UwE~+=V6CC5>8|Z4oiAz3=J=z_y(=QYgP*`j>&!7(C9EzDOaI(c0R$KDxVFu2+ zjDWyEW~u9j8Ij=`*(wehP~a#fy(_l7+K_3;)N|F($mGuAG|ZmTAo&Vs^^Nk<4#KAI zYcL6KA-SK?PNH5+%T~myqEo^XG5hq<$j(UX&=ez0jT~Y8wYK4jO_p#I#%u&roO(E= zSQ=lLukMn8=x^Mq`Gzx~lfPe%() zd{AVx5$rSM>oatDTqdq-%cnbibJh0gj#{r~_ZxsIrVnBJN%jYRE>7gGZ9IQk)|;^{ z%sOK7TrRm$SU#Trb|8wo8aT1ExNxw;x*;OsmjnQ9*_I0bE|NLLa;j5AzV{ zP^vx)XJ6xcEB-rR$0Dkp_g_G*qHxub=c#jN4#P@hfs?o_V1+|pD21cA<^MTeb*NwB z{tDk*x%EF~l3T{dl&*~MR~Ey*m+D&~$GNcgn#tFQ0SLoW4uZOvdg4o<>0I= zr8Su%tc#EBu$G~ZF&XTHCeOI)Kk)OwGhoejlk{HMUK$dwO-qeu+s{7FzkdDXC9A+PQgYeOZSN?r z*!<|uLpV6fE8>I)OpztxB(O+Y(wo4zjPi<$a6~?T>fK$}aKuHy95^rS65<>*W+63z zzxN!bsJeKhCeRo6U&(^U}cFJKyR?R`{P1jB!5n#BtJXyl+=p? zkMUkc=zDno8YYyt!k(g;vyq+I@5k)1$Mlq88ig!*s~HqNXY(J%W(kE7cq_aE!g%8- z1Hxr^6pWtNWAjrA^gV2QMyu_DQtbAJjur{xPJ;NO*y4E1XN{8CVd4**RRsw*W1e`(X1E3_(b7CaK?Z&nJ6^xW6xWw@ljO-g2bM zF~`bTaV+svNQc}CiFda8f#@pP?p(irKP`S=i{+{U7Q3*DaH_B%E|v>hiUK!d9!|-~ zH7;(d6ecI1Yy1x6H!vlmNTFaZ-)2iSRmEWqimk1QZNOVrXx`|S<)4qYtkJS9h+9s< z6J9)L^e}*WiJzk-iisV4j?bw7kTs&RoeU^>@eC@Pfk=FZgcoDo&1SyMV0JT-$5Sbg z@l)|&m2pOQ`X8F=>e$xz!v%49iqYY+nIXJG;(A3r(ARPJFTif{2)iVCHk6z^{4Nr`7G|7!eF z#alG~!;yJ`C*BD}VSZAafkk%c`#|dG2I(ebNuIzZCPFf)q%5UWW=v`}KGQ?jLP+N<760~5TVb}0_zs%o>1;wJ+7C8U&xHK^yCzJ^tGyDbMv)EN(3rZ zf_coo-Pu%5!D1>Rsi3&rP&*&n)OT~3_g80A`6Z+0y8U`n|?T^VXH74#9a{XWpvz}JoMsrqO0k6_44F+R+TW>;5L@2FI*QRROb*ORX z{;(~7T<}I>obQ%_>tBsZdJsFGo|v2pO4+mDsGRSK(~EHQMQ{1dPaSVTRxFj-n(jv{ z17`&-WY@ZcZ@J$^dLYIh2^4fpBIZ;3-}9;M+Ln+OxY&l1J40G<8uet!N&W@Al0HrA z)qFu~Q+(56*!rZqP^-ua-WPNju^CoFpdecf*+rc)*c`XWnyXDbjmrnnOJTTwW@Zp4 zY0XrGWX8)ddUX{?L(kEeUvTll8V)|qB_*NXWRP%1cm?(=bmUgA4YScW*)By^Q*H*% z(Zcz)EmBGA?#K`iOgEZo{@DWJXYg;Z&EU!}rtb`m^TKci-Z2^juJMva%N(2tpx{?R zfE0Z0bfnkF%8R2Fsp*&+UFptELK~%yCwk%$sJFx|>6LuSkEs25ed~ zd%B|jT%YVh#(pJskN4Z5u31Mk$NJg-=7wR60H=pNexDwer^D%Cr8VlfHZGy6KB-9t z3%`2=6CPL(S)b>2pSS5dOXq8U!P#L|I6Ew7G(GIh`}DA&*ueB;S(H+*58)(_bHjpj zv71S+nmc3N`2&|6xa<3GI&7m=@so|&VHP+$EX|l61_r*!SnNFKeX;XL;mjywy1O+^ z1(_JM*zmXHej-(vpO{$8B^MMWm&>mIgbCAtZX;pZ>t-ZO6ER_0|6jtiCxVKM*X7_M znEN_SOiqYw$2zYiyPG}E?BZ&DE1bM(MU2Wb{)=b|eE2#S=3sg)|L@w-z%2BAU}p3u zYlZG!d9C`)Je(MP7F(u0P@!YGj5xo0u=$zPis(=}LK7Mp%wjvg+vr`Y^RahX&~ynS z{T;!^3S)z@!nk>Y4f6X>vJ=c5&f9AASaA@xj)L368(gSS7H`upMx-M+3=?^|X~nX- z+VJ;8Ug%jRrOuAWM4nEYo1`5j@`B>38>89Cwvbc1YB74AmNfa5tz2wZi^uQy}`1xay9NlA%GoK_o$c>>96&t`Sm z_4L8KUdLlL=yP|pZ$mIUNod3_H>w0D_(BKjhnI`g%==?pJyz(#V9>Vk?k4z5aCdkW z_5cp(nmz8yzAwMfR>B<@CgQR+oY}*r0)>+%{zC>}bbmbd;6}Ls?$S+DH8_c^Y7Sd`44kah?qUzFzRE1P6>Rq=5Z zoJ12>Ss7O+dr)x?qpF_5NNv2*Po@sd%M0cVp}~d_nPkz@$f+3MG(IM57u>?|ZJ!Y4 zPiAhRPo%wvDcE|&<_CcWwn};XD+KVCVC*BNT*;)t_wNY*m9~Vx;PR8h0h}jRfeiaV<9+hJi}N9hW%Jlx}7o>f%zWw zEsZI~@_(x=wk$4nbUARfSeLO`5?UfH3?cv9Ft9MXSYxafi>}s&?4!iq%%E}P-$#eP z4|#ZaH>xE956VhjMHECDDkB*%jCZ3Nql=^Px!2)EDt$Gch&S`bpZOh+@CxqXiENZ1MlS)#3f@Hc);?eafQCjCYsD zmd4||4dd~wjpzMJqK&=YFH@JtkKX^WlJEXwR}BPU=(rOWq3P0U;W1!4!TQz@7I8&U zUk%VDnZ?=pY*S`cLRq|p%d0Kw z+bZgs=rT>m5pQLP+%G>cCy3Prr-f*OebT}V;Rf7GzA_?TA&YZOJrG)3mnHrP-xfC2ZQco}+`ZrmE`3=AfzoF2m2(>7cB1prxj-(n3)lQPobL?{4TS zXG1HaO55my%>1kZ_T-lbbKAJq%JQ~WMY-=0FXxQIT+O{l{g>$Guo}N33a6v2cfOA| z9hn@N62)fNJDu7u^A8IR@T&`JszElZX;RnpQ?0WFv+SLaScHCII zX7{eOIQQuXTni*PfzA8&_y5KzP7Fz1TVfa=Z#Nd6jsM?YoA9sEXve=sL%x@SA4W@Y zU(~^6V<|3vw?BZzTn0jy&Sl# zNm!SE+R(tlIbjh#JTLsF;3aTxWgyJ4Tfntr#<$!pqJExi4^r8qgWEauiBRootO3*p zXpg1_Sj;gV8m&TEWvY@NS7ixn9zbS2+;|{4gE_D=DQvA29>g5lX&SDcF+Wk}@1^G| zU!s35trT|X%bHHe&Y-KpBN=H2F=zHbDaBdhLZ|G6j9wa47)XeQ8R$HjkD*SuNM@o4 zq2$bw%(MeZtP=NY{-1vH%-ixSde{miFvtAed4z*C5=m6T#s;NdA%_ag9TU==l37eD zdR(=BiCG*E?5apg>zsYLTW0Ml%6B9K!RWn5! zOH1AaRR(r8HdJ&DebKfJ?Qlf@r-`!~H!xQM*!ZkEP4Bd#g1uW~8R`&!Mw)ai8>?Zw5vaxM+Ep?5)C)wJyVHe1GKB^`X;J zQ7b8~+?kLkl+`sm?6xMGU5{PbZ!;@MU3`0%Ag@TlI{01s7>;fT8SU<)(oe#n)^hBh zYZ1*w%Cx#lm)};|yj#kafdpGReH#zZw2n4AC#TwIvXwep0;KN9w1+{H26!3-^+CbD zH>N&#O8f3(YpQ|dG7Kh^(g9?`^TR%sG6+cfE#d`+2VkETg;P;*IhL-VcX4|F>*%p_(eGoOiO zl9*&BgUMzJm=dOnX=gf_!_3>v73L1}GkTrwGykwG3utzVVCS=o**JCso62UfIcylgLyek_a-3JVTx(D@g*`LbekF$tL;4 zLMliN9;0|)A%Z){iQv_^Vr0MBv5;>=BG~pUpNB;79EAu5j?NAjQBpHO5{L0X11Eal z5~cU;#ojmC4=RFdwFvXY`lI_Y7btg(XIy40KB8HQk4VY5%o)=u2@9{W$G!XwbhfkB48_t?5u*;S@yvH_X)~k;%N~= z!bC{q*S%TV7%8U5m+UuIhl0IJzg*nw+LxQKOkNec5`9y65zb61rtxt7D+MNZN21c{ zE_HPc>G4Cz3M+`-9u=5hzHWA!07$7uO!%#m&26qG4E)*S#P%?&qe!>q)!OZe{91ci zL!@Ykf8AlK%@h@oJqzb#PPjo;=f6L9Ofovjt~|r0O+wLDzbZh3@?&h3PqqD$?{BRTZ(@1jW5nCZbPG3U2Jw zH}z>h?>I-NeJFUWpsoz@H7HsmY|`W>*2+(2MhGi7U##y(a$+naV7(mct|K?jUb{mh zgxlO$?AVV4;>3>deJw>gz(1mUsYcLa1o0K;N4%5u_L6%4Mjp)k-Bht7M}lr?(0k|Vpcjn=n?6{7dCP@BFnEk!ugBx{ z8a)Ps(P)rB@7^;^drXahy9ZwojR5SLqBzjqO0?xK*t8`4g>llCSfXcEn}wW!-d=02 z9#9K1z5oS(o>bX0!X-@JURb#(d9A@Bbykv=mYx%5g)7$e6^7RUJwyH@Mu9*Q3It%V zHBrP{`)SNcz)Z=d{s6G{`+n&M>KHqN`7}D+*KmSLj+zT?7%WLgVN^IDtc=(mhw{Uu z6yu*u6HprYly(D8F zq5_4|W<%6Vn+<^wniBvXTD4UKvX=vG{EG{s47zGCRVJt6EDkMH7k&5eKq}CZgh`1< zp}mnV2Vvyc#kU3wZ5C5uP661v^>U?*IoA^$y$QQ(czSR2_rW6q9HMiGkt?oxqpnl{ zogp=P$09U_ zd_5o;#{Z$ses$Lno>vHcgaafj<`+J=kF_lZ5Yn@NZ;+sHBM~H7XDLfrVCh|& z6dU#ud+f#}_B3N+5|ev)4nE)aEav;i?{{7Ab-i*eGBamRz0ch~pR*#u!Hy7#M3OJ| zhXx0F>*WV7!LuvmB=@Cen zH$cc5*gWLRdoF~7NJLIr>bW#LG@~Ae?3r z5d^V#DB(vCz64<@@Y6&8eAo2(zj37b@ zB92_l^!R0L5>5QPL$P7qpxI7ATjBBGff8VRC_Ad(28g&^7qqScN#LJ%ExL;*n@ zC5UcgWh+714 z!;ZK|5V!4!YJ#{=5RVArfr$8)Aig1p5`xGgh^GYcy&dt4Aj$~hIYDF+L<&Ke2qKLj zvI*i8L3~FL7evGhg4jzCQ3R1d5PA_2LlE%<5ls+r1QARSi3G8TAjAX_P7ntOLP-z` zf{=*_IYFpJgujTui;BzV6GRn31d50s@ahxx1WBwU41^#`5p~*y*;(x#+7GgS?I3kn z;jqgg&>_L$2Kg~5BcD@aDGha-`X9$g$ES|}6@MuX5$A~8oyI%;Ku@GQ=okGa_Dkva zcmJUN@WJE{;+^|B&v9-azz^6x;L?YyKfEx|Zs3}MRRjNV33vI2S;uT)VwrO07Sr<) z{n5ye_Iz|(GEh=1`NcJ8kaSSmpbLYi4z3;i)GgMn-t8CZSZR**57vWiVSgX8X~-WR z=X`vhbK}CfWbS8v2CwH~X#TMN!%Byp`o#Q6ws$eSY{j~X^AY*fprbEAihP8j|5m?>lSj!7AFcFeo6W5yiDVar-n^6O>LUmJ@wJFb<>ikRZTlJ?VIV$^r_Q*r{A6aX8M0; zjF_=vM$U{UGZ)PCoS8NAyIJ|OXU&eB{c_H}IjT9A=B}RWH`h3~aqfwE1LiH7=RGfK zo@rjqyleB`&FALtnx8-a)`IZQ*M6?~y#4dn3;Qh`wQ%0Tqla}2_L$dN-_!yq*X!r5gcO;Q3m=N_+a#*0u4TZriX(&cBtm+7#$wo&(BCkczGg=i<)O5Mj7Zz<+_ zZYw#Gx(+MJH&kvLIgWY+`^nwZT(qA=i>Pn##lF6aPbl3U@;7P)T8Yc(e90fF)2$NQ zYq-K?_@?tR#ovkwMUSNFh|;C(A=KYvzK27?EQwF8Z~bZM-Sc%1ION#dE4cxU60`2)-ly8|$%7A3Oted&k(%lMgkOwHuYLZ!koX2?~V#(DtUvKBXL?_0U8m=1dx@i+gXF=9X-@Qo# zcavs1b%Gh3Ceyvi!obNi6Rh*>ohms>^(^mMPHv~1h1u%k+l~vOI@n$Ba{p(T_$@fx zWTJ!}mn2MgV0qityKHwyWqTv9%O#_=3iSbY_pYkz`}i}rYPt(b#LZPDHOE;CTBCBT z%hAewLJscS#P7Q15B;J~iZ9lJ!`UCC$9y{1PhL6~4U9@LWUl4VAb0fPMkJ9UDSQ-u z;!#`WsqZ;ejl^e%d*pt0`Rb!j!3kzuO5sbEwj$=p25~U_AW5i9v@}W2WZynlSexuI zYkSbTy__=|{=bqk7>mi^J~27`{OHRXsYPcESB6A|#&8CI1L_~=DRvG+(-b{FC`IkJ z>|q#MAt}lvSA&xUJkCjB*ei(m`v)$nfJ7_Nr1@wvnk`+GfyVxfrg8Yi8H%2tlr9i> zdr%>oEy;@@nO!g%`hf$?felh{mBB|}fD@;RJ25T~u^Pm?g`;I(pp`?%h@D|3IPFsi zA1a^7HbMr!P?+p87GtN z3rS>~(`qyFxSZC1s8w2-B1e;TkV{vkhaHp#7pe*(^2LYt87ur*xlS4B z-Ij4Cf-j0IiD^*D)FFC#tawx8zVw|^eXhK`#!_8V$yHQUo6R|RRJZVEi#rTqcu423 zd9*Wcoa1xOWRl=a}jq$7)giH*oPAd$5Pel3#BNJdAmo{AnQiVmi8m zr2d}8Am-*BlMFvM^e>nPLm&dSzLvox}K>Jd72-BGYox@=Vh7q|^i>;scG_xd_LU(&ChSw%V*y7~>-obUc#wDoF1rcl8d| zIr+X&en%wOJ+(Kx0#GMlu*O9CX+mTxShPHY0#EQH;Y0YaqU*Z!p2v^FLeZdjGz=2?e#iHOCd67aOgB9LqA}{dFG+6Tke1d1k?#tQ`GoR-8w)MoJ`_k{f zXkX;MaOb*Et}u=)DL8cWGTU-IY&jwjzjIV1Z&R@IE(;r!E-6CjpsS#jq&vbn_?Aqk zm^Y)*6B1RfmVlYsf##9lP#rLb{GH0bN{*+P$?&1D0c+RZ>Ah=k&)bD_w?y#gO?wz5 z%$0yR^v`HCK{{|>n)vEa1Gy9F5fn5eV}Iu@0_lHtRsS5 zrRe5!$h&7>mLgF*;yJqki{S)}o_lu$azX>phv;L}@7jVVot?#%ZG3tnxj~0K(N5&T zf>f9!`RN#Z3gmCei13wZkwd62w=38~6Tps&2giEeIZOw3c&FI8oB%rm*fCE|bSBZv z%{TB%5{)Y>Jf|VMHaFH3 zYvN)}F($M0=+)$mJErxaOLlv2^Wrvd+%RpCl=*2n8X{pH1eM8aIOeCCva%YUc~B!S z3&K}Ha(NK%EL>E#zHW%@fVNH;Q0D^l_t5{AK({d`g&|;(K>z2rk8w;>O)c>uf5Di*N`FZ zYeJ^7Xc2P6T5cGGU{Mmocv$%t8iPolc|3g^63^b5ajYPny9x#5my~`xSr(d3v76UJ4bAO z!$cTe;Sh!Q`o~|v$FG;xZYtwb9hsv)7eDNHDFw%Ijl(&VtEC?6H@HXei0oY!y~8ie zFUgIGfR#5T#m8Z0!4(eXRC&)I?LH3;3ktNf@OPn3(hgI}S7pYGuUY2ky=K2*a;@;P z)Y~ajb5qVC+^#9P0gf~T{7kzf^$cJhB-8TUro$P@xv3_e=}OCuRbK(E7-l9%?pa93 z>dnF<((vuivlAVFgh<{JcORnE8RYmKnp8A_?SSdzi}K{`M=XqP zidr3+7?~8wTNCSH0@)jvF$D)JC18qU-T{XxbEO&k`ZM(vE!BX;yrLO1{TZoDs@k(H0bfg__ zDP4?^gpzs+Q8FYmZ?XI&6;k^H3tCJmrqpbn`RO7=k~XsZh18bFin`(qYeo?dB4G&mYgJiM2d?)>ks?%)5E?7z zhxQI3N6Sbd~UAmgP6wCdPy{-eo*7KQu#~Qe^7c zX>W3cltRiqs;I6YvpCbrUxeVSBydDq$pTqPK$tX4tMQZsq@Kv+j!E2?a{hKpacsDrd|O4|Sj^sdEIcrZGE#nH+YTK%5^ z?|fhd_FyXQ)i3Cckrnl&SyiTT{%=8w{fmpe4Wxw<#KH+OjY9okz0B-5Br6#utcYCfQdfFRFCQzP2B#BmF`7Kr}47vc_9)4J_m_*`({*eb+ zJX@KHCIx(^6wKI@-CD<}lrLycZE0O?L336e{~P?*=G=6Fs`oHiM8OClnS>7xS*wq+ zuV}5~*#c#tI>KA;$4^DylY!u0PbKKh7S7(Ut$);v;g&-Fw#UAIXM?W}1R|X5Q93 z56i~HOXmh3qQS6^#vW@3n*M6ZqX>TN3`6V^FY({-3J>*nxQ<8Kv=onY9C~USX)=s? zKhmewP=H6Od}|-ox3#vZ^6CoGtym(?!rrTKFaSLuVRRw2S$^zL6h9Sj^3yQ<91hAx zpoPhPedF#f(T1vH<#^j+;hapaR_k`JV<8*0-})C7-@<-+VMeW=u&B zPpN zbeS)BCpxy{_g?iVv4Xkq=trY$7QlMd*Jup}^beC!U_${MRQv?n3&tt!TOegmn zJSU4Xs=JQ%$>O0p%}(`v)M^aiM+R@g?w*ugwXpuh>EGd(f-b(v++5hn-m=+U963!@ zitY=7J;bOb#S~l?vdNsx%iwkb@0+z+$HSIz^?{&mk$6wzFR%_?O}gkeWAiuGJ`tNyOk`VaH#t=d9tdu){5(1qjl`g z4+~evXcFUjk8c+j$_}W=5~jK|KrYgIwWYA>|WZV9m=c$hYt?4i?@<%gA(ns@@%=~HafnX>j z+v;nrS?o`AU3FxrG0_;W=QX~_4!L@Jg#CE%@7PLlqA58eQ(D(#X}m@^l^fg(`3I=f z9eI;0R2$WPwu+ORgojP*Y3HZ3RiNyxXo3XRQ>H3%2j#!t)NbZsTF)G^DziMRialw& zkJDDp^AMwep^BbWN|7gyjlmy{mNZgmQO_Bi&cZdBaZSa@MG_+;VG#vedd`t(1BI`S zQgw}SyYxJo{%#Jbj*nFDWu33~OjMRBT(DMNgcBa89T@8k3Wh@~3`ecx4GOIgMC3Zk z84Wxk%3dfjY#{|5m34x24ij<|fTMG05Oke1jt4$DPpeIv=wgkI)*TlHmbzFTgV&wp z{6W}-=Y42ddq-pQ-HRL}%%YbjY1Wa6RCQp}PI?AiQyR2w%p|mXnCxKDDb86}7F{Ng z$1{(^I-E^-3iVHzC=hi?-oC=R)b4W5#sH4#o;e=*p^vvGSDLsK;TK7lB}$=<4YygS zA-#!Yykq!-fKxC5=E5TQ?9SF>OQ)=#wfP{In9>MjJ1i;v&Mhuuv)(IaORSsoGhLIw zTSc``A@rF&{Q0+JkKcBzLe>U$J$QBV5gn5ln-Igt>tds|_u+2F8}_-*&?vJ&EcVR2_KcY)I9^$wLvflwo0t0$(M(| zzJHpn$O%#yagq$}_Tgi~CE#v-{p=fQXF#JDPSoNdeYTzE!)Tw)Wj9Jvax$zu7P387 z;buJ;aOCv*8|F!^;3|1Z&FY;dT5s zN=md{UmzDx^u>%2ZW0zc_foiRh2&C~tgATdI_~1ZZUqioo6(OS zUV3uDw{B+%x2|ewR;@Izv?`y=%a6}vng2Zh<-5Bj2_><`{0WMwXpevVG1FUYXwrB~w`}#E5;3;myCkk9|K!CA zt_ngWjP-iw9}hU@KkWrUzO%NBTj8x~=;EEbX^2z02-HJHR_uC@Y5TStBaoi ziFIzCUc*PtMr|QdrdgJ!s=wCp)yXD~`7p{%Zrd9cpk$3klbL5`S-*wsL(;1|OyN^L zMH9CKaEYlv3#+iWMsG4~j&;*Ic3QI6=`|aSfxPp5S~&OC<@mkkKL3EiEk_FK~KBE|y%YvOu{net-Pdu84*g=kLL^!`xrO zq`n5nsrTbZb)6)*OkQ1GR#sgtFAENq%Y(5{<|yhFJtLGyl`i>$2P4bJvvUlVx7X(c zwoEn4-I(U}wMFtewzH=Bc8kr)*b<~yhqEE7Bk=hbJWlX%?e$$)<_pm(tz%VnvMK<5 zG|qDuk0+*|uq7^ojNUvWLd7zK*0HkH5E2nK$KZ#>H(k*)-PY#e2ZKO$n~q4%&&